2008-03-29 (Sat) [長年日記]

_ RESTful Web サービス 感想 はてなブックマークに追加 del.icio.usに追加 MM/Memoに追加

RESTful Web サービス RESTful Web サービス

Rails2.0 が REST を前面に打ち出して来て、 勉強の必要性を感じたので、 RESTful Web サービスをこじんまりした読書会で読んだ。

ほぼ4章ずつにわけて4回の読書会。

えー、、、悪い意味でかなり笑わせてもらった。

まず訳文が日本語になってない箇所が非常に多いし、 言ってることもちぐはぐだ。

監訳者まえがきの最後に

原書ではAPPという表記だったものを、本書ではAtomPubという用語で
統一しています。

とか

監訳にあたっては、特に訳語については非常に気を使いました。

という前フリがあり、p.51の一番下の監訳注にも

原著出版時点では「APP」が一般的だったが、その後「AtomPub」
が公式なものとなったため、本書では「AtomPub」で統一している

と更に念を押しているのであるが、ペラッと1枚めくって、 次のp.52のいきなり2行目に

APPは、実際のサービスというよりはサービスを構築するための
命令セットなので...

とあれほど何度もAtomPubで統一すると書いて来たものをAPPと 書いてあって大爆笑させてもらった。

また、原文も結構笑える状態のようだ。Amazon.com のレビューを見ると 「編集者はVacationに行ってたんだろう」とか 「この1/3ぐらいにまとめられたよね」みたいな感想があり、 実際に読んでみて全く同様の感想を抱いた。

  • RESTとROAの違いがわかりにくい。
  • 自分が言っていることを後で根底から覆すような箇所が何回か出てくる。
  • RPC とか SOAP のことをボロクソにけなしておきながら、けなす根拠に乏しかったりRESTで置き換えようとして「ここは置き換えられないのでSOAPが必要」と書いてあったり。
  • サンプルとして出てくる Rails のコードが不正確(トランザクションが必要なところでトランザクションを使ってない、とか)。その他、「これ絶対動作確認してないだろ」というコードがいっぱい。
  • 地図サービスを設計するところでは場所の「種別」のデフォルト値が「遺跡」(p.136)

というわけで、この本を読むのはかなり難易度が高いので、 どうしても REST について深く勉強する必要がある人にしかおすすめできない。

サラッとポイントだけ押さえたい人は、 監訳者の山本陽平さんのPDF資料 とか Web+DB Press Vol.42の特集がおすすめ。

で、勉強して学んだこと、感じたこと。

  • REST は「アーキテクチャスタイル」で、ROA は「アーキテクチャ」。ROA は REST を実装するガイドラインの一つにすぎない。
  • HTTP の GET,POST,PUT,DELETEという決まったインターフェースに処理をマッピングし、HTTPのエラーコードという決まった形で処理の結果を返す、という方法は確かにインターフェースが統一されて美しいし、インターフェースが統一されることによってRailsやRestletのような統一的な内部設計のアプリケーション/フレームワークの構築も可能になる(ただし、このインターフェースの枠組みに収まらないような状況もゼロではないと思うので、そのときちょっと無理矢理な感じになりそう)
  • Webページを作ると自動的にRESTfulなWebサービスもできちゃいます、という Rails のアプローチはなんか間違っている気がする。Web ページには Web ページの、Web サービスには Web サービスの使いやすいインターフェースというのがそれぞれ別々に存在するはずなので、Web サービスが RESTful だからといって、それにひきずられて Web アプリまで無理矢理 RESTful な URL 設計にする必要は無いと思う。
    • 例えば、Web ページには「入力確認」みたいな画面が挟まることがあるが、Web サービスにはそんなものはない
    • Web ページには SEO 対策として URL へいろいろ工夫をすることがあるが、Web サービスにはそんなものは必要ない
  • こじんまりとゆるふわな読書会楽しいし、読みにくい本も笑い飛ばしながら何とかがんばれる。

Web+DB Press Vol.42 Web+DB Press Vol.42

関連記事

Permalink | このエントリを含むはてなブックマーク | このエントリをはてなブックマークに追加 | このエントリを含むMM/Memo | このエントリをMM/Memoに追加 | このエントリを含むdel.icio.us | このエントリをdel.icio.usに追加 | Tags: book rails
[]