将棋「名人位」挑戦規定のバグ:組み込みエンジニアの現場力養成ドリル(3)(1/2 ページ)
組み込みエンジニアの現場力を上げるドリル、今回は「仕様書のバグ」に挑戦します。将棋界の最高タイトルの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つである名人位の争奪に関し、将棋連盟が定めた規定があり、その仕様書(規定)の中にバグがあります。以下の規定のバグを見つけてください。
問題編(制限時間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位になります。
この「仕様書」に潜むバグとはなんでしょうか?
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 「仕様に潜むバグ」を見つける、たった1つの心掛け
組み込み開発の「現場力」を上げるには、問題に取り組み解決することが一番です。今回は「仕様のバグ」に挑みます。実は、仕様に潜むバグを見つけるには、たった1つの心掛けさえあれば良いのです。 - ソフトウェア品質は規則やテストではなく「ヒト」が作る
品質はヒトが制御する。機械でも人工知能でも神様でもなく、ヒトが品質を制御し、品質を作る。今回は視点を変えて、ヒトを中心に品質を見ていくことにする。どんなに立派な品質活動でもヒトが継続的に実施しなければ、いずれ絶えてなくなるからである。 - 若き組み込みエンジニア、B君の憂鬱
このコラムでは、組み込みエンジニアが日々の開発で実際に遭遇する「小さなトラブルを」取り上げ、演習形式で解説します。今回は機器制御系の組み込み開発に従事する若きエンジニア君の遅れを、プロマネの立場で助けてあげてください。 - 間違いだらけの組み込み系品質管理、面倒な品質管理を楽しむコツ
ソフトウェアの品質管理はつらくて面倒だ。品質計測や品質制御は効果をすぐに実感できるが、品質管理の効果は後でしか得られない。「面倒だが後が楽になる」と分かってはいても面倒は面倒である。こんな品質管理を楽しくする方法はあるのだろうか。 - 組み込みソフトウェアの「品質」とは何か――品質の始まりからその実態まで
組み込みソフトウェアにおける「品質」とは、一体、何者であろうか。多用されている言葉であるがその実態はようとしてしれない。この連載では「IoT時代の組み込み系ソフトウェアの品質」をテーマに開発現場の目線で見ていく。まずはこの品質の正体を見破ることから始めたい。