December 13, 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したということだろうか?

| | Comments (2) | TrackBack (0)

June 16, 2006

メモ: Mac OS X Internals

Amazonを徘徊していたらたまたま発見したのでメモ。

Mac OS X Internals

要はOSカーネル解説本のMac版らしい。Mac miniではだまされたが、まあOSとしてのMac OS Xには興味がないこともないので一応チェックしておくか。本家Amazonの紹介ページには本の概要も紹介されている。

| | Comments (0) | TrackBack (0)

January 12, 2006

蛋白質核酸酵素

その昔「bit」を読んでいたときに、広告の中に「蛋白質 核酸 酵素」という名前の雑誌が紹介されているのを発見して「すごい雑誌もあるもんだなー」と思ったものだが、生協の書籍部に行ったらおいてあった。確かに大学の書籍部なら需要もあるだろう。

bitははるか昔に休刊してしまったのだが、この雑誌は未だ残っているという事実は、ITよりもバイオが流行っているという傾向を示しているのだろうか?

| | Comments (0) | TrackBack (0)

December 25, 2005

古い技術書

ただでさえ忙しい年末に大掃除をすることにしたのは誰だ、と毒づきながらも、毎年なんとなく惰性で部屋の片付けをしてしまうのが年末である。普段全くと言っていいほど片付けのできない人間なので、1年に1回くらいは片付けをしないとさすがにまずい。

片付けといっても、大抵はいらないものを捨てることである。なんとなく捨てるのは惜しい気がして取っておいたものとか、古くなったバージョンのソフトウェアとかを大分処分する。基本的に中古屋やオークションなどで売る気のない製品の箱は捨ててしまって構わないはずなのだが、箱の中にマニュアルやCDが入っていたりすると今度はそれらをどこに保管するのかという問題が生じるのでなかなかややこしい。

毎回片付けをするたびに悩むのが、古くなった技術書、例えばC++の教科書(入門書)の扱いである。中学生もしくは高校生の頃に買ったり、買ってもらったりしたものだ。これらははっきり言ってもはや必要ない。今後手元に置いておいても参照することはないだろう。しかし、それらの本がその言語を学ぶに当たって初めて手にし、繰り返し読んで育った本だったりすると、今の自分を形成する重要な一部品のような気がしてなかなか捨てられないのである。

これが技術書でなく普通の本なら、古本屋や古本市に流して誰かの役に立つ事を祈る、という方法で自分を納得させることもできよう。しかしながらコンピュータ業界は流行廃りが激しいことは古本屋の旦那でも知っているので、コンピュータ関連の本はまず引き取って貰えない。仮に引き取ってもらえたとしても、そのような古い内容の本(例えば、iostream.hと書いてあったり、templateや例外について書いていなかったり…)を世に流すのは今や害悪であると思うので、それもできない。

というわけで、今年も結局読むでもなく処分するでもない本が何冊か生じてしまうのである。物を大切にするのは美徳の1つだとは思うが、大切にしすぎて自分の生活空間を圧迫するのも考え物だな…。

| | Comments (2) | TrackBack (0)

December 15, 2005

Understanding the Linux Kernel, 3rd edition

今研究室で大流行のUnderstanding the Linux Kernel, 3rd Editionが届いた。カーネルをいじっていると、時々データ構造や処理の意味するところがわからなくて悩むことがあるが、そうした際に役立つこともあるのではと思って購入してみた。Linux 2.6.11を元に書かれている(Preface, xiii)とのことなので、かなり最新(今日現在2.6.14)の仕様に近い。Linuxカーネルに関わる人にとっては必携の書と言えるだろう。

どうでもいいけど、Amazon.com Int'l Sales, Inc.ってSeattleにあるらしい。

| | Comments (0) | TrackBack (0)

November 05, 2005

Javaスレッドプログラミング

生協書籍部にふらっと立ち寄ったら、遙か昔に絶版となって今や入手が困難な「Javaスレッドプログラミング」がさりげなく置いてあったので即購入。u-no氏も生協で買ったと言っていたが、2冊もあったのか。生協は組合員向け割引があるためにおそらく再販制度の蚊帳の外で、一度入荷した本は返品できないのではないかと思われる。よって、一度入荷したものの売れなかったりした本がいつまでも残っていたりするのだろうか?

しかしコンピュータ関連の本は絶版も早いな。いつか買おうと思って先延ばししていたASCIIの「C++標準ライブラリチュートリアル&リファレンス」もいつの間にか絶版で入手困難。ヤフオクに網は張っているものの未だお目にかかれず。

