「Webを支える技術」 書評
こんばんは、kuwana-kbです。
以前読んだ「Goプログラミング実践入門」という本で、RESTfulAPIを作ってみよう!という項目がありました。私の中でRESTとは「何回か調べたことはあるけど、あんまり頭の中に入っていない…」そんな用語でした。せっかく作ったのに中身をよく理解できていないのは大変もったいないです。
ということで、今回は「Webを支える技術 HTTP, URI, HTMLそしてREST」を読んでみました。 RESTとはなにか?に加えてHTTP、URIのおさらいもしてきましたので、書評としてまとめます。
Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)
- 作者: 山本陽平
- 出版社/メーカー: 技術評論社
- 発売日: 2010/04/08
- メディア: 単行本(ソフトカバー)
- 購入: 143人 クリック: 4,320回
- この商品を含むブログ (183件) を見る
ざっくりと3行でいうと
この本の紹介
この本は、HTTP, URI, HTML といった今のWebを支える代表的な技術に焦点を置いた解説書です。 上述した技術について、歴史的な成り立ちや具体的な仕様について解説し、最終的にはWebサービスを設計する際の指針を説いてくれます。
では、次に各部のざっくりとした紹介です。
第1部 Web概論
まず最初は、普段我々が何気なく使用しているWebに関する解説から始まります。 具体的には、現在のWebの範囲とは何か、Webにはどういった歴史的背景があったか、Webを成功へ導いたREST*1とはなにか、といった内容になります。 「ベンダー同士の利権の話」や「一人の技術者によって今のHTTPの原型となる仕様が提案された話」は、世界史の授業を聞いているようで面白かったですよ。
第2部 URI
この部は、URIの仕様と設計についてのお話です。 設計の章に、Webの開発者である Tim BL氏の「Cool URIs don't change」という言葉が登場するのですが、シンプルでわかりやすい指針だと感じました。 この言葉が出てから既に20年以上経過していますが、原則というのは時を経ても変わらないものですね。
第3部 HTTP
第3部はHTTPについての部です。 この部ではHTTPの仕様とWebサービスを設計する際にHTTPをどう扱うべきかについて解説されています。 初めて知るステータスコードが意外とあったのが印象的でした。
第4部 ハイパーメディアフォーマット
第4部では、HTML, xml, atom, JSON といったフォーマットについて解説されています。 フォーマットの書き方のお話がメインなので、あまり目新しい情報はなかったように思えます。
第5部 Webサービスの設計
最後の第5部は、これまでの部で扱った「HTTP, URI, フォーマット」を用いて、どのようにWebサービスを設計するかについてのお話です。 関係モデルのER図、オブジェクト指向のクラス図、情報アーキテクチャの3種類の成果物からリソースの設計を試みます。
この本のポイント
HTTP, URIを振り返ろう
WebエンジニアにとってHTTPとURIって当たり前の存在だと思います。 curlでリクエストを投げたり、WebAPIを実装してレスポンスを確認したりする中で、日々触れ合いますよね。 上記のような経験の中でなんとなく覚えたもの、という人もいるんじゃないでしょうか。 私の場合は、この3ヶ月間開発を繰り返す中で「あ〜またこのHTTPヘッダか〜」という具合に徐々に覚えてきました。
本書ではHTTPとURIについて体系的に解説されています。 ある程度プログラミングを覚えてきた人にとっては、一度体系的に整理するのにちょうど良い書籍だと思います。(私にはちょうど良かった!)
アーキテクチャスタイルとしてのREST
本書には、「RESTは複数のアーキテクチャスタイルを組み合わせて構築した複合アーキテクチャスタイルである。」という記述があります。 そもそもアーキテクチャスタイル*2ってなに…?って感じだったんですが、意外と身近な仕組みがそう呼ばれていました。 例えば「クライアント/サーバ」や「キャッシュ」の仕組みです。 「アレってそういう枠組みの言葉なんだ!」とちょっと驚きました。
アーキテクチャスタイルは以下のように実装から二段階抽象化した概念を指すとのことです。*3
抽象化レベル | Webでの例 |
---|---|
アーキテクチャスタイル | REST, クライアント/サーバ, キャッシュ |
アーキテクチャ | ブラウザ, サーバ, HTTP, URI |
実装 | Apache, Firefox| |
RESTというのは、上記のように抽象化されたパターンの組み合わせによって、 パフォーマンス、スケーラビリティ、簡潔性、拡張性、可視性、移植性、信頼性といったメリットを実現するための設計パターンなのだと理解しました。
また、「WebそのものがRESTであり、個々のWebサービスがRESTfulになることで、Web全体がより良くなる」という記述はRESTが自己循環しているようで面白かったです。
情報が古いのが残念
本書の初版が発行されたのは2010年です。 そのため情報が古くなっている箇所が散見されます。 例えば、2015年にHTTP/2が承認されましたが、本書ではHTTP/1.1までしか解説されていません。 説明がすごく丁寧なだけに本当に残念ですね…HTTP/2の解説も読んでみたかったです。 ぜひこの内容を追記した第二版を出して頂きたいところです。 他にもメディアフォーマットとしてatomの解説が充実していますが、現在のWebの需要でいうとそこまで深く解説すべき内容には見受けられませんでした。
まとめ
「Webを支える技術」は今まで知っているようでよく分かっていなかった、そんな知識領域であるHTTP, URI, RESTをわかりやすく解説してくれる本です。
プログラミングにちょっと慣れてきた方におすすめします。寄り道のように思えるかもしれませんが、得られるものは少なくないと思いますよ。