相変わらず打ち上げには参加せずですが、行ってきました。
第九回XML開発者の日
今回はメモをほとんど取ってないのでまとめは無し。きっと、はてなブックマークの/entryに議事録がアップされるでしょう。
microformats押しなのかと思ったら、そんな訳でもなくて、前半はREST。個人的に興味深かったのもREST話。
さて、きっと資料が後で(既に?)アップされると思うので、感想(っぽいダイジェスト?)だけ。
RESTのお話。まず、おさらいだけど、『リソースを表現するURIが大事』で、『変わらないURIがクールだよね』という事。それで、変わらないというか、変え難くする努力はどうしたらいいだろうか。
- *.plとか実装依存な情報は隠そうね
- リソースは名詞だから、action(getHogeとかsetFooとか)は隠そうね
- 勿論、セッションIDは入れないよ
- イマドキのフレームワークがお勧め
- WebアプリとかWebAPIとかでURIを分けるような事は良くない(/xmlrpcとかね)
URIはクライアントに不透明であるべきで、ユーザーがURIを組み立てるとか駄目。リンクとかで表現出来るといいね。『"URI Template"』って注目かも(クエリパラメータをテンプレ化?よく分からなかった。OpenSearch関連らしいです)。
URIの長さ制限でRead(GET)を実現し難そうなら、まずPOSTでリソースを作って(201)、LocationでリソースURIを返そう。検索の際のクエリが長過ぎて、XML-RPCで実装しちゃいそうな場面も解決。『リソースを作ってから操作する』っていうのは目から鱗だった。
リソースとそのURIを基準とするアーキテクチャ(?)をROA(Resource Oriented Architecture)と呼んだりするらしい。SOA vs ROAとか。
リソースとURIは1対多になるよ。例えば、天気情報について考えると、『今日の天気』も『最新の天気』も一緒だよね。
ここまでが、山本陽平さんのお話。次は川村徹さんによる、Railsのお話。
どうやら、Railsは1.2から、よりRESTfulな設計思想(?)が反映されるらしい。そもそも、『URIに動詞(action)が入っていたのは間違いだった』という事らしい。で、{create, show, update, destroy}を{POST, GET, PUT, DELETE}と結びつけて、暗黙的なルーティング(?)をする事にするよ、と。で、コントローラはリソース名を表す、と。
リソースの形式(XMLとかJSONとか)をコンテントネゴシエーションで解決しましょう、と。Acceptヘッダ付きのリクエストをちゃんと解釈する、と。Content-Type付きリクエストから入力の形式の解決もするよ、と。
セッションもリソースだって考えるなら、最初にセッションリソースを作るってのもありかもね、と(色々ご意見あって、実際安全に使えるかはよく分かりませんでした)。
ウィザードをRESTで解決するにはどうしたらいいかな。
- 最初にリソース(注文書とか)を作って、後はひたすら更新
- 途中情報はhiddenで保持して、最後に作成
- 途中情報はセッションで保持して、最後に作成
(途中終了とかで)無駄なリソースがたくさん出来るかもだけど、フレームワークとかで解決手段を持てば、最初の方法がREST的。
ここまで、川村徹さん。
ここから、xfyというXML(XSLT?)で記述されたアプリを動かすアプリケーションプラットフォームに関してのお話とか、Plaggerのお話、規格標準化に関するお話、microformatsに関するお話と続きました。
Plaggerで印象的だったのは、『Feedでデータを正規化している』『FeedはWebのStandard IO』『WebのUnix shell(pipe)』というお話。あと、skype。
microformatsについては、『みんなで使っていこう、盛り上げよう』的なお話で終わってしまった気がする。導入だったという事でしょうか。MTを使い続ける事を考えると、何かプラグインを入れないと無理。自分でタグ書いてどうにかしようっていう気力は無い。Wikiなんて、HTML書かないし、もっと無理?
そんなこんなな、xmldevday9でした。
さて、actionを書かなくて良いフレームワークを探そうか、PHPで。んー、さすがにそこまで割り切れる文化はないかもね。
SBSのタグって、xmldevday9でいいんですかね。xmldevday?

