連載
» 2018年04月06日 09時00分 公開

組み込みエンジニアの現場力養成ドリル(3):将棋「名人位」挑戦規定のバグ (1/2)

組み込みエンジニアの現場力を上げるドリル、今回は「仕様書のバグ」に挑戦します。将棋界の最高タイトルの1つである、名人位の挑戦規定という仕様書に潜むバグを発見してください。

[山浦恒央 東海大学 大学院 組込み技術研究科 非常勤講師(工学博士),TechFactory]

はじめに

 今回も、問題を解きながら、組み込み系ソフトウェア開発の「現場力」と「開発力」を鍛えましょう。前回(組み込みエンジニアの現場力養成ドリル(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つである名人位の争奪に関し、将棋連盟が定めた規定があり、その仕様書(規定)の中にバグがあります。以下の規定のバグを見つけてください。

「名人位」挑戦規定のバグとは? 「名人位」挑戦規定のバグとは?(写真はイメージです)

問題編(制限時間30分)

 江戸時代に世襲制だった「名人」は、今では棋界最高タイトルの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位になります。

 この「仕様書」に潜むバグとはなんでしょうか?

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

Loading