Home > 4 月 7th, 2008

2008.04.07

技術の未来互換性

今年発表されたマルチスライスCT は、一度に320枚の画像が切れるらしい。 1 回転 0.3秒。0.5mm スライスで320枚。

一度に得られる情報量をここまで多くできると、冠動脈をほとんど末梢に近いところまで、 かなり正確に撮影することができる。まだパンフレットの画像しか見たことがないけれど、 そろそろ本当に「心カテの要らない」世界が見えてきた気がする。

10年前の夢

心臓は常に動いていて、冠動脈は太いところでも3mmぐらいしかない細い血管。 だからCT スキャンみたいなやりかたで冠動脈を撮影するのは難しくて、 当時の技術では夢のまた夢。CT が回転する間にも心臓はどんどん動いて、 「手ぶれ」を起こしたような、不鮮明な画像。 狭心症みたいな病変の診断は、「コンマミリ」を拡大して論じる世界だから、 解像度も全然足りなかった。

要求される技術水準が高すぎて、自分たちカテ屋は、放射線科医の夢を馬鹿にしてた。 技術がどんなに進歩したところで、心臓だけはどうやっても無理だろ、なんて。

心臓カテーテル検査は鮮明な画像が得られるけれど、カテーテルを心臓に通さないといけない時点で、 合併症から逃れられない。「冠動脈CT」は、もしもそれが実現すれば、 合併症のない心カテを実現できるから、アメリカなんかではすごい予算を投じて、 大規模な機械を作ってたけれど、当時はまだ、実用に足る画像は上がってこなかった。

CT を速く撮る

CTスキャンは、CT 管球が患者さんの体を一周すると、1 枚の画像が切れる。

自分たちが研修医だった頃、1 回転に要する時間は1 秒を切っていたけれど、 1 秒間という時間は、すでに心臓にとっては長すぎた。

CTスキャン は、結構無理をしている機械。

CTを撮影するための管球は、ちょっとした子供ぐらいの重量がある。 カバーが掛かっているから普段は見えないけれど、重たい金属の固まりが、 すごい勢いで患者さんの周囲を回る。あれが患者さんにぶつかったら もちろん大けがするし、機械の負担だって大きいから、 メンテナンスも結構頻回に入る。

CT の撮影時間は、だから機械部分が上限を決めていて、今以上に速くするのは難しい。 改良すれば、もちろんもっと速くなるんだろうけれど、下手すると100kg近い重量の金属塊が 毎秒20回転とか、もしも実現したら相当危ない。

「機械を速くする」やりかたを回避するために、技術者は2 つに別れた。 CTを最初から設計し直して、「回転する部品を持たないCT」を設計しなおすやりかたと、 回転数を上げる代わりに、管球をいっぱい並べて、1 回転でたくさんの絵を撮影するやりかたと。

理想的な、賢いやりかたと、力ずくの阿呆なやりかた。

阿呆が勝った。

電子ビームCT のこと

イマトロンという会社が作ったのは、回転する部品を持たないCT スキャン。

電子ビームの発生装置を患者さんの頭側に固定して、強力な電磁石を使って、 ビームを電子的に「回転」させる。斑鳩のホーミングレーザーみたいな動き。 機械が回る要素が一切ないから、「回転数」はどこまでも上がる。

たしか発売されたときから毎秒10枚の撮影が実現できていて、 今では1 秒間に20枚、毎秒20回転を達成しているはず。

回転式のCTは、1 秒間にせいぜい2枚。冠動脈CTの開発初期の時点で、 すでに圧倒的なスピード差がついていたし、電子ビームCT の速度には、 理論上上限が存在しないはずだから、未来はこちらにあると思ってた。

でもどういうわけだかイマトロンは普及しなくて、日本でもせいぜい20台ぐらいしか稼動していない。 技術的にも進歩がなくて、画質が悪くて、10年前のCTスキャンと同程度。

技術的にはこっちのほうが画期的に見えたのに、なぜだかゴールにたどり着けなかった。

並べるやりかた

CTの機械を2台に増やせば、1 回転する間に2枚の画像が撮影できる。4台並べれば、 同じ枚数の画像撮影するのに、要する時間は1/4 で済む。回転数を上げられないから、 1 スライスあたりの「ぶれ」は押さえられないけれど、マルチスライスはこんなやりかた。

マルチスライスCT というのは、専門の先生に言わせれば、 今までのCTの延長線上で考えてはいけない、全く違った思想の元に 開発された機械なのだそうだけれど、発想はやっぱり素朴に見えた。 日本の会社が目指してたのは、マルチスライス化の流れ。

