書籍「Real World HTTP」の学習効率の高さについて

今更ながら、Real World HTTP を読んでみたので、
学習効率という視点で感想を書いてみようと思う。

www.oreilly.co.jp

対象となる読者が広い

この書籍のテーマは HTTP なので、対象となる読者はかなり多いはず。

さらに、書籍でも言及されているが、
HTTP のようなプロトコルは陳腐化しづらい知識なので、
一度身につけるとずっと役に立つ。

サーバサイドエンジニアに限らず、
アプリエンジニア、
WebFE エンジニア、
HTTP に触れるエンジニアであれば、目を通しておいた方がいい。

特に HTTP Header に指定する属性と値の知識は、実際のサービス開発で必須となることが多い。

サーバであっても、
クライアントであっても、
「ヘッダーに、この属性つけなくて良いんですか?」という一言が、
サービスのセキュリティやパフォーマンスを向上させるかもしれない。

対象読者が幅広く、陳腐化しづらい書籍なので、
この書籍を通して学んだ内容が無駄になることは少ない。
効率の良い書籍だと思う。

HTTPについて体系的に学べるので、
新卒などのWeb開発に関わって日が浅いエンジニアには是非読んでもらいたい。


スラスラ読める

そして意外にも(?)普段から HTTP に触れているエンジニアにもオススメできる。

なぜかというと、
この書籍の何割かの内容は、
すでに知っていたり、過去にどっかで調べていることがあるからだ。

「これあったなー」とか「こんなオプションもあったのか」という、
既存知識の部分的な補完や思い出しがメインになるはず。
なので、ページ数のわりにはスラスラ読める。

そして、たまに「これ全然知らなかった」というものが出てくる。

普段から HTTP に触れているエンジニアこそ、
時間を無駄にすることなく、
必要な情報だけ拾うことができると思う。


好きなところから読める

自分は普段「コードの書き方」みたいな書籍を読むことが多い。

こういった書籍は、
第1章でリファクタリング対象システムの仕様を説明し、
第2章から順にリファクタリングを進めるという流れになっていることがある。

第1章を読まなければ、第2章は理解できないし、
第2章のリファクタリング結果が理解できなければ、
第3章のリファクタリング内容も理解できない。
時間が空くと、第1章の仕様を忘れていることだってある。

一方、この書籍は、主に HTTP/1.0 ~ HTTP2 までを時系列にまとめているが、
前後の関係性は薄いので、
気になるところだけ読めばいい。

読む内容を選択でき、
容易に途中から読み進められるので、
こういった点もまた学習効率がいいなと感じる。


一通り目を通すことを推奨

この書籍は特定の章だけ読むことができる。

しかし、HTTP は仕様が多いので、
「実は知らなかったこと」を見逃さないためにも、
全く読まないのではなく、
一通り目を通すことを推奨する。

ページをパラパラめくって、知らない単語周辺を読むだけでいい。
ページをパラパラして、知識が増えるのであれば、パラパラした方がいい。

さらに、この書籍には、ちょっとした面白い内容が載っていたりする。

リファラーのスペルミスだったり
ダウンロードページの広告のことだったり

サラッと書いてある文章や注釈を1つ1つ読んで覚えておくと、
エンジニア飲みの時の話のネタになるかもしれない。


Go言語は関係ない

書籍の目次を見ると、Go言語による実装の章が目に入ると思う。
これを見て「Go言語知らないからな・・・」と敬遠するのはやめて欲しい。

この章は HTTP のリクエスト、レスポンスを実装しているだけなので、
正直、読み飛ばしても問題ない。
ちなみに、Go言語による実装の章を読まない場合、60ページ分削減されるので、
より効率よく HTTP を学ぶことができる。

仮に読もうとした場合でも、
実装対象がシンプルなので、サラッと見ても大体何をやっているのかが分かる。
読んでみて、無理だったら飛ばせばいい。

Go が読み書きできる人は HTTP2 の実装は目を通した方がいいかもしれない。
サーバプッシュ、ServerSendEvent が載っている。
これらを実装したことがあるエンジニアは少ないのではないだろうか。


キャッシュの仕様

自分はサーバサイドのアプリケーションエンジニアだが、
HTTP といえば、キャッシュの設定が複雑という印象が強い。

no-cache, no-store ?
Last-Modified, Expires, Etag?

どれがどれだかよく分からなくなる。

そして、事故るとパフォーマンスが劣化したり、
コンテンツが更新されなかったり、
大きなダメージを受ける

この書籍では、このキャッシュの仕様について、時系列で説明している。

時系列だから何? と思うかもしれないが、
時系列にすることによって、

「最初は xxx しかなかったけど、yyy を考慮して zzz が生まれました」

のような説明ができる。

そして、これが意外にもすんなり入ってくる。
この章だけでも読んでおくと良い。


HTTP2が載っている

HTTP2 について、体系的に扱っている書籍ってあまりないのでは? と思っている。
普段使いの HTTP/1.1 と一緒に HTTP2 についても学べるいい機会になるはず。


まとめ

学習効率が良い上に、読んで損しない書籍です。
良書だと思います。
併せて「Web API: The Good Parts」も読みましょう。

www.oreilly.co.jp



その他

レビューをした

自分と渋川さんは DeNA つながりということもあり、
今回、書籍のレビューに参加させていただいた。

ただ、予想以上にレビューは難しかった。

自分はHTTPに強いわけでもないので、
書籍の質を向上させるコメントが全然できない。
他のエンジニアのコメントを見て「ああ、なるほど・・・」と思ってばかりだった。

レビューを通じて、
自分のスキルの低さを痛感し、
謎の向上心が生まれたのを覚えている。

そして、今回書籍を読んでみて、
自分のレビュー内容が書籍に反映されたのは嬉しかった。


pospomeという単語が載っている

レビューをしたということもあり、
謝辞に pospome という単語が載っている。
オライリーに pospome という単語が載るとは思ってもいなかった・・・。


いまさら読んだ理由

レビューしたということもあり、書籍は献本していただいた。
ありがとうございます。

献本していただいたからには、レビュー書かないとなーと思い、
発売してから書こうと思ったが、
発売から数ヶ月間は「読んでみた系」のブログエントリーがちらほら流れてきた。

こういったタイミングで自分が感想を書いても、書かなくても、
書籍を買う人は買うだろう。

であれば、
「そーいえば、買ってなかった」という人に手に取ってもらい、
その人の技術力が少しでも上がればないいなと思ったので、
半年後くらいに書こうと思った。