2021年スケジューラ

2021年スケジューラ(「v3」)は、Anki 2.1スケジューラ(「v2」)のアップデートです。

有効化

Anki/AnkiMobile 23.10、およびAnkiDroid 2.17以降では、v3スケジューラがデフォルトかつ唯一のオプションです。

古いバージョンでは、設定画面でスケジューラを変更できます。

互換性

v2とv3のスケジューラは互換性があります。完全な同期を行わずに切り替えることができ、1つのデバイスでv3を使用し、v2を使用している別のデバイスと同期してもスケジューリングの問題は発生しません。

クライアントのサポート:

  • Anki: 2.1.45+
  • AnkiMobile: 2.0.75+
  • AnkiWeb: 対応
  • AnkiDroid: 2.17.0+

v3スケジューラはカードの収集と並べ替えに異なるアプローチを使用するため、v2とv3のクライアントでは特定の日に表示される期日カードの数が異なる場合があり、表示順序も異なる場合があります。v2のみをサポートするクライアントを使用している場合は、この点を考慮してください。

変更点

元に戻す

v3スケジューラはAnkiの新しい元に戻すインフラストラクチャを使用しています。カードに回答し、別のカードを埋め、さらに別のカードに回答し、それぞれを順番に元に戻すことができます。以前のスケジューラでは元に戻すを個別に処理していたため、復習以外のアクションを行うと復習履歴がクリアされ、その逆も同様でした。

日次制限

新しいカウントはデフォルトで復習数によって制限されるようになりました。これにより、復習のバックログがある場合、新しいカードの導入が減少または一時停止されます。例えば、復習の制限が200、新しいカードの制限が20の場合、190の復習が期日になると、新しいカードは10枚しか導入されません。これにより、バックログが悪化するのを防ぎます。

このような状況が発生した場合、推奨される解決策は復習の制限を増やし、バックログを解消してから新しいカードを追加することです。バックログがあるにもかかわらず新しいカードを追加したい場合は、デッキオプションで「新しいカードが復習制限を無視する」オプションを有効にすることができます。

各デッキの制限は、そのデッキおよびそのサブデッキから引かれるカードの数に影響します。制限は選択したデッキから適用されるため、子デッキを選択した場合、その親デッキの制限は適用されません。例えば、以下の制限がある場合:

  • 親デッキ: 100
  • 親デッキ::子デッキ: 30
  • 親デッキ::子デッキ::孫デッキ1: 50
  • 親デッキ::子デッキ::孫デッキ2: 5
  • 親デッキ::子デッキ::孫デッキ3: 200

次に:

  • Grandchild3をクリックすると、最大200枚のカードが表示されます。
  • Grandchild2をクリックすると、最大5枚のカードが表示されます。
  • Grandchild1をクリックすると、最大50枚のカードが表示されます。
  • Childをクリックすると、Childデッキおよびそのサブデッキから最大30枚のカードが表示されます。Grandchild2からは最大5枚のカードしか取られません。
  • Parentをクリックすると、最大100枚のカードが表示され、そのうち最大30枚がChildおよびそのサブデッキから取られます。

初期のAnkiリリースのv3スケジューラでは、中間の制限が尊重されなかったため、ParentをクリックしてもChildの制限が孫デッキから取られるカードの数に影響を与えませんでした。

並べ替え

新しいカードや復習の表示順序を制御するための追加のデッキオプションが追加されました。新しいカードは複数のデッキから混ぜることができ、復習は間隔やサブデッキによって順序付けることができます。

埋め込みが無効になっている場合、表示順序を調整することで兄弟カードを一緒に表示するかどうかを制御できるようになりました。

新しいカードと日間学習カードの混合を制御するオプションは、設定画面からデッキオプションに移動されました。これらのオプションは、学習するために選択したデッキから使用されます。

埋め込み

埋め込みが有効になっている場合、カードは学習セッションの開始時にキューから除外されます。以前は、10枚の順方向カードと10枚の逆方向カードがある場合、カウントは20から始まり、復習するにつれて減少していましたが、今では最初から10で始まります。実際の埋め込みはカードを復習する際に行われます。

除外はデッキをクリックしたときに行われるため、デッキリストで表示されるカウントはデッキをクリックしたときに表示されるカウントと異なります。概要画面では埋め込まれるカードの数が表示されます。

日をまたぐ学習カードも復習や新しいカードと同様に埋め込むことができるようになり、それらを埋め込むかどうかを制御する新しいオプションが追加されました。

ファズ

復習に追加される小さなランダム遅延が、回答ボタンに反映されるようになりました。以前は回答時にのみ適用されていました。

遅延の計算方法も改善されました。1週間未満の間隔のカードにはより均等に重み付けされた遅延が適用され、間隔が増えるにつれて遅延量がよりスムーズに増加します。

日間学習

日間(1日以上)学習カードは、復習制限の対象となります。制限内に収まるものを決定する際、Ankiはまず日間学習カードを取得し、次に復習、最後に新しいカードを取得します。

フィルターデッキ

再スケジューリングが無効になっているフィルターデッキには、4つのボタンが表示されるようになりました。提供された遅延は「再度」ボタンに適用され、「難しい/良い」は提供された遅延の1.5倍と2倍を使用します。「簡単」はカードを削除します。

アドオンとカスタムスケジューリング

新しいスケジューラはゼロからの書き直しであるため、旧スケジューラのカード収集や回答ルーチンを変更するアドオンはもう機能しません。スケジューラのコードの一部を選択的に置き換えること(「モンキーパッチ」)はもうできないため、いくつかのアドオンは大幅な努力なしには移植が実用的ではないかもしれません。

しかし、新しいスケジューラはスケジューリングに対するいくつかの制御を提供します。各カードが提示されるとき、各回答ボタンに関連する時間と状態が事前に計算され、デッキオプション画面の下部に入力されたJavaScriptコードで計算されたスケジューリングを変更することが可能です。

入力したコードはプリセットを使用するデッキだけでなく、コレクション全体に適用されます。

以下は例です。Qt5バージョンのAnkiで使用する場合は、トランスパイルが必要なモダンJavaScriptを使用していることに注意してください。

例えば:

// 既存の状態を出力する
console.log(
  JSON.stringify(states, null, 4)
);

// ウェブインスペクターが開いている場合、デバッガーをロードする
debugger;

// 難しいボタンが学習ステップの場合、123分の遅延にする
if (states.hard.normal?.learning) {
  states.hard.normal.learning.scheduledSecs = 123 * 60;
}

// 再スケジューリングされたフィルターデッキでも同じ変更を適用する
if (states.hard.filtered?.rescheduling?.originalState?.learning) {
  states.hard.filtered.rescheduling.originalState.learning.scheduledSecs =
    123 * 60;
}

// 復習で簡単ボタンを使用したときに易しさ要素(難易度)を0.2増加させる
if (states.good.normal?.review) {
  states.easy.normal.review.easeFactor =
    states.good.normal.review.easeFactor + 0.2;
}

これはJavaScriptで実装されているため、コンピュータ版に限定されません。AnkiMobileとAnkiDroidの両方でもサポートされており、将来的にはAnkiWebでもサポートされる可能性があります。これにより、上級ユーザーはすべてのプラットフォームで標準のスケジューリング動作を調整できるようになります。

さまざまなスケジューリング状態については、SchedulingStatesで説明されています。