TOP比較データ> ドキュメント、教育、サポート
徹底比較!!DIxAOPコンテナ
DIxAOPコンテナ「Seasar2とSpring」

第1回:時代は今「DIxAOPコンテナ」
著者:豆蔵  長谷川 裕一、竹端 進   2005/10/19
前のページ  1  2   3  4  次のページ
ドキュメント、教育、サポート

   オープンソースを利用する際には、ドキュメントや教育、サポートが充実していることが不可欠な要素です。

   まず、ドキュメントですがSeasar2は日本語のWebドキュメントが非常に充実しています。市販の書籍も近いうちに発売される予定です。

   対するSpringは日本語の市販書籍が3冊あります。Springの解説も含まれている市販書籍も入れると5冊以上あり、非常に充実しています。Web上では英文のドキュメントは充実していますが日本語のものはSeasar2に比較すると充実しているとはいえないのが現状です。

   次に教育の面ですが、Seasar2とSpringともにその数は充実しているとはいいがたいのですが、教育コースを行っているところがいくつか存在しています。

   サポートに関しても、Seasar2の商用サポートを開始している企業もあります。メーリングリストも極めて活発であり、疑問や不具合の解消にもすばやくに応えてくれます。Springの国内におけるメーリングリストは活動していないに等しい状況なのでメーリングリストによるサポートは期待しないほうがよいでしょう。

   Seasar2と異なりSpringを利用する場合は、問題が起きた時に自力で解決するか、Springの教育やコンサルティングを行っている企業に解決を依頼する必要があるでしょう。
  Seasar2 Spring
書籍
  • 近日発売予定
  • Spring入門(技術評論社)
  • 実践Spring Framework (日経BP社)
Webドキュメント
  • 充実している(Seasae2の公式サイト)
  • 日本語は少ない
国内メーリングリスト
  • 活発に活動
  • まったく活動していない
その他
  • SeasarWikiやカンファレンスなどの活動を通したサポート
  

表5:ドキュメントやサポート


DIとは何か?

   さて、ここまでのところで何故DIxAOPコンテナが注目され利用されようとしているのか、利用できる状況にあるのかについてはご理解していただけたと思います。ここからは具体的にどうやってDIxAOPコンテナが問題を解決していくのかを解説します。まずはDIの仕組みについて解説します。

   DIとは日本語に訳すと「依存性の注入」となります。依存性の注入といわれてもピンとこないと思いますが、コンポーネントのプロパティに、依存するコンポーネントを設定することによりコンポーネントとコンポーネントを関連づけること、といえばご理解いただけるでしょうか。

   例えば従業員を管理するようなWebアプリケーションで、ビジネスロジックオブジェクトEmployeeManagerがデータベースアクセスオブジェクトEmployeeDaoを利用する(EmployeeManagerがEmployeeDaoに依存している)場合を考えてみましょう(図1)。

EmployeeManagerがEmployeeDaoに依存
図1:EmployeeManagerがEmployeeDaoに依存

   普通であればEmployeeManagerがEmployeeDaoのインスタンスを生成して、自身のプロパティにセットして依存関係を作成します(図2)。

通常の依存関係
図2:通常の依存関係

   DIとはこのようなEmployeeManagerとEmployeeDaoの依存関係の作成を別のオブジェクトが行うパターンのことをいいます。DIxAOPコンテナとは、その依存関係の作成を行うコンテナなのです(図3)。

DIxAOPコンテナによる依存関係の作成
図3:DIxAOPコンテナによる依存関係の作成


依存性の注入の種類

   次に、DIxAOPコンテナがコンポーネント間の依存性の注入をどのように実現するのかをEmployeeManagerのソースコードから例示します。依存性の注入には利用する操作によって、大きく3つの種類があります。


コンストラクタ・インジェクション

   コンストラクタ・インジェクションは、DIxAOPコンテナがコンストラクタを利用して、プロパティをセットします。

public class EmployeeManager {
  private EmployeeDao employeeDao;

  public EmployeeManager(EmployeeDao employeeDao) {
    this. employeeDao = employeeDao;
  }
(省略)
セッターインジェクション

   セッターインジェクションは、DIxAOPコンテナがプロパティに対応したセッターを利用します。

public class EmployeeManager {
  private EmployeeDao employeeDao;

  public void setEmployeeDao(EmployeeDao employeeDao) {
    this. employeeDao = employeeDao;
  }
(省略)
メソッドインジェクション

   メソッドインジェクションは、DIxAOPコンテナ(Seasar2のみです)が任意のメソッドを利用します。

public class EmployeeManager {
  private EmployeeDao employeeDao;

  public void addDaoObject(EmployeeDao employeeDao) {
    this. employeeDao = employeeDao;
  }
(省略)
前のページ  1  2   3  4  次のページ


株式会社豆蔵 長谷川 裕一
著者プロフィール
株式会社豆蔵  長谷川 裕一
XMLの技術開発やCORBA、EJBを使用したシステム開発などを経て、現在はアジャイル開発プロセスの導入から工学的なソフトウエアプロセスの策定、オープンソースプロダクトに関するコンサルタント、アーキテクトとして常に第一線で活躍。共著として「プログラムの育てかた 現場で使えるリファクタリング(ソフトバンク)」、「Spring入門(技術評論社)」。


株式会社豆蔵 竹端 進
著者プロフィール
株式会社豆蔵  竹端 進
鉄鋼系SIerを経て現職に。現在はオープンソースプロダクトに関するコンサティング、開発支援、教育を行うチームに所属。日々、新たな技術をどのように生かしていくかを考える毎日。現在の注目対象はSeasar2とMaven。


INDEX
第1回:時代は今「DIxAOPコンテナ」
  はじめに
ドキュメント、教育、サポート
  DIxAOPコンテナとシステム構築
  サンプルアプリケーションへのインターフェースの導入