CBDスクエア
テーマ:Javaコンポーネント技術解説:Seasar2  他の回へ
Seasar2 入門編:第1回
(発行日付: 2007/2/15)
Seasar2とは何か
Seasarとは?

Seasarとは、沖縄の方言で「狛犬(こまいぬ)」を意味します。 オープンソースプロダクトで成功するにも、ネーミングとキャラクターが重要だとして沖縄出身の開発者である「ひがやすを氏」が命名しました。ひがやすを氏によると、既にGoogleで検索結果件数が多いようなプロダクト名は、リリース後に、ぐぐらびりてぃが悪くなる(本当に知りたい情報にたどり着くのが難しくなる)ので避けた方が良いとのことでした。

Seasar2とは?

Seasar2はDI (Dependency Injection:依存性の注入)とAOP (Aspect Oriented Programming:アスペクト指向プログラミング )をサポートするオープンソースの軽量コンテナです。S2Containerと呼ばれることもあります。他のライバルの軽量コンテナと総合的に比較しても、実力が世界レベルにあると言えます。

Seasar2を使うことで高品質なWeb+DBアプリケーションを効率良く開発することができます。この『高品質』というのがポイントであり、従来高いスキルを持ったエンジニアでなければ手を付けることが難しかった領域をとても手軽に扱うことができます。

開発しているのが日本人ですから、ドキュメントが日本語であると利用しやすいものです。

Seasarプロジェクトとは?

