ひがやすを技術ブログ

電通国際情報サービスのプログラマ

1ページ複数テンプレート

携帯用のコンテンツを開発するときに、ドコモ、AUソフトバンク用にテンプレートは異なるけど、サーバサイドのロジックはいっしょということもあるでしょう。そんなニーズに応えるのが、1ページ複数テンプレート機能です。
例えば、HogePage.javaがあった場合に、hoge_i.html, hoge_a.html, hoge_s.htmlの3つのテンプレートを用意しておきます。HogePage.javaに次のようなdoメソッドがあった場合、次にどのページに遷移するのでしょうか。


public Class doAction() {
return Hoge2Page.class;
}
hoge_i.htmlでサブミットした場合は、hoge2_i.htmlに遷移します。hoge2_i.htmlがなければ、hoge2.htmlに遷移します。
同様にhoge_s.htmlでサブミットした場合は、hoge2_s.htmlに遷移します。hoge2_s.htmlがなければ、hoge2.htmlに遷移します。

DIやAOPを導入するためにどうやって頭の固いおやじを説得するか

私の経験だと、まずAOPの話は無理。宣言的トランザクションができるなんて、おやじには難しすぎ。
DIを導入することで、POJO疎結合にするとテストがしやすくなります。これもたいてい無理。テストを書くための工数がかかるんじゃないのと心配されるのがおち。
おやじでも、理解できるような工数削減のメリットを見せないと説得するのは難しい。こういう状況になるのは、Seasar2を最初に開発したときからわかっていました。
このような難しい状況を解決するために開発されたのがS2Daoです。S2Daoは最初からSeasar2を普及させるためのキラーフレームワークとしてデザインされています。分かりやすく工数削減できることを示すためにインターフェースを書くだけで良いという仕様になっているのです。インターフェースを書くだけで実装コードを書かなくても良いということになれば、頭の堅いおやじでも工数削減のメリットを理解することができます。
お客様によっては最初からDIやAOPのメリットを理解していただけることもありますが、導入に踏み切らせるには工数削減効果がないと難しい。
三菱東京UFJの案件についてもS2Dao工数削減効果が取り上げられていますが、やはり最も重要視されるということでしょう。
http://journal.mycom.co.jp/articles/2006/10/03/ufjis/
Seasar2(Churaファミリー)では、さらにTeedaDoltengによるコードの自動生成といった分かりやすい工数削減効果をみせています。Seasar2自身もHOT deployによってDIContainer自身も生産性向上に役立つことを示しています。
工数削減効果をわかりやすく見せるということは、今後さらに重要になってくるのではないかと思います。
DI自身は、非常に地味な技術ですが、HOT deployによって、ビジュアル的にも楽しめるものになったと思います。地味なのが悪いとは思いませんが、ビジュアル的に分かりやすいほうが、理解してもらえる確率は高くなるんじゃないかと思います。

Gridの超非同期処理

現在(trunk)のGridは、50件以上のデータがある場合、サーバ上で同期的に(Rendererで)HTMLを組み立てた後、非同期(Ajax)でHTMLをクライアント側に取り込んでいます。
大谷さんが非同期で取ってくる処理を50件ずつ細切れにとってくる処理を入れたので、結構滑らかに表示できるようになりました。しかし、サーバ上で同期的に処理している部分の時間は、現在でもブラウザが固まってしまいます。
次の対応としては、サーバ上でHTMLを組み立てる部分も完全に非同期処理にしたいと思います。これによって、何万件が対象でも、最初の50件分が先ず表示され、ユーザはブラウザを触ることができるようになり、その後、非同期で徐々にGrid上のデータが増えていくことになります。
HTMLをオンデマンドに組み立て、セッションに置かないので、メモリの節約にもなります。
Gridに3000件以上のデータを瞬時に表示したいという無茶(?)な要求もこれで対応できるかな。