Guiceの概要
Guice(ジュース)は、Google社が開発したオープンソースのDIコンテナで、Java EEのDI仕様の一つであるJSR 330の参照実装でもあります。
DI(依存性の注入、Dependency Injection)とは、コンポーネント間の依存関係をソースコードから排除し、外部の設定ファイルやアノテーションで注入できるようにするソフトウェアパターンのことを意味します。
Guiceを導入し、コンポーネント間の依存関係を排除するメリットとして、以下のようなことが挙げられます。
- コンポーネントが交換可能
設定ファイルを書き変えれば、再コンパイルの必要もなく、コンポーネントの交換ができる。 - 開発作業の並列化
あるコンポーネントを実装しないと、コンパイルエラーにより別のコンポーネントを実装できないといった、作業順序の制約から解放できる。 - テストの効率化
他のオブジェクトをシミュレートするスタブやモックオブジェクトを使用して、ユニットテストが容易になる。 - レガシーコードのリファクタリング
既存のソースコードの挙動を変更せずにリファクタリングすることで、保守性を高めることができる。ただし、Guiceはシンプルな技術である反面、自由度が高くさまざまな使い方ができてしまいます。したがって、明確な意図無く利用してしまうと、かえってデメリットばかりになってしまうため、注意が必要です。
Guiceは、2008年のJolt AwardsのLibraries, Frameworks and Components部門を受賞しています。標準的なJava環境用のもの以外に、Android向けのRoboGuice(ロボジュース)というDIコンテナも存在します。
現在の最新バージョンは、Google Guice 4.2.2です。(2020年1月現在)
Guiceの主な機能と特徴
Guiceの主な機能は、以下の通りです。
- DI
- AOP(アスペクト指向プログラミング、Aspect Oriented Programming)
Guiceには以下の特徴があります。
- シンプルで軽量
- アノテーションベース
- StrutsやSpring Frameworkとの統合が可能
- JSR 330の参照実装
Guiceと同類のソフトウェア
DIを実現するソフトウェアの中で、最も有名なものはSpring Frameworkです。
開発当初のSpring FrameworkはDIとAOPを実現する軽量なフレームワークでしたが、現在は多数の機能を持つ包括的なフレームワークとなっています。
Spring Frameworkの他にもSeasar2やJava EEでDIは実現できますが、いずれも多機能で、軽量なフレームワークとは言い難いです。
DIのみを実現することが目的であれば、軽量でシンプルなGuiceの選択を検討した方がいいかもしれません。
Guiceとライセンス
Guiceのライセンスは、「Apacheライセンスバージョン2」(Apache License version2)というライセンスに基づいて公開され、営利、非営利を問わず、誰でも自由かつ無償で利用・改変・再配布できるようになっています。
関連OSS
- Spring framework
- Play Framework
- MyBatis
Guiceのダウンロード
Guiceのサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。