日々常々

ふつうのプログラマがあたりまえにしたいこと。

T2 Framework コードリーディングに参加してきました

T2Framework コードリーディング 第1回に参加してきました。予備知識として持っていったのは、先日書いたGettingStartedとサンプルで挙動を見たのプラスアルファ程度です。なぜGroovyの記事が先になったのかは秘密です。おそらく"say"が原因とだけ言っておきます。

TLに告知が流れたので寝ぼけた勢いに飛びついてみたんだけど、人数が少数ですっごくドキドキしました。人見知り属性持ちなので辛い所。

さて内容は、まず id:tan_go238id:backpaper0 の発表です。こちらはustreamにあります。笑い声がいっぱいです。楽しかった。
http://www.ustream.tv/recorded/11109978
http://www.ustream.tv/recorded/11110740

その後は、がっつりリーディング。コードを読みつつ、スライドを見返しつつ、気になったところを聞いてみたりとかでした。コードを読むときにテストを動かしてーと言うのは考えた事も無かったのですが、テストあると読みやすくてびっくりしました。

T2Frameworkの使いどころ

T2Frameworkは「Webとの接続」に特化したフレームワークで、他の何もしません。どこからか来たリクエストを受け取って、処理して、返す。それだけです。そこに焦点を絞っているため、その部分の見通しの良さは驚きでした。*1

接続に特化しているため、Webに繋がるものであればクライアントを選びません。ViewがJSPだけならば、カスタムタグがいっぱいあるフレームワークを使ったほうが楽かも知れません。でもJSPだけじゃなく、AjaxだとかでXMLだのJSONだのFlexだとかでAMFだのを使うとなると、JSPを前提にしたフレームワークでは少しひねた事をしなければなりません。Responseに直接書き出しとかになりますか。
T2Frameworkではその辺りが前提になっているので、複数の通信フォーマット(とでも言うのだろうか)を同時に扱う場合でも、それほど混乱しません。結果として、システム全体が見通しやすくなるようです。(実際に業務で使っている tan_go238 さんのお話を聞いた感じそんな印象。)

T2Frameworkは現時点で既存の開発において、他のフレームワークに置き換えるには頼りない部分があるかもしれません。ですが今後。クライアント側はOSも色々出てきてるし、ブラウザだってIE一極化は崩れつつある。スマートフォンも色々出て来るしでどんどん多様化していくわけです。大きなフレームワークは持て余す部分が出て来るのかなーと。そうなった時に便利なんではなかろうかなーと。話していても「少し時代を先取りしている感じで、今すぐ流行るもんでもない」と言う印象でした。

コードリーディング全体

フィルタ指向?てことで、全部フィルタの中で済みます。被せるフィルタを増やせば全体に通して処理を追加できます。あんまりやらないと思いますけど。
リクエストを受けて、フィルタのチェインを組み立てて、それを実行するって感じ?
フィルタがNavigationを返したら終了、返さなきゃ続行。Pageクラスを通しても無理矢理続ける事は出来て、その場合にはURL削った先に流れる?でもそんな事やるメリット無いよね。
ViewDevelopmentPageの使いどころがイマイチ判らない。工事中とか?何か違う。
似たクラス名が多くて脳メモリで追ってると混乱する。ActionInvokerImpl、ActionContextImpl、ActionInvokingContextImpl、ActionInvokerFilterImpl、ActionArgumentsPreparationFilterImpl…とか。書き出してしまえば大丈夫なので、名前のせいだけではないです。現地でもこの問題はホワイトボードに書き出して貰ったら解決しました。

個人的未読箇所

  • URLに対するPageのリスト(Listかな?)を組み立てるとこ
  • マルチスレッド関連
  • AMFの一群

久々にがっつりコード読んだのでかなり疲れました。お蔭で翌日は殆ど寝てすごしたような気がします。普段脳みそ甘やかしすぎなのかもしれません。

*1:アノテーション付けたらそのアドレスで繋がるとか、Struts1系しか知らない私にとっては信じられない話でした。勉強不足なのは判ってるんですが…orz