技術者の人達は頑張って、5年ぐらい前の時点で、4 列のマルチスライスCTが普及し始めて、 大学病院では、当時の最高峰で32列スライスが入ってた。

近くの循環器病センターが64列入れたなんで話題になって、 「すごくよく見えるらしい」なんて医局でうわさをしていたのが、今から2年ぐらい前。

どこで「ムーアの法則」が発動したのか分からないけれど、今年は一気に320列。 ここに来てついに、冠動脈は末梢部分まで見えるようになってきた。

ウサギと亀の話

過去との差別化を重視する、「ジャンプ」を志向する進歩のやりかたと、 進歩の継続性を重視する、漸進的に進歩を積み重ねて、 結果としてそれが、過去と決別した技術に結実するようなやりかたと。

冠動脈CTを実現するときに、真っ先に問題となる早さについては、 電子ビームCTが最初から正解を出していたけれど、この機械は画質が悪かった。 問題の本質はあくまでも早さだったから、画質についてはきっと、 バージョンアップで画期的によくなるんだろうと思っていたけれど、変わらなかった。

300列のマルチスライスが出てもなお、「最速」の座は相変わらず電子ビームCTなんだけれど、 今はもう、「そこそこ早い」ことが当たり前になりつつあって、 「そこそこ」と「すごく速い」との差は減った。イマトロンは、画質の悪さばっかりが 際だって、昔いた病院には実物があったんだけれど、誰も使わなくなってしまった。

スケーラビリティという言葉が、何かヒントになるのかもしれない。

マルチスライス化を選択した技術者の人たちは、4列が8列、8列が16列と、傍目には ごくゆっくりとした歩みを続けてきたのに、気がついたら320列。どこで飛躍があったのか わからないけれど、ずるずるとした、ゆっくりとした歩みに見えたその進歩は、 いつの間にか電子ビームCTを追い越していた。

当時最も正解に近そうだった技術は廃れて、 素人目には頭の悪い、力ずくのやりかたは、そのまま10年力ずくで進み続けて、 力ずくで「正解」をもぎ取ろうとしているように見える。

電子ビームCTの画質向上が、技術的に難しかったのかもしれない。あるいはまた、4列、16列、32列という、 倍々ゲームで数字が増えていく「進歩」というのはすごく分かりやすくて、 開発予算が付きやすいとか、ユーザーに進歩を訴えやすいとか、技術の外側に、なにか勝因があったのかもしれない。

進歩のしかたが、何か「ジャンプ」を思わせるやりかたは、天井がすぐそこにあって、 案外「次の一手」が見つけにくくて、ずるずる進むやりかた、改良する余地が見えやすくて、 ずるずる進んだ先にあるものがよく見えるやりかたのほうが、どこかで 「量が質に転化する」瞬間をむかえやすいのかもしれない。

乗っかるべき技術には、何か一般解みたいなものが作れるんだろうか ?

キーボード配列覚え書き

パソコン変えた。今度のThinkpad も、以前と同じA4サイズのモデルだから、キーボード配列は 以前とほとんど変わらないはずなんだけれど、すごい違和感。

それはWindows キーが増えたとか、ボタン配列がミリ単位で変わってるとか、 本当に些細なことなんだろうけれど、キーボードの打ち間違えが多発して、 バックスペース打つ右手の小指がおかしくなりそう。

キーボード配列を変更したときのメモ。「窓使いの憂鬱」を使用。

窓使いの憂鬱は、一見設定が難しいけれど、たくさんの人が設定ファイルを公開してるので、 ノウハウをもらうのがすごく楽。GUI でない、振る舞いをすべて記述しないといけないソフトというのは、 詳しい人しか使えないようでいて、「ネットで検索がかけられる」というメリットを生かすと、ド素人が触ってもどうにかなる。

配列のノウハウについては、以下のサイトを参考にさせていただいた。

OEA 配列

タッチタイプがどうしても出来なくて、キーボード配列は昔から無茶苦茶。

素直にDvorak 配列にしておけばよかったんだろうけれど、やっぱりマイナーな配列が好き。

「窓使いの憂鬱」を使って、あらゆるアルファベットキーを入れ替えた。

これをやると、他の人には自分のパソコンさわれなくなるから、セキュリティの面でも ちょっとだけ安心だったりする。

英数 キーとControl キーの入れ替え

ThinkPad が中国に買収されてから、キーボードにはWindows キーがつくようになった。 そのあおりを食ったためか、昔はもっと大きかったコントロールキーが小さくなって、 これがものすごく打ちにくい。

