> For AI agents: the complete documentation index is available at https://open-spaced-repetition.github.io/ts-fsrs/ja-JP/llms.txt, the full documentation bundle is available at https://open-spaced-repetition.github.io/ts-fsrs/ja-JP/llms-full.txt.

# DefaultScheduler

`DefaultScheduler` は、すぐ使えるスケジューラインスタンスを返す非同期ファクトリです。モデル（既定は FSRS-7）を `dateChrono` と標準のスケジュールポリシーに組み合わせるため、設定するのはオプションだけです。内部ではカスタムの `defineScheduler` と同じ「定義とインスタンス」の仕組みを使っています——プリセットは部品を便利に組み立てたものです。

## オプション

FSRS-3\~6 から FSRS-7 に更新する際は、`weights` を省略して FSRS-7 の既定の重みを使うか、FSRS-7 用に学習した重みを指定してください。履歴の再生はカード状態を再構築するもので、旧版の重みは変換しません。

FSRS-7 のカードは `stability` と `difficulty` に加え `stabilityFast` を持ちます。FSRS-3\~6 の記憶状態は `Reschedule` で復習履歴を再生して再構築してください。パラメータ移行はカード状態を移行せず、更新済みの高速トレースを `0.8 * stability` で推測できません。FSRS-7 では小数日を使います。`enableShortTerm: false` は明示的な学習ステップだけを無効にし、高速トレースは無効にしません。

コストに応じた保持率には、独自の定義で `schedulerDesiredRetentionMiddleware` を `schedulerCostAdrMiddleware` に置き換えます。Cost ADR は `DefaultScheduler` のオプションではありません。

`scheduler.nextInterval(memoryState, desiredRetention, { card, grade, elapsedDays })` は計算済みの評価後状態から間隔を問い合わせます。`handlers.nextInterval` だけを実行し、カードや chrono を進めません。共通の間隔ポリシーはこのフックに置いてください。

| オプション                | 既定値                                | 用途                                                                                                                                         |
| -------------------- | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `version`            | `'FSRS-7'`                         | FSRS モデルを選びます。`'FSRS-3'`、`'FSRS-4'`、`'FSRS-4.5'`、`'FSRS-5'`, `'FSRS-6'`、`'FSRS-7'`。FSRS-7 は旧版 FSRS-3\~6 の重みを移行できません。                       |
| `weights`            | プリセットの重み                           | 任意の学習済み重み。省略すると選択したバージョンの既定値を使います。FSRS-7 には FSRS-7 用の重みがちょうど 34 個必要です。旧版の重みを渡すと、スケジューラの構築時に例外が発生します。                                       |
| `desiredRetention`   | `0.9`                              | 間隔計算の前に適用する目標保持率。                                                                                                                          |
| `enableShortTerm`    | `true`                             | 学習・再学習ステップを有効にします。                                                                                                                         |
| `learningSteps`      | `['1m', '10m']`                    | `enableShortTerm` 有効時に適用する学習ステップ。                                                                                                          |
| `relearningSteps`    | `['10m']`                          | `enableShortTerm` 有効時に適用する再学習ステップ。                                                                                                         |
| `graduatingInterval` | `1`                                | `Review` のカードの最短間隔（日）。最終間隔がこれより短いと `Learning`/`Relearning` に留まります。ステップを設定している場合、ステップを終えたときと `Review` のカードの Hard、Good、Easy は少なくともこの間隔を使います。 |
| `allowModelOverride` | FSRS-7: `true`; その他のバージョン: `false` | モデルの間隔が現在のステップより長いとき、モデルの間隔を使います。Again は `graduatingInterval` を超えず、Hard と Good は間隔が `graduatingInterval` に達すると早期卒業します。                     |
| `enableFuzz`         | `false`                            | 有効にすると間隔を分散して変化を付けます。                                                                                                                      |
| `maximumInterval`    | `36500`                            | 間隔の日数上限。                                                                                                                                   |
| `clearStatsOnForget` | `true`                             | `forget` が `reps` と `lapses` を消去するかどうか。                                                                                                    |

`DefaultScheduler` は常に `dateChrono` を使い、[ミドルウェア](https://open-spaced-repetition.github.io/ts-fsrs/ja-JP/guide/middleware/built-in.md)ページに示す順序で標準ポリシーを組み合わせます。目標保持率、fuzzing、統計、scheduled days、学習ステップ、最大間隔、単調間隔の順です。`version` を選ぶのはモデルとそのパラメータだけを変え、このポリシー構成は変わりません。

```ts twoslash file="../../../snippets/run-code/default-scheduler.ts"
import { DefaultScheduler, Rating } from 'ts-fsrs'

const now = new Date('2026-01-01T00:00:00.000Z')
const scheduler = await DefaultScheduler({
  version: 'FSRS-7',
  desiredRetention: 0.9,
  enableShortTerm: true,
  learningSteps: ['1m', '10m'],
  relearningSteps: ['10m'],
  enableFuzz: false,
  maximumInterval: 36_500,
})
const card = scheduler.newCard({ cardId: 'quick-start', now })
const result = scheduler.review({ card, grade: Rating.Good, now })

console.log(
  JSON.stringify(
    {
      state: result.card.state,
      dueAt: result.card.dueAt,
      stability: result.card.stability,
      stabilityFast: result.card.stabilityFast,
      difficulty: result.card.difficulty,
      rating: result.revlog.rating,
    },
    null,
    2
  )
)

```


▶ コードを実行

このファクトリは非同期なので、返されたインスタンスを使う前に `await DefaultScheduler(...)` します。この例はよく使う既定値を明示しています。`version`、`desiredRetention`、学習・再学習ステップ、fuzzing、`maximumInterval` です。`weights` を省略すると、選択した FSRS バージョンのプリセットを使います。

## プリセットかカスタム定義か

既定の FSRS モデル・`dateChrono`・標準のポリシー構成が製品に合うなら `DefaultScheduler` を使います——最速で正しい出発点です。別のモデルや chrono が必要な場合、ポリシーを増減したい場合、ユーザーごとに検証する設定を公開したい場合は `defineScheduler` を使います。どちらも最終的には同じスケジューラインスタンス API（`newCard`、`review`、`rollback`、`preview`、`forget`）になります。定義とインスタンスのモデルは[スケジューラ概要](https://open-spaced-repetition.github.io/ts-fsrs/ja-JP/guide/scheduler/index.md)を参照してください。
