Unity と Claude Code を使って、国家試験対策アプリの開発をしています。
国家試験の問題は、5択(あるいは4択)の形式が多く、開発初期は、
「ボタンを5つ作って、その中から1つをタップして回答する」
という、とても素直(素朴)な実装をしていました。
4択問題の場合は、5番目のボタンの高さを0にするという力技で対応していました。(アプリによっては残っていたりもします)
当時は SetActive(false) という便利な機能を知らなかったので……。
選択肢が増えていくにつれて破綻する設計
その後、20択問題に対応する必要が出てきました。
そこで単純に、ボタンの数を20個に増やしました。
さらに厄介なことに、国家試験の中には、
5択問題
20択問題
が同じ試験内で混在するものもあります。
その結果、
5択問題用のシーン(ボタン5個)
20択問題用のシーン(ボタン20個)
というように、選択肢の数ごとにシーンを分ける構成になっていきました。
6択・8択問題の登場で限界に
そして次の国家試験では、
6択問題や8択問題が混在する試験が登場。
……さて困った。
現在のやり方だと、
6択用のシーン
8択用のシーン
と、選択肢のパターンごとにシーンが増殖していきます。
これはさすがにマズい。
Claude Code に相談してみた
そこで Claude Code に相談したところ、
「不要な選択肢は表示しなければいい」
と教えてくれました。
考えてみれば当たり前の話なのですが、
初心者の頃には思いもよらなかった発想でした。
しかも、ちゃんとコードまで書いてくれる。
結論としては、
20択問題用のシーンを1つ作れば、すべて対応できる
ということでした。
初期設計の重要性
実際には、開発初期に考えたデータ形式の自由度が低く、その形式で作ってしまったアプリが多数あったため、
すべてを一気に「20択用シーン1つ」に統一する
というわけにはいきませんでした。
……初期設計、大事です。
さらに柔軟な手法の提案
Claude Code は、さらに
問題ごとに
選択肢の数に応じて
その場でボタンを生成する
という、より柔軟な手法も提案してくれました。
自分の発想の中になかったわけではありませんが、
「これは実装できないだろう」と最初から諦めていた手法でした。
最大の難関だった問題形式
そして「これはさすがに無理では?」と思ったのが、次の形式です。
例:次の文章の A〜D、4つの( )に適する言葉を①〜⑧の中から選べ
単純に考えると、
4 × 8 = 32個の選択肢(ボタン)
が必要になります。
仮に作ったとしても、
画面に縦にズラ〜っと並ぶだけで、現実的ではありません。
却下した案
一案としては、
Aに入る言葉を①〜⑧から選ぶ
Bに入る言葉を①〜⑧から選ぶ
Cに入る言葉を①〜⑧から選ぶ
Dに入る言葉を①〜⑧から選ぶ
というように、4問に分割する方法も考えました。
ただしこの問題は、完答問題(すべて正解で1点)であり、
一覧性を重視したかったため、この案は却下しました。
実際に採用した手法
では、どんな手法を採用したのか。
興味のある方は、ぜひ近日公開予定のアプリ
「運行管理者試験(貨物)」
「運行管理者試験(旅客)」
をインストールして、実際に確認してみてください。
おわりに
「もっと良いやり方があるよ」という方がいらっしゃいましたら、お教えただけると幸いです。