| | Comments (0) | TrackBack (0)

October 21, 2005

悪魔本

悪魔本の翻訳が出たという話をhirosumiより聞いたので、早速買ってきた。

BSDカーネルの設計と実装―FreeBSD詳解

普段使ってるのもいじってるのもLinux 2.6なのに、なぜかBSD。Linuxの方はカーネル2.6対応のUnderstanding the Linux Kernel 3rd Ed.が11月に出るので、それを買う予定。

book_stack.push(b);

10/25追記:
第5章くらいまで来た。まるでLinuxの本を読んでいるかのようだ。まあ基本概念や目指す動作がほぼ一緒なのだから当然だろう。1つ大きな違いはスレッドかな?FreeBSDはLinuxと違って、「プロセス」と「スレッド」の違いがはっきりしているようだ。Linuxが特殊ともいえるが。

ついでに訳者さんのblogを発見したのでリンクしておく。

| | Comments (0) | TrackBack (0)

September 03, 2005

本いろいろ

院試や課題で引きこもっているうちにいろいろ本が出ていたようだ。

DEATH NOTE 8巻
ローマ人の物語(17)(20)
ジパング 20巻

さてさて全部自分で買うと結構な金額になってしまうぞ。こういうときこそ家族という経済共同体の恩恵を存分に被るべきである。

デスノート→俺は毎週ジャンプで読んでるし弟に買わせよう
ローマ人の物語→16までは父が買っていたので、そのまま父に買わせよう

ということでジパングだけ自分で買えばいいのか?ジパングも既に相当置き場所に困っているのだが、集め始めた以上は揃えないといけないのが困ったところ。最近ではネギまも集め出してしまったし、置き場所をどうしたものか…。

ついでだからこれも買っておきたい。
震災時帰宅支援マップ 首都圏版
東京を歩くには(平時でも)地図が必要だと日頃から感じる場面が多いが、今持っている地図は97年発行とかの多少古いものなので、ここらで1つ最新の地図を入手しておくのも悪くないだろう。

| | Comments (1) | TrackBack (0)

June 08, 2005

Linkers & Loaders

カーネル輪講に参加した後、IS4年生と一緒にアキバへ。今回は決して怪しい目的ではなく、書籍を購入するためである。

というわけでこのところ必要性を感じていたLinkers & Loadersを購入。様々なオブジェクトコードおよび実行可能ファイルのフォーマットや、リンカとローダの動作について解説した本である。

本書の冒頭に書かれているとおり、リンカってそれなりに複雑な仕事してるはずなのに、コンパイラに比べると全く取り上げられていない。CPU実験では実に単純なモデルを仮定していたのでリンクはそもそもなかったし、ロードもアドレス0に持ってくればいいだけだったしな。一応気分的にはtextセクションとdataセクションにあたる部分を分けた感じだが、明示的にセクションに分かれていたわけではなかったし、そもももアドレス決定はコンパイラではなくアセンブラの仕事だったから俺の仕事ではなかったわけだ。

ところで、リンカはオブジェクトコード中のバイナリコードを解釈してアドレスにあたる数値の部分を書き換える、と書いてあったけが、そうするとリンカは対象アーキテクチャのオペコードを全て知っていないといけないということ?となると何のために一旦オブジェクトコードにアセンブルするのかわからんな。アセンブリコードの集合を最後にアセンブルしつつ同時にリンクを行う方が効率がよい気がしたが、何か別の理由があるのだろうか。

ところでアキバ巡検であるが、Schemer氏がX40 2371-GDJを購入。価格はさらに下がって137,800円だった。これで6人目。

| | Comments (0) | TrackBack (0)

February 02, 2005

コンパイラ本

スモールコンパイラの制作で学ぶプログラムの仕組み

監修はあの中田先生である。本屋でぱらぱらとめくってみた限りではCPU実験に役立つというものではないが、気楽な読み物としておもしろそうだと思った。特に、コンパイラに関してこのレベルの本がこれまでほとんどなかったような気がするので、歓迎したいところ。

コンパイラといえば、C/C++/Java等でコンパイラを書くときに構文の木構造をどう表現するのかに興味がある。Cならやはりenum+unionなのだろうか?MLに慣れてしまうと他の言語でコンパイラを書こうという気が失せてしまう……。パターンマッチ+GC最強…。

Continue reading "コンパイラ本"

| | Comments (0) | TrackBack (0)

より以前の記事一覧