13:45〜14:30 異端のWebフレームワークSeaside

今回一番度肝を抜かれたのが、このSeasideでした。
正直に言うと、この時間帯のセッションにはあまり興味を持てず
とりあえずWebフレームワークってことだし見てみようか・・・なんて気でいたのです(失礼)
が、あのデモを見た途端思わず「おぉ・・・」なんて声が出ちゃうくらい驚きました。


セッションの骨子はid:critbitさんがまとめられているとおりです。
なので、私は具体的なデモの内容を書いてみようかと。


Smalltalkの開発の基本や「こんにちは」などの表示をどうやるか、なんてことを一通り行った後、
よくある画面の動きの紹介として、リンクをクリックするとカウントアップしたり
ダウンするという動きを表示していたのですが、そこからブラウザの戻るボタンで戻ると
たとえばカウンターが7の場合6→5→4と表示されるのは普通です。
で、驚いたのはここからです。
4の画面でカウントアップのリンクをクリックする場合
DBに登録されている値にプラスしていくのが普通なので、この場合は「8」になるはずなのが
なんと「5」になるんですねぇ・・・。
ここにSeasideの「継続」というのが絡んでくるんです。
どういうことかというと、大雑把な説明ですが、内部的に値が4から5になった場合のパラメータ、
5から6になった場合のパラメータといった感じで、
ワンアクション毎の動きを保持(という言い方が適切かは置いといて)していて
カウントアップを行う際に、そのパラメータと比較して4→5という動きを再現するのだそうです。
(おそらく同じパラメータがなければ普通にカウントアップ)
そして、一旦7までカウントアップされている動き・パラメータは全てキャンセルとなり
なかったことになります。


おそらく正しい用語(上記でパラメータとしたもの)は、違うと思うんですが
だいたいこんな内容で説明をしていただきました。


あとはid:critbitさんがまとめてる中でもありましたが、コンパイルや画面の再読み込み無しで
修正したソースの内容が反映されるというのも面白かったです。
あれは作っていて楽しいだろうなぁ・・・。


そうそう、質疑応答の中で、多言語でもSeasideのようなフレームワークの実現は
可能なのでしょうかという質問があったのですが
「「継続」という概念をもつ言語であれば可能なはずです」とのことでした。
Ruby札幌の方(Jpmobileの開発者の方?)が激しく反応しておられました。
Rubyにも「継続」ってあるんだそうです。
もしRubyでもこのようなフレームワークが誕生したら、それはもう大変なことになるのでは。


もっと書きたいんですが、それは折を見て・・・。