8章コンポーネントベース思考
「3章 モジュール性」では、関連するコードの集まりであるモジュールについて説明した。しかし、アーキテクトは通常、モジュールの物理的表現であるコンポーネントをベースにアーキテクチャを考える。
開発者は、開発プラットフォームに応じたさまざまな方法で、モジュールをパッケージ化する。モジュールが物理的にパッケージ化されたものを、私たちは「コンポーネント」と呼んでいる。Javaのjar
ファイル、.NETのdll
、Rubyのgem
など、ほとんどの言語はモジュールを物理的にパッケージ化する仕組みをサポートしている。この章では、分類から発見まで、コンポーネントに関するアーキテクチャ上の考慮事項について説明する。
8.1 コンポーネントの分類
コンポーネントの概念をさまざまな要因に基づいて細分化することは、開発者にとって有用だ。そのうちのいくつかを、図8-1に示す。
コンポーネントとは、言語固有の仕組みによってアーティファクトをグループ化するものだが、階層化を行うために、それらはしばしば入れ子構造となる。図8-1に示すように、最も単純なコンポーネントは、関連コードをクラス(非オブジェクト指向言語では関数)よりも高度なモジュールによってラップしたものとなる。この単純なラッパーは、しばしばライブラリと呼ばれる。ライブラリは、呼び出したコードと同じアドレス空間で実行され、言語の関数呼び出しメカニズムを介して通信する。ライブラリは通常、(Windowsユーザーの悩みの種であったDLL⦅ダイナミックリンクライブラリ⦆のような注目すべき例外はあるものの)コンパイル時の依存関係になる。
コンポーネントの種類には、サブシステムやレイヤー、イベントプロセッサー向けのデプロイ可能ユニット、サービスなどがある。 ...
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.