2008/5/24(土) に Seasar Conference 2008 Spring - トップページ 行ってきました。傘持っていかずに出かけて帰り際はコンビニまでダッシュしたのは良い思い出……
実は 200 人規模の勉強会というかカンファレンスははじめて。年齢層も幅広くてちょっと驚いたり。みんなバックグラウンドとか、カンファレンス来てる目的とか全然違うんだろうなぁ……というのも印象に残っている。
そういえば S2BlazeDS の話ぜんぜん無かったっけ。まぁ話すことはもう無いってことなのかな。
自分の感想と講演内容ゴッチャに書いてるので読みにくい部分も多々あるけど、自分用メモの側面が大きいのでその辺はカンベン願います……
さくさく感が加速するTeedaのページ駆動開発
生でひがさん始めて見た……
ページ駆動開発の利点、scaffold を基点にした開発。動くものがすぐ作り、それを基点に開発するスタイル。マスターメンテの類のシンプルなものはコレで作り、そうでないものは画面から作っていく。
聴衆の内 Teeda 知ってる人は 8 割。開発で使ったことある人は 5 割、といったところだった。ここまでの内容は Seasar2によるスーパーアジャイルなWeb開発 (WEB+DB PRESS plusシリーズ) と同じ。こういうスピーチが出来れば上司に Teeda の良さ伝えられるのかな……などと考えていた。
Seasar コンテナの Tips として jdbd.dicon, jdbc_st.dicon のように設定ファイル作り、product.txt で st にすれば jdbc_st.dicon が使われるようになる。開発フェーズによって設定ファイルを簡易に切り替えられる利点があるので是非利用してほしい、とのこと。
Teeda は JSF 準拠だが JSF 仕様を把握している必要はない。ただし、コンポーネント拡張が必要なケースに遭遇すると JSF 仕様を把握する必要がある。開発チームに JSF 仕様に精通している人が 1 人いるのが理想的らしい。
Q&A - Grid コンポーネントについて。table タグを 4 つ使う関係上ブラウザ間の表示がどうしても狂いがち。必要であればコンポーネントの自作をおすすめする、とのこと。
Q&A - ヘッダーなどの共通レイアウトはどうするのか? レイアウトの機能を利用する。これ結構強力な機能だと思うけど、講演ではちょっと説明する時間が足りなかったと思う。Teeda - Extension - 逆引きリファレンス - レイアウト を参照*1
Q&A - SAStruts と Teeda の使い分け、Seasar 的なおすすめなどについて。ひがさん的には、Teeda + S2Dao の方が生産性高いと思われる、と。ただし、Struts のデベロッパーはたくさんいるのでその経験を活かしたい場合は SAStruts も良い。Teeda の安定版はもうソースいじるつもり無し、ただし別系統はより使いやすいものを目指す。対して SAStruts は Struts のラッパーなので手を入れる気はない。元々 Struts 1.2.9 は安定してるし。
早分かりS2Dao
講演とは関係ないけど「Working Effectivelry With Legacy Code」という本が面白そうなのでチェキ。
JDBC 周りのコード要らず、Dao は Java の interface 書くだけ、という代物。また 2way sql によって SQL を独立したファイルに分離できる。このファイルに書いた SQL はコンソールなどからフツーに実行できるし、where 句の条件部分などは S2Dao が置換とか勝手にしてくれる。つまるところ、DB アクセスのコードは S2Dao にお任せするか SQL 自前で用意するか自分で選べる、ってこと。
O/R マッピングの部分。ResultSet からの詰め替え、PreparedStatement への設定を S2Dao はやってくれる。Tips として Entity となるクラスの toString() は Commons Lang の ToStringBuilder#reflectionToString(this) 使うと便利、とのこと。
ちなみに Seasar2によるスーパーアジャイルなWeb開発 (WEB+DB PRESS plusシリーズ) は S2Dao の入門にもなります。
DBFluteはどうなの?
S2Dao の拡張として作られたもの、だとか。
完全タイプベースな SQL 自動生成。S2Dao と違い、アノテーションの代わりに機能名をあらわすメソッドを書く感じかな、と。安全性を重視したインターフェース、という標語に心惹かれた。
規約をコンパイルエラーで防ぐ安全な開発。2way-sql の改良。規約ベース(BEGIN-END とか)をエラー出すように。SQL の戻り値を自動生成し、型の安全性を保証。
現場志向機能、を標語にしていたけどなるほどな、と。デバッグのしやすさの確保、ページング検索のサポートは個人的にwktk。
Spring, Java, .NET(C#) でも動作する。プロジェクト間のリソース(人員)交換を潤滑にするための措置。人員入れ替えしてもツールは同じなので教育コストの削減が図れるのだとか。すごいね。
Uruma による本格業務向けリッチアプリケーション開発のススメ
Java のリッチクライアントデスクトップアプリケーション*2。Adobe Air みたく web に特化しているわけではないが、Java で GUI アプリを作りやすくする代物。
まずは、GUI 周り技術の変遷、業務アプリのクラサバから web アプリへの進化の系譜、web アプリの利点・欠点などのまとめ。なんで web アプリって流行してるの? っておさらいしたい人は資料見るといいと思う。かなりよくまとまってると思います*3。
個人的に印象に残ったフレーズは「Ajax は HTTP の限界を延命してるだけなのでは?」「業務アプリとして何か作る文には単一の言語だけのほうがトラブりにくい」
↓
なので Java でデスクトップアプリ作れる Uruma 作りました、と。
特徴として印象に残った部分。
- GUI は XML で書く。Flex の MXML みたいな感じだったかな。
- GUI とのイベントマッピング。Flex の yui-frameworks みたいなものかな。この機能メッチャ便利なんでこれをサポートしてるのはうれしいところ。Flex も標準で対応してくれないかな、これ……
- データバインディング。双方向バインディングがアノテーションで出来るのはすごい。
- S2 ファミリーと連携可能。S2Dao とかとカンタンに接続出来る。
Java でデスクトップアプリ作るならかなり良い選択肢かも。あのデモンストレーションはかなり強力だったし。ただ、Flex Builder みたいなツールサポートがまだ貧弱、HOT Deploy に部分未対応、RCP の限界見極め等、まだ課題が残るが泣き所か。
あと、GUI アプリ作るの楽しいですよねーってのは同意。
Struts から SAStruts へ
スピーカーの方も言っていたが、Struts を潰す話じゃなくて SAStruts により Struts をより使いやすくしよう、といった方向性の話。
何故今更 Struts か? というととにかく無難だから。特にマネージメント層にとっては、充分過ぎる実績がある、ってのはやはり重要ってことだね。プログラマーにとっては面白みがないのかもしれないけど……
Struts はなぜデファクトスタンダードになりえたか? という話は興味深かった。
次にラッパー戦略の話。例としては DOS > win3.1 や C > C++ など。元はあまりイケてないけどソレナリに使えるモノに手を加えるやり方。その効果としては、使い勝手の改善、既存ユーザをつなぎ止め、あわよくば新規顧客の開拓。いざとなればラッパーなくしてそのまま使う安全策もあり。プログラミングのテクニック的にラッパーは頻出なパターンだけど、ビジネスでも似たような側面が出てくる点は面白い。
そしてライブコーディング。DB 連携してカンタンな TODO リストを作るものだったが、コレにひきつけられた人結構居たんじゃないかなぁ。プログラマ的には Teeda に比べれば面白みは劣るんだけど、Strtus から中々脱却できない Java プログラマを抱えてる組織(涙)に居る人はかなり興味覚えたんじゃないかと。「大企業数社が既に採用している」と言っていたんで、デベロッパ向けというよりマネージャ層向けの代物なんだろうねぇ。
本筋ではないけど S2JDBC も注目所だったかと。個人的には S2Dao, DBFlute の方が面白いなぁ、と思う。ただ、コード中に SQL か SQL っぽいものが無いと不安に感じる人もいるんで、コレはコレでアリだと思う。開発効率落ちたり、文字列打ち間違えでエラーでやすかったりしたとしても、ね。
世界に挑戦する新プロジェクト Slim の正体
新しい Seasar プロジェクトのハナシ。なのだけど……今ひとつよくわからなかった、ってのが俺の印象。まぁ、ひがさんが「資料だけだけだと誤解を招く可能性があるので今日の資料公開はしない。詳細な情報はこれから blog で発信していく」と発言していたし。なのでこの項目は特に不正確な記述になってる可能性が高いです。注意。
マーケティングの理論の話から、新しいコンセプト―Hot deploy 可能なフルスタックフレームワーク―の基、新しいカテゴリ、新しいキャッチフレーズ―Less is more*4, less learning cost― などを掲げて海外に売り込んでやるぜ、ってのはわかった。気が付いたら経営学の講義にいる気分だったぜ……
Slim の構成としては今まで Seasar プロダクトが培ってきたものの中から、web アプリ作るのにホントーに必要最小限な機能を凝縮・再構成したもの、といったイメージと俺は捉えた。アノテーションをより簡便にしたこと、海外展開にあたって Slim 上で Spring の機能を 100% 使えるようにする、というのも重要なところか。
あー、うん。やっぱ自分で書いててよくわからん文章になってるのがわかるのがイタイ……w
*1:コレに限らず Teeda のドキュメントはかなり整備されているし、Tips や Teeda でコレどーやんだ? な逆引き的なことは Seasar-user ML や web に大抵ある。俺は残念ながら Teeda の実開発経験無いけど、Teeda は結構枯れてるなぁ、という印象はそこそこある
*2:コレは作者の造語だとか。確かに Uruma の適切な表現は難しいかも……
*3:今の情報工学系の学生ってこういう経営と情報システム発展の歴史、って講義あるのかな? 当時、恩師が「君らが 30 になる頃にあの講義の意義がわかるよ」って言ってたけど、ホントだよ……
*4:ミース・ファン・デル・ローエ という建築家の言葉。会場でひがさんのプレゼン中 PC に表示されていた「ミース・ファン・デル...」が気になったのは俺だけではないはず