アルゴリズムを考える

 

次に具体的なアルゴリズムを考えていきます。SRSを(大まかに!)利用する点、スケジュールを自動設定する点は基本として、いろいろな要素を付け加えていきたいのですが・・・。まずは基本的なところから順番にやっていこうと思います。

①カード作成時

カード作成時、まず、ユーザーはフィールドを入力します。

(ここでリストをコピペして、複数枚のカードの同時入力ができれば便利ではないでしょうか・・・?)

ここでの入力内容をcards/fieldsに格納。同時にid,nid,didも自動的に入力されます。カードのlearningの初期状態は0,学習中だと1,期限がある程度を超えれば2とします。(将来的にはデッキ内の2の割合、あるいは絶対枚数が一定を超えるなどでメダルを獲得できるようにしたいです。するとメダルの情報を保存したテーブルも必要に)

続いて

②学習時

学習時に、ユーザーは記憶/忘却情報を入力します。試験などでは一定期間内に思い出すことも必要となりそうなので、タイマーも導入したいところです。フィールドの1つとしてlimit timeを設定し、その時間内の正答のみを正答と扱うのではどうでしょうか。英単語を一つ思い出すのに1分以上かかるようでは、英文は読めないので。

また、ankiの場合は自己判定で行いますが、フィールド入力も導入することはできないか、考える余地がありそう。例えばりんご→appleといったレベルの学習では実際に入力したほうが記憶に定着しそうですし、また正解時にピンポーン、といったSEが鳴ったほうが楽しそうです。

また、漢字などを覚える際にもフィールドへの書き込み(ペンタブなど使用)を導入したいですが、自動判定は難しいので自己判定でできないでしょうか…。また、失敗時の画像を保存しておいて、前回失敗時の画像を表示するといったことも記憶の補助になると思います。

としても、これはサブ的な用途なので後回しで、基本はフィールド内になんらかの入力フィールドの用意を可能にする、という方向でいきたいです。

③学習後

入力した記憶/忘却情報に基づいて、いくつかの処理を行います。すなわち、失敗したカード→翌日復習、成功したカード→むずかしさに応じて次の期間を設定、また、正答、誤答履歴を書き込み、期限のカード枚数を減らし、次回復習期日が1か月以上ならばLearningを2にする、といったようなもろもろの処理を行っていきます。

④保存はどのタイミングで行うか?

10、多くとも50個復習くらいのタイミングでセーブしておかないと、さすがにやる気が失せるのでそれ位は必要だと思います。