Hatena::ブログ(Diary)

プログラミング言語を作る日記

2016-06-06 「基礎からのWeb〜」書籍版だけの内容

[]「Webサーバを作りながら学ぶ 基礎からのWebアプリケーション開発入門」書籍版だけの内容

「Webサーバを作りながら学ぶ 基礎からのWebアプリケーション開発入門」いよいよ明日が発売日です(書店によってはもう置いてあるのかもしれませんが)。

技術評論社さんの紹介ページはこちら。

Webサーバを作りながら学ぶ 基礎からのWebアプリケーション開発入門:書籍案内|技術評論社

私のWebサイトにおける紹介ページはこちら。

http://kmaebashi.com/webserver/index.html

amazonはこちらから。

さて、書籍「Webサーバを作りながら学ぶ 基礎からのWebアプリケーション開発入門」は、元々Webで公開していた「本当の基礎からのWebアプリケーション入門――Webサーバを作ってみよう」に対しいろいろ加筆修正していますが、6章、7章は完全に書き下ろしです。

サポートページにも目次を載せていますが、こんなことを書いています。

OSI参照モデルは普通にネットワーク関連の文章を読んだりする際にはどうやったって避けられない知識です。プロキシサーバSSL(TLS)、認証などの話もそうでしょう。この手の知識についてはあちこちで解説されていますが、本書では、あくまで自分で試してみることを念頭に、プロキシサーバとして試しにsquidインストールしてみたりとか、BASIC認証やDigest認証についてリクエストとレスポンスを追いかけたりとかしています。

「6.6 クライアントサイドの技術」では、JavaScriptでDOMをいじる例として、「1行追加」ボタンで行を足せる入力フォームを作ってみたり、

f:id:kmaebashi:20160606222346p:image

Ajaxの例として、郵便番号から住所*1を自動入力する機能を作ったりしています。

f:id:kmaebashi:20160606222347p:image

こういう機能は、割とあちこちのWebページで実現されている便利な機能であるにもかかわらず、いざ自分でゼロから作れと言われるとちょっと怯む、という人も多いのではないでしょうか。本書では、最低限のサンプルプログラムでこれを実現しています。もちろんjQueryなんぞ使っていません。いやさ最近はてブでもjQuery不要論(You Don't Need jQuery - Qiita)が話題になったりしましたが、jQueryがいくら便利でも結局DOMエレメントを使わずに済むわけじゃなし、だばだばと水漏れする抽象化でしかない以上、まずはjQueryのようなライブラリを使わずに作ってみる必要があるかと思います。ソースを見るとわかりますが、さして難しくもないですし。

セキュリティについては、下手に書くとあちこちからマサカリ飛んできそうで怖いのですが、今時のWebアプリケーションプログラマにとって必須であることは間違いないので、よく問題になる点について触れています*2

さて7章。multipart/form-dataを解釈してファイルをアップロードしたりとか*3、画像を動的に生成して昔ながらのアクセスカウンタを作ったりとか、CSVファイルのダウンロード機能を作ったりとかしています。

こういうことは、ちゃんと「わかった」ベテランプログラマの人にとっては、なんでもないことなのかもしれません。

しかし、Webでぐぐって見つけた断片的なコードをコピペしていても、なかなか体系的には身に着かない知識でもあります。

本書を、最初から通し読みすることで、コピペするにしてもちゃんと「わかって」コピペできるようになります。本書はそういう狙いで書きました。

*1:住所データベースなど持っていないので、ふたつの郵便番号にしか対応しないなんちゃってプログラムですが、Ajaxの例としては十分でしょう

*2CSRFについて書くべきだったか、と思ったりもしていますが……

*3:そういえばほんの1年くらい前だったか、Androidでmultipart/form-dataを使ってアップロードする側のコードをガリガリ書いた記憶があります。こういう汎用的な機能は何でもライブラリが解決してくれる、と思っていても、意外とあちこちに落とし穴があいているものです。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/kmaebashi/20160606/p1