コンポーネント(コンポーネントウェア)とは何か?コンポーネント指向や、そのもとになった「分割統治法」や「単一責任の原則」も含めて解説
この記事では、「コンポーネントとは何か」や「コンポーネント指向開発の考え方」について解説していきます。
コンポーネントとは
コンポーネントとは、ソフトウェアやシステムを構成する部品のことを指します。
多くの場合、1つのシステムは複数の機能を持っています。
たとえば、スーパーマーケットにあるレジのシステムなら「投入されたお金を集計する機能」「合計金額をモニターに表示する機能」という具合に、複数の機能が組み合わさることで、1つのレジというシステムができ上がっています。
システムを開発する際は、これらそれぞれの機能を「部品」として開発することが基本となります。
機能を部品として開発することで、再びその機能を使用して別のシステムを作ることができます。
この部品化したシステムの機能のことを「コンポーネント」と呼びます。
また、この部品のことを、ソフトウェアやハードウェアといった呼称にならって、「コンポーネントウェア」と呼ぶこともあります。
コンポーネントとは、一般的な部品のように目に見えるものだけではなく、ある特定の機能をもった「プログラム部品」を指す言葉です。
コンポーネント指向
コンポーネント指向とは、機能ごとに小さな部品(コンポーネント)をたくさん用意し、それを組み合わせて開発を行う考え方です。
コンポーネント指向で開発を行うことで、技術を部品として蓄積できるため、将来的に別のシステムを開発する際にスムーズに開発を進めることができます。
また小さな部品(コンポーネント)を再利用して、新たなシステムを作ったり、現行のシステムを拡張したりすることもできます。
システムの修理を行う必要が出てきた際も、コンポーネント指向で細かな部品に分かれている場合、修正場所の特定がしやすく、修正による影響範囲も限定されるため、スムーズに修正を行うことができます。
コンポーネント指向の概念は、次に説明する「分割統治法」や「単一責任の原則」という考え方をもとに作られてきました。
分割統治法
コンポーネント指向のもととなる考え方の一つに「分割統治法」があります。
分割統治法は、大きな問題を小さな問題に分割し、その一つひとつを解決することで、最終的に最初の大きな問題を解決することに繋げる、という問題解決の手法です。
もとは数学の問題解決手法でしたが、システム設計においても分割統治法の考え方は使われています。
単一責任の原則
単一責任の原則とは、1つのコンポーネント(部品)がやるべきことは、一つに限定するべきであるという、ソフトウェア設計の考え方です。
コンポーネント指向では、いろんなことができる大きな部品を作るのではなく、一つのことだけをする小さな部品をたくさん作ります。
コンポーネントを小さくすることで、それらを組み合わせてシステムを作り上げるときに、より柔軟に制約が少なく設計を進めることができます。
コンポーネントに関する用語
ここでは、コンポーネントに関連する用語をいくつか紹介していきます。
JavaBeans
Javaのプログラムにおいて、よく使われる機能を部品化し、再利用できるようにコンポーネント化するための仕様です。
React
コンポーネント指向の考え方を用いたウェブアプリケーション開発用のJavaScriptライブラリです。
コンポーネント指向を用いたReactでは、従来のJavaScript のフレームワークであるjQueryなどよりも開発の工数を減らすことができると言われています。
まとめ
- コンポーネントとは、ソフトウェアやシステムを構成する部品のことを指します。
- コンポーネント指向で開発を行うことで、再利用性を高め、開発をスムーズに進めることができます。
- コンポーネント指向で開発を行う際は「単一責任の原則」により、なるべく小さな部品を作ることが、再利用性を高めることに繋がります。