本格的リニューアル構想中のため、一部表示に不具合があります m(_ _)m

衛星「ひとみ」の破損、原因は人為的ミス JAXA、数値入力誤る - フールプルーフとフェイルセーフについて

所感
この記事は約7分で読めます。

■ X線天文衛星ASTRO-H「ひとみ」人為ミスにより宇宙デブリへ

コンサルタントのつぶやき

310億円をかけた、そしてJAXA(宇宙航空研究開発機構)の名声をかけた「ひとみ」プロジェクトが人為的ミスにより、あっけなく雲散霧消(うんさんむしょう)しました。

2016/5/24付 |日本経済新聞|夕刊 衛星「ひとみ」の破損、原因は人為的ミス JAXA、数値入力誤る

「宇宙航空研究開発機構(JAXA)は24日、太陽電池パネルを破損し4月に運用を断念したX線天文衛星「ひとみ」について、地上から間違った指令を送った人為的なミスが原因と明らかにした。同日開かれた事故の検証委員会で報告した。
 ひとみは3月末に姿勢制御に異常が生じた。異常時には姿勢を立て直すためエンジンを噴射するとの指令を事前に担当者が送っていたが、数値の正負を誤って入力したため異常な噴射が起き、高速で機体が回転。太陽電池パネルが破損し、運用不能に陥った。
 担当者間の連絡が悪く、数値の正しい計算手順が伝わっていなかったという。
 検証委員会では、入力した数値をシステム側で確認するなどエラーを想定した仕組みになっていなかったことや、送信前に命令内容を検証する手続きを怠ったことが問題だとの意見が出た。」

(注)日本経済新聞の記事へ直接リンクを貼ることは同社が禁じています。お手数ですが、一旦上記リンクで同社TOPページに飛んでいただき、上記リード文を検索すればお目当ての記事までたどり着くことができます

どんなに小さなシステムであっても、それの設計・構築・運用担当者ならば、絶対に留意すべき、設計・運用ルールの鉄則として、

① フールプルーフ(foolproof)
② フェイルセーフ(fail-safe)

というのがあります。

 

■ X線天文衛星ASTRO-H「ひとみ」異常事象調査報告書より

まずは、JAXAのホームページをご紹介します。
人工衛星・探査機による貢献 X線天文衛星「ひとみ」(ASTRO-H)

ここからさらに、
X線天文衛星ASTRO-H「ひとみ」異常事象調査報告書等について
[報告] 「ひとみ」(ASTRO-H)特設サイト

の各ページに飛ぶことができます。

以下の画像・資料は、上記の「異常事象調査報告書」からの抜粋となります。

「ひとみ」プロジェクトの概要は次の通り。

20160528_ASTRO-H ミッション概要

ちょっと気になるのが、このビッグプロジェクトにどういった日本企業が参加していたか。

20160528_JAXA-他機関/企業関係図(1/3)

20160528_JAXA-他機関/企業関係図(2/3)

20160528_JAXA-他機関/企業関係図(3/3)

そうそうたる顔ぶれですが、それでも設計・運用上の問題発生を回避することは叶いませんでした。

今回の姿勢制御の事故の概要は次のとおり。

20160528_ひとみ 衛星挙動の異常発生メカニズム②

ではどうしてこうした姿勢制御の障害が発生したのか。

まず一つ目は、「不適切なパラメータの設定」そして、二つ目がその計算結果の「検証作業の漏れ」。

ずらずらと文字情報で読んでいくためのスライドは次の通り。

20160528_ひとみ 不適切なパラメータ設定1

ポンチ絵(データフローなのかプロセスフローなのか、ありがちなピンとがぼやけたフロー図)はこちら。

20160528_ひとみ 不適切なパラメータ設定2

ヒューマンエラーは必ず起きるもの。それをどうやって防ぐか、また、発生した時に重大事にならないように回避策をどうたてるか、システム開発者ならば、そのことは基礎の基礎として叩き込まれているはずです。

 

■ 「信頼性設計」にみるヒューマンエラーはあって当たり前思想とは?

まずは、フォールトトレラント設計(Fault tolerant design)という、システム設計の手法から。システムの一部に問題が生じても全体が機能停止するということなく(たとえ機能を縮小しても)動作し続けるようなシステム設計になるようにという考えに基づいた設計思想です。筆者が生業のひとつとしている情報システムの構築を例において考えると、ハードウェアあるいはソフトウェアの障害があってもほとんど途切れることなく動作し続けるコンピュータシステムの設計を目指します。モノは壊れることを前提に、壊れて当初期待していた機能を果たすことができなくても、システム全体が停止しないように考えます。そのポイントは、

