Ankiのフォーラムを眺めていたら、面白い機能要望を見つけた。
「個人の学習プロフィールをAIが分析して、スケジュール設定を提案してくれる機能が欲しい」という内容だった。読んだ瞬間、「あれ、それって今のFSRSでもある程度できてるんじゃ?」と思ったんだけど、よく調べてみたら、思っていたより奥が深い話だった。
自分は8年間毎日Ankiを続けていて、FSRSも実際に使って最適化もかけている身なので、ちょうどいい機会だと思って、FSRSのことも含めてしっかり調べてみることにした。
そもそもFSRSって何者なのか
FSRS(Free Spaced Repetition Scheduler)は、MaiMemo社のJarrett Ye氏が2022年から開発を始めたオープンソースの復習スケジューリングアルゴリズムだ。
Ankiが標準搭載したのは2023年11月リリースのバージョン23.10から。それまで使われていた「SM-2」という、もっと古いアルゴリズムを置き換える形で導入された。今の最新版はFSRS-6で、2025年末にリリースされている。
数字だけ見るとピンとこないかもしれないけど、開発の裏側を知って「なるほど」と思ったのが、学習に使われているデータの量だ。
Ankiの開発元はプライバシーポリシーに基づいて、研究目的でユーザーの復習ログを提供してもらう仕組みを持っている。そこから抽出されたのが約2万人分のコレクション・約7億件という膨大な復習ログで、これがFSRSの学習データになっている。
ちなみにこの「2万人」はAnki全体のユーザー数ではなく、あくまで研究用に抽出されたサンプルの人数。Ankiは2006年からある定番アプリで、実際の利用者はこんなものじゃきかない。誰か1人の感覚で作ったアルゴリズムじゃなくて、大量の「人がどう忘れていくか」の実データから組み上げられている、という話だ。
仕組み:3つの数字でカードの状態を管理している
FSRSの中身を調べてみると、カード1枚1枚に対して3つの数値を持たせて管理していることがわかった。
- Difficulty(難易度):そのカードが自分にとってどれくらい難しいか(1〜10)
- Stability(安定度):思い出せる確率が目標値(デフォルト90%)まで下がるのに何日かかるか
- Retrievability(想起可能性):「今この瞬間」に思い出せる確率の予測値
面白いのがDifficultyの扱い方で、正解し続けると徐々に平均値の方へ戻っていく仕組みになっている。昔のSM-2だと、一度苦手判定されたカードがずっと苦手カード扱いのまま固定されてしまう問題(通称「イージーヘル」)があったらしいんだけど、この仕組みのおかげでそれが起きにくくなっているそうだ。
Retrievabilityの方は、レビューした瞬間だけ動くDifficulty・Stabilityと違って、日が経つごとに連続的に下がっていく。忘却曲線をそのまま数式にしたようなイメージらしい。
「Optimize」ボタンが、まさに個人最適化そのものだった
ここまで調べて、「あ、これフォーラムの要望とほぼ同じことをやってるじゃん」と思ったのが「Optimize」ボタンだ。
自分の過去の復習履歴(Again・Hard・Good・Easyをいつ何回押したか)を全部読み込んで、21個あるパラメータを自分専用の値に計算し直してくれる機能。つまり「同じデッキ・同じアルゴリズムでも、人によって忘れ方は全然違う」という、フォーラムの要望と全く同じ問題意識が、すでに機能として実装されていたことになる。

ボタンの意味もざっと触れておくと、こんな感じだ。
- Desired retention(希望保持率):どのくらいの確率で思い出せる状態を目指すか、という目標値。下げると復習の手間は減るけど忘れやすくなり、上げると逆になる
- Help Me Decide(実験的機能):このDesired retentionの数値を、自分の学習スタイルに合わせて提案してくれる機能
- Optimize Current Preset:今選んでいるプリセット(設定のグループ)だけを最適化するボタン
- Optimize All Presets:デッキごとに分けている全プリセットをまとめて最適化するボタン
- FSRS Simulator(実験的機能):設定を変えたら将来の復習件数がどう変わるか、シミュレーションできる機能
- Reschedule cards on change:設定を変えたときに、すでにあるカードの次回復習日も再計算するかどうかのスイッチ
- Check health when optimizing:最適化するときにデータの健全性も一緒にチェックするスイッチ(オンだと少し時間がかかる)
ただし調べていて注意点も見つかった。復習件数が少なすぎる状態で最適化をかけると、逆に変な結果になりやすいらしい。目安としては、最低でも500件、できれば1,000〜3,000件以上たまってから実行するのがよさそうだ。フォーラムでも「新しいカードの間隔がいきなり1.4年になった」「同じ2日間隔が10回近く続いた」といった、最適化直後の設定崩れの報告がいくつも見つかった。
頻度についても、毎日やる必要はなく、月1回程度、もしくは復習件数が倍になるたび(100件→200件→400件…)くらいのペースで十分、というのが大方の見解のようだ。
じゃあフォーラムの要望は、何が「新しい」のか
ここまで調べると、「もうFSRSで解決してるじゃん」と言いたくなるんだけど、フォーラムの要望をよく読み返すと、微妙に違う層の話をしていることに気づいた。
FSRSのOptimizeは、あくまで21個の数値パラメータを裏側で計算し直すだけで、ユーザーには「最適化しました」としか表示されない。一方フォーラムの要望は、その数値を人間が読める言葉に翻訳して、「あなたの復習負荷は今こうなっていて、この設定がこう影響しています」とAIが解説・提案してくれる機能を求めている。
つまり「個人最適化の計算」自体はすでにあって、要望されているのは「その結果を人間に説明してくれるレイヤー」ということになる。数字が苦手な人にとっては、これはこれで意味のある要望だと思う。

自分なりに思うこと:スケジュールより先に気になること
ここからは、8年Ankiを使ってきた自分の感想。
AIが設定を提案してくれること自体はいいアイデアだと思う。ただ、一括で全部変えられてしまうと、後から元の状態に戻しづらいという不安がある。自分の場合は、ブログ記事を書く過程で「これ、うまく使えなかったな」という単語にフラグを立てておいて、後からまとめて見直し、必要ならカードをリライトしたり図を挿入したりする、という方法を取っている。一気に自動化するより、こういう小さい単位で確認しながら直していくやり方の方が、自分には合っている気がする。
ただ、それよりもっと気になっていることがある。
どれだけAIに復習スケジュールを最適化してもらっても、その単語が実際の会話でどれくらい使われているか、という情報は別問題だということだ。学術的な単語や新聞・ニュースにしか出てこないような単語を、いくら効率よく覚えても、実際の会話で使ってみると「なんか不自然だな」と思われることがある。
だから、個人的には「この設定にしてください」よりも、「この単語はネイティブがよく使う/あまり使わない/学術寄り」といった使用頻度・自然さの情報をAIが教えてくれる方が、実は復習スケジュールの最適化より価値があるんじゃないかと思っている。
とはいえ、これはこれで簡単な話じゃない。同じ英語でも国や地域によって使われる単語・言い回しは変わってくるので、「ネイティブがよく使う」の基準をどこに置くかだけでもかなり難しい問題だと思う。
まとめ
今回調べてみて、FSRSという仕組みが思っていたよりずっとちゃんと「個人最適化」をやっていることがわかったのは収穫だった。フォーラムの要望は、その裏側の計算を人間向けに翻訳するレイヤーが欲しいという話で、方向性としては理解できる。
ただ自分としては、スケジュールの最適化よりも「その単語、実際どれくらい使われてるの?」という情報の方が欲しいな、というのが正直な感想だった。もしAnkiやサードパーティのAIツールがこの方向に進化してくれたら、かなり使ってみたい。
FSRSのOptimize、まだ使ったことがない人は、復習件数がある程度たまってから一度試してみることをおすすめする。自分の記憶の癖に合わせて調整してくれる感覚は、地味だけど確実に効いてくると思う。



















コメントを残す