yojikのlog

yojikのブログです

考えさせられる

RubyKaigi2006
RESTのPOST,GET,PUT,DELETEとDB(というかリソース)のCRUDの類似。Webアプリケーションにおける殆どの操作は、リソースのCRUDに対応させることができる。*1
実際のアプリのレベルに落として考えると、例えばユーザをグループに追加する際に、ユーザコントローラに対して「グループに加入させよ」メッセージを送る*2のではなく、メンバシップコントローラに、ユーザ-グループ間のメンバシップをCREATE(REST的にはPOSTで依頼)してもらう事になる。*3
上記を徹底すればWeb(アプリ|サービス)が、外部からDBのように扱えるようになる。多分、この話がActiveResourceに繋がる。(のだと思う)
なんか学ぶべき点が多そうです。
あと個人的には、DBのように扱うためには、ユーザ(や他のアプリ)との対話の中で、適切な単位でCRUDを纏め上げる仕組みが必要だと思う。トランザクションみたいな重い機構はキツいと思うけど、JBoss SeamにおけるConversationのような単位がそれに相当するのかなー。

*1:もちろん現在のブラウザはPUTとかDELETE出来ないけど、ユーザコードレベルではREST的に扱えるようにする

*2:あるいはグループコントローラに「ユーザを追加せよ」を送る

*3:この話はOOモデリングやDBモデリングとも関係していて興味深い