サイバーラボの最新技術2002

(次世代医療情報フレームワーク)

加藤康之
株式会社サイバー・ラボ



1.概要

今日の医療現場におけるコンピュータシステムでは、利用者の機能要求に対してシステム開発コスト並びに開発期間の両面において不十分な状態が生じてきており、多様なデータや複雑な医療プロジェクトを低コストで管理できる新たなソフトウェアのパラダイムが要請されている1)
 この状況を踏まえ筆者等は、オブジェクト指向技術をさらに発展させた新たな医療情報フレームワーク技術2~14)によって、医療情報システム開発そのものを利用者に開放し、医療現場に即したシステムの実現とシステムコスト、開発期間双方の低減を試みる提案を行ってきた。
 しかしながら、医療情報フレームワークを構成するソフトウェア部品の粒度がまだまだ低く、実用的な電子カルテを医療現場で利用者自らが作成できる水準には至っていない。開発環境の汎用性の観点からは、ソフトウェア部品の粒度を低く抑える必要があるのに対し、利用者にわかり易くかつ高機能を実現するためには、逆にソフトウェア部品の粒度を大きくする必要がある。
本報告では、開発環境における相反する命題を解決する手段として、「高粒度フレームワークにおける部品の再利用技術」を提案する。ここではこの新たなパラダイムを「コンポーネントウェア」と呼ぶ。



2.フレームワーク・ソフトウェアの基本原理

(1)ユーザ開放型開発環境
システム開発そのものを利用者に開放すること、すなわちプログラミングの専門家がシステムの最終形態まで構築せずに、ソフトウェア部品とそれを組み合わせるツールを提供し、最終的なアプリケーションの構築は業務の専門家であるユーザにまかせるようにする。これを「ユーザ開放型開発環境」と呼ぶ4~12)

(2)ユーザ開放型開発環境を支えるフレームワーク・ソフトウェア
 ソフトウェア部品の視覚的な組み合わせだけでアプリケーションを作成するフレームワーク・ソフトウェアの基本原理の詳細については、参考文献4〜13に記載されており、ここでは、そのその発展系を説明するために要素部品について概説する。
フレームワークとは、部品であるオブジェクト間の結合方式およびデータの受け渡し方法、オブジェクトの状態遷移の通知・管理方法等をライブラリの共通規約として埋め込むことによって、自立的な機能をオブジェクト群に与える仕組みを意味する。すなわち個々のオブジェクトにエージェント的な振る舞いを期待するものであり、基本的にはフレームワークのスーパークラスにこれらの規約を記述する。

(3)ソフトウェア部品の要素
 アプリケーションの数は、ほぼ無限に近い量が存在し、部品を再利用したとしてもアプリケーションが作られるたびに特殊な部品が作られ、その数は急激に増加することが予想される。瞬く間に部品の組み合わせの爆発が起こり、フレームワークの管理限界を超えてしまう可能性がある。そこでソフトウェア部品の要素を見出し、その要素部品の組み合わせで、多様なアプリケーションの世界を記述する方法を開発した5)
図1は、このコンセプトを示したものである。図中に示した、機能オブジェクト、制御オブジェクト、インターフェイス・オブジェクトの3つがソフトウェア部品の要素である。機能オブジェクトは、ボルトやナットに相当するものであり機能を司る最小単位である。制御オブジェクトは、機能オブジェクトをどのタイミングで使用するかを記述するオブジェクトである。インターフェイス・オブジェクトは、機能オブジェクトと制御オブジェクトをラッピングし、外界からは機能オブジェクトと同じように見えるように隠蔽する働きを持つ。図に示すように、これら3つの要素の再帰的な組み合わせによって巨大なソフトウェアを構築できることが解る。この仕組みは、4つの塩基の組み合わせで多様な生態系を作り上げているDNAの世界に似ている。




(4)データオブジェクト
医療情報フレームワークでは、全ての内部データはディクショナリ・オブジェクトとして記述する。ディクショナリ・オブジェクトとは、データとその意味を表すタグにインデックスを付けた構造を最小単位とし、その最小単位をリストとして保持するオブジェクトである。すなわち、ファイルシステムとの入出力やアプリケーション間、オブジェクト間、分散オブジェクト間、データベースとの入出力等全てのデータのやり取りをこのオブジェクトで行うものである。それゆえにこのデータオブジェクトを第4の基本要素部品と呼ぶ。データオブジェクトの概念を図2に示す。





3.次世代医療情報フレームワーク

(1)従来フレームワーク技術の課題
 オブジェクト指向言語を基礎としたフレームワークの導入によって、システムの開発効率は、飛躍的に向上してきた12~14)。また本来目的としたシステム開発そのものを利用者に開放することも可能となった。しかしながら電子カルテのように非常に複雑なシステムの場合、開発の汎用性を重視したフレームワークの環境だけでは、効率的なシステム開発を行うことは困難であった。第1の問題は、同一部品が繰り返し使われるため、メモリ使用効率の低下とアプリケーションのロード時間の増大である。第2の問題は、ソフトウェア部品の粒度である。システム開発効率を高めるためには、ソフトウェア部品の粒度をより大きくする必要があるが、一方で粒度の拡大によって汎用性が失われるという矛盾を抱えていた。

