「Webを支える技術」を読みました

山本陽平『Webを支える技術 HTTP、URI、HTML、そしてREST』を読みました。

{% amazon text 4774142042 %}

{% amazon medium_image 4774142042 %}

「REST」の入門書

「Webを支える技術」としてHTTP、URI、HTMLの仕様を解説する内容ですが、この本の何よりの特徴は「REST」の入門書である点だと思います。Webフレームワークの界隈で目にする「REST」「RESTful」といった言葉が示すものの概要がわかります。

第1部「Web概論」はRESTに至るWebの歴史とRESTの概要、第2部「URI」、第3部「HTTP」、第4部「ハイパーメディアフォーマット」はWebを構成する技術仕様の解説、そして第5部「Webサービスの設計」はRESTfulなWebサービスを設計するための「リソース指向アーキテクチャ」の設計手法の説明となっています。

RailsとREST

「RESTful」を謳うフレームワークの代表と言えばRuby on Railsです。先日『Ruby on Railsチュートリアル』に取り組んだところですが、第2章でいきなり「リソース」という表現が出てきて面食らいました。この本を読んでそのバックグラウンドが何となく理解できた気がします。同じくチュートリアルの第8章では「セッションをリソースとして扱う」という部分に少し違和感を覚えましたが、それもリソース指向アーキテクチャというバックグラウンドの上にあるものとして少し理解できた気がします。

RESTとは

この本によると「REST」とは、システムを構成するアーキテクチャのスタイルです。また、「REST」アーキテクチャは複数のアーキテクチャの複合体です。この複合アーキテクチャを構成する要素は6つあります。

  • クライアント/サーバ : ユーザインタフェースと処理を分離する
  • ステートレスサーバ : サーバ側でアプリケーション状態を持たない
  • キャッシュ : クライアントとサーバの通信回数と量を減らす
  • 統一インタフェース : インタフェースを固定する
  • 階層化システム : システムを階層に分離する
  • コードオンデマンド : プログラムをクライアントにダウンロードして実行する

『Ruby on Rails チュートリアル』から受ける印象だと、Railsの言うRESTfulは「REST」アーキテクチャの「統一インタフェース」に偏っている印象を受けます。リソース指向の設計と統一インタフェースによって、ルーティングとメソッド定義の設計負荷を下げるみたいな。もっと勉強すれば、その他の今は見えない意図も見えてくるのかもしれません。

RESTの関連書籍

「REST」に関する日本語書籍は、ネットで検索する限り、この本とオライリーの『RESTful Webサービス』、同じくオライリーの『JavaによるRESTfulシステム構築』の3冊でした。このうち「Javaによる〜」は「JAX-RS」の説明という位置づけのようなのでJavaに馴染みのない人には辛そうです。また、『RESTful Webサービス』も非常に大容量で気軽に読める類いの本ではありません。その中でお手軽に読めるこの本は入門本としてなかなか貴重な位置づけだと思います。

ちなみにこの本の著者山本陽平さんは『RESTful Webサービス』の翻訳者でもあります。『RESTful Webサービス』に気後れして手が出せない方はまず本書に当たってみると良いのではないでしょうか。