概要
Real World HTTP 第 2 版を読みました。 感想を書きます。
前提
目的
本書を読んだ背景は以下です。
- 2023年10月〜12月の目標の注力分野の 1 つにネットワーク・Linux を掲げていた
- SRE に関心があるので、ネットワーク周りの知見を深めたかった
- ネットワークの知識はほとんど初心者だったので、本書の内容が Web アプリケーションよりのだったため、読みやすそうだと考えて読むことにした
事前知識
ネットワークの知識は以下ぐらいです。普段は Web アプリケーションエンジニアとして勤務しているため、基本的な HTTP の知識は持っています。
- [改訂新版]3 分間ネットワーク基礎講座を読んだ
- ネットワークの基礎知識を定着するために応用情報技術者試験の内容を勉強し、2023 年 10 月に受験した
他には、体系的に学ぶ 安全な Web アプリケーションの作り方 第 2 版の第 3 章が HTTP の内容でしたので、その内容をベースとした HTTP の知識を持っています。
読了時間
平均 1.5 時間で 10 日間かけずに、読了したので 15 時間足らずで終えたと考えています。 全部で 14 章構成となっており、一部のコードは写経しつつ読み進め、一部は読み物として読んでいたため章ごとにかかった時間はまばらでした。
感想
Web アプリケーションが知るべき HTTP の基本的な知識を歴史も踏まえて学ぶことができる一冊でした。 題材が幅広くカバーできており、最近の内容まで抑えられているため、エンジニアになりたての初学者にお勧めできる一冊だと思いました。 個人的な意見としては、「Web を支える技術」の一部の内容が若干古くなってきているため、「Web を支える技術」を読むことを検討している人には合わせて本書をお勧めします。
具体的によかった部分は 3 つあります。
1 つめは、HTTP について歴史から学ぶことができ、文献も RFC を引用していることです。
HTTP の基本的な 4 つの要素(メソッド、ヘッダ、ステータス、ボディ)から始まり、HTTP/2 と HTTP/3 の解説があります。
XHR では当たり前になっている、DELETE、PUT メソッドがいつから導入されたのかだったり、HTTP/2 と HTTP/3 の特徴的な部分が詳細でわかりやすかったです。
本書を読む際には、大きな事前知識なしで HTTP/2 と HTTP/3 を学べました。
2 つめは、HTTP をベースにしたほかの技術の説明があることです。
Fetch API、Server-Sent Events、WebSocket、WebRTC といった技術は名前だけは知っていましたが、成り立ちや具体例については知見がありませんでした。
本書はそれらについても触れられているのがよかったです。
特に、WebSocket について関心があったのですが、良い学習方法が見つかりませんでした。
そこで本書が gorilla/websocket の examples が紹介されており、非常に参考になりました。
WebSocket を学ぶ際の参考にしようと考えています。
3 つめは、Web アプリケーションに対しての説明も豊富なことです。
12 章から 14 章にかけては、Web アプリケーションよりの内容です。
近年の Web アプリケーションの構成の分類から、クラウドによって一般化された技術、そしてセキュリティとの関わりについて記述されていて、読み物ですが非常に実践的でした。
これらの分野は受動的に学ぶ機会が乏しいと考えているため、特に初学者に読んでほしい内容だと思いました。
総じて、タイトル通り HTTP の内容から始まり、HTTP をベースにしたほかの技術の説明、最終的には最近の Web アプリケーションにまつわる内容まで説明している書籍でした。 本書はすでに第 2 版となっていますが、今後の更新も楽しみです。
次に関連で勉強すること
引き続きネットワーク系の書籍を読み進めていきます。 現段階では以下の書籍を考えています。 読み物としての書籍と、手を動かしながら学ぶ書籍の良い塩梅をとりながら読み進めていくことを考えています。 また、ネットワークスペシャリストの受験も検討しています。
- ネットワークはなぜつながるのか 第2版
- マスタリング TCP/IP―入門編
- Linux で動かしながら学ぶ TCP/IP ネットワーク入門
- Amazon Web Services 基礎からのネットワーク&サーバー構築改訂4版
まとめ
ネットワークの基本的な知識を抑えるために、Web アプリケーションエンジニア観点から読みやすそうな本書を読みました。 Web アプリケーションが知るべき HTTP の基本的な知識を歴史も踏まえて学ぶことができる一冊でした。 HTTP だけでなく、モダンな内容についても触れられており実践的でした。 今後も引き続きネットワークの勉強をしていきます。