2010年2月10日水曜日

ピートとパパの会話(その84 アルゴリズム)


ピー  「今日の話題は?」
パパ 「世界中で問題になっちょるプリウスのブレーキのことを話そう」
ピー  「ブレーキが効かなくなるとかの件?」
パパ 「そうブレーキ。この問題の根本は何かと・・」
    「機械の問題か、お金の問題か、人間の問題か?」 
ピー  「何の問題なん?」
パパ 「これはアルゴリズムの問題だね~」
ピー  「アルゴ・・?リズム?、ジャズに関係するリズムかい?」
パパ 「問題解法の手順を定式化する概念なんだけど・・・」
    「英語でAlgorithmと書く」
ピー  「何のこっちゃ。それとプリウスがどういう関係?」
パパ 「プリウスのブレーキが一時的にスッポ抜けるのは、このアルゴ
    リズムの不完全性にある、と考えているんだ」
ピー  「よく解らないけど、簡単に言えば手順の誤りちゅーこと?」
パパ 「誤りではなく、手順が抜けていたのさ」
ピー  「抽象的な話で、なんも解らんなぁ」
パパ 「具体的に話そう。プリウスのブレーキ機構は、回生ブレーキと
    摩擦ブレーキの両方をコンピューターで切替えて使用する」
ピー  「ほと、ブレーキが効かなくなるのは、その切替えコンピューター
    の不具合かい?」
パパ 「いや、これはハードウェアの問題ではなく、切替プログラムの問題
    だと思うね」
ピー  「所謂ソフトウェアというものだね」
パパ 「その切替プログラムの動作手順の元となる考え方、つまりアルゴ
    リズムを構築していく際の過程が問題じゃないかと・・・」
ピー  「解るような、解らんような・・・」
パパ 「こういったソフトウェアを作製する時、先ず何をどのように処理
    するかの手順、つまりアルゴリズムを考えるんだけど・・」
    「それには発生するあらゆる状況の想定と、その状況に対応させる
    コンピューターの処理手順を人間の頭の中で考えねばならないんだ」
ピー  「ほと、その構築されたアルゴリズムの中に、ある種の要素が抜けて
    いた?」
パパ 「そう、切替え時に発生しそうな状況要素がね」
    「それがある特定の路面状況だったという説明を、トヨタはしている」
ピー  「停止時の凸凹路面や雪道のような滑りやすい状況下で起こる
    のかな」
    「何故最初にアルゴリズムの中に、その想定が組込めなかったの?」
パパ 「路面の状況要素が多すぎるから抜け落ちたのかも知れない・・」
    「だから想定外の事が起こると、コンピューターが対処出来ない」
    「つまり、その部分のプログラム化が出来ていないんだ」
ピー  「命に関わる重要な問題だよ~、ブレーキが効かないなんて~」
パパ 「通常は、考えたアルゴリズムをフローチャート上に表現し、それを
    プログラム化していく訳だけど、それはシーケンスを追った手順だ」
    「つまりは、命令が逐次的に実行される制御構造になっている」
ピー  「こうなればこうする、というプログラムだね」
    「するとコンピューターは、この手順どおりのデータしか処理出来ない
    んだ」
パパ 「しかし、実際の路面状況は刻々と、しかも突然に変化する」
ピー  「都会の舗装路と田舎のデコボコ道では違うわね」
パパ 「設計者は、その変化の一瞬の状況をアルゴリズムとして
    想定出来なかったんだな~」「しかもさ、路面というアナログ
    状況の変化を物理量として認識処理する必要があるんだ」
ピー  「その山ほどの変数をコンピューターで処理するのぉ?」
パパ 「そう、変化する物理量をディジタル変換するんだが、これは大変な
    処理だぞう~」
ピー  「人間の想定以上の変数要素が発生する訳だね。もう思考限界?」
パパ 「限界ではなく、想定外の事はテスト結果から学習し得る」
ピー  「ほう~」
パパ 「この学習効果が乏しかったとしか言いようがないねぇ」
    「しかも、ABS機能がこの想定外に絡むから、事態は更に複雑化する」
ピー  「すると、設計者が如何に多くのテスト体験をしているかで、
    そのシステム系の品質が決定付けられるのかぁ」「お~怖~」
パパ 「今回の場合は、テストによる学習効果の不足だなぁ」
ピー  「あらゆる環境を想定したテストの不足かぁ」
パパ 「実は、パパも似たような経験があるんだ」
    「昔、通信回線を用いてデータ交換をしていたんだが、
    コンピュータ-が原因不明で突然停止するんだ」
ピー  「パパはそんなこともしていたの?」
パパ 「コンピューターの表示で、通信回線のエラーだと分かるんだが、
    その原因が不明なんだ」「で、皆で原因究明をすることになった」
ピー 「えらいこっちゃ」
パパ 「16進数のエラーコードを解析し、命令とデータの軌跡を追っても、
    エラーが発生した瞬間の事象を特定・再現出来ないんだなぁ」
ピー  「そうか、エラーの再現が出来なければ、原因の特定も出来ないし、
    対処方法も考えられないんだ」
パパ 「んで、加速度テストといって、エラーを起こしそうなデータを
    コンピューターでランダムに発生させ、昼夜連続でテストを行った」
    「で、2日目にやっと状況の再現ができたんだ」
ピー  「原因は?」
パパ 「LSIという半導体に問題があった」「同じ回線エラーが2回連続し
    て発生すると、1回目のエラーは救えるが2回目のエラーは救済で
    きないということが判明した」
ピー  「2回連続発生は想定外か~・・」
パパ 「それも、2マイクロ秒の間にエラーが2回発生すると駄目なんだ」
ピー  「2マイクロ秒って、100万分の2秒ということ?」「そんな単位で
    物事を考えるの~?」
パパ 「結局、エラーの発生頻度と処理速度の相関を考える際のアルゴリ
    ズムが不完全だったんだ」「100万分の2秒のチョンボで大変な
    事態が生じたのさ」「このようにコンピューターが絡むと複雑怪奇な
    現象が起きるんだが、根本的には人間の思考過程の問題だねぇ」
ピー  「プリウスの場合は、コンピューターの動作が0.06秒遅れると言って
    いたね」「それに機械動作が加われば更に遅れる?」
パパ 「100分の6秒というのは、オリンピックの100m走でも問題となる時間
    だよ」「自動車の速度と距離の関係を考えると恐ろしくなるね」
ピー  「なるほど、スパコンが必要になるのも分かる気がする」
パパ 「プリウスの場合は、ブレーキとABS機能とのプログラム処理に問題
    があったのだろうね」「そして、あらゆる状況を想定したテスト不足が、
    問題の発見を遅らせた」
ピー  「でもさ、事前に想定できた気もするけどね~?」
パパ 「技術的には想定可能だ。そこに営業という伏線があった・・かも」
    「或いは技術開発体制の縦割り分業によって、情報共有が出来て
    いなかったとか」
ピー  「情報共有?」
パパ 「例えば縦割り組織だったため、ブレーキとABSの関係を単なる
    データ受渡しのインターフェースの設計だけで済ませていたとかさ」
    「本来は、それぞれの機能や特徴の詳細情報交換が必要なんだ」
ピー  「その情報に基づいてアルゴリズムを構築していくんだね」   
    「すると、情報共有は組織の問題だね。営業も発売を急いだから、
    不十分なテスト段階のまま? ・・・だったとか?」
パパ 「これはトヨタ車特有の現象らしいから、問題は組織にあるのかも」
    「トヨタは今後、全システム体系を見直すことになるだろうね」
    「でないと、全Made in Japanの信頼にかかわるよ」