« Ubuntu Gutsy (i386)でPAE+nvidia | Main | 2007年を振り返る »

December 12, 2007

旅人をつなぐ"マルスシステム"開発ストーリー

久々におもしろい本を読んだので紹介しておく。

旅人をつなぐ"マルスシステム"開発ストーリー

JRの予約発券システムの裏にあるマルス(MARS)システムの開発についてまとめた本。そもそも何でこんな本が読みたくなったかというと、Project Xがこのシステムを扱った回の再放送をたまたまヒストリーチャンネルで見たからだ。

さてこの本、前書きには「コンピュータの知識がほとんどない人を対象に〜」などと書かれているが、「情報処理技術者教育センター」というところが出してるだけあって、結構読み応えのある内容であった。例えばシステムの説明のところにハードウェアのブロックダイアグラムが書かれていたり、予想外の性能のボトルネックが露見したというくだりではバッファメモリ(キャッシュ)がマルチプロセッサに共有されていることによってシングルプロセッサ環境よりも容量ミスが起きやすくなるためである[1]といったことについて解説されていたりする。

プロジェクトXを見て気になっていた「三重発券事故」についてもかかれていて、それによると、三重発券の原因はマルスのバグではなく、
1. 係員Aが客の要求によってある予約をキャンセル
2. 直後別の係員Bが別の端末からその席に予約を入れる
3. 係員Aが念のため正しくキャンセルできたか現在の座席表をチェック
4. 係員Aがキャンセルしたと思っている席には既にBによる予約が入っているが、Aはそれを知らず、キャンセルが正しく実行できなかったと思い込む
5. 係員Aが再度キャンセル操作を実行
6. その後係員Cが空席となっているこの席に予約を入れる
という感じで生じたものらしい。プロジェクトXではさかんに「マルスによる二重発券のトラブル」という語のみが登場してその原因について一切触れられなかったために、これを読むまではrace conditionを正しく考慮できなかったバグじゃないの、程度に考えていた。もちろんこうしたヒューマンエラーを起きにくくすることまで含めて「システム」であると思うので、マルスのせいといっても広い意味では間違いではないと思うが。

これまでシステム開発というととにかく下請け・孫請け・ひ孫請けで自分では何もしない大手ITベンダ、というイメージがあっただけに、こういう夢のあるシステム開発の話は新鮮味があった。このシステム開発は1960年代から70年代にかけての話で、経済の構造もIT業界の構造も何もかもが現在とは違ったころの話であるという点も考える必要があるとは思いながらも、この本を読んで、システム開発というものに対する見方が少し変わったような気がする。

実はもう一冊、みどりの窓口を支える「マルス」の謎—世界最大の座席予約システムの誕生と進化という本も同時に買ったので、こちらも読んでみようと思う。

[1] よく理解できなかったのはこのボトルネックを解消するad-hocな案としてキャッシュのフラッシュ("バッファキャンセル"と呼ばれている)を専用に行うファームウェアを用意した、というくだり。バッファメモリの内容は今日のキャッシュと異なり完全にCPUが制御していたようなので、その制御をoffloadしたということだろうか?

|

« Ubuntu Gutsy (i386)でPAE+nvidia | Main | 2007年を振り返る »

Comments

日立が潰れないのはマルスを握ってるからだろうか

Posted by: おrz | December 13, 2007 02:23 AM

マルスのみならずいろいろ握ってそうな。原子炉とか?

Posted by: fujita.h | December 13, 2007 08:45 AM

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference 旅人をつなぐ"マルスシステム"開発ストーリー:

« Ubuntu Gutsy (i386)でPAE+nvidia | Main | 2007年を振り返る »