Best Care Anywhere
Best Care Anywhereという本の第2版が出版されて、ちょっとした話題になっているとのことです。
http://p3books.com/bestcareanywhere/
私もまだ読んでいないので、えらそうなことは言えませんが、ちょっと我々のビジネスに大きく関係しているので、話題として取り上げたいと思います。
この本は、米国のVeterans Health Administration(退役軍人健康庁 VHA)が管轄している病院システムがなぜうまく運営できているかの謎解きをしている本です。
ちなみにVHAは、インターシステムズのお客様としては世界最大です。
退役軍人とその家族は、全米どこにいっても近くの退役軍人用医療施設(約1300)にいけば、患者の過去の診療の記録を参照しながら、医師が診察を行うことができます。結果として薬や検査の重複や事前情報不足に伴う医療事故(過誤)を未然に防ぐことができているということです。
こういうことがシステムとして実現できるためには、それを支える情報システムがそういう作りになっていなければならず、これがほかのシステムではなかなか実現できていないのに、なぜVHAでは実現できているのかというところがITの見地ではカギとなります。
この本の書評をオライリーレーダーという処で取り上げていて、そのIT的見地からのコメントが書かれています。
http://radar.oreilly.com/2010/08/the-software-behind-the-va-tra.html
簡単にまとめると、
VHAのシステムの開発手法は、バザーのような感じで決して聖堂の建築のようではない。
つまり、実際の医療の現場の医師などの治療の提供者が持っているいろいろなアイデアや思いつきをシステムとしてちょこちょこと実現していったものの集まりで、決して、聖堂の建築の様な重厚な様式を予めデザインしていったものではないというところです。
そういう形で作られたものが現場のニーズに合っているのは、理解できるが、夫々が全く別々に孤立しながら作られたにも関わらずそれらがなぜ連携して、全体としてうまく動作しているのが驚きである。
そして、それはきっとそのシステムが動作しているソフトウェア基盤に秘密があるのではないか。
と話が続きます。
そして、このVHAのシステムがMUMPSというプログラミング言語で記述されている事実についての記述が続きます。
ちなみにこのMUMPSというのが、インターシステムズの技術の基礎でもあります。
MUMPSは、単なるプログラム言語というよりは、この言葉の正式名称が表現する
Massachusetts general hospital Utility Multi-Programming Systemが示す様に
そのプログラミング言語で記述したソフトウェアが動作するソフトウェア開発/実行システム
となります。
昔は、MUMPSというと、本来の意味の開発/実行システムとMUMPS言語を区別することなく使われていましたが、一部混乱を招くということと、MUMPSがおたふくかぜを意味するので紛らわしいということで、プログラミング言語については、M言語(M Language)というのが正式な名前となりました。
が、相変わらずMUMPSで両方を混同して使っているケースのほうが多いと思います。
それで、この評者の書評では、MUMPSも60年代のフィッピー世代の自由主義的な考えの影響を強く受けていて、その自由なオープンな様式がシステム統合をやりやすくしているのではないかという推測をしています。
そしてもう一つ重要な点が、このシステムに内在(内包)している階層型データベースのシンプルな考え方。
つまり、データの型というものを持たずに、すべてを文字列として表現するやり方。
結果としてシステム間のデータ型の違いに由来する変換にまつわるややこしい処理の追加や変換エラーを考える必要がない。
もうひとつは、データアクセスの簡便性
アクセスする手法として、基本は、キーを与えてデータを取得したり、設定したりするシンプルな基本的データアクセス法とある起点からデータを連続して取得する(トラバース)の2つで事足りる点について
そして、もうひとつ重要な点は、この様な基本的(簡素)だけれども強力なデータ構造とその表現力をもっと上位の現実世界の情報にマップするデータ抽象化が必要と述べられています。
これは、VHAが開発したFileManとよばれるデータリポジトリ(とそのAPI)の仕組みのことを言っているのだと思います。
インターシステムズがMUMPSのエンジンの上にオブジェクトとSQLのリポジトリ(クラス定義)を用意したのは、まさしく同じ理由であるところが面白い所で、実際、このFileManのリポジトリをクラス定義に変換するツールが用意されています。