組み込みエンジニアの現場力を上げるドリル、今回は「仕様書のバグ」に挑戦します。将棋界の最高タイトルの1つである、名人位の挑戦規定という仕様書に潜むバグを発見してください。
今回も、問題を解きながら、組み込み系ソフトウェア開発の「現場力」と「開発力」を鍛えましょう。前回(組み込みエンジニアの現場力養成ドリル(2):「仕様に潜むバグ」を見つける、たった1つの心掛け )は、『どんな三角形かな』という架空のソフトウェアの仕様を列記し、その中のバグを見つけてもらう趣向でしたが、実は、問題編にバグがありました。
仕様の説明で、「このアプリケーションは、例えば、小学生が自分の持っている三角定規の3辺の長さを測って入力して、三角形の種類を判定するプログラムです。小学生は2枚の三角定規を持っています。1つは直角二等辺三角形で、もう1つは、辺の比が3:4:5の直角三角形です」と書いたところ、読者の方から指摘をいただきました。
「小学生が持っている三角定規の辺は、1:2:√3ではないか?」とのことで、まさしく、その通りです。角度が、「30度」「60度」「90度」の三角定規の辺の比は、1:2:√3です。訂正し、おわび申し上げます。問題編のバグを見つけた読者の眼力に驚くとともに、「バグは仕様書の外にもタップリ潜んでいる」ことを痛感しました(みなさまも「性悪説」の視点で、あらゆるドキュメントをチェックしてください)。
バグを見つけたら、なぜそんなバグを作り込んだかを分析せねばなりません。なぜ、私が、3:4:5と思ったか? 10年ほど前、友人から、「江戸時代の大工さんは、12尺(1尺は約30cm)のヒモを持っていて、3尺、4尺のところに印が付いている。このヒモで、3尺、4尺、5尺の三角形を作って、そこから直角を割り出していた」という話を聞いて、「へぇ、なるほどねぇ」と感動した記憶がありました。その瞬間に「3:4:5」が脳みそにエッチングされたのでしょう。10年たって、この「豆知識」が小学生の三角定規と融合し、「小学生の三角定規は3:4:5である」と勘違いした訳です。書いた本人は気付かない、非常にタチの悪いバグですね。
今回も「仕様書のバグ」を見つけてもらいます。取り上げるのは、今、藤井聡太六段の快進撃で脚光を浴びて人気急上昇の将棋です。将棋界の最高タイトルの1つである名人位の争奪に関し、将棋連盟が定めた規定があり、その仕様書(規定)の中にバグがあります。以下の規定のバグを見つけてください。
江戸時代に世襲制だった「名人」は、今では棋界最高タイトルの1つとしてトップ棋士が争う方式になっています。プロ棋士は約150人おり、ピラミッド式の階層になっています。名人戦を戦う棋士は以下の5つの順位戦を戦い、A級の最高成績者が現名人との七番勝負に挑戦できます。そこで4勝すれば名人位を獲得できます。
クラス | 概要/昇格基準 |
---|---|
C級2組 | 最も下のリーグ。定員はなし(現在は50人)。年間に10局戦い、上位3人がC級1組へ昇級(降級の規定は省略)。今、人気絶頂の藤井聡太六段は現在ここで、来期はC級1組に昇格する。 |
C級1組 | 定員はなし(現在、37人)。年間に10局戦い、上位2人がB級2組へ昇級(降級の規定は省略)。 |
B級2組 | 定員はなし(現在、25人)。年間に10局戦い、上位2人がB級1組へ昇級(降級の規定は省略)。 |
B級1組 | 定員は原則として13人。総当たりで戦い、上位2人が最高位のA級へ昇級、下位2人がB級2組へ降級。 |
A級 | 定員は原則として10人。総当たりで戦い、最高成績者は名人への挑戦権を得る。下位2人がB級1組へ降級。最高成績者が複数いた場合は、プレーオフを行う。最高成績者が3人以上出た場合は、順位下位の2人がプレーオフ1回戦を行い、その勝者が順位上位の棋士と対戦する「パラマス方式」で挑戦者を決める。降級は、同じ成績者が3人以上いる場合、順位下位の2人がB級1組へ降級する。 |
A級の最高成績者と名人が七番勝負を戦い、名人が勝てばタイトル防衛、負ければ、来期はA級の1位になります。
この「仕様書」に潜むバグとはなんでしょうか?
Copyright © ITmedia, Inc. All Rights Reserved.
豊富なホワイトペーパーの中から、製品・サービス導入の検討に役立つ技術情報や導入事例などを簡単に入手できます。