書評: 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)につかう技術(プレーンテキスト、Atom、XML、XHTML、JSONなど)の比較やAtomPubの説明、そしてURITemplateやWADLの紹介などをおこなっています。


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

まとめ

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

WEB+DB PRESS vol.42でRESTfulアプリの設計と実装の章を書かせていただきました

WEB+DB PRESS Vol.42

WEB+DB PRESS Vol.42

先のエントリとも少し関係しますが、もうすぐ出るWEB+DB PRESS vol.42のREST特集で、RESTfulアプリの設計と実装の章を書かせていただきました。またこのREST特集では、yoheiさん、羽生さんとRESTについての鼎談もさせていただきました(この鼎談企画自体は、yoheiさんも経緯を書かれているとおり、私がひとりのyoheiファンだったことから端を発するものだったりもします)。yoheiさん、羽生さんと鼎談できたのは本当に面白い経験でした。鼎談の模様はニコニコ動画にアップされるとのことですので、私もちょっと楽しみです。


私が書いた設計と実装の章では、説明にRestletを使っています。しかしRestletはあくまで触媒です。執筆の趣旨は、実際にRESTfulなシステムの設計を行い、さらに動くコードを見ていただくことで、手と目でREST/ROAを理解していただくことです。


yoheiさんには監修をしていただきました。私の原稿はわかりやすいだろうかと心配していたのですが、

それから和田さんが書いてくれた Restlet をベースに RESTful なシステムを実装する章は必見です。 Java じゃない人でも、実際に RESTful にリソースを設計するというのはどういうことかを学べるすばらしい記事になっていると思います。

http://yohei-y.blogspot.com/2007/12/webdb-press-vol42-7.html

yoheiさんに褒められちゃった。なんというか、素で嬉しいです。


相変わらず、今回の執筆も苦戦しました。サンプルは何種類か作り、シンプルで説得力の強そうなものを残しました。そのサンプルも何度も書き直し、結果的に8割以上のコードを捨てました。

ページ数の関係で分量も非常に圧縮したため説明が駆け足になってしまったところもありますが、ぜひお手にとって読んでみてください。よろしくお願いします。