|
||||||||||||||||
| 1 2 3 4 次のページ | ||||||||||||||||
| はじめに | ||||||||||||||||
|
今回は、ここ数年非常に注目されている技術であるDI(Dependency Injection)コンテナをテーマに取り上げます。 DIコンテナはアプリケーションのオブジェクトを疎結合にし、柔軟性を与えるものです。その結果得られる代表的なメリットとして表1のようなものがあげられます。いずれも品質向上に寄与する重要な効果です。
表1:DIコンテナの代表的なメリット しかし、そもそもRailsにはDIコンテナという考え方が取り入れられていません。そこで表1にあげたDIのメリットに関するRailsでの対応・非対応の状況を比較するという形で進めていきます。 なお、DIコンテナから得られるメリットはDIコンテナ上に実現されたAOPの力によるものが多いですが、今回はAOPもまとめて「DIコンテナ」として扱います |
||||||||||||||||
| DIコンテナとは | ||||||||||||||||
|
まず、簡単にDIコンテナについてのおさらいをします。 |
||||||||||||||||
| JavaとDIコンテナ | ||||||||||||||||
|
静的型付言語であるJavaではコンパイル時にクラスの関係が固定化されてしまいます。そこでテキストファイルにクラスの関係を外にだして記述するようにして、実行時に関係が決定されるようにしたのがDIコンテナです。 これで、Java言語が従来持っている堅牢さに加えて、ダイナミックさを持つこともできるようになりました。また、DIコンテナはオープンソースで数多く開発されています(表2)。
表2:代表的なDIコンテナ 今回は、DIコンテナの草分けといえるSpring Framework(バージョン1系)を代表として取り扱います。 |
||||||||||||||||
| モックオブジェクト | ||||||||||||||||
|
それでは、DIコンテナから得られるメリットがRailsでどのように対応されているのかを見ていきます。まずはテストへのモックオブジェクト導入についてです。 |
||||||||||||||||
| モックオブジェクトとは | ||||||||||||||||
|
一般にオブジェクト同士はお互いに依存し合っています。従って、あるオブジェクトのロジックをテストするには、依存しているオブジェクトも動作可能である必要があります。 モックオブジェクトとは、何らかの原因でテスト時に利用ができないオブジェクトを代替し、ダミーの返答をするものです。例えば、クレジットカードの決済処理のようにテストの度に動かすわけには行かないクラスのモックオブジェクトを作成することで、呼び出し側の単体テストが実施可能になります。 ![]() 図1:モックオブジェクト |
||||||||||||||||
|
1 2 3 4 次のページ |
||||||||||||||||
|
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||


