「Webサーバを作りながら学ぶ 基礎からのWebアプリケーション開発入門」いよいよ明日が発売日です(書店によってはもう置いてあるのかもしれませんが)。
技術評論社さんの紹介ページはこちら。
Webサーバを作りながら学ぶ 基礎からのWebアプリケーション開発入門:書籍案内|技術評論社
私のWebサイトにおける紹介ページはこちら。
http://kmaebashi.com/webserver/index.html
amazonはこちらから。
さて、書籍「Webサーバを作りながら学ぶ 基礎からのWebアプリケーション開発入門」は、元々Webで公開していた「本当の基礎からのWebアプリケーション入門――Webサーバを作ってみよう」に対しいろいろ加筆修正していますが、6章、7章は完全に書き下ろしです。
サポートページにも目次を載せていますが、こんなことを書いています。
- 第 6 章 Webアプリ開発に必要なその他の知識
- 6.1 この章で扱うこと
- 6.2 OSI 参照モデル
- 6.3 プロキシサーバ
- 6.3.1 プロキシサーバとは
- 補足:IPアドレス枯渇問題
- 6.3.2 プロキシサーバの動きを確認する
- 6.3.3 リバースプロキシ
- 補足:X-Forwarded-For
- 6.4 SSL(TLS)
- 6.5 認証
- 6.5.1 Basic認証
- 6.5.2 Digest認証
- 6.5.3 パスワードとハッシュ
- 6.5.4 フォーム認証
- 6.6 クライアントサイドの技術
- 6.6.1 JavaScriptによるDOMの操作
- 6.6.2 DOMを見てみる
- 補足:ノードとエレメント
- 補足:JavaScriptの実行タイミングについて
- 6.6.3 DOMを操作する
- 6.6.4 Ajax
- 6.7 セキュリティ
- 6.7.1 同一オリジンポリシー
- 補足:JSONP
- 6.7.2 クロスサイトスクリプティング
- 補足:反射型、格納型、DOM Based
- 6.7.3 SQLインジェクション
- 6.7.4 HTMLやSQLのエスケープは「使用する直前」に行う
- 6.7.5 Webビーコン
- 第 7 章 TIPS
- 7.1 この章で扱うこと
- 7.2 ファイルをアップロードする
- 7.3 画像を動的に生成する
- 7.4 ファイルをダウンロードさせる(サーバ側)
- 7.5 ファイルをダウンロードする(クライアント側)
- 補足:分割ダウンロード
- 7.6 Web APIを呼び出す
OSI参照モデルは普通にネットワーク関連の文章を読んだりする際にはどうやったって避けられない知識です。プロキシサーバ、SSL(TLS)、認証などの話もそうでしょう。この手の知識についてはあちこちで解説されていますが、本書では、あくまで自分で試してみることを念頭に、プロキシサーバとして試しにsquidをインストールしてみたりとか、BASIC認証やDigest認証についてリクエストとレスポンスを追いかけたりとかしています。
「6.6 クライアントサイドの技術」では、JavaScriptでDOMをいじる例として、「1行追加」ボタンで行を足せる入力フォームを作ってみたり、
Ajaxの例として、郵便番号から住所*1を自動入力する機能を作ったりしています。
こういう機能は、割とあちこちのWebページで実現されている便利な機能であるにもかかわらず、いざ自分でゼロから作れと言われるとちょっと怯む、という人も多いのではないでしょうか。本書では、最低限のサンプルプログラムでこれを実現しています。もちろんjQueryなんぞ使っていません。いやさ最近はてブでもjQuery不要論(You Don't Need jQuery - Qiita)が話題になったりしましたが、jQueryがいくら便利でも結局DOMエレメントを使わずに済むわけじゃなし、だばだばと水漏れする抽象化でしかない以上、まずはjQueryのようなライブラリを使わずに作ってみる必要があるかと思います。ソースを見るとわかりますが、さして難しくもないですし。
セキュリティについては、下手に書くとあちこちからマサカリ飛んできそうで怖いのですが、今時のWebアプリケーションプログラマにとって必須であることは間違いないので、よく問題になる点について触れています*2。
さて7章。multipart/form-dataを解釈してファイルをアップロードしたりとか*3、画像を動的に生成して昔ながらのアクセスカウンタを作ったりとか、CSVファイルのダウンロード機能を作ったりとかしています。
こういうことは、ちゃんと「わかった」ベテランプログラマの人にとっては、なんでもないことなのかもしれません。
しかし、Webでぐぐって見つけた断片的なコードをコピペしていても、なかなか体系的には身に着かない知識でもあります。
本書を、最初から通し読みすることで、コピペするにしてもちゃんと「わかって」コピペできるようになります。本書はそういう狙いで書きました。