ソフトウエアは一度開発したら終わりではない。エンタープライズ系のシステムは,開発中も運用・保守に入ってからも,環境の変化に応じて随時作り直さなければならない(図1)。それを実現するのが「即席開発」である。

図1●エンタープライズ系ソフトウエアの開発・保守
図1●エンタープライズ系ソフトウエアの開発・保守

即席開発を実現する「ユーザー・エクスペリエンス層」と「同支援層」

 即席開発を実現するためには,どのようなアーキテクチャがよいだろう。アーキテクチャとして有効なのが,エンタープライズ・ソフトウエア・フレームワークである。例えば,マイクロソフトは4層のフレームワークを提案している。
 ・ユーザー・エクスペリエンス層
 ・ユーザー・エクスペリエンス支援層
 ・アプリケーション層
 ・データ層

 このうちアプリケーション層とデータ層は,これまでのWebシステムでよく見られる3層フレームワークと基本的に同じと考えればよい。これまでのWebシステムと大きく違うのは,ユーザー・エクスペリエンス層とユーザー・エクスペリエンス支援層の存在である。この2層を置くことで,業務部門の担当者による開発が可能になる。

 ユーザー・エクスペリエンス層とは,システムのユーザーが楽しく,面白く,心地よく機能やサービスを利用できるようにするインタフェースを指す。この層では,画面のデザイン,レイアウト,画面遷移,参照ドキュメント,手順などを,ユーザーの経験に合わせて調整して提供する。

 太郎君の外国出張の場合のユーザー・エクスペリエンスとは,太郎君が必要とする書類や手続きなどを一つの画面で処理できるようにまとめたものである。まとめるものとしては,出張申請書,旅費申請書,外貨購入手続き,航空券予約,ホテル予約,顧客の日程表,帰国後の業務報告書,旅費精算書などがある。

 機能やサービスを利用するのは,ユーザーだけではない。ユーザーから寄せられたいくつかのリクエストに応じてサービスの組み合わせるアプリケーションも,外部の機能やサービスを使う。このアプリケーションをサービス・オーケストレーション・アプリケーションと呼ぶ。

 ユーザー・エクスペリエンス支援層とは,ユーザー・エクスペリエンス層で複数のユーザーが対話するような場合に必要な補助的な層である。この層では,文書やプロセスを一時的に記憶したり,管理を行ったりする。

サービスをエンタープライズ・サービス・バスでつなぐ

 アプリケーション層はサービスを主体に作る。その一例を示したのが図2である。この例では,クライアント・アプリケーションなどが(1)アプリケーションと各サービスの間で非同期なメッセージを安全かつ高信頼に伝達するESB(エンタープライズ・サービス・バス)と,(2)サブシステムが提供するサービスの実行環境であるコンテナの二つを経由して,サービスを利用できることを示している。

図2●エンタープライズ系ソフトウエア・アーキテクチャの例
図2●エンタープライズ・ソフトウエア・アーキテクチャの例

 サービスには,入力と出力が存在する。入力は,一つ前に実行されたサービスによって生産され,出力は,次のサービスによって消費される。サービスには,いくつかの“型”が存在する。例えば
 ・入力を加工して出力するサービス(2次元の設計図を入力し,数値制御装置で使えるデータを出力するなど)
 ・入力された問題に対する解を求めて出力するサービス(出荷実績を入力し,需要予測を出力するなど)
 ・入力された情報と知識を処理して,必要とする情報を提供するサービス(検索データを入力し,推奨される関連情報を出力するなど)
などである。

 サービスが提供されている業界は,建築・施工,自動車販売・修理,ガソリンスタンド,小売販売,ホテル,鉄道輸送,道路輸送,郵便,通信,銀行,保険,不動産など数多く存在する。建築・施工を例に,そこで採用されているサービスを考えることにしよう。表3は,建築・施工とソフトウエア開発・保守の主なプロセスを対照的に示している。

表3●建築・施工とソフトウエア開発・保守の主なプロセス
建築のプロセス ソフトウエア開発のプロセス
計画
  • 顧客から生活・環境・空間についての要求の聞き取り
  • 環境・空間・法令制限などの調査
  • 予算,工期,構造・材料・環境設備・デザインなどの観点から企画提案書や模型の作成,顧客との折衝
  • エンタプライズ戦略
  • ケーパビリティ分析
  • エンタープライズ・アーキテクチャ設計
基本設計
  • ラーメン構造の決定
  • 構造強度の計算
  • 工法(木造軸組み,ツーバイフォー,鉄骨作り,コンクリート,プレハブなど)の決定
  • 基本設計図の作成
  • 外観・間取り・性能の設計
  • アプリケーション・アーキテクチャ設計
  • データ・アーキテクチャの設計
詳細設計
  • 施工設計図の作成
  • 構造部材の設計
  • 建築用資材,インテリア製品,開口部材,照明・音響機器などの決定
  • テクニカル・アーキテクチャ設計
  • 実装設計
施工
  • 施工手順書の作成
  • 部材・材料・機器などの発注
  • 施工管理
  • 検査
  • 承認
  • 清掃,引き渡し
  • プログラム設計
  • 調達(オープンソース・ソフト,サービスなど)
  • プログラミング
  • テスト
  • 実装
  • システム・テスト
  • 承認
  • 引き渡し

 注文住宅の建築・施工で注目したいのは,施工主がどのような特殊な要求を出そうとも,設計者が自分の役割の中で実現するということだ。設計者は,構造部材,建築材料,建築用資材,インテリア製品,開口部材,照明・音響機器などを外部から調達し,施工担当者が工業化されたプロセスに沿って施工する。部材だけでなく,施工プロセスでさえ外部から調達する。

 エンタープライズ・システムを対象にしたソフトウエア・ファクトリーでも,設計者が部材を自在に調達するように,サービスを積極的に外部から調達できるようにする。そして,環境の変化に応じた即席開発を実現するために,サービスの取捨選択・組み換えができるようにすることを目指す。

松本 吉弘(まつもと よしひろ)
工学博士
1954年,東京大学工学部卒業,東芝に入社。1970年~80年代に,東芝 府中で大規模ソフトウエア工場を立ち上げる。実績が世界的に評価され,ABBやシーメンスなどでソフトウェア工場へ協力する。カリフォルニア大学バークレー校、カーネギメロン大学などで特別講義も担当。1985年,東芝 理事。1989年,京都大学 教授。京大教授の間,京都高度技術研究所副理事長/所長。京大を退官後,大阪工業大学,武蔵工業大学 教授。現在,京都高度技術研究所 顧問