Seasar Conference 2007 Autumnの会場
Seasar Conference 2007 Autumnの会場
[画像のクリックで拡大表示]
ひがやすを氏
ひがやすを氏
[画像のクリックで拡大表示]
S2JDBCのコーディングのデモ。「jo」と打ち込むと,Eclipseのコード補完機能により「join」などの候補が表示される
S2JDBCのコーディングのデモ。「jo」と打ち込むと,Eclipseのコード補完機能により「join」などの候補が表示される
[画像のクリックで拡大表示]

 「『流れるようなインタフェース』でデータベース・プログラミングの生産性を10倍にできる」---ひがやすを氏は11月11日,「Seasar Conference 2007 Autumnで,同氏が開発した新データベース・アクセス・ツール「S2JDBC」を披露した。

 Seasar2は,ひがやすを氏が開発しているオープンソースのフレームワーク。「つらいJavaから楽しいJavaへ」をモットーに,プログラムの柔軟性を高めるDI(依存性注入)や,デプロイせずにプログラムを修正して実行できるホット・デプロイなど,Java開発の生産性を向上させたり,ストレスなくアジャイルな開発が行えるようにする機能を提供しており,三菱東京UFJ銀行(関連記事)やNTTデータ イントラマート(関連記事)などで採用されている。

 Seasar ConferenceはSeasar2を中心とするオープンソース・ソフトウエアの開発を支援しているSeasar Foundationが開催しているイベントである。今回は約600人が参加,20以上のセッションが行われた。

 ひが氏は「データベースプログラミングの生産性を10倍向上させるSeasar2の新機能」と題するセッションでS2JDBCを紹介した。「流れるようなインタフェース(Fluent Interface)」とは,Martin Fowler氏が提唱するプログラミング・インタフェース(Fowler氏のBlog日本語訳)。プログラマの思考を止めない,自然な,読みやすいプログラミング・インタフェース。S2JDBCは,この思想を実装したものだ。

 その特徴は「思考を止めない自然な構文と,Eclipseの自動補完によってサクサクとコードを書ける」(ひが氏)ことなどだ。例えば「.f」とつと、「.from」とコード補完される。「.j」と打つと「.join」という候補が出てくる。これらのSQL文の要素をjdbcManagerクラスのメソッドとすることで,自動補完が可能になっている。「90%のSQLを自動生成する。APIを覚えなくても自然に使える」(ひが氏)。Java5の新機能であるgenericsや可変長引数を利用することによって実現した。

 Ruby on Railsは「設定よりも規約(Convention over Configuration,CoC)」という思想に基づく。例えばpersonクラスがpeopleテーブルに関連付けられる,といった規約だ。CoCは大幅にコードの量を削減し生産性を高めたとされる。

 しかし,ひが氏はCoCにも欠点はあると指摘する。「規約を覚えなければ,それがブラックボックスになってしまう。学習期間を要し,エラーもわかりにくい」(ひが氏)これに対し「S2JDBCは学習コストが低い」(ひが氏)。CoCの有用性を否定しているわけではないが,学習期間をかけられない場合などにS2JDBCの方が有利だとする。

 「Java標準のJPA(Java Persistence API)の難しい機能を除き,覚えやすく,90%のSQLを自動生成でき,多くのテストケースを生成し,トラブりにくいことにより,10倍の生産性が得られると考えている」(ひが氏)

 また,速度面では,Employeeを1万件取得するベンチマークにおいて,JDBCを1とすると,S2JDBCが2.1,Hibernate 4.88だった。Adressを1万件取得する場合,JDBCを1とすると,S2JDBCが2.07,Hibernateが118.03。Employeeを1万件バッチ挿入する場合JDBCが1に対しS2JDBCが1.29,Hibernateが4.37。Employeeを1万件更新する場合JDBC1に対しS2JDBCが1.21,Hibernateが1.83だったという。

 このほか,Seasar Conference 2007 Autumnでは,東京工業大学 准教授 千葉滋氏によるJavaテクノロジーの今後の方向性に関する講演のほか,スターロジック CEO 羽生章洋氏によるオープンソースを活用した同社の脱下請けへの道程を語った講演,ライフハック・ツールtugboat.GTD,ノンプログラミングでWeb DBアプリケーションを開発できるツールTuigwaa,Javaコンパイル時にユーザー実装エージェントを実行するIrenka,JSFエンジンTeeda,HTMLテンプレート・エンジンMayaa,リッチクライアント・フレームワークS2JFaceなど多くの関連プロダクトについての講演があった。講演資料はSeasar Conference 2007 Autumnのページからダウンロードできる。