ブラウザ英単語帳作ってみた!
ブラウザ英単語帳作ってみた
英単語帳を作成したのでここに書き込もうと思う。
ブラウザ英単語帳の紹介
URLにアクセスするだけで使える!便利!
URL:http://teruto725.php.xdomain.jp/tango/menu.php
英単語の意味とスペルを登録し、それを単語帳形式で復習するどこにでもありそうな単語帳サイト。英単語帳ってアプリとかは多いけど、ブラウザ版はかなり少ないので希少価値が結構あるんじゃねと思っている。
日本語→英語、英語→日本語どちらも対応している。日本語→英語は直接スペルを入力する形式で、英語→日本語はボタンを押すと日本語が表示され正解していたらOKボタン、不正解ならBADボタンを押す形式になっている。
セールスポイントとしてはこんな感じ
- ブラウザ版なのでどこでもどんなデバイスでも単語の復習ができる。つまりPCで単語登録してスマホで復習とかできる。
- 出題される単語は過去のユーザの学習データから最適な単語を類推してくれる。
- 登録が簡単。(ログイン名とパスワード決めるだけ)
初めてwebアプリケーション作ったからあんまり機能を付ける余裕がなかった。
ただ単語類推システムにはかなり時間を注いだし結構自信がある。
プログラムの話
webアプリケーションは初体験だったがなんせ4つもの言語を使い分けなければいけないので面倒だった。
単語類推システムはなかなかの傑作(2回目)
github:https://github.com/teruto725/browser-wordbook
単語類推システムの仕組み
各単語には連続正解数と単語難易度が定義される。単語難易度、連続正解数、ともに初期値は1である。
単語をユーザが間違えると単語難易度と連続正解数が以下の法則に従って更新される。
連続正解数から説明する。連続正解数はその名の通り連続で何回正解もしくは不正解しているかを表す。連続正解なら-の値、連続不正解なら+の値になってる。例えば連続正解数が-4なら4回連続で正解しており、2なら2回連続で不正解であるということがわかる。
次に単語難易度について説明する。単語難易度は以下の式によって変更される。
正解時 difficult = difficult - (2 * count - 1)
不正解時 difficult = difficult - ( 2 * count + 1 )
プログラムは前回出題した単語と異なる単語難易度が最も高い単語を出題する。
これらの法則によって、ユーザが一度単語を間違えると1問あいて再度その単語が出題される。さらに単語難易度は連続正解数*2の値で加算されていくため一度間違えてしまうと連続正解数の値がリセットされ、ほかの問題よりも優先的に出題される仕組みになっている。
感想と今後への知見
phpは結構しんどい。初めはincludeを知らなかったのでコードクローンだらけだった。やっぱりIDEになれてしまっているとこのような中規模プログラムを便利なGUIなしに開発するのは苦に感じる。さらにphpはサーバサイドのプログラミング言語であり、フロントサイドは結局css htmlである。よってphpでhtmlをprintoutするという作業であるため、なんか2度手間な気がして気持ち悪い。あと、サーバサイドという性質のせいでphpでできないことも多い。php開発をするならjavascriptの習得が必須だと感じた。
データベースはどこからでもアクセスできるし、構造をきれいにしないと使えないようになっている分かなり便利だと感じた。
次はrubyをやる。