前回で、空欄補充問題を自動生成・自動採点するアルゴリズムが完成しました。
完成後は、ゼミとかで演習問題の代役をするときに使用していたのですが、もう少し利便性を向上させたいと感じたのでアプリにします。
問題点
不便と感じている項目が2つあります。
- パソコンが無いと使用できない
- コマンドプロンプトから操作するのでツールっぽくない
ここら辺を改善したいなと思っていました。
パソコンが無いと使用できない件
空欄補充問題を自動生成・自動採点できる点までは良いのですが、パソコンを起動しないといけないので地味に面倒くさい…
スマホからも使用できれば空き時間で即使えるので利便性がかなり向上します。
コマンドプロンプトから操作するのでツールっぽくない件
ツールと言ってもプログラムを一つに統合しているだけなのでツールっぽくない。
操作もコマンドプロンプトからしてるのでプログラムを実行している状態に近いです。
アプリ化してGUI操作にしたいところ。
実装
フレームワークにはstreamlitを使用しました。
Pythonのみで手軽にアプリケーション化できるので、使用感を軽く試すには丁度いいです。
デモアプリケーションは下記に用意しています。
流石に演習問題をそのまま公開すると知的財産的によろしくなかったため、デモアプリケーションではChatGPTで生成した演習問題に置き換えています。
初期画面
初期画面では、空欄補充問題にできるプログラムの一覧を表示しています。

問題選択画面
演習問題の選択項目は、ワンタッチで選べるようにしました。
予め演習問題として出題しようと思っていたファイルを登録しています。(計36個)

問題生成ボタン
「空欄補充問題を生成」ボタンを押すと、下記が出現します。
- 元プログラム
- 空欄箇所
- 空欄補充問題
- ダウンロードボタン

項目1~4の詳細を説明します。
1. 元プログラム
「ソースコード」を押すと元プログラムの全内容を閲覧できます。

2. 空欄箇所
「空欄の行:計n行」を押すと空欄箇所の詳細を閲覧できます。

「:」の右側には空欄に置換した行と変数を示しています。
3. 空欄補充問題
「空欄補充問題」を押すと生成された空欄補充問題の全内容を見れます。

4. ダウンロードボタン
「ファイルをダウンロード」を押すと空欄補充問題(prob.c)がダウンロードされます。

内容は項目3の空欄補充問題と同一です。
解答コード採点
実行形式を「採点」に変更すると、採点画面に移動します。

提出ボタンが5個あります。
- ans.c
- ans.txt
- prob.c
- student_c.zip
- student_txt.zip
提出されたファイルのファイル名や拡張子が異なるとエラーメッセージを表示します。
ans.c
ここには模範解答を提出します。
そのため空欄補充問題の元としたプログラムを提出する必要があります。
ans.txt
ans.cの実行結果を提出します。
prob.c
空欄補充問題を提出します。
student_c.zip
学生が空欄補充問題を解答するので、その解答プログラムを提出します。
人数が多いのでzipファイル形式にしてます。
中のファイルに.c以外のファイルがある場合はエラーメッセージを表示します。
student_txt.zip
student_cの実行結果を提出します。
これも人数が多いのでzipファイル形式にしてます。
中のファイルに.txt以外のファイルがある場合はエラーメッセージを表示します。
採点ボタン
全部提出すると「採点を開始」ボタンが出現し、押すことで採点が開始されます。

採点が終了すると以下の項目が表示されます。
- 別解のファイル一覧
- 制約違反のファイル一覧
- ダウンロードボタン
別解と制約違反のファイル一覧を表示する領域は折り畳み式にしてます。
ダウンロードボタンを押すと採点ファイル(.zip)がダウンロードされます。

採点ファイルには下記を表示しています。
- コードの相違点
- 実行結果の相違点
- 各空欄の正誤判定
- 総合点
評価
使ってみた感じかなり良いです。
次のような場面でも使用できます。
- 各講義の休憩時間
- 電車に乗っているとき
- 運転中、コンビニに立ち寄ったとき
- 急に空いた謎の時間
手元にあるスマホで演習問題をすぐに作成&採点できるようになりました✨