本章では、ソフトウェアのような製品がどのようなつくりになっているのか、製品設計 思想としてのアーキテクチャーの視点から検討する。
ソフトウェアは、多くのソフトウェア部品が寄せ集まることで、一つの製品となってい る。このような製品をつくるとき、外見や機能などをどのような構成にするのか、そして それぞれの部品にどのような関係性を持たせるのかを決めなければならない。このような 部品の構成や相互関係のあり方を決めるのがアーキテクチャーである(Simon, 1957; Ulrich, 1995; 中川, 2011)60。
とりわけハードウェアは、多くの機能を組み合わせて設計、開発していくモジュラー型 アーキテクチャーの開発の事例として取り上げられることが多い。一方で、本研究が対象 とするカスタムソフトウェアはモジュラー型の開発スタイルを持つが、モジュール同士の 擦り合わせや調整を必要とし、インテグラル(擦り合わせ)型のアーキテクチャーによる 設計、プログラム作成の側面を持っていると考えられる。こうした観点から、ソフトウェ アを開発する際に設計とプログラム作成間にどのような関係が生ずるのかという本研究を 進めていく上での議論の下地となりうる、モジュラー型、インテグラル型の2つのアーキ テクチャーの特性について、分析を進めていく。
ソフトウェアに限らず、複数のサブシステムで構成された製品は、このアーキテクチャ ーのでき方次第でうまく動作するかが決定されるため、非常に重要なものとなっている。
また、そのような複数のサブシステムから構成される製品は、組織内外のさまざまなステ ークホルダーが関係している。ソフトウェアを含む製品を作り上げる上でどのように組織 内外の役割を分担し、連携を図っていくのか、そうした協業や分業の境界デザインの決定 にはこのアーキテクチャーが関わってくるのである。
(1) アーキテクチャーの分類
① 製品・工程アーキテクチャー
一般に、アーキテクチャーは、製品アーキテクチャーと工程アーキテクチャーに分類で きる。このうち、製品アーキテクチャーとはシステム全体に関する知識といった具体的な 設計思想を指す。アーキテクチャーにより、コンピューターやソフトウェアなど、複雑な システムで構成された製品を複数の機能要素や部品など単純な下位システムへ分割するこ とで、そのシステムの複雑性を軽減するのである。特に製品の設計において、製品をどの
60 ソフトウェアに関連する技術的なアーキテクチャーとして、コンピュータ・ハードウェ アの基本構造を示すコンピューター・アーキテクチャーやネットワークの論理構造などを 示すネットワーク・アーキテクチャーなどが存在するが、本研究では、Ulrich(1995)ら が説明する製品の機能や開発工程の設計思想を表すアーキテクチャーを対象とする。
ような構成部品や工程に分割し、そのインターフェース61をいかに設定、調整するかが極 めて重要となる。製品のサブシステム同士は、このインターフェースのもとで統合、協調 して動作することで、製品システムとしてまとまった機能となる(藤本・武石・青島編, 2001;
柴田, 2003; 藤田, 2013)。
このようなインターフェースを通じて構成される製品の代表例としてパーソナルコンピ ューターがあげられる。パーソナルコンピューターはマザーボードやCPU、キーボード、
ディスプレイなど多くのサブシステムによって構成されている。そして、それらは公開、
共有されたインターフェースによって繋げられ、一つのパソコンとして機能している
(図 4-1)。
出所:藤本・武石・青島編(2001)、柴田(2003)、藤田(2013)をもとに筆者作成 図 4-1 パソコンの構成図とインターフェース
一方、工程アーキテクチャーとは、製品の生産における工程の編成、つまり工程設計の 思想を指し、「製品構造と工程との対応関係、および工程間の連結関係によって構成」62さ れている(図 4-2)。
工程アーキテクチャーは、この部品構造と工程の対応関係が複雑になると、組立精度や 作業条件などを調整する必要が出てくる。設計された製品や部品に対し、品質や納期、コ ストを目標通りに達成するため、生産設備のほか、作業者、作業方法、治工具といったも のをどのような工程の流れ、つまりプロセスやレイアウトで繋げていくのかを考えなけれ ばならないのである(藤本, 2002; 目代, 2012)。
61 部品やプログラムなどが接続、接触する箇所や、情報やデータなどをやりとりするため の手順や形式、規約を定めたもの(IT用語辞典 e-Words)。
62 目代(2012)p.641
ディスプレイ
CPU メモリー
OS アプリケーション
キーボード マウス
(CD・DVD)ドライブ
ハードディスク
プリンター スピーカー
モデム
太い線がインターフェースを表している
出所:目代(2012)p.641をもとに筆者作成
図 4-2 工程アーキテクチャーにおける連結関係と対応関係
この製品アーキテクチャーと工程アーキテクチャーは表裏一体であり(Abernathy, 1978;
藤本, 2002)、本研究でも、製品アーキテクチャーと工程アーキテクチャーを明確には分離 せず、製品・工程アーキテクチャーとして扱っていく。
製品のデジタル化が進展するにつれ、その製品は複数のサブシステムで構成される傾向 が強まっており、製品の設計思想であるアーキテクチャーが極めて重要になってきている。
さらに、こういった複数のサブシステムで構成される製品は、取引相手など多くのステー クホルダーが関係しており、どのように業務や役割を分担していくか、その調整や連携の 仕組みをシステムとしてうまく構築することが必要となる(柴田, 2003)。
このアーキテクチャーには、代表的な分類方法として、機能にその分割の焦点をあてた、
組み合わせによるモジュラー型と、擦り合わせによるインテグラル型が存在する。また、
複数企業間の提携に分割の焦点をあて、社会全体にインターフェースの設計情報を公開す るオープン型と、関連する企業にのみインターフェースの設計情報を公開するクローズ型 も存在する(Baldwin and Clark, 2000; 藤本・武石・青島編, 2001)。
企業は、製品・工程アーキテクチャーにより、コンポーネント間の相互関係を定めてお り、それに基づき組織を設計しているため、組織の知識体系や分業方法、設計などもそれ に依存する。さらに、そこに子会社や下請け企業、同業他社など、外部企業との関係も関 わってくる。そのため、製品・工程アーキテクチャーの変更は、企業にとって全面的な組 織変更に繋がり、困難を伴うのである(中川, 2011)。
② モジュール化
ソフトウェアを開発する際、他の機能や工程に干渉されないようにモジュール化が進め られているが(峰滝, 2004)、こうしたモジュール化とは、部品と部品の間にあるインター
製品構造 生産工程
製品全体
部品1
部品2
部品3
工程1
工程全体 工程2
工程3 対応関係
フェースが1対1のように単純化、標準化されており、非常に独立性が高く、そういった 複数の部品の単純な組み合わせによって商品の機能を実現することである(Ulrich, 1995;
藤本, 2001a, 2001b; 藤本・武石・青島編, 2001; 浜屋, 2004など)。また、モジュール化する
ことで、そのモジュールの交換することができ、顧客のニーズに合わせた機能の拡張が可 能となる63。
ただし、モジュール化したとしても、そうしたモジュールの調達のほか、求める機能を 実現するための適切な組合せに関する知識が必要となり(延岡, 2006)、すべてのニーズに 応えた無数の製品を作成することは難しい。こうしたモジュール間は、ルール化されたイ ンターフェースにより相互作用が抑えられ、環境の変化にも対応しやすく、不確実性への 対応にも重要な役割を果たしている(Langlois and Robertson, 1995)。
藤本・延岡(2004)は、この環境の不確実性について、「選択すべき事業、製品、技術の 範囲が広く、しかもどれを選択するのが良いのかわかりにくい状況」64と定義している。
そして、モジュラー型製品の特徴として、取捨選択や組み合わせ方に関する不確実性の高 さがあり、それゆえその選択能力が重要であるとしている。
ソフトウェア開発の不確実性の理由の一つとして、ソフトウェアを設計する際に、手法 が確立して信頼性が証明されている枯れた技術を使わず、あえて新しい手法や新しいモジ ュールなどのバージョンを採用することがあげられる(中尾, 2009)。ソフトウェア産業を 含むITの分野では、技術や機器などの発達が非常に早く、同じような設計図で何十年間も 生産し続けることは安全性や安定性の面でメリットがあっても、開発効率や計算速度、顧 客の要望に沿ったソフトウェアの実現などで劣ってしまう。そのため、ソフトウェア開発 者が、新しい手法やバージョンを採用しようとすると、そのことでこれまで経験しなかっ たような問題や失敗に直面するようになる。
ここで注意すべき点は、モジュール化は、設計に関する基礎的なパラメーターが必要で あり、つまり設計に存在する知識に基づいていることである。そのため、例えば半導体の
63 モジュールとほぼ同じ意味を持つ言葉として、コンポーネントが存在する。この2つの 違いとして、コンポーネントとは、何らかの機能をもった部品を指すが、それ単体では利 用することができず、他の部品と組み合わせたりすることで機能を実現するものとして考 えられる(IT用語辞典 e-Words)。
一方、モジュールはシステムを構成する要素であり、本文でも述べたように規格化、標 準化されており、複数の部品を組み合わせたものとなる(IT用語辞典 e-Words)。しかし ながら、モジュールもコンポーネントも、企業やプロジェクト、産業ごとに捉え方や使い 方に違いがあり、研究者の間でも明確な共通の定義が存在せず、混同されていることが多 い。
中川(2011)によると、部品、サブシステム、コンポーネント、ブロックなど研究者に よって呼称はさまざまであり、中川はコンポーネントとして統一している。ソフトウェア では、コンポーネントが使われることが多く、複数のモジュールが組み合わさって一つの コンポーネントを構成するとされる。
64 藤本・延岡(2004)p.18