chroju.dev/blog

the world as code

『Webを支える技術』読了

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)
山本 陽平
技術評論社
売り上げランキング: 13,031

言わずと知れた名著、なんですかね。元はと言えば山本陽平氏のREST解説記事をWebで見かけて、えっらいわかりやすかったもんで著作にも手を出してみたという感じ。あとRails触り始めたというのもあって、一度は読んでおくべきかな、と。

全体の印象としてはかなり平易な言葉で書かれてて読みやすい。ただ、多少の前提知識は必要とされるので、ウェブサービスを初めてこれから作ってみようみたいな人が読んでも厳しいと思う。自分はRailsかじってたので、それになぞらえて読み進めることができた。というか、この本読むとRuby on Railsが本当にRESTfulに設計されているんだってことが追認できる。

目次

  • 第1部 Web概論

  • 第1章 Webとはなにか

  • 第2章 Webの歴史

  • 第3章 REST ―― Webのアーキテクチャスタイル

  • 第2部 URI

  • 第4章 URIの仕様

  • 第5章 URIの設計

  • 第3部 URI

  • 第6章 HTTPの基本

  • 第7章 HTTPメソッド

  • 第8章 ステータスコード

  • 第9章 HTTPヘッダ

  • 第4部 ハイパーメディアフォーマット

  • 第10章 HTML

  • 第11章 microformats

  • 第12章 Atom

  • 第13章 Atom Publishing Protocol

  • 第14章 JSON

  • 第5部 Webサービスの設計

  • 第15章 読み取り専用のWebサービスの設計

  • 第16章 書き込み可能なWebサービスの設計

  • 第17章 リソースの設計

ポイントピックアップ

  • POSTとPUTの使い分け。前者は作成したリソースURIをサーバーが規定し、後者はクライアント(というかリクエスト)で規定できる。

  • HTTPメソッドには「冪等性」と「安全性」の性質がある。冪等性は「ある操作を何度行っても結果が同じこと」。DELETEメソッドは何度発行しようと同じ結果になる。安全性は「操作対象のリソースの状態を変化させないこと」。GETを発行してもリソースは変化しない。POSTは冪等でも安全でもない。

  • セマンティックWeb、ウェブの意味論。リソースの意味をどのようにプログラムから処理するか?

  • RESTfulなウェブサービスの性質はアドレス可能性、接続性、統一インタフェース、ステートレス性の4つ。

  • アドレス可能性 = URIで一意にリソースを指し示せる性質。

  • 接続性 = リソースをリンクで接続する性質。

  • 統一インタフェース = GET/POST/PUT/DELETEということ(でOK?)。

  • ステートレス性 = HTTPはステートレス。但しCookieによるセッション管理が現実には行われる。

  • Webサービス設計において重要なことはシンプルに保つこと、リソースを基準として考えること、POSTでだいたいなんでもできること(え?)

  • リソースはそれ自身ですべての情報を表せた方が通信が効率的になるため、あえて正規化を行わない(このへん、DB設計と同一視してたわ)