動機
僕の弟が英検3級に受かりそうにないため、英検5級から英検3級までの範囲の英単語を4択形式で解いていくソフトウェアをJavaのSwingで作成しました。
実際の動き
プロジェクト
下のEnglishWord.jarで動かせます。
プロジェクトのディレクトリ構成
English_word/
├── bin/
├── lib
├── resource/
│ ├── img/
│ │ └── english.png
│ └── Englishwords.csv
└── src/
└── english_word/
├── Action.java
├── English_database.java
├── Set_class.java
├── Swingcalc.java
└── VoiceAI.java
全体の流れ
スタート画面、プレイ画面、アンサー画面の3つが用意されている。
スタート画面にあるSTARTボタンを押すと問題が生成されてプレイ画面に移動する。プレイ画面には、AからDまでの答えを選ぶボタンがあり、それらのボタンを押すとアンサー画面に移動する。上のディスプレイに表示されている英単語の意味とボタンの日本語訳が一致した場合は"正解"と表示され、そうでない場合は"不正解"と表示される。アンサー画面のHOMEボタンとNEXTボタンがある。HOMEボタンを押すとスタート画面に移動し、NEXTボタンを押すと問題が更新されてからプレイ画面に移動する。
細かい仕様
- 出題する英単語の指定
スタート画面にあるコンボボックスとラジオボタンで出題する英単語の範囲を決める。例えば、コンボボックスで英検4級を選び、ラジオボタンを選択すると英検4級の英単語のみ出題される。ラジオボタンを選択しなかった場合は、英検5級と英検4級の英単語が出題される。また、プレイ画面に表示される英単語はランダムで表示される。 - 英単語の管理
英検5級から英検3級までの英単語を網羅しないといけないため、計2161個の英単語が必要になった。そのため、リソースフォルダ内にあるEnglishwords.csvから一時データベースを作成して、英単語のデータを管理した。DBMSは、SQLite3を使用した。 - 合成音声
プレイ画面のVOICEボタンを押すことで上のディスプレイに表示されている英単語を読み上げてくれる。英単語の読み上げには、FreeTTSというAPIを活用した。 - 閉じるボタンを押した時の動作
閉じるボタンを押した時に一時データベースある場合は、一時データベースを閉じてから削除する。
展望
英語訳の問題を追加したり、英検準2級以降の級にも対応できるようにしたり、ランキング機能の導入などもしたいなと考えています。
使用した英単語のデータ
ここの英検5級から英検3級までの英単語のデータを加工してEnglishwords.csvを作成しました。ありがとうございました。