日本で開発されたオープンソースのJavaアプリケーション・サーバーSeasarが注目を集めている。外国為替取引システムやテレビ会議システムなど,既にいくつかの実際の業務システムに採用されている。軽量コンテナ,アスペクト志向など最先端の技術を実装しているが,その目的は「新しい技術を追いかけるのではなく,実案件の課題を解決する」ことにあるという。Seasarを開発した比嘉康雄氏に,開発の経緯やその思想について聞いた。(聞き手はIT Pro編集 高橋信頼)

――Seasarを利用するユーザーが増えています。

比嘉康雄氏
 2004年5月にSeasar2をリリースしたのですが,既に沖縄の土居さんという方が,テレビ会議システムに利用しておられます。ほかにも既にユーザーにシステムを納品したという方もいます。

 Seasarの前バージョンはマネースクウェア・ジャパンのインターネット外国為替取引システム(関連記事)に使われました。

 4月に開催した説明会では,90人弱の方が集まってくれました(関連記事「日本発の「世界最先端」,オープンソース軽量コンテナに熱い視線――Seasar2説明会から」)。これまでの累積ダウンロード数は9000以上になります。

 またEclipse用のSeasarプラグインなどのツールを作ってくださっている方もいます。

 Seasarのテーマは「J2EEの解体と再構築,易しさと優しさ」です。J2EEの複雑さを取りのぞき,トランザクションの自動制御やコネクション・プーリングといったJ2EEのおいしいところだけを,なるべく軽く簡単に,利用できるようにしています。私自身,本業はインテグレータの技術者で,実際に使うユーザーの目線で開発するように心がけています。それがSeasarが注目されている理由だと思います。

――開発を始めたきっかけは。

 友人から「シンプルな軽いJavaアプリケーション・サーバーを探している」という相談を受けたことです。

 友人というのはインテグレータのスターロジック代表取締役の羽生章洋氏で,彼はマネースクウェア・ジャパンの外国為替取引システムを開発しようとしていたところでした(関連記事)。

 必要な機能というのは,コネクション・プーリング機能と,トランザクション管理の機能です。もちろん,J2EEに準拠したアプリケーション・サーバーはそういった機能を持っていますが,J2EEのAPIはかなり煩雑です。

 自分の経験からも,すぐに手になじむシンプルなアプリケーション・サーバーが必要だと感じていました。本業でEJBコンテナを書いた経験もありましたので,作成することにしました。

 土日を使って,数カ月間かけてSeasarを書き上げました。スターロジックがアプリケーションを書き,バグが見つかったら修正しました。外国為替取引システムは2003年4月に稼動しました。現在もSeasarの上で動いています。

――新バージョンのSeasar2で,軽量コンテナなどの新しい技術を取り入れた理由は。

 もっとフレームワーク的なものを提供することで,ユーザーが楽になるのではと考えていました。そこでSeasar2では,アスペクト指向プログラミング(AOP)機能を備えたDI(Dependency Injection)コンテナとして作り直しました。DIコンテナとは,IoC(Inversion of Control)コンテナとも呼びますが,オブジェクトの生成や依存関係の解決をコンテナが行うことで,プログラムを容易に作成できるようにする設計思想です(関連記事)。インパクトがあってなじみやすい呼び方をということで,我々はDIコンテナを略してダイコンと呼んでいます。

 代表的なDIコンテナにSpringがありますが,私の目には複雑で面倒に見えました。自分の実際の開発に使えるかというと,ちょっとどうだろうと思うところがありました。

 Springは,先進的なユーザーならもちろん使いこなせると思いますが,実際の案件では様々な技術レベルの持ち主がプロジェクトに参加します。誰にでも使いこなせる敷居の低いものでなければなりません。Seasarではそういった問題を解決できるようにしているつもりです。庶民のための道具なのです。

 Seasarには目新しい技術も織り込んでいますが,Seasarを使ってくれている方たちというのは,技術に興味があるかというとそうではなくて,実際の案件を楽にしたいという人が多いんです。私自身,実際の案件で使えることを目標にSeasarを開発しています。

 現在は,データベース・アクセス機能であるS2Daoを開発中です。今あるO/Rマッピングのフレームワークは,複雑すぎたり,自由にSQL文を記述できないものが多い。30分で理解でき,SQL文は自動生成,でもニーズに合わせてSQL文を自由に記述することもできるよというのがS2Daoです。セミオートマチックの自動車のようなものですね。

――Seasarを使う上での注意点は。

 庶民のためのツールですが,魔法のツールではないので,ダイコンにふさわしいアーキテクチャ・設計手法を使う必要があると考えています。アーキテクチャ・設計手法については私のBlogにまとめています。

――休日を潰してSeasarを作るメリットは何ですか。

 最終的には自分のためになります。多くの方の意見を聞いてものを作るというのは,得がたい経験です。自分ひとりでは,決してできないものが作れる。

 Seasarを作るにあたっては,Blogが大きな役割を果たしています。私が「こんなことを考えている」といったことをBlogに書くと,いろんな人からそれについての意見がトラックバックされてくる。

 以前は,こういったコミュニケーションはメーリング・リストで行われていたと思いますが,メーリング・リストというのはいわば公の場で,投稿するのは心理的なハードルがある。でもBlogは自分の日記のようなものですから,気軽に意見を書くことができます。そういった意見がとても役立っています。

 アーキテクチャや設計を考えることは楽しいです。でも実は,プログラムを書くことはあまり好きではないんです。たくさんプログラムを書かなくてもすむように,プログラムを作っている感じでしょうか。Seasarのソースコードというのは実は結構小さいんです。シンプルにする,必要なものだけを作るというXP(eXtream Programing)的な考え方に基づいています。

 例えば,AOPの部分は,SeasarとSpringはどちらもAOP Allianceの標準に準拠しているんですが,SeasarのソースコードはSpringと比べて非常に小さい。良い悪いではなく,思想の違いですね。