モジュール (
Module)とは、
工学などにおける
設計上の概念で、
システムを構成する
要素となるもの。いくつかの部品的機能を集め、まとまりのある機能を持った部品のこと。モジュールに従っているものを
モジュラー (modular)という。
入出力を絞り込み、標準化することで、システム開発を「モジュールの組合わせ」にすることが出来る。
ハードウエア
パソコンなどを作成する際、標準規格に合った部品であれば、どの会社のモノを使用しても機能を発現できる。
IBMが、
1980年代にパソコンの仕様を公開し、規格にあったモジュールであれば内部は
ブラックボックスでもかまわないという開発体制をとった。これにより、世界中に無数の部品メーカーが誕生、モジュールの性能を競ったためパソコンの性能は飛躍的に高まった。反対に、系列会社の生産した部品による作り込みの開発体制をとった日本メーカーは競争力を喪失した。これ以降、パソコンメーカーは性能がよく安いモジュールを世界中から探し組み立てるというビジネスに特化。組み立て産業となったパソコン産業では、格安の賃金で
大量生産できる新興企業が幅を利かせることになった。価格低下により、旧来のメーカーにとっては利幅の薄い仕事となり、とうとうパラダイム転換の主であるIBMは撤退することになった。
現在、「組み立て」の前段階のモジュール作成においては
CPUや
メモリなどの分野で最新技術がブラックボックスとして詰め込まれている。このため利益を上げやすい。一方で、「組み立て」後のアフターケアも需要は厚く利益を上げやすい。このように中段階だけ利益率が低く、前段階と後段階が利益率が高い状態が「∪」のような曲線を描くためスマイルカーブと呼ばれている。
同じようなモジュールの組み立て産業に
自動車産業があるが、自動車の場合は、容積や重量などが重要要素であり、2万点以上ある部品間の相互依存性(interdependency)が大きいため、部品間において綿密かつ独自のすり合わせが必須である。このため、組み立てといえども容易に参入できるものではなく、自動車組み立て業は高い利益を上げることができる。
ソフトウエア
プログラミングにおいて、一連の機能をひとまとまりになる複数の機能:モジュールに分割し、それぞれ別に開発する場合がある。こうすることで、全体として完成を早めることが出来る上、モジュール単位でテストしたりすることが可能になり、モジュールの入れ替えで機能を高めたり補修したりすることができるようになる。
プログラムのモジュールは、出来るだけ他のモジュールとの結合度を弱めて、独立性を高めることが望ましい。
モジュールは、(一般に
凝集した)
サブルーチンと
データ構造の集合体としてのソフトウェアの実体である。モジュールはその部分だけで
コンパイル可能な単位でもあり、再利用可能であると同時に、複数のプログラマが同時並行的にそれぞれ異なるモジュールの開発を行うことが可能となる。モジュールの特徴として「モジュール性」と
カプセル化があり、それらによって複雑なプログラムを理解しやすくできる。
モジュール性
モジュール性(Modularity)は
プログラムの属性であり、モジュールによって構成される範囲の程度を示すものである。プログラミングにおけるモジュラーアプローチは
人工知能システム構築で一般化しつつある。大規模人工知能システムは特定の機能を持つモジュールを組み合わせて構成され、各モジュールが相互に通信することでシステム全体としての動作を決定する。
プログラム内の任意の2つの部分が相互に関連することが多い場合、そのようなコードはモジュール性が低い。一方モジュール間のインターフェイスがきちんと定義されていて、それ以外の相互の関連が存在しないプログラムコードは、モジュール性が高いと言える。
モジュラープログラミングはモジュール性を高める技法である。
モジュールとクラス
- クラスにはインスタンスとしてオブジェクトを生成する機能がある。
- クラスは他のクラスの動作やデータを継承することができる。
-
ポリモーフィズムにより、クラスのインスタンス間の関係は実行時に変化するが、モジュール間の関係は静的である。
モジュールとクラスの類似点は以下の通りである。
- どちらも実装の詳細を外部から隠蔽する。
- どちらも階層(モジュール階層とクラス階層)を形成することができる。
関連項目
外部リンク
もしゆうる
もしゆうる
もしゆうる