普段滅多に使わない英数 キーが、ちょうど打ちやすい位置に空いているので、 これをコントロールキーと入れ替えた。

バックスペース

キーボードがちょっと変わるだけで、打ち間違えが増えた。バックスペースを 押す機会が増えてみると、今度は右手首がつりそうになった。

そんなに手が大きくないから、バックスペースには小指が届かなくて、 昔から中指で押す癖が抜けない。だからBSキー打ちに行くたびに、 右手首は大きく曲げられて、長く打ってるとすごく痛くなる。

手首壊れるのが時間の問題になってきたので、バックスペースを 「Ctrl + h 」で置き換えた。打ちやすければどんな配列にしてもいいんだろうけれど、 このやりかたが、Windows もともとの標準設定として入っているみたい。

ATOK を使っていると、「Ctrl + h 」にすでに似たような動作が割り当てられていて、 何だか挙動が怪しくなる。

ATOKの環境設定->キー・ローマ字・色->キーカスタマイズ でキー設定画面に入って、 ATOK 側の「Ctrl + h」設定を削除しておいたほうがいいと思う。

IME

標準のままだと、IME のオン/オフ は半角/全角キーに割り当てられていて、押しに行くのが大変。 このキーについては昔から「無変換」に割り当てていて、特に問題なく使えている。 手を全く動かさないで済むので楽。

日本語文章を打つ機会は多いはずだけれど、「変換」「無変換」のキーは、 とても打ちやすい場所にある割には、押したことがない。すごくもったいないと思う。

その他

Windows キーはやっぱり使わないし、押し間違えると何だか違和感があるので、無効化した。 「エンターキーの位置をセミコロンにする」というのがすごく快適らしいんだけれど、 OEA 配列ではそれができない。現時点では標準のまま。

設定

自分が使っている .mayu の設定ファイルはこんなかんじ。

if ( USE104 )
  include "104.mayu"        # 104 キーボード設定
  if ( USE109on104 )
    include "109on104.mayu" # 104 キーボードを 109 キーボード風に
  endif
else
  include "109.mayu"        # 109 キーボード設定
  if ( USE104on109 )
    include "104on109.mayu" # 109 キーボードを 104 キーボード風に
  endif
endif

if ( USEdefault )
  include   "default.mayu"  # Emacs ライクなさまざまな設定
endif

keymap Global

#OEA 配列
def alias _a = d
def alias _b = period
def alias _c = m
def alias _d = n
def alias _e = s
def alias _f = t
def alias _g = h
def alias _h = j
def alias _i = f
def alias _j = y
def alias _k = b
def alias _l = comma
def alias _m = u
def alias _n = semicolon
def alias _o = a
def alias _p = p
def alias _q = e
def alias _r = i
def alias _s = l
def alias _t = k
def alias _u = g
def alias _v = c
def alias _w = o
def alias _x = q
def alias _y = v
def alias _z = atmark
def alias _minus = w
def alias _backslash = minus
def alias _comma = z
def alias _period = x
def alias _semicolon = r
def alias _atmark = backslash

key *_a => *a
key *_b => *b
key *_c => *c
key *_d => *d
key *_e => *e
key *_f => *f
key *_g => *g
key *_h => *h
key *_i => *i
key *_j => *j
key *_k => *k
key *_l => *l
key *_m => *m
key *_n => *n
key *_o => *o
key *_p => *p
key *_q => *q
key *_r => *r
key *_s => *s
key *_t => *t
key *_u => *u
key *_v => *v
key *_w => *w
key *_x => *x
key *_y => *y
key *_z => *z
key *_minus => *minus
key *_backslash => *backslash
key *_comma => *comma
key *_period => *period
key *_semicolon => *semicolon
key *_atmark => *atmark

#コントロールキーと英数キーの入れ替え
mod control += 英数
key *英数 = *LControl

#IME の入れ替え
key 無変換 = 半角/全角

# Ctrl+hをバックスペースに
key *IC-C-H    = BS

# Window キー 無効化
key LeftWindows   = &Undefined

まだまだ足りないけれど、手首はずいぶん楽になった気がする。 しばらくこれで使ってみる。

追記:アスタリスクをエンターキーにして、Ctrlを押しながらだとアスタリスク にすればいいかも。明日試してみる

# アスタリスクをエンターに
key *IC-Colon = Enter
# Ctrlを押しながらだとアスタリスクに
key *IC-C-~S-Colon = Colon

これでいけるか?