とある REST 勉強会に参加してきた。
REST ってそもそもなんなのか。
「HTTP プロトコルにもともと備わっている機能を使って、もっとシンプルに Web サービスを作ろうとするもの」
という認識であってるかな。
ちゃんと本読もう。
普通、HTTP プロトコルで使われるのは GET と POST の二つのリクエスト方式。
でも実は、 HTTP プロトコルの仕様としては PUT と DELETE なんてのもあるらしい。
それら四つ(GET, PUT, DELETE, POST)を使ってもっとシンプルに WEB サービスを作れるんじゃないか、というのが事の発端。
えーと、四つのメソッドが使えるということは、一つの URL に対して四種類の操作が行えるということになり、URL が何らかのリソースを表すものであるととらえるなら、それに対してデータベースでいうところの CRUD が実現できる。
基本これだけで Web サービス作れるんじゃね?、みたいな発想。
あってる?
勉強会で話題になっていたのが「確認画面」にまつわる話。
「確認画面」ってあの、 mixi で日記を投稿する際に出てくるこういう画面とかのこと(ていうか、そもそもこの画面って必要なの?)。
REST の考えで行こうとすると、この「確認画面」の扱いが厄介。
「確認画面」を表示するためのリクエストそれ自体はリソースを作成したりも更新したりもしない。
つまり REST 的な操作の範疇に収まらない。
そもそも Web アプリケーションにおけるリクエストって、いろんな意味を持ちうるから、「リクエスト」イコール「データ操作」とはならないケースがそもそもそ存在する。
なので REST では全てを扱いきれないんじゃないかなぁ、と思うわけです。
あと、すごく個人的な意見。
アーキテクチャやその考え方がシンプルであることは良いことだと思う。
でも、マーチン・ファウラー曰く、ものごとには「本質的複雑性」と「偶発的複雑性」ってのがあってですねぇ、「本質的複雑性」の方はどうやったってそれ以上はシンプルにはできないんです。
REST の「確認画面」にまつわる話もそれと似たような問題であるような気がしたんですね。
下手するとシンプルにするつもりが余計に複雑になってしまいかねない。
というか、そもそも REST って Web API とかに限定される話だと思ってたんですけど、違うの?
ちゃんと本読もう。
![]() |
RESTful Webサービス Leonard Richardson Sam Ruby 山本 陽平 オライリー・ジャパン 2007-12-21 |








