EAという思想を実現するには

昨年よりEA (Enterprise Architecture)という言葉がブームになりつつある。
EAとは、IT投資における政府を含む企業の全体像を念頭におきながら、
外部調達や再利用も加味し、全体最適なITシステムの構築を行おうという 設計思想及びメソドロジーである。
理想は、高いが、実体としてどの程度有効にできるものであろうか?

EAブームの経緯

米IBMのJohn Zachmann氏のフレームワーク(1987)をもとに、米国防省、米CIO協議会、財務省
などで発展してきた考え方であり、米国政府は、FEFA (Federal Enterprise Architecture
Framework) を策定し、これに沿って各府省がIT投資を行っている。
日本でも部門ごとに行われた政府のIT調達における重複投資の問題を解決しようという意図で、 「電子政府構築計画
」の中で、2006年3月までに全府省でEAの実施を謳っており、 経済産業省にて
ガイドライン
が策定されている。

ITベンダは、「設計に価値が見出される追い風」と歓迎しているが、調達側に能力がないと 機能しないのはいうまでもない。
そのために政府は各組織にCIO補佐官を配置しようとしている。 民間では、東京三菱銀行などが「肥大化する情報システム投資の抑制」を狙って
EAを導入している。 ここには、生き残りをかけた合併などにより重複資産を整理する必要がでてきたという背景がある。

実現方法は発展途上

EA策定ガイドラインを読み、システムの実装や運用を考えるとき、実に様々な疑問が沸きあがる。
組織の全体最適を考えて、重複の無いよう、システムの再利用ができるよう
設計をしましょう。ここまではOK。しかし、素朴な疑問として、まず、普通の企業ならそんなことは 当然考えるであろうが、
そうと分かった上で、既存システムの使い勝手が悪い、運用コストがかかる等の理由で、 新規システム投資をするのが通常であろう。
今まで政府に全体を見渡せるITアーキテクトがいなかった、 大企業が事業部ごとにIT調達していたというのは、
そのとおりで、これらへの解法として、EAは、思想的には有効であろう。
しかし、思想でなく、実体としての最適化はどうすればよいのだろうか?

EAの手法は、システムをリプレイスする際に、共通基盤を作り、 J2EE
やWebサービスなどの標準技術により、相互接続できるように構成することである。 しかし、EJBなどの汎用部品の利用はともかく、
全体を考えて、汎用性を加味した設計をするには、ある程度 将来のリプレイス/拡張計画を見越して行う必要がある。
また、汎用部品や共通基盤の想定はパッケージの活用による開発効率と相反するところもあり、
EAの理想に対して現実解の落としどころが難しいのでは?ということが容易に想像される。 EJBebXMLのコアコンポーネント、最近でてきたWebサービスなどの仕組みはあるが、
部品が建設や工場のように標準化されていないのがこの業界なのである。

設計方法に未熟さもある。EAのアーキテクチャは、「ビジネス」「データ」「アプリケーション」「テクノロジー」
の4階層で表現される。データがアプリケーションより上位にあるということは、DOA (Data Oriented Approach)
が背景にあると思われる。一方、データ体系の中に、クラス図が指定されているが、
本来、クラスは「データ+手続き」でありやや矛盾がある。このあたりの整理はこれからといったところか?
全体設計が主旨であるからRADやアジャイルプログラミングといった実践思想も考慮されていない。

EAを実践するには

既存のIT資産を整理するだけでなく、BPR的に、全体及び将来計画を考えたシステム投資
の共通設計としてEAを適用することは有効である。
しかし、これを実践しようとすると上にあげた、細かな実現上の問題に対峙していかなければならない。
特定ベンダに支配されないで、全体最適と継続的効率化というEAの目的を果たすためには、
ベンダ間がWebサービスやEJBの相互利用といった実証を提示していく必要がある。
このような実績のもとに、調達側は自由度と信頼性の高いシステムの選択が可能となる。 これは、CORBA、EJB、Webサービスと続く
オブジェクト指向設計・コンポーネント活用の延長であり、 今までがそうであったように、今後もかなりの時間をかけて成熟していく話である。
その意味で、EAは企業にとって即効性のある解ではない。

思想はOK、これを実現するためには、継続的な努力が必須というのが現実なのである。
現時点での実装上の一つの解はWebサービスである。 再利用可能なオブジェクトの設計をエンタープライズ・レベルでやるのは
困難であるが、相互に利用可能なWebサービスの構築を 段階的に実現していくのはそれほど困難なことではなかろう。
但しパフォーマンスの点で全てWebサービスとはいかないが。 EAを実践するためには、全体最適という空間とともに、
将来のリプレイス/拡張計画と、その時の標準技術の取り込み という時間軸を考える必要があるのである。