8章コンポーネントベース思考

「3章 モジュール性」では、関連するコードの集まりであるモジュールについて説明した。しかし、アーキテクトは通常、モジュールの物理的表現であるコンポーネントをベースにアーキテクチャを考える。

開発者は、開発プラットフォームに応じたさまざまな方法で、モジュールをパッケージ化する。モジュールが物理的にパッケージ化されたものを、私たちは「コンポーネント」と呼んでいる。Javaのjarファイル、.NETのdll、Rubyのgemなど、ほとんどの言語はモジュールを物理的にパッケージ化する仕組みをサポートしている。この章では、分類から発見まで、コンポーネントに関するアーキテクチャ上の考慮事項について説明する。

8.1 コンポーネントの分類

コンポーネントの概念をさまざまな要因に基づいて細分化することは、開発者にとって有用だ。そのうちのいくつかを、図8-1に示す。

コンポーネントとは、言語固有の仕組みによってアーティファクトをグループ化するものだが、階層化を行うために、それらはしばしば入れ子構造となる。図8-1に示すように、最も単純なコンポーネントは、関連コードをクラス(非オブジェクト指向言語では関数)よりも高度なモジュールによってラップしたものとなる。この単純なラッパーは、しばしばライブラリと呼ばれる。ライブラリは、呼び出したコードと同じアドレス空間で実行され、言語の関数呼び出しメカニズムを介して通信する。ライブラリは通常、(Windowsユーザーの悩みの種であったDLL⦅ダイナミックリンクライブラリ⦆のような注目すべき例外はあるものの)コンパイル時の依存関係になる。

図8-1 コンポーネントのさまざまな種類

コンポーネントの種類には、サブシステムやレイヤー、イベントプロセッサー向けのデプロイ可能ユニット、サービスなどがある。 ...

Get ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.