個別最適な開発環境を求めて
現場の組込み開発者は、社内の開発環境を整備しようとする、いわゆるSEPG*1とは違って、求めるものは理論でも方法論でもなく、彼等の開発に直接利用できる個別最適な「銀の弾丸」*2である。銀の弾丸は狼男に対する必殺の武器であるが、組込み開発は多種多様であり、ドラキュラやフランケンシュタインなど、狼男以外にも多くのモンスタが存在する。開発方法を研究する研究者や改善を支援する(一部の?)コンサルタントは、それらすべてのモンスタに適用できる銀の弾丸を用意することが不可能なことを知っている。
すぐに適用できる状態には至っていないが、すべてのモンスタに適用できる武器、つまり、それぞれの開発の特性に最適な答えである開発ソリューションを用意することは可能である。その鍵は、最近、組込み開発分野で特に注目されているプロダクトラインにある。
*1 SEPGは、Software Engineering Process Groupの略。ソフトウェア開発プロセスの改善を主な役割とする部署、担当者。
*2 「銀の弾丸」とは1941年のアメリカ映画「The Wolf Man」(George Waggner)に登場する、狼男の唯一の弱点として描かれているのが、この「銀の弾丸」である。
プロダクトライン
プロダクトラインは、多品種少量生産に適した開発のパラダイムであり、開発対象の特性に応じて、あらかじめ用意されているコア資産と呼ばれる標準部品を組み換えて顧客の望む製品を開発するのである(図2参照)。例えるなら、ラーメンやカレーを客に提供する時に、ベースのラーメンやカレーに客の好みのトッピングを乗せることによって、客の要望した料理を提供するようなものである。自動車を購入する際にも、車種を選択した後、グレードを選び、メーカーオプション、そしてディーラーオプションを選択して、自分だけの車に仕立てるのと同じである。
ここで重要なのは、組み換え可能な部品を事前に用意しておくことである。無秩序に顧客の要望する(事前に想定していない)部品を都度開発していると開発効率が悪化し、また、製品が未管理の状態となり、思わぬ悪影響を及ぼすことになる。これを防ぐために、プロダクトラインではスコープという前提を事前に定義し、前提の下で部品を開発し、また、部品を組み換えるのである。
このプロダクトラインのバイブルとも言えるのが、書籍”Software Product Lines”(Addison-Wesley)であり、『ソフトウェアプロダクトライン』というタイトルで翻訳書も出版されている。この本には基本的な開発の考え方と「プラクティス」と呼ばれる各工程の概要、そして「プラクティスパターン」と呼ばれるサブプロセスのいくつかのパターンしか示されておらず、そのまま適用できるものではない。このプロダクトラインの思想をもとにいくつかの方法論が考案され、書籍として出版されているが、どれも特定の開発特性を前提したものであり、特性の異なる開発に適用することは難しい。
プロダクトラインに興味を持って書籍や方法論通にアプローチしたが、うまく適用できていない人・組織は、気にする必要はない。自分たちの開発が、方法論が対象としている狼男でなかっただけなのだ。
メタラインエンジニアリング
プロダクトラインは、派生製品を効率良く産み出すパラダイムである。「製品」を「対象」と抽象化することによって、事前に用意した部品を特性や要求に基づいて組み換え派生を定義するという考え方を他の分野に適用することができる。
例えば多種多様な組込み開発のプロセスの定義にも使える。言うなれば「メタラインエンジニアリング」だ。メタラインエンジニアリングとは、プロダクトラインやプロセスラインなど、部品を組み合わせて派生物を作り出すメタアプローチとして、筆者が定義中の概念である。プロダクトラインはメタラインエンジニアリングのサブクラスであり、同じく、派生プロセスを定義することはプロセスラインエンジニアリングである。