正式名は「The Seasar Project」。(http://www.seasar.org/
オープンソースという仕組みのもと、S2Containerを中核としたプロダクトが実に70以上も開発・提供されています。これは従来、高度なデザインパターンを駆使しなければできなかったソフトウェアが、DIとAOPをベースにしたS2Containerを使うことで、よりシンプルかつ簡単な手法で開発ができるという要因が大きいと思います。

プロダクトの開発者であるコミッターの人数だけをみれば、アジア最大のオープンソースコミュニティとも言われています。

Seasarプロジェクトは、コミッターのブログやメーリングリスト、そして、イベントを通じて、ユーザの声が反映されやすい形式で活動が進められています。

Seasarファウンデーションとは?

Seasarプロジェクトなどの国内オープンソースソフトウェア開発コミュニティを 裏方で支援する役割の特定非営利活動法人です。(http://www.seasarfoundation.org/

組織の運営には何かとコストが掛かりますが、その受取先が個人や任意団体、企業の場合様々な問題が生じてしまいます。このような背景を考慮すると、特定非営利活動法人というのは、オープンソースコミュニティの実状にマッチした組織形態であるといえます。

主要ソフトウェア(プロダクト群)

Javaだけでなく、.NET FrameworkやPHPのプロダクトも存在します。プロダクトは、本体プロダクトとSandBoxと呼ばれる実験的なプロダクトに大きく分類されます。SandBoxを卒業して本体プロダクトに昇格する仕組みも存在しています。 (このあたりはThe Apache Software Foundation(ASF)のJakartaプロジェクトの仕組みと 似ています。以前は Jakarta Strutsだったものが、Apache Strutsに格上げされるそれと同じです。)

私が数多くのプロダクトから主要なプロダクトを厳選すれば、次のようになります。

Seasar2DIとAOPをベースにしたコンテナ。S2Containerとも呼ばれる。
Kijimuna設定ファイルのエラーチェック用Eclipseプラグイン
S2DaoDBアクセスを簡単にするO/Rマッピングフレームワーク
S2JSFJSFベースのプレゼンテーションフレームワーク
S2StrutsStrutsを使いやすくするプレゼンテーションフレームワーク
TeedaS2JSFの後継となるプレゼンテーションフレームワーク
舞姫Tomcatの起動を早くするEclipseプラグイン
Doltengジェネレータ機能付きEclipseプラグイン
Chura開発効率を向上させるAll in Oneパッケージ

『Chura』は厳密な意味でプロダクトと言えないかも知れません。画面からDBまでを一貫した設計思想の元にプロダクトの組み合わせの最適解、および、その利用方法をパッケージングして提供しているものと言えます。

紹介される機会は少ないのですが、個人的にTomcatの起動を早くする『舞姫』は実務家にとって必須のツールと考えています。

Seasar2(S2Container)は、DIとAOP以外にも下記のような機能を含んでいます。

S2Txトランザクションの自動制御
S2DBCPDBコネクションプーリング
S2JDBCJakarta CommonsのDbUtils のようなもの
S2UnitJUnitベースのテスティングフレームワーク
S2Dxoプレゼンテーションモデルとドメインモデルの変換
Loggerlog4jをラップした便利なログ出力モジュール

ちなみに、Seasar2の利用ユーザーの大半はS2Daoを利用しているので、S2DaoですらS2Container に統合することも検討・議論がされたこともあるようです。統合化によって得られるメリットも多いのですが、単独で機能を使いたい場合に困ると考えているユーザーもいるようです。

基本的にSeasar2のプロダクトを利用するにあたっては、DIとAOPの考え方は押さえておいたほうがいいと思います。

メリットと特徴

以下にSeasar2を利用する際のメリットや特徴をあげてみました。

設定ファイルをほとんど書かなくても良い

パッケージ構成やクラス名、メソッド名を名前規約に従うことで、ソースコードはシンプルだが XML地獄と呼ばれるXML形式の設定ファイルを作成・メンテナンスに苦労することから解消されます。また、規約に従うことで、プロジェクトごとに策定されるローカルな規約の量が減ります。これは、社内アーキテクトの仕事量を減らし、プロジェクト間のアーキテクチャーや品質のバラつきを少なくし、プロジェクトへの人員投入も容易になる2次的なメリットもあります。

ソースコードを変更しても再起動不要でサクサク開発ができる

Seasar 2.4から導入されたHotDeployと呼ばれるブラウザのリロードでソースコードの変更が反映される機能です。一度、体験すると従来のようにソースコードを1文字でも修正したらサーバー再起動というストレスのたまる世界には戻れません。Eclipseベースで開発をすると静的なエラーチェックやメソッド名などのコード入力補完機能が使えるので、スクリプト言語のサクサク感以上の恩恵があるのではないでしょうか。

開発者とユーザーの距離が近い

ブログやメーリングリスト、イベントを通じて行うコミュニケーションが日本語であることで従来の海外プロダクトにはみられないユーザーと開発者の良好な関係構築ができつつあると言えます。例えば、コミッターのブログを定期的にチェックしていると徐々にコミッターの設計思想が理解できるようになるでしょう。その上で、プロダクトを利用するのとそうでないのとでは、プロダクトの活用で大きく差が出ます。英語の壁でオープンソースコミュニティーのパワーを実感することが難しい我々日本人にとってはとても貴重な機会に思えます。

ヒーローが存在する

最近は、格闘技人気が強く、プロレスが押され気味であるが、観客としてどちらが面白いかは競技のルールではなく、ヒーローの存在が大きな要因である、という話を聞いたことがあります。

オープンソースの世界にも、これに似たものを感じます。つまり、プロダクトやコミュニティの良し悪しも、つまるところ、ヒーローの存在が大きいのではないかと。(結局は人ということでしょうか。)

Seasarコミュニティーには、ひがやすを氏というヒーローが他の優秀な技術者を引き付けており、これが今日のコミュニティーの活力に繋がっているのだと思います。

SI業界の現場で役立つことを強く意識

「SI業界の現場で役立つ」ことが強く意識されていることは、一見すると当たり前のように思えますが、実は非常に重要なコンセプトだと思います。「打倒EJB」や「シンプル」というコンセプトと比べて、ユーザー側はより恩恵が受けやすく、開発者側はより進化の手を休めないスタイルを確立しつつあるのではないかと思われます。実際にSeasar2を導入してみると、実に痒いところに手が届く工夫が盛り込まれているのが実感できることでしょう。

まとめ
Chura(Seasar 2.4 + Teeda + Dolteng)のデモ

いかがでしょうか?これまでSeasar2の概要を説明させて頂きましたが、やはり実際のソースコードを見ないと、実感が沸かない方も多いと思われます。そこで Chura(Seasar 2.4 + Teeda + Dolteng)によるHello Worldのデモを用意しました。デモの内容は次の通りです。

  • Eclipseプロジェクトの作成
  • Tomcatの設定・起動
  • Htmlプロトタイプの作成
  • Pageクラスの自動生成・修正
  • HotDeploy (ちょっと分かりにくいかも)
  • Webブラウザでの閲覧

以下の図をクリックしてご覧ください。(別ウィンドウが開きます。)

次回

次回は、各プロダクトの詳細な説明、及び、各プロダクトの組み合わせに関する説明をさせて頂きます。


出羽健一(でわけんいち)
株式会社ティーアンドエフカンパニー 最高技術責任者
金沢工業大学大学院 客員助教授


日本初のコンピュータ専門大学である会津大学在学中から、SI業界の実務に足を踏み入れている。3社のベンチャー企業の立ち上げに携わるなど業務経験は豊富。
「JAVA!」という世界初のJava専門書が出されてからJavaに着目し、これまでJavaを中心としたWebシステム構築に数多く関わる。
Strutsが出た当初、画面とDB関連のソースコード自動生成機能付きフレームワークを開発。(平成13年度経済産業省補助事業として採択)その実績をもって、金沢工業大学大学院の客員助教授へ。担当は「サーバーサイドJava特論」で、実践的なノウハウを教えている。
開発現場で技術選定を重ねるうちにSeasar2にたどり着いた。Seasarプロジェクトのコミッターとしても活動中。
「いかにドキュメントやソースコードを書かずに企業価値をあげるシステムを構築するか。」をモットーに、最近は自社の開発ノウハウを商品化してSI業界への貢献のために日々奮闘中。

■企業プロフィール
株式会社ティーアンドエフカンパニー(http://www.tafc.co.jp/)

2001年3月設立。
日本初のコンピューター専門大学、会津大学発のベンチャー企業。
社員のエンジニアは100%会津大学出身者。
ITのみならず経営コンサルティング領域にも注力し、2005年に会津若松経営品質賞の大賞受賞。


設立当初からJavaを中心としたWebシステムの構築に携わる。
クライアントの新規事業立ち上げの際、業務フロー構築フェーズから参画し、ベンチャー企業向けシステム開発を依頼されることが多い。


■主なサービス内容
 ・Webアプリケーション開発関連サービス
  (業務フロー分析、設計、開発、インフラ構築、保守・運用)
 ・Webアプリケーション開発関連の技術コンサルティングサービス
 ・Webアプリケーションセキュリティ診断サービス
 ・Webサイト企画/制作


設立当初は出向や下請業務も行っていたが、ここ数年は、開発業務は全て自社で行う。クライアントの内9割は直接取引。そのため、開発プロセス全体を自社で管理することが実現し、ノウハウを蓄積、共有できることで、クライアントの満足度を高めている。
今後は、SIerに対して、自社の設計手法やノウハウを体系化し、POJOアーキテクチャ時代に相応しい「高生産性フレーム提供サービス(仮称)」の商品化展開をしていく。


参考:ITProに掲載された弊社の事例紹介記事
「HTML画面をそのまま仕様書に」,5カ月で1000画面を構築した就職サイトPuffの高速開発手法
http://itpro.nikkeibp.co.jp/article/COLUMN/20070214/261859/

 
InfoQ Japan 運営スタッフ募集
コンポーネントスクエアにて、IT技術情報サイト「InfoQ Japan」を立ち上げ半年が経ちました。おかげさまでアクセス数も順調に伸びてきております。
それに伴い運営業務が増加してきたため、「InfoQ Japan」の運営スタッフを募集いたします。 興味のある方はお気軽にお問い合わせ、ご応募ください。
応募要綱はこちら
協力企業
CBDスクエアは、次の各社様にご協力いただいております。
CBDスクエアとは

CBDスクエアは、コンポーネントベース開発に取り組む方々のコミュニティです。コンポーネントベース開発に取り組む方々に有用な情報の提供や情報交換の場の提供を行い、コンポーネントベース開発を推進してまいります。

CBDスクエアのすべてのコンテンツをご利用いただくには、CBDスクエア登録が必要となります。CBDスクエア登録をしていただくと、最新情報をメルマガとして配信いたしますので、ぜひ、ご登録ください。


コンテンツの詳細は、こちらをご覧ください。

CBDスクエア登録の手順や利用方法は、こちらをご覧ください。

CBDスクエアの登録を解除する場合は、こちらをクリックしてください。

不明点や何かご質問がありましたら、こちらからお問合せください。

InfoQ Japan 新着情報
この情報は、InfoQ Japanの新着情報です。InfoQ Japanはコンポーネントスクエアが運営する最新技術の情報コミュニティです。
Java最新ニュース
この情報は、japan.internet.com様からご提供いただいております。
おすすめサイトのご案内

(c) ComponentSquare, Inc. 2005-2006 All rights reserved. 会社情報お問い合わせ個人情報保護に関して