① フォールトトレラントな部品の準備
(例:内部に硬いゴムの層を持っていて表面がパンクしても走行が可能なランフラットタイヤを装備している自動車)

② 冗長性
(例:バックアップの部品があって、障害が発生したときに自動的に代替して動作する。大型トレーラーは複数のタイヤをもっているので、そのひとつパンクで失っても大きな問題とはならない)

これについては、情報システムの領域では、冗長化の仕方にいろいろタイプがあって、

例えばサーバーのバックアップ機の準備の仕方で、
 ・ホットスタンバイ/ホットスワップ
 ・ウォームスタンバイ
 ・コールドスタンバイ

という分類もありますし、
DB(データベース)の冗長化だと、RAID(0~5)の構成組み合わせが有名ですし、CPUの配置だと、
 ・デュプレックスシステム
 ・デュアルシステム
 ・マルチプロセッサシステム
 ・ロードシェアシステム 
という負荷分散や全体処理能力向上を図りながら、停止しないシステムを設計する手法にもさまざまなものがあり、これらを費用対効果やシステムに課せられた使命の大小で使い分けます。

 

■ ヒューマンエラーはあって当たり前の「フールプルーフ」と「フェイルセーフ」という考え方

ヒューマンエラーへの対処法は大別すると次の2つ。

「フールプルーフ」:そもそもヒューマンエラーが起き得ないような設計を行う

利用者が操作や取り扱い方を誤っても危険が生じない、あるいは、そもそも誤った操作や危険な使い方ができないような構造や仕掛けを設計段階で組み込むこと。また、そのような仕組みや構造。

ちょっと表現が悪いのですが、「バカ(fool)がどんなに画面をいじっても、システム全体が不具合を起こさないような設計をおこなう」ことです。情報システムのテストフェーズにおいて、システムのことを全く知らない人に、ランダムに操作をしてもらって、システムが誤動作しないように検証することが大事なんです。

例)
  ・オートマチック車:ブレーキを踏まないと、シフトレバーをP(パーキング)から動かせない
  ・正しい向きでないと入らない電池ボックス
  ・ドアを閉めないと動かない電子レンジ
  ・ふたを開けると自動停止する脱水機能付きの洗濯機

「フェイルセーフ」:万一、エラーが起きても、エラーによる被害拡大を防いだり、エラー前の状態に復帰できるようにする設計を行う

部品の故障や破損、操作ミス、誤作動などが発生した際に、なるべく安全な状態に移行するような仕組みにしておくこと。

故障や誤作動、誤操作は起きるものだという前提に立ち、そのような場合に自動的に安全側に導くような制御方式や動作原理を設計や構造に組み込む考え方に基づく設計思想になります。

例)
  ・転倒すると自動的に消化する石油ストーブ
  ・制御装置が停電すると制御棒が自重で落下して核反応を停止させる原子炉
  (あえて、ここに記述します!)
  ・停電・故障すると遮断桿が降りた状態で停止する踏切
  ・列車の自動停止装置(ATS)

その他に、不具合が生じた箇所を停止したり切り離すなどして残りの部分で機能や性能を落として運転を継続するような設計・思想は「フェイルソフト」(fail soft)といいますが、今回の「ひとみ」の事例にはふさわしくないので言葉の紹介だけに限定します。

日本の航空宇宙の技術の粋を集めた「ひとみ」。それが、姿勢制御のコマンドを送るために地上基地で計算した結果の正負の逆を間違ったまま、ノーチェックで最後まで通ってしまうなんて、、、たまたま、無人衛星だったから310億円の損失と観測・研究の遅延という結果で終わってくれましたが、有人衛星だったら、人命にかかわるところです!

筆者が拝命する情報システムの担当領域は、経営管理・管理会計周りが多く、医療機器システムや、交通インフラや製造ライン制御システムではないので、人命や経済的取引に直接関与しないため、よくありがちなのは、設計またはテストに十分な予算と時間が与えられないケース。そこは開き直って若いプロジェクトメンバには、「多少、設計がまずくっても人は死なないんだから、思い切ってバットを振れ(大胆な発想でアイデアを出せ!)」と発破をかけることがありました。でも、デスマーチが始まると、責任感の強い人から体を壊して倒れてしまうんですよね。だから、最近はそういうセリフは自重するようにしています。(^^;)

(注)職業倫理の問題から、公開情報に基づいた記述に徹します。また、それに対する意見表明はあくまで個人的なものであり、筆者が属するいかなる組織・団体の見解とも無関係です。

コメント