こんばんは。夜中たわしです。
自己言及のパラドックスというジャンルのひとつに、「人食いワニのジレンマ」またの名を「ワニのパラドックス」というものがあります。
このパラドックスについて、SEの目線で考えてみました。
登場人物
社員:フグアイ ナオコ
保守チームのエース。不具合を直すスペシャリスト。
部長:ツクリ コミオ
新人の頃に埋めた不具合が自分の首を締め付ける。不具合を埋め込むスペシャリスト。
障害報告書
「人食いワニシステムのハングアップについて」
作成:フグアイ ナオコ
障害内容
人食いワニシステム(Ver8.2)がハングアップする事象が現地のナイル川にて発生。
人食いワニシステムが子どもを人質とし、その母親に「自分がこれから何をするか言い当てたら、子どもを食わないが、不正解なら食う」と発言(この時点では正常に動作していたと考えられる)。
それに対し、母親が「あなたはその子を食うでしょう」と発言した直後、人食いワニシステムが動作を停止した。
人食いワニシステム内のログを確認したところ、ハングアップのタイミングで「==人食い前判定処理開始==」というログが1秒周期で出続けていた。
現場保持のため、人食いワニシステムは2週間経過した現在も停止したままである。
至急改修されたし。
以上、ナイル川の現場作業員からの連絡内容より。
障害原因
人食いワニシステムのソースコードを解析したところ、コードに問題があることが判明。
該当の処理を簡易的なフローチャートにて示す。
上記「人食い処理」が再帰的に呼び出され続けたことで、他の処理に移ることができず、最終的にスタックオーバーフローを起こしたものと考えられる。
マジでやっちゃいけない実装だと思います。
当時の担当者は何を試験してたんでしょうか。まったく。
改修方針(案)
再帰呼び出しが行われないよう、該当処理に到達した際には「いっそのこと妻子共に食べてしまう」処理を呼び出す。
(補足事項)
人食いワニシステムの最終アップデートが20年以上前であることもあり、当時の仕様書・設計書が見当たりません。上記処理で問題がないかご検討のほどをお願いいたします。
他システムについて
同時期にリリースしている、「クレタ人は嘘つきだ」システム、「床屋のパラドックス」システム等、自己言及のパラドックス関連のシステムに同様の問題が潜んでいる可能性あり。
順次問題がないか調査を行い、必要に応じて改修を行う。
解決編
報告書できました! 承認をお願いします。
……承認するけど、「マジでやっちゃいけない実装だと思います」以降の部分は消しといて。
えー、そうですか。直します。あ、お客さんからメールが来てますよ!
また改修の催促かな……。胃がマジでいてえ。
客先担当者からのメール
title:人食いワニシステムの件について
To:ツクリ部長
Cc:フグアイ様
いつもお世話になっております。
株式会社ジレンマの、イタバサミ キツオです。
先程、当時の仕様書が見つかりました。
内容を確認したところ、以下のような記述を発見しました。
(中略)母親が「あなたはその子を食うでしょう」といった意味合いの発言をした場合、動作を停止すること。復旧の必要なし。
……よって、改修の必要はありません。
ご迷惑をおかけしました。
以上、よろしくお願いします。
エピローグ
部長……!
保守費請求しといて。
おわりに
今回の記事はかわいい無料イラスト素材集「ホビヲノエ」で有名なホビヲさん(id:hobiwo)のリクエストを元に書きました。
思考実験・パラドックス関連記事まとめ - 夜中に前へ「クレタ人は嘘つきだ!」をお願いします。
2017/01/26 21:59
え? 「クレタ人は嘘つきだ」の話題が少なすぎないかって? ほぼ無いに等しい??
細かいことは、いいじゃないですか……。
ちなみに最近ブログの更新が滞り気味ですが、原因はこんな感じです。
改修の目処は立っていません。