書評: RESTful Webサービス

RESTful Webサービス

RESTful Webサービス

この本の監訳をされたyoheiさんから献本していただきました。ありがとうございます。
実はまだ邦訳版を読み終えてはいないのですが、原書は結構読んだつもりです。献本していただいたお礼を兼ねて、この本の紹介をさせていただきます。

この本の意義

私はこの本の意義は以下の点だと考えています。

  • Web上に散在しているRESTに関する情報を、本として一つの形にまとめたこと
  • RESTfulなシステムの「設計方法」について正面から議論されていること
  • 設計方法だけでなく、実装方法、実装時のトレードオフにも踏み込んでいること
  • 上記の点が、日本語として読めること
  • 以上の点を備えた本を、ふさわしいひとが監訳したこと


この本の読みどころについて最も詳しくは、監訳者であるyoheiさんのRESTful Web サービスの読みどころから続くシリーズを読むのがいいのではないでしょうか。この本を一番読み込み、訳された方の視点から紹介されています。


では本エントリでは何を書くかというと、ひとりの読み手としての私が考えた読みどころを書くことにします。

読みどころ

この本の読みどころは、RESTfulなシステムの原理原則と設計方法について記されている部分です。RESTfulなシステムにとっては特に設計が重要であり、RESTfulなシステムならではの考慮点もある、ということが説明されています。


この本は450ページ弱ありますが、RESTに興味がある人はもちろん最初から最後まで読むべきと考えます。しかしせっかちな人(含む私)に向けて、「とにかくここだけは読むべき」という部分を挙げましょう。

なにはなくとも第4章

それは、「4章 リソース指向アーキテクチャ(ROA)」です。この章だけは最低限目を通すべきだと考えます。そしてこの章を読むと、結局他の章も読みたくなるのではないでしょうか。


中盤は必読

私は最低限4章をまず読んでROA(Resource Oriented Architecture)を理解し、「5章 読み取り専用のリソース指向サービスの設計」と「6章 読み取り/書き込み可能なリソース指向サービスの設計」でROAの設計を学ぶことが重要だと考えます。この中盤の三つの章はとにかく素晴らしい。


そして、(できれば)Railsによる実装の第7章を読んで設計と実装のトレードオフを学び、次の「8章 RESTとROAのベストプラクティス」でさらに深く設計と実装の考慮点を読む、という流れが良いのではないでしょうか。


第8章は設計を行うときにぶつかる疑問点が満載されていて、読み応えがあります。第8章には例えば「ROAの原理原則はなぜ大事なのか」や「リソースの一括更新をしたいときはどう設計するべき?」、「クールなURIとは何か。URI設計はどうあるべき?」などが書かれています。


ということでまとめると、

  • 4章 リソース指向アーキテクチャROA
  • 5章 読み取り専用のリソース指向サービスの設計
  • 6章 読み取り/書き込み可能なリソース指向サービスの設計
  • 8章 RESTとROAのベストプラクティス

は必読である、ということです。



(追記) 誤解の無いように書いておきますが、最初の三章を飛ばして読むことを勧めているのではありません。最初の三章も、もちろん重要で、面白いです。その後の議論の前提となる章ですので、読んでみてください。


リファレンス的な側面も備えている本

そして、実際にRESTfulなシステムの設計と実装を行う段階になると、必然的に以下の章も頻繁に読むことになります。これらの章はリファレンス的な側面を持っていて、設計と実装を行う際に技術の選択や細部に迷ったときに開くことになります。

  • 9章 サービスの基本要素
  • 付録B 最もよく使用される42のHTTPレスポンスコード
  • 付録C 最もよく使用されるHTTPヘッダー


9章はRESTfulなシステムを構成する技術要素の紹介と比較を行っています。たとえば表現(Representation)につかう技術(プレーンテキスト、AtomXMLXHTMLJSONなど)の比較やAtomPubの説明、そしてURITemplateやWADLの紹介などをおこなっています。


付録Bと付録Cは章タイトルで言わずもがなですね。実装するときには頻繁に読むことになります。重要度でランク付けされているのもわかりやすいです。

まとめ

長くなってしまいました。要するにこのエントリで言いたかったことは、「非常に面白い本なので買って損はない」ということです。今年読んだ本の中でも特に面白かった一冊ですので、おすすめです。