アイフォンアプリ開発、英単語学習アプリを考え中 仕様、その後公開

アイフォンアプリ開発、英単語学習アプリを考え中

英語は単語をどれだけ知っているかで理解力が変わってくると思っています。
しかし、単語を覚えるといっても単語帳を作ってもすぐに三日坊主になりそうです。
アイフォンアプリとして英単語学習アプリを作って単語を覚えようと思いました。

2016年11月27日 英語データの取扱の今のところの考え方、仕様を検討

テーブルまたはSQLiteかCoreDataのDB
1. オリジナル英単語テーブル:英単語データのおおもと、英単語、意味、ユニークIDの情報を保持し、同じ英単語は登録しない。初期の目標は300語、最終的に3000語を登録したい。
2.利用英単語テーブル、etango2:オリジナル英単語テーブルからデータを取り出す。なお、成績履歴テーブルを調べてから取り入れる
3.成績履歴テーブル:表示、出題、正誤、日付を記録する
4.一度に学習する英単語の数は100個程度とする。100個と考えるのは1個の単語を答えるのに、約20秒〜30秒ほど有するとして、2000秒から3000秒が必要として、30分〜50分かかります。実際これだけの時間を英単語で学習することは一般社会人、学生さんでもありえないので、十分な数かとおもいます。仮に、少ないという場合は変数の値を変えるだけなのでそれほどプログラムに問題が発生することはないでしょう。
 その他機能:
当アプリに登録されているかどうかを調べるための検索機能は検討中。この検索機能があると登録されているかどうか調べることができる。このアプリを作る側にとっては、新しく英単語を登録する際にアプリを使うことで調べられて便利だと思いました。なお登録されていない英単語の意味検索機能は実装しない。グーグルで調べたほうが早いですからね。
コードアルゴリズムフロー
1,3のテーブルに情報記録されているか存在するかをチェックする。1のみの場合は、そのまま2のテーブルを作成。1もなければ、データが無いので、ダミーデータを表示するか、検討する。
もし、1と3両方の情報が記録されていれば、 1と3のテーブルを比較し、間違いの問題、出題していない問題を優先的に選別して、2のテーブルに挿入する
SQLのInnerかOuterを使えば他のテーブルは不要だろう

もし、何らかの理由で1のテーブルの中の単語が消えていたらどうするか?

例えば、バージョンアップのための単語情報を登録するときに、誤って一部の単語情報を1のオリジナル英単語テーブルから削除してしまったと仮定します。
でも成績履歴テーブルには、その消えた英単語が存在します。一体どちらの情報を優先的に配慮スべきでしょうか?

 本来オリジナル英単語テーブルにすべての英単語が存在するはずなのですが、作業ミスによってこのようなことになることもあり、一方にデータが存在してもう一方にデータがないとなるとエラーの原因になります。

ここで、成績履歴テーブルにあってオリジナル英単語テーブルに英単語がない場合、成績履歴テーブルの情報でその英単語を再度学習するのかを決定します。
例えば、schoolという単語があって、オリジナル英単語テーブルに存在するはずが、その単語が消えていて、成績履歴テーブルには不正解として存在するとします。
成績履歴テーブルの不正解の英単語は再度学習する必要がありますので、成績履歴テーブルから不正解の英単語を優先的に取り出して学習します。正解の場合は、少なくともその単語を知っていると仮定し再度学習は必要ないとします。
オリジナル英単語テーブルは、英単語情報を保持するだけであって、成績等の情報は保持しません。

よって仮に、オリジナル英単語テーブルの英単語情報が欠落したとしても、次回の単語更新によって単語を追加しますし、成績履歴テーブルに不正解として英単語を再度学習できればよいと考えます。
本来なら、成績履歴テーブルからオリジナル英単語テーブルを更新したほうが良さそうなのですが、単語数が多くなると管理が面倒なので、多少の違いは無視します。

成績履歴をリセットしたとしてもオリジナル英単語テーブルから情報を取得して成績履歴テーブルに情報を記録するので、問題はない。

全問正解した場合は

正解回数カラム列をカウントアップして、出現と出題カラムをゼロにして正誤列もNullにし直して単語選別をする。
選別する単語のアルゴリズムを整理しましょうね。何気に複雑になる。

成績テーブルの利用案 現在は成績自体記録していない。2017/01/15

不正解の英単語を取得
正解と不正解を除く英単語のリストを取得このリストを合わせる。
これで不正解とまだ出題されていないリストができるので勉強になる。
この中からランダムに取得する。
ただしこの出題用のリスト数が10ない時がある。つまり正解数が多くてほぼ英単語を覚えたときである。この場合は正解した英単語も再度勉強することにする。つまり初期状態として取得する。
成績テーブルはそのままの状態として記録する。

解答した時の成績テーブルの更新
正解不正解の時に記録する。
正解なら1不正解なら0とする。正解だったのに不正解になってもデータを更新する。不正解から正解になる。

成績テーブルにあれば更新して、該当の英単語がなければ挿入する。

不正解の問題を優先して出題したいが今はランダムになってる

将来は出題された英単語をテーブルビューに表示したい。そしてそのテーブルからも勉強するようにしたい。
というかそのリストの方が重要な気がするが!
なぜ今しないのかというとSKSCENEからTableviewへの表示がわからないから。
でもブックマークに記録したサイトにその方法が掲載されていたしGITHUBからダウンロードしたプロジェクトにもサンプルがあったので今後検討したい。

その後、アイフォンアプリを公開しました

英単語学習ゲーム 公開しました。 英単語を覚えながらシューティングゲームできます。
説明リンク http://enjoygoodtown.com/blog/8879.html

アイチューンズストアリンク
https://itunes.apple.com/us/app/supesueitangoikku/id1191648882?l=ja&ls=1&mt=8

QRコード 読み込みをして、アイチューンズストアからダウンロードできます
http://enjoygoodtown.com/blog/wp-content/uploads/2017/01/QR_Code.png

こちらの記事もどうぞ