(2)同一オブジェクトの共有技術
 同一部品が繰り返し使われる場合、部品間を越えて一つの部品を共有する技術を開発した。この様子を図3に示す。図のように共有エリアにある実態オブジェクト(機能オブジェクトA)をComponent1〜Component3で共有できるようにする技術である。この技術によって、メモリ使用効率の向上とアプリケーションのロード時間の飛躍的な短縮を実現することが可能となった。共有する側には実態オブジェクトの代理が置かれ、あたかもそこに実態オブジェクトが存在するかのように振舞う仕組みである。




(3)オブジェクトのダイナミックな転送技術を用いたユーザインターフェイス
 ユーザインターフェイスに関わる部品がある上位の部品の中に隠蔽されてしまうとそれを任意のウィンドウに自由に貼り付けて制御することが難しくなる。そのため図4に示すようにユーザインターフェイス等の任意のウィンドウに必要な時にダイナミックに部品を転送する技術を開発した。これによって、個別部品の試験を部品単位で行った後に個別部品の中から操作ウィンドウ上で必要となる任意のビュー部品等をシステム結合の最終段階でダイナミックに統合することが可能になり、システム信頼性の向上と部品重複の回避の2つを同時に実現することが可能となった。これは、ソフトウェア部品の粒度に関わらず、そこに隠蔽された微細構造の部品を自由にかつダイナミックに集合および結合させることができる技術であり、従来のフレームワーク技術が抱えていたソフトウェア部品の粒度問題を解決する有効な手段を提供するものである。




(4)コンポーネントウェア
 ソフトウェア部品における自立的な機能の実現(フレームワーク技術の確立)を第1世代とすれば、部品間の障壁を越えて一つの部品を共有する技術や部品間で自在に微細構造の部品をダイナミックに交換する技術は、第2世代のフレームワーク技術である。特に後者は、ソフトウェア部品の汎用性と高機能性の矛盾を解決する手段を提供するものであり、この技術によってソフトウェア開発のパラダイムが劇的に変化を受けるものと思われる。今後この影響を受けて様々なソフトウェア部品の技術革新が起こる可能性があり、このパラダイム・シフトを称して「コンポーネントウェア」と呼ぶ。従来の開発言語の世代と比較した様子を図5に示した。





4.コンポーネントウェアの実装

 コンポーネントウェアの実装例を図6に示す。図6は、個別オブジェクト空間の様子を示したものであり、問診や所見入力等を司る部品などが表示されている。図7は、ユーザインターフェイス空間におけるコンポーネントウェアの実装例である。電子カルテのユーザからは、図7のウィンドウだけが見えるため通常のアプリケーションと見分けがつかない。

クリックで拡大

クリックで拡大



5.まとめ

 従来のフレームワーク技術が抱えていたソフトウェア部品の粒度問題を解決する有効な手段を開発した。これは、「部品間を越えて一つの部品を共有する技術」と「ソフトウェア部品の粒度に関わらず、そこに隠蔽された微細構造の部品をダイナミックに結合する技術」である。これらの高度なソフトウェア部品の応用技術をコンポーネントウェアと名づけ、この技術を用いて、電子カルテを構築しそのプロダクトを通じてシステムの信頼性と柔軟性、経済性の観点で評価し、コンポーネントウェアが極めて有効であることを明らかにした。



14.参考文献

1). 高橋、大橋、「WINE project(OPENSTEP baseの電子カルテ)」、電子カルテ研究会、SG'98, 1998.
2). Enterprise Objects Framework Release 2.1. Apple Computer, Inc.
3). Y.Kato, Y.Kataoka, Y.Nakamura, Y.Mitsunaga, "Data object creation and display techniques for the huge database of subscriber cable networks", ACM COOCS'93, pp184-189, 1993.
4). 満永, 加藤, 阿部, 「統合化オブジェクト指向OpSの開放型開発環境」, 1992年電子情報通信学会秋季大会, B-461, 1992.
5). 加藤, 阿部, 満永, 「階層型機能オブジェクト指向OpSの構築支援システム 」, 1992年電子情報通信学会秋季大会, B-462, 1992.
6). 片岡, 加藤, 満永, 「巨大なRDBアクセスのためのスーパークラスの設計と動的オブジェクト生成法」, 1993年電子情報通信学会春季大会, D-652, 1993.
7). 片岡, 川上, 加藤, 満永, 「線路設備データベースアクセスのためのスビジュアルプログラミング」, 1993年電子情報通信学会秋季大会, D-350, 1993.
8). 川上, 加藤, 満永, 「分散オブジェクトによる線路OpSの自動構築」, 1993年電子情報通信学会秋季大会, D-349, 1993.
9). 川上, 片岡, 加藤, 満永, 「視覚化データモデルによる統合的データベースアプリケーション開発環境」, 1994年電子情報通信学会春季大会, D-634, 1994.
10). 片岡, 川上, 加藤, 満永, 「大規模データベースアプリケーション構築支援システムの実用化」, 1994年電子情報通信学会春季大会, D-637, 1994.
11). 片岡, 阿部, 加藤, 「視覚化したシナリオに基づく大規模データベースアプリケーションの構築」, 1994年電子情報通信学会秋季大会, D-375, 1994.
12). 満永、加藤、「DBアプリケーションを自在に構築できるエンドユーザ向けビジュアル開発環境」, 日経オープン, No.30, pp.385-397, 1995.
13). 加藤, 阿部, 満永, 「医療情報フレームワーク」、電子カルテ研究会、SG'99, 1999.
14). 加藤,「医学・医療のネットワーク化とユーザ開放型アプリケーション「理想的な電子カルテを目指して」」、W?3?4, JCMI99, 1999.