モジュール
モジュール(英: module)とは、工学などにおける設計上の概念で、システムを構成する要素となるもの。いくつかの部品的機能を集め、まとまりのある機能を持った部品のこと。モジュールに従っているものをモジュラー(英: modular)という。
入出力を絞り込んで標準化することにより、システム開発を「すり合わせ」から「モジュールの組み合わせ」に変更できる。
パソコンなどを作成する際、標準規格に合った部品であれば、どの会社のモノを使用しても機能を発現できる。
IBMが、1980年代、コンピューター「PC/AT」の仕様を公開し、規格にあったモジュールであれば内部はブラックボックスでもかまわないという開発体制(モジュール化)をとった。これにより、世界中に無数の部品メーカーが誕生、モジュールの性能を競ったためパソコンの性能は飛躍的に高まった。反対に日本メーカーは系列会社の生産した部品による作り込み(摺り合せ)の開発体制をとったため競争力を喪失した。これ以降、パソコンメーカーは性能がよく安いモジュールを世界中から探し組み立てるというビジネスに特化。組み立て産業となったパソコン産業では、格安の賃金で大量生産できる新興企業が幅を利かせることになった。価格低下により、旧来のメーカーにとっては利幅の薄い仕事となり、とうとうパラダイム転換の主であるIBMは撤退することになった。
現在、「組み立て」の前段階のモジュール作成においてはCPUやメモリなどの分野で最新技術がブラックボックスとして詰め込まれている。このため利益を上げやすい。一方で、「組み立て」後のアフターケアも需要は厚く利益を上げやすい。このように中段階だけ利益率が低く、前段階と後段階が利益率が高い状態が「U」のような曲線を描くためスマイルカーブ(英語版)と呼ばれている。
モジュール性(Modularity)はプログラムがもつ属性であり、モジュールによって構成される範囲の程度を示すものである。
モジュールは低い結合度と高い凝集度をもつことが望ましい。すなわちプログラム内の任意の2つの部分が相互に関連することが多い場合、そのようなコードは結合度が高くモジュール性が低い。一方モジュール間のインターフェイスがきちんと定義されていて、それ以外の相互の関連が存在しないプログラムコードは、モジュール性が高いと言える。また関係性の低いプログラムが内部に混在した(関心の分離が実現していない)モジュールは凝集度が低くモジュール性が低い。