メモ

ソフトウェアのバグによって6件の重大な放射線事故が引き起こされた「セラック25事故」とは?

by Catalina Márquez

カナダ原子力公社(AECL)によって製造された「Therac-25(セラック25)」は電子線X線を生成して患者に照射し、体の表面および深部にある腫瘍を治療するための放射線療法機器の一つです。この機器が1985年から1987年にかけて6件もの被ばく事故を引き起こした経緯について、海外ブログのThe Daily WTFが解説しています。

The Therac-25 Incident - The Daily WTF
https://thedailywtf.com/articles/the-therac-25-incident

セラック25の印象的な事件の一つは1986年3月21日、テキサス州のイーストテキサスがんセンター(ETCC)で発生しました。この日放射線技師は患者を治療室に連れて行き、いつも通りに治療を行おうとしていました。技師はベッドの上に患者を寝かせたあと、ターンテーブルのような形状になっているセラック25の放射線照射部を回して「光学レーザーモード」に設定し、レーザーが背中側の小さな範囲にあたるよう調整を行いました。


調整が終わると技師は再度照射部を回し、今度は電子線を照射する「電子ビームモード」に設定。さらに照射部と患者の間に磁石と金属製ブロックを配置しました。このセラック25は、電子線の形を磁石で整え、金属製ブロックによってX線に変換するというつくりになっていました。

こうして電子線治療のためのセラック25の設定を終えた技師は隣の制御室に向かい、コンピューターに必要な事項を入力。普段はインターホンとビデオカメラを介して患者と技師がコミュニケーションをとることができるのですが、この日はたまたま故障していました。しかし、この患者は治療に慣れており、次に何が起こるのかを十分に理解していたため、ほとんど気にしていなかったとのこと。セラック25や他の機器は非常に扱いが難しく、「何かが故障している」というのは日常茶飯事でした。


技師は慣れているはずのコンピューター入力を行ったものの、この日は誤って電子線の「E」キーの代わりにX線の「X」キーを入力してしまいました。このミスはほとんどの患者が「X」線治療を受けていたために起こったミスだと考えられていますが、この日間違いに気づいた技師はすぐさま「UP」キーを押してフィールドに戻り、「E」キーに入力し直しました。そして他のパラメータを入力した後、放射線照射のための「B」キーを入力しました。

しばらくするとコンピューターは「Malfunction 54(誤動作 54)」というエラーコードを表示し、続けて「Treatment Pause(処理の一時停止)」と表示しました。技師はエラーが起こることに慣れていたため、全てのエラーコードが書かれたチャートを参照しましたが、分かったことは「Malfunction 54」が「dose input 2(線量の値に2を入力せよ)」を意味するということだけ。当時はエラーコードに関する記述が不足していました。


技師は放射線がまだ照射されていなかったので、次に行うべきは一時停止の解除だろうと判断して該当の「P」キーを入力しました。患者の叫び声が聞こえてきたのはその時です。

患者はこの治療に関して何の痛みも感じないものだと認識していましたが、この時は背中にホットコーヒーが注がれているような強烈な灼熱(しゃくねつ)感を覚えたといいます。技師が照射を一時停止するまで患者は助けを求めて叫び続けましたが、その間中、電気ショックのような痛みを受け続けたとのこと。

こうして明らかな医療事故を引き起こしたセラック25でしたが、病院の物理学者が問題のセラック25を検査したところ何の異常も見つからず、全てが正常に動作していることが確認されたそうです。患者は6週間で合計6000ラド線量を照射される治療プログラムを受けており、1回に照射される線量は180ラドであるはずでした。セラック25の表示によるとその日患者が受けた線量は基準値以下であったとのことですが、実際には1万6000ラド~2万5000ラドの線量を照射されていたとのこと。患者は元気そうにしていたものの、既に致死量の放射線を浴びていたことになります。


ETCCの一件はセラック25が引き起こした唯一の事故ではなく、1985年6月から1987年7月の間に合計で6件の事故が発生したとのこと。そのどれもが患者に深刻な放射線被ばくをもたらし、5人が死に至っています。

最初に事件が発覚した時、その原因を突き止められる人は誰もいませんでした。ETCCの事故のようにセラック25が放射線を過剰照射したにもかかわらず、照射量を実際より少なく表示していることが判明したものの、問い合わせを受けたAECLは「セラック25は過剰照射など不可能である」と返答したとのこと。


セラック25のソフトウェアには、1970年代に登場したコンピューター「PDP-11」で実行されるいくつかのモジュールやアセンブリによるユーザー入力、線量調整などの主要な機能、これらを管理するリアルタイムOSなどが実装されており、開発担当者はたった1人でした。このソフトウェアの初期のバージョンは1972年に開発され、セラック25の前身であるセラック6(Therac-6)に使われていました。その後に登場したセラック20(Therac-20)とセラック25に適合するよう、1976年にバージョンアップが行われています。そのためAECLはこのソフトウェアに対し「長期間使用されてきたため安全である」という認識を持っていたとのこと。

セラック25のソフトウェアには、変数の値が0の場合はチェックを実行せず0以外の場合はチェックを実行するという、ターンテーブルが正しい位置にあるかどうかを判断するためのフラグとして機能する変数が存在しました。しかし変数を設定するフィールド幅は1バイトしかなく、変数が0の状態から256回インクリメントが行われた場合0に戻り、その誤った0の値がオペレーターの入力と一致した場合、ターンテーブルが正しい位置になくとも全エネルギーで照射が行われることが後に判明しました。

ETCCでの事件のあと、病院の物理学者はセラック25の利用を停止し、技師と協力して過剰照射の原因を突き止めようとしました。しかしETCCの事件で発生した「Malfunction 54」のエラーコードを表示させるのは容易ではなかったとのこと。正確な手順に乗っ取りデータをゆっくり入力しても、何の問題も起きなかったと言います。


過剰照射を引き起こすためには「経験豊富な」技師のスピードを再現することが重要でした。検証により、X線照射を指すXキーを入力後、8秒以内に入力を修正した場合にのみこの種のエラーが発生すると判明します。物理学者はエラーの再現性を確認した後にAECLに報告しましたが、AECLは「再現できない」と返答。しかしAECLの技術者も必要なスピードについて指導を受けた結果、過剰照射を再現可能だと認めました。

AECLは最終的にソフトウェアを修正しましたが、修正までの間AECLが提示した対処法は「UPキーを誤って入力しても機能しないよう接点に絶縁テープを貼り付け、入力をやり直す際はUPキーの代わりにRキーを押してリセットし、処理全体を初めから再入力し直してください」というものでした。

The Daily WTFは「ソフトウェアは現代の生活に欠かせないものになっていますが、常に厳密なプロセスでテストされているとは言えません。この記事が読者がソフトウェアのプロセスについて考えるきっかけになってくれることを願います」と述べています。

この記事のタイトルとURLをコピーする

・関連記事
「デーモン・コア(悪魔のコア)」で被ばくした科学者はどのようにして死んでいったのか - GIGAZINE

ソ連の雪山で若者9人が不可解な死を遂げた「ディアトロフ峠事件」に科学的説明がついたという研究結果 - GIGAZINE

アメリカ定番の落書き「キルロイ参上」とは何なのか? - GIGAZINE

放射線治療中の患者は目からビームが出ている - GIGAZINE

「医療ミス」がなんとアメリカ人の死因の第3位であることが判明 - GIGAZINE

in Posted by log1p_kr

You can read the machine translated English article here.