2/22にヴァル研究所さんのオフィスで開催された「RESTful#とは勉強会13回」に公開レビュー企画のゲストとしてお呼ばれしてきましたー。
- リソースの相関がURIパスとして表現されるのが良い
- URIパスとして表現されるリソースはコレクションになるのでリソース名は複数形を使うことが多い
- バージョンの指定方法について(パス/クエリ/ヘッダのどれを使うか)
- 似たようなリソース名があってわかりにくい、もしくは分かれている必要がない
など。
駅すぱあとのAPIをお題にこういう話をしていたんだけど、素晴らしいなと思ったのはどうしてこういうデザインになっているのですか?と聞くと見川さんからその全てに対して回答が返ってくること。パッと見ではおかしいのでは?良くないのでは?と思うようなデザインのものに対してもなぜ、どういう経緯でこの形になっているのかがちゃんと説明されるのである。これはただただ感心すると同時に見川さんのこのサービスに対する愛のようなものを感じたw と同時に駅すぱあとの裏側みたいなものも垣間見えてそれはそれで単純に面白かったと言える。
とまあ、それなりにいい感じで終了したんだけど、当日参加者からもあがったRESTfulである必要性や、RESTの一般的なルールをどこまで守る必要があるかについて個人的な見解を述べておく。これには異論もあると思うが。
まず、RESTfulであることの必要性について。RESTfulでなければいけない必要性は全くないと考えている。RESTなんてのは所詮実装指針アーキテクチャのスタイルであり原則にしか過ぎない。一方でメリットとしても語られることが多いがRESTfulなAPIはリソース指向であるが故にWebの世界と親和性が高く、URIによってリソースを特定するという概念そのものは非常にわかりやすいと言える。例えば/booksにGETリクエストをすると本のリストが返ってきて、その中の特定のアイテム、例えばbookidが1のものを取得する場合は/books/1にGETリクエストをするというのは非常にわかりやすくないか?こういったリソース名によるURIとそれに対するCRUD操作をHTTPメソッドで表現すること、そしてリクエストの応答となるステータスコードに意味があるということがRESTの最大の特徴であると同時にそういったシンプルな分かりやすさがRESTfulなAPIの最大のメリットである。単に404が返ってくるというのはページが存在しないという意味ではなく、URIで指定されたリソースが存在しないということなのである。そういう綺麗さがRESTの魅力ではあるものの、別にRESTfulでなくてもURIとして表現されるものが何らかの一定のルールに則って利用者に分かりやすければそれはそれでいいのではないかと思う。ただし、いわゆるRESTfulなAPIでないものをRESTful APIと呼んで公開されているのは個人的にはdisりの対象である。
そして、次にいわゆるRESTfulであるAPIとしてのルールについてだが、先にも言ったとおりRESTなんてものは標準仕様でもなんでもなく実装指針アーキテクチャスタイルでしかない。数ある解説において、共通する基本的なルールはあるものの細かいところは正直なところ人によって主義主張が違うと言っていい。例えば先のバージョンの表現方法もそうだ。/v1/booksと/v2/booksという形の場合、v1のリソースセットとv2のリソースセットは別物であるという考えからだ。一方であくまでもリソースはリソースとして同一のものでありバージョンは属性情報の一つという考え方の場合、/books?version=2といったクエリによる指定になる。加えて、リソース名の設計指針としてよく言われるリソース名は複数形で表現すべき、や複数の単語で構成されるリソース名は"-"で区切るべき、とか小文字が望ましいとかそういったのは瑣末なことであり別にどうでもいいと思ってる。勉強会での川村さんの発言にもあったが「全体で揃っていればいい」と思う。もちろん新たに設計する場合、基本的にそういったルールには則る形にはするが。
Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)
- 作者: 山本陽平
- 出版社/メーカー: 技術評論社
- 発売日: 2010/04/08
- メディア: 単行本(ソフトカバー)
- 購入: 143人 クリック: 4,320回
- この商品を含むブログ (180件) を見る
- 作者: Leonard Richardson,Sam Ruby,山本陽平,株式会社クイープ
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2007/12/21
- メディア: 単行本
- 購入: 25人 クリック: 842回
- この商品を含むブログ (169件) を見る
- 作者: Leonard Richardson,Mike Amundsen,Sam Ruby
- 出版社/メーカー: O'Reilly Media
- 発売日: 2013/09/12
- メディア: Kindle版
- この商品を含むブログ (1件) を見る