昨年から書いていたReal World HTTPがAmazonのページに表示されるようになりました。最初にコミットしたのは昨年の8/1ですが、たぶん、その数ヶ月前から書き始めていたと思うので、ほぼ丸一年です。途中でASCII.jpのシステムプログラミングの連載が始まったり、Software DesignにSphinxについて寄稿したり、もう1つ別の翻訳の企画があったり、三女が7/4に生まれたり、なかなかハードな一年間でした。
なお、表紙は皆さんが知っているものとはちょっと違うのですが、系統的に一番近いのがハシビロコウさんらしく、和名もそれしかないそうです。狙っていたわけではなく、そもそも出版時期にはアニメも終わってしまっているし、話題の動物は辞めたほうが良さそう、という話をしていたのですが、偶然これが選ばれました。
本の内容の紹介
裏表紙の紹介はこんな感じです。
本書はHTTPに関する技術的な内容を一冊にまとめることを目的とした書籍です。HTTP/1.0、HTTP/1.1、HTTP/2と、HTTPが進化する道筋をたどりながら、ブラウザが内部で行っていること、サーバーとのやりとりの内容などについて、プロトコルの実例や実際の使用例などを交えながら紹介しています。 GoやJavaScriptによるコード例によって、単純なHTTPアクセス、フォームの送信、キャッシュやクッキーのコントロール、Keep-Alive、SSL/TLS、プロトコルアップグレード、サーバープッシュ、Server-Sent Events、WebSocketなどの動作を理解します。 これからウェブに関係する開発をする人や、これまで場当たり的に学んできた人にとって、幅広く複雑なHTTPとウェブ技術に関する知識を整理するのに役立ちます。HTTPでは日々新しいトピックが登場していますが、本書によって基礎をしっかりと押さえることは、さまざまな新しい技術をキャッチアップする一助にもなるでしょう。
目次はこんな感じです。
- HTTP/1.0 のシンタックス:基本となる 4 つの要素
- HTTP/1.0 のセマンティクス:ブラウザの基本機能の裏側
- Go 言語による HTTP/1.0 クライアントの実装
- HTTP/1.1 のシンタックス:高速化と安全性を求めた拡張
- HTTP/1.1 のセマンティクス:広がる HTTP の用途
- Go 言語による HTTP1.1 クライアントの実装
- HTTP/2 のシンタックス:プロトコルの再定義
- HTTP/2 のセマンティクス:新しいユースケース
- Go 言語による HTTP/2、HTML 5 のプロトコルの実装
- セキュリティ:ブラウザを守るHTTPの機能
- クライアント視点で見るRESTful API
内容としては、HTTP/1.0、HTTP/1.1、HTTP/2というおおざっぱな期間ごとに次の3つの章を繰り返してその時期に登場した技術のトピックをいくつか紹介し、最後にセキュリティとRESTfulの章が追加されている感じです。
- HTTPのシンタックス
- HTTPのセマンティクス
- 実際にコードを書いて試してみる
実際にはHTTPのバージョンは時期的な目安なので、そこまで厳密ではありません。消化不良にならないように読みやすく分割するための分け方です。人間の記憶はエピソードとともに知識を固定する方がやりやすいので、そういったことを心がけています。普通のHTTPのプロトコルの技術的紹介だとなかなか詳しく紹介されないであろうトピック(TLS、認証/認可、セマンティックウェブのその後、セキュリティを守るためのブラウザ技術)についても、多くの方々の強力なバックアップのもとに概要をきちんとつかめるように書きました。
アプリケーション開発だと、ウェブに関係しないシステム自体がだいぶレアになってきているので、かなり多くの人に末永く参考にしていただけるのでは、と思っています。CGI時代やJ2EE初期時代に学んだ人も、その後の知識のアップデートに役立てていただけると思います。最新のブラウザの機能(セキュリティのヘッダーとか)も、過去の経緯や機能を踏まえて追加されることがほとんどです。一通りきちっと学ぶことで、今後出てくるトピックを追いかけるのがとても楽になるはずです。「読める!読めるぞ!」とムスカになったような感動が味わえるはずです。
後は、書いていてワクワクしていたポイントは、HTTPまわりの仕様にはさまざまなエンジニアリングの創意工夫があることです。後方互換性を維持するしくみとか、サーバー・クライアントでベストな選択肢を選ぶ方法、効率の改善。こういうところに着目して読んでもらえると(上級者には)楽しいと思います。