コンポーネントシステムとは
ここでのコンポーネントとはソフトウェア部品のことを指しますが、一言でソフトウェア部品といっても、それがどのようなものを指すかは非常に曖昧です。
例えば、C言語のライブラリもある意味ではソフトウェア部品といえなくはありません。また、C++のクラスライブラリ、テンプレートライブラリもそうです。古くはUNIXのパイプもプログラムを組み合わせて利用するコンポーネントシステムとして考案されたようです。
このように、ソフトウェア部品を構成する方法としていろいろなものがありますが、何らかの規則に従って部品化を行うことで、ソフトウェア部品を組み合わせて利用しやすくできます。そのようなソフトウェアの部品化のルールが、コンポーネントシステムの基礎であり、そのルールに従ってコンポーネントを作り、さらに作成されたコンポーネントを使用してシステムを組上げるための環境を含めた一式がコンポーネントシステムということになります。
非組込み分野のコンポーネントシステム
そのようなコンポーネントシステムには、実際さまざまなものがあります。非組込みの分野で商業的に成功している例としては、マイクロソフト社のCOMやJavaにおけるEJBを挙げることができます。
余談になりますが、Internet Explorer(IE)がVersion5.0になって、WordやExcelがIEの中でまともに動くようになったとき、私はこれがどうやって実現されているのか知りたくなりました。少し調べてみると、OLEやCOMという技術が使われていることがわかりました。IEの中でWordやExcelが動くという大仕掛けを実現する基礎としてソフトウェア部品化技術が使われていて、すでに大きな成果を上げていることにちょっと焦り、組込みシステムでも部品化の技術が必要だと感じたのが、私がコンポーネントシステムを提案するようになったきっかけでした。
組込みシステム用のコンポーネントシステム
それでは、組込みシステム用のコンポーネントシステムがこれまでなかったのかというと、実は多くのものが提案されています。しかし、それらのほとんどは、あまり知られていません。例えば、Phillips社のKoalaは比較的有名ですが、私たちがこれを知ったのは、WGを始めて調査を行ったときです。また、新しいところでは欧州の自動車業界が中心に行っているAUTOSARにおいても、組込みコンポーネントシステムが作られようとしています。
TECSが目指すこと
このように組込みコンポーネントシステムは、けっして新しいものではないのですが、これまでに決定版がなく、広く一般的に使われるものがありませんでした。私たちは、TECSを開発するにあたって、なぜこれらが一般化していないかという点は、あまり気にしていません。私たちは、私たちがこんなものが欲しいというものを作っています。可能な限りのアイデアを詰め込みつつ、可能な限りシンプルに保つように努力しています。それがどの程度受け入れられるのかわかりませんが、真に私たちが使いたいものを提供することができれば、きっと皆さんにとっても魅力的なものになるはずだと考えています。
