2008年06月07日

Chapter 1. Introduction

第1章 はじめに
広い意味での(制限つきのアプレットから、階層構造でサーバサイドな本格的エンタープライズアプリケーションまでを含む)Javaアプリケーションは、通常多くのオブジェクトの協働によってアプリケーションとして正常な動作をします。ですからオブジェクト間には依存性があるといえます。

Java言語とJavaプラットフォームは、プリミティブ型やクラス、新たなクラスを定義する手段といったごく基本的なものから、多機能なアプリケーションサーバやウェブフレームワークにいたる広い範囲にわたって、アプリケーションを設計・構築するための豊富な機能を提供してくれます。しかし、基本的なコードブロックを、わかりやすくひとつのものにまとめ上げる手段がなく、だいたいの場合アプリケーションを構築する役割の設計者や開発者がそれを提供することになります。公平を期すために言及しておくと、多機能なアプリケーションを構成するためのさまざまなクラスやインスタンスを組み立てるために、たくさんのデザインパターンが役立ちます。いくつかの例を挙げると、Factory、Abstract Factory、Builder、Decorator、Service Locatorなどのパターンがありますが、これらのパターンはソフトウェア構築業界では幅広く知られ、受け入れられています(だからこそこれらのパターンがパターンとして定義されたとも言えるでしょう)。デザインパターンが役に立つことは確かですが、しかしそれは名前のついたベストプラクティスでしかなく、そのパターンが何をするためのものであり、どういう場合に適用すると効果的で、どういう問題を解決することができるのか、等々が述べられているに過ぎません。デザインパターンの本やWikiはたいがい「…このパターンができることは、…」という文句を最後の段落で使って、こうした様式化されたパターンをリストアップしているだけで、それを持ち帰り、深く考え、そしてアプリケーションに実装するのは開発者の仕事なのです。

Spring FrameworkのIoCコンポーネントは、各種それぞれの特性を持ったコンポーネントを動作・使用が可能なアプリケーションに組み上げるための定型化された手段を提供することによって、アプリケーションを構成するクラスやオブジェクト、サービスの選択に関する企業の心配事を取り除くことを狙いとしています。Spring Frameworkは、何年もかけていくつものアプリケーションを経て検証されてきたベストプラクティスとデザインパターンを利用しています。そしてそのパターンを実際にコードに落とし込み、設計者・開発者がアプリケーションに組み込むことができるクラスとして提供しています。これは確かに非常に良いことであるということが、たくさんの組織がSpring Frameworkを使用して堅牢で保守性の高いアプリケーションを開発したという実績によって証明されています。

背景

2004年のはじめ、Martin Fowlerは彼のサイトでIoC:Inversion of Control(制御の反転)について読者に「制御の何を反転させるのかということがよくわからない」という疑問を投げかけました。そしてFowlerはもっと説明的な名前をつけてはどうかと提案し、そこからDI:Dependency Injection(依存性の注入)という用語を使用するようになりました。彼の記事にはさらにIoCとDIという概念を裏打ちしている考えに対する解説が記されています。IoCやDIについての優れた分析を知りたい場合には彼の記事を参照すると良いでしょう。http://martinfowler.com/articles/injection.html(訳注:http://kakutani.com/trans/fowler/injection.htmlに角谷 信太郎氏による和訳があります)


原文:http://static.springframework.org/spring/docs/2.5.x/reference/introduction.html
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/99715571

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。