図書館「蔵書分類」のバグ:組み込みエンジニアの現場力養成ドリル(4)(1/2 ページ)
今回は図書館でおなじみ「本の分類」を取り上げます。情報処理系の本は007(情報学、情報科学)に547(通信工学・電気通信)、548(情報工学)とバラバラに分類されていますが、この分類を「仕様書」と考え、その問題解決に取り組んでみましょう。
前回のバグのバグ
今回、バグを見つける問題を出題する前に、「前回のバグ」にバグがあったことをおわびします。
前回は『将棋の名人位挑戦規定のバグ』と題し、2017年6月から2018年3月まで行われた第76期名人戦の順位戦に潜むバグを取り上げました。
第76期は三浦弘行九段の冤罪事件の救済措置として、三浦九段がA級の11位となったため、A級には通常より1人多い11人が在籍することになり、いろいろな箇所で「例外」や「異常事態」が発生しました。最大の異常事態(というより「珍事」と表現した方がいいでしょう)は、最高成績の6勝4敗が6人もいたことです。結局、パラマス方式による6人プレーオフの結果、羽生善治竜王が佐藤天彦名人への挑戦者となりました。
前回の問題では、この第76期の「11人によるA級棋士の総当たり戦」を題材に、名人位挑戦規定に潜むバグをみなさんに見つけてもらいました。私が想定した名人位挑戦規定のバグは、「第76期は1人多い11人で争われる。このため、全員が5勝5敗になると、順位が下位の3人は最終戦が終了した即日、B級1組へ降級する。一方、後日、名人への挑戦者決定のプレーオフで、下位3人の誰かが勝ち上がって挑戦者になり、さらに数カ月後の名人戦七番勝負に勝つと、『B級1組在籍者が名人』になる。これは、『(名人を決めるための)順位戦』の趣旨に反し、矛盾する」で、「一種の仕様書のバグである」と書きました。実は、私のこの「バグ判定」にバグがありました。
読者の方から、次のような指摘をいただきました。
『将棋「名人位」挑戦規定のバグ』で、第76期名人戦に限らず、通常のA級10人の総当たり戦でもバグがあると思いました。9人が5勝4敗、1人が0勝9敗のとき、0勝の1人はB級1組への級降格として、もう1人のB級1組降格者は5勝の9人の中で最下位の順位者になります。この人がプレーオフと名人戦の末に名人になる可能性が残っています。
確かに、ご指摘の通りです。第76期の「A級棋士が11人」の場合の特殊な状況でのバグではなく、「いつものA級10人」でも起こりうるバグでした。ご指摘に感謝するとともに、「バグのバグ」のおわびを申し上げます。前々回の『どんな三角形かな』でも、読者の方から私のバグの指摘をいただき、これで2連敗となり、お恥ずかしい限りです。
恥は恥として、バグを見つけたら、なぜ、私がそんなバグを作り込んだかを分析せねばなりません。実は、三浦九段の冤罪事件の1年前、私が新幹線で大阪から東京へ向かう時、京都駅で巨体の三浦九段がはかま姿で乗車し、私の斜め前へ座ったのです。私は、「おぉ、三浦九段だ、『武蔵(たけぞうと読む)』の異名通り、男らしくてストイックで凛としてるなぁ」と、静かに駅弁を食っている三浦九段に感動しました。
三浦九段の出身地と現住所が、私の配偶者と同じ群馬県高崎市であること、将棋ソフト不正使用疑惑が報じられた時、「あのストイックな三浦九段がそんなことをする訳がない」と信じており、のちの疑惑調査委員会で無実が認定されて非常にうれしかったことなど、三浦九段に感情面で大きく肩入れしていました。その結果、「第76期順位戦のA級は、三浦九段、プラス、10人だ。11人なら全員が5勝5敗になる可能性がある」と三浦九段を中心に考え、いつもの10人体制のA級戦に考えが及びませんでした。やはり、恐るべきは「思い込み」。論理性が特に求められるソフトウェアの設計で、感情を入れてはならないと猛省しています。
Copyright © ITmedia, Inc. All Rights Reserved.