FSRSとは?間隔反復スケジューラの仕組み(2026年版)
フラッシュカードの答えを表示します。少し考えて思い出せたので、Goodを押します。そのカードは、しばらく出てきません。別のカードでAgainを押すと、今度はもっと早く戻ってきます。FSRSには、一方の答えが解剖学で、もう一方がスペイン語だったことは分かりません。FSRSが見ているのは、復習のタイミング、そのカードの現在の記憶状態、そして選んだ評価です。
FSRS(Free Spaced Repetition Scheduler)とは、各カードを思い出せる可能性を推定し、目標とする保持率に合わせて次の復習日を決める、オープンソースのスケジューリングアルゴリズムです。 復習履歴、経過時間、Again、Hard、Good、Easyという4段階の評価を使います。カードの管理、復習画面、学習ステップなど、そのほかの製品機能を担うのはフラッシュカードアプリです。
以上が、FSRSとは何かという問いへの短い答えです。FSRSの仕組みを理解するには、Difficulty(難易度)、Stability(安定度)、Retrievability(想起可能性)という3つの値と、重要な点を1つ押さえる必要があります。この3つは、どれも同じように保存される固定スコアではありません。
事実確認日: 2026年8月25日。

FSRSはスケジューラであり、フラッシュカードアプリではない
AnkiではFSRSを利用できます。Flashcards Open Source AppもFSRSを採用しています。ほかの製品やライブラリにも実装できます。open-spaced-repetitionプロジェクトは、モデル、実装、関連ツールを公開しています。
製品とスケジューラでは、担当する役割が異なります。
| レイヤー | 役割 |
|---|---|
| フラッシュカードアプリ | カードを保存し、復習画面を表示し、データを同期して、選んだ評価を記録する |
| FSRSスケジューラ | カードの記憶状態を更新し、次の適切な復習間隔を計算する |
| FSRSオプティマイザ | ホストアプリが最適化機能を提供している場合に、復習履歴に合うようモデルのパラメータを調整する |
| あなた | カードで何を問うかを決め、答えを思い出し、その結果を正直に評価する |
この区別が分かると、Anki FSRSのような表現も理解しやすくなります。Ankiはアプリで、FSRSはその中で有効にするスケジューラです。Anki、SuperMemo、FSRSの比較でも、同じ区別が重要です。AnkiとSuperMemoは製品ですが、FSRSは製品に組み込まれて動く仕組みです。
オプティマイザは、日々の復習で動くスケジューラとは別のものです。スケジューラはデフォルトのパラメータでも使い始められます。オプティマイザを使えば、あとから最適化に利用できる復習履歴を分析し、その履歴により適したパラメータを求められます。ただし、カードを書き換えたり、教材があなたにとってどれほど重要かを決めたりするものではありません。
FSRSの考え方:引き継がれる2つの状態と、その時点で求める1つの推定値
公式のFSRSアルゴリズムのドキュメントでは、Difficulty–Stability–Retrievabilityモデルが説明されています。一般にはDSRと略されます。FSRS-6では、DifficultyとStabilityが、前回の復習から次の復習へ引き継がれる記憶状態を構成します。一方、Retrievabilityは、Stabilityと経過時間をもとに、その時点ごとに計算されます。
この違いは重要です。誰もカードを編集しなくても、時間がたつにつれてRetrievabilityは下がっていきます。スケジューラはRetrievabilityを3つ目の固定値として扱うのではなく、必要なときに計算できます。
難易度(Difficulty):この記憶を強化しにくい度合い
**難易度(Difficulty)**は、そのカードの記憶安定度を高めるのがどれほど難しいかを推定した値です。このモデルでは、ほかの条件が同じなら、難易度の高いカードは、簡単なカードよりも復習に成功したときの安定度が伸びにくい傾向があります。
これは、カードの内容そのものの難しさを客観的に採点した値ではありません。FSRSは、カードに書かれた解剖学の定義を読んだり、スペイン語の文法を確認したりしているわけではありません。難易度は、そのカードに記録された復習パターンと評価から作られる内部的な推定値です。
安定度(Stability):記憶が薄れていく遅さ
**安定度(Stability)**は、記憶がどれほどゆっくり薄れていくかを表します。より正確には、モデルが予測する想起確率が90%まで下がる時点までの間隔です。
目標保持率を別の値に設定していても、この90%は安定度の定義に含まれます。安定度は記憶モデルの中で使う尺度であり、その値がそのままカードの次の復習間隔になるわけではありません。復習に成功すると、一般に安定度は高まります。そのため、同じ予測想起確率まで下がるのに、より長い時間がかかるようになります。
想起可能性(Retrievability):今、思い出せる確率
**想起可能性(Retrievability)**は、今そのカードを思い出せる確率をモデルが予測した値です。復習に成功した直後は高く、時間がたつにつれて、モデルの忘却曲線に沿って下がっていきます。
想起可能性はあくまで予測で、脳から直接読み取った測定値ではありません。カードを開いたときに答えを思い出せるかどうかを、FSRSが確実に知ることはできません。カードの状態、経過時間、パラメータ、復習履歴をもとに確率を推定します。
3つを組み合わせると、考え方はシンプルです。
- 難易度は、安定度がどれだけ伸びやすいかに影響する。
- 安定度は、想起可能性が下がる速さを左右する。
- 想起可能性は、現在そのカードが忘却曲線上のどこにあるかを示す。
実際の復習でFSRSが動く仕組み
長期復習の段階に入ったカードでは、スケジューリングはおおよそ次のように進みます。
- FSRSが、カードの安定度と前回の復習からの経過時間をもとに、現在の想起可能性を計算する。
- あなたが答えを表示し、Again、Hard、Good、Easyのいずれかを選ぶ。
- FSRSが、その評価とカードの以前の状態を使って、難易度と安定度を更新する。
- 予測想起可能性が目標保持率に近づく時点を計算する。
- ホストアプリが最大間隔やfuzzなどのルールを適用し、次回の復習予定日時を保存する。
公開されているFSRSの数式が、これらの更新方法を定めています。学習中に自分で計算する必要はありません。実用上の要点は、次の復習間隔が「1日、次は3日、その次は1週間」のような固定の段階ではなく、カードごとに変化する推定値から決まることです。
1枚のカードを何度か復習する場合
海馬の役割を問うカードを例にしましょう。正確な間隔は、アプリ、設定、復習のタイミング、パラメータ、評価によって変わるため、ここでは意図的に大まかな流れだけを示します。
| 復習した場面 | 選んだ評価 | そのあとに起きること |
|---|---|---|
| 新しいカードを見て、無理なく答えを思い出せた | Good | カードが長期復習に入る前に、アプリが設定済みの学習ステップを続ける場合がある |
| その後カードが長期復習に入り、思い出すのにかなり苦労した | Hard | FSRSはこれを苦労した末の想起成功として扱い、その記憶状態で選べる成功扱いの長期復習間隔のうち、最も短いものを割り当てる |
| さらにあとの復習で、答えを思い出せなかった | Again | FSRSが失敗時の更新を適用する。アプリがカードを再学習ステップへ送る場合もある |
| カードが戻ってきて、無理なく答えを思い出せた | Good | FSRSが新たな成功をもとに難易度と安定度を更新し、目標保持率に合わせて次の間隔を計算する |
この順番は重要です。Hardは想起に成功したことを、Againは失敗したことを記録します。Againを選んでも、それまでの履歴が消えて、まっさらな新規カードに戻るわけではありません。
Again、Hard、Good、EasyがFSRSに伝えること
4つのボタンは、今行った想起の結果を表します。
- Again: 必要な答えを思い出せなかった、または間違えた。
- Hard: 正しく思い出せたが、かなり苦労した、または強く迷った。
- Good: いつもどおりの手間で、正しく思い出せた。
- Easy: ほとんど、またはまったく苦労せずに正しく思い出せた。
Anki公式のFSRSドキュメントでは、重要な境界が明確に示されています。Againは失敗、Hardは想起成功です。忘れたのにHardを押すと、スケジューラへ誤った情報を送り、その後の間隔が長くなりすぎることがあります。
ボタンの上に表示される間隔ではなく、実際にどのように思い出せたかで評価を選んでください。Goodを選んだ結果、予想よりずっと先までカードが出てこないなら、それは設定の問題です。希望の日付に合わせて評価を変えると、設定を直す代わりに復習履歴を書き換えることになります。
部分的な答えや曖昧なカードがあると、4つのラベルから想像するよりも判断は難しくなります。詳しいAgainとHardのガイドでは、そうしたケースを扱っています。短くまとめると、まず成功か失敗かを判断し、成功なら次にどれほど苦労したかを見ます。失敗したらAgain、成功した場合だけHard、Good、Easyを選びます。
FSRSが受け取るのは、あなたが送信した評価です。口頭で答えた内容や入力した内容を、FSRSが客観的に採点するわけではありません。
目標保持率がモデルを復習日に変える
**目標保持率(desired retention)**は、カードが復習期限を迎える時点で、どの程度の想起確率を目標にするかを表します。0.90に設定すると、モデルが想起できる確率を90%と予測するあたりでカードを再び表示するよう、スケジューラが調整します。
これはモデル上の目標であり、いつでも10枚中ちょうど9枚を正解できるという約束ではありません。予測が外れることも、評価の付け方が変わることもあります。実際の学習条件は単純ではありません。
ここで、安定度とのつながりが役立ちます。安定度は想起可能性が90%になる時点を基準に定義されます。そのため、目標保持率を0.90にすると、復習カードについて計算される長期復習間隔は、安定度と密接に対応します。それでも、端数処理、fuzz、最大間隔の制限によって、実際に表示される日付は変わることがあります。まだ学習中のカードは、代わりにアプリの短い学習ステップに従います。
学習負荷とのトレードオフは明確です。
- 目標保持率を高くすると、カードが早く戻ってきて、復習回数が増える。
- 目標保持率を低くすると、復習間隔は長くなり、忘れる量も増える。
Ankiマニュアルの目標保持率に関する項目では、目標を100%に近づけるほど学習負荷が急増すると注意しています。どのデッキや学習目的にも合う万能な値はありません。
目標保持率は、オプティマイザが学習して決めるものではありません。あなた自身の学習目標を表す値です。パラメータが記憶モデルを表すのに対して、保持率の目標は、そのモデル上のどの時点で復習したいかをスケジューラに伝えます。
具体的な設定値や学習負荷とのトレードオフについては、別のFSRS設定ガイドを参照してください。
オプティマイザは任意で、目標保持率は自分で選ぶ
FSRSの数式は、一般にパラメータと呼ばれる一連の重みを使い、難易度と安定度を更新して、忘却をモデル化します。実装はデフォルトのパラメータを利用できます。ホストアプリがオプティマイザを備えていれば、対応する復習履歴に合うようパラメータを調整することもできます。
現在のAnkiでは、Optimizeを実行すると復習履歴が分析され、その履歴に適合するパラメータが生成されます。Ankiのパラメータに関するドキュメントでは、値を手動で編集したり、ほかの人のパラメータをコピーしたりしないよう勧めています。ほかのFSRSアプリは、この機能を提供せず、デフォルト値を使う場合もあります。
ここでいう「最適化済み」の意味は限定的です。オプティマイザの基準に照らして、指定された復習データにパラメータがよりよく適合している、という意味にすぎません。カードの内容が正確である、学習計画が妥当である、今後の予測がすべて正しくなる、という意味ではありません。
それでも、デフォルト値には意味があります。個人の履歴に合わせて調整しなくてもスケジューラは動作し、カードごとに異なる記憶状態を維持できます。
学習ステップは別の時間尺度を扱う
新しいカードは、長期的な間隔での復習が始まる前に、数分後でもう一度表示されることがよくあります。復習に失敗したカードも、すぐに戻ってくる場合があります。フラッシュカードアプリでは、こうした短い待ち時間を学習ステップや再学習ステップとして設定できます。
- 学習ステップは、新しいカードを覚え始める間に使う、設定済みの短い待ち時間です。
- 再学習ステップは、すでに長期復習に入ったカードでAgainを選んだあとの短い待ち時間です。
- カードが学習段階を終えると、次の長期復習間隔はFSRSの記憶モデルから決まります。
このため、10分の学習ステップを変えることと、目標保持率を変えることは別です。学習ステップは、短時間のうちにいつカードを戻すかを直接決めます。目標保持率は、モデルに基づく長期的な間隔を形作ります。実装によっては学習中にもスケジューラが記憶状態を更新するため、学習ステップは別の記憶理論ではなく、ワークフロー上の区切りだと考えるのが適切です。
Ankiの現在のFSRS向け学習ステップのガイダンスでは、同じ日のうちに完了できるステップが推奨されています。また、ステップの入力欄を空にすると、短期スケジューリングをFSRSに任せる試験的なオプションも用意されています。ほかのアプリでは異なる設計が採用されている場合があるため、Ankiの設定をそのままコピーする前に、自分のアプリが何に対応しているかを確認してください。
FSRSが利用者に代わって決められないこと
質の悪い入力でも、FSRSは念入りにスケジュールできます。どれほど高度な間隔計算を使っても、カードそのものがよくなるわけではありません。
スケジューラには、次のことはできません。
- カードが何を意味するか理解する
- 保存された答えが正しいか、最新かを確認する
- 部分的な答えを正解として扱うか決める
- 曖昧な問題文や、情報を詰め込みすぎた裏面を直す
- その知識が自分の目標にとって重要か判断する
- 持続できないほど増え続ける新規カードを、それだけで管理可能にする
- 期限を迎えた復習を必ず完了させる
「免疫系について説明してください」と問うカードを考えてみましょう。Againを繰り返せば復習回数は増えるかもしれませんが、どんなスケジューラでも、この広すぎる問いを1つの明確な想起課題に変えることはできません。直すべき場所はカードエディタです。良いフラッシュカードの作り方ガイドでは、この部分を扱っています。
この境界が分かると、学習上の問題を診断しやすくなります。長期的な復習タイミングがおかしいなら、設定、評価履歴、実装を確認します。カードの裏面に毎回違和感があるなら、問題はカードの質にあります。復習待ちが大量にたまっているなら、FSRSアルゴリズムそのものではなく、新規カードの追加量が原因かもしれません。
FlashcardsでのFSRS実装
開示: 私はKirill Markinで、Flashcards Open Source Appを開発しています。このセクションでは、リリース済み製品の動作を説明します。すべての学習者に、別のアプリから乗り換えるよう勧めるものではありません。
Flashcardsは現在、公式のts-fsrs 5.2.3のスケジューリング処理と同じ流れを再現する形で、FSRS-6を実装しています。標準のAgain、Hard、Good、Easy評価を使います。バックエンド、iOS、Androidのスケジューラは同じ動作に従い、Webの復習フローはバックエンドのスケジューラを再利用します。
現在のデフォルト設定は、目標保持率0.90、1分と10分の学習ステップ、10分の再学習ステップ、36,500日の最大間隔、fuzz有効です。ワークスペースの所有者は、これらの設定を変更できます。変更が反映されるのは今後の復習だけで、すでに設定された期限が知らないうちに再計算されることはありません。
Flashcardsのv1では、FSRS-6公式のデフォルト重みを固定して採用しています。利用者が変更することはできず、現在の製品には、利用者ごとの履歴から個人向けのFSRSパラメータを求める機能もありません。この制限は、Ankiのオプティマイザと比較するときに重要です。
公開されているFlashcardsのFSRSスケジューリング仕様には、現在の状態モデル、デフォルト設定、設定で変更できる範囲、プラットフォーム間で動作をそろえるためのルールが記載されています。より広い機能ページでは、FSRSをアプリそのもののように見せるのではなく、スケジューラが製品にどう組み込まれているかを説明しています。
FSRSについてのFAQ
FSRSは何の略ですか?
FSRSはFree Spaced Repetition Schedulerの略です。フラッシュカードを次にいつ表示するかを計算する、オープンソースのスケジューラです。
FSRSはAnki専用ですか?
いいえ。AnkiにはFSRSの実装が含まれていますが、FSRSはほかのアプリやライブラリにも実装できるスケジューラです。編集、同期、インポート、復習画面などの製品機能は、ホストアプリが提供します。
FSRSには、自分の答えが正しいか分かりますか?
いいえ。FSRSが受け取るのは、アプリが記録した評価です。自分の答えをカードと照らし合わせ、その結果をAgain、Hard、Good、Easyのどれにするかは、あなたが決めます。
Difficulty、Stability、Retrievabilityはすべてカードに保存されますか?
必ずしもそうではありません。FSRS-6では、DifficultyとStabilityが、次の復習へ引き継がれる記憶状態を構成します。Retrievabilityは、Stabilityと経過時間をもとに、その時点ごとに計算されます。アプリが独自のワークフローに必要なスケジューリング項目を追加で保存する場合もあります。
目標保持率90%なら、すべての内容の90%を覚えられますか?
いいえ。カードが復習期限を迎えたときに、予測想起確率90%を目標にするようスケジューラへ伝える設定です。すべてのカード、学習セッション、試験、実生活の場面で90%を保証するものではありません。
最適化されたFSRSパラメータは必要ですか?
使い始めるためには必要ありません。FSRSはデフォルトのパラメータを使えます。アプリが最適化に対応していて、十分な復習履歴があるなら、その履歴に適合させたパラメータのほうが履歴をよく反映できます。ほかの人のパラメータはコピーしないでください。
FSRSはSM-2より優れていますか?
両者は異なるスケジューリングモデルを使います。FSRSは保持率の目標を明示的に設定でき、同じ間隔とease factorを使う仕組みに頼る代わりに、カードごとの記憶モデルを更新します。詳しいFSRSとSM-2の比較では、アプリの機能と混同せず、根拠とトレードオフを扱っています。
最初に理解すべきFSRS設定はどれですか?
まずは目標保持率です。想起率と学習負荷のトレードオフを直接表すからです。次に、学習ステップと再学習ステップを確認します。アプリが正式な最適化ワークフローを提供していない限り、モデルのパラメータには手を加えないでください。
役割分担を押さえておく
アプリがカードを表示し、あなたが想起の結果を判断します。FSRSは難易度と安定度を更新し、現在時点の想起可能性を計算して、目標保持率に合わせて次の復習日を決めます。学習ステップは短時間での再表示を担い、任意のオプティマイザは復習履歴に合うようモデルのパラメータを調整できます。
この役割分担が分かれば、問題をどこで直すべきかも見えてきます。学習負荷や長期的な復習タイミングがおかしいと感じるなら、設定を調整します。問題文や答えがよくないなら、カードを編集します。復習するときは、その結果を正直に評価してください。
FSRSが選べるのは、モデルに基づく復習日です。その判断に役立つ情報は、明確なカードと、あなたが押すボタンから始まります。