フラッシュカード間隔反復計算
この間隔反復計算ツールは、復習結果を次に学習する具体的な日付へ変換します。今回の復習日、現在の間隔(日数)、0から5までの想起品質をご指定ください。透明性のある簡易SM-2スケジュールを適用し、次の間隔とカレンダー上の日付を返します。データベースや隠れた状態、予測不能なモデル出力を使わず、一貫した予定を必要とする学習ツール、個人記録、小規模アプリに適しています。
無料で実行
処理はブラウザ内で完結します。ファイルは送信されません。無料でご利用いただけます。
復習時点のカード情報をご指定ください
最初に、学習者がカードを復習した日をYYYY-MM-DD形式で入力します。日付を明示することで計算は再現可能になり、同じリクエストを明日実行しても同じ結果が得られます。次に、現在の間隔を整数の日数で指定します。0はまだ間隔を得ていない新規カード、1は前回の翌日に復習するカードを表します。最後に、想起品質を0から5で評価します。0は完全に忘れた状態、3は合格となる最低評価、5は努力せず正答できた状態です。この尺度は意図的に厳密で、整数だけを受け付けます。3つの明確な入力だけなので、学習フォーム、表計算、コマンドラインツール、カードアプリへ容易に接続できます。また、サーバー時刻、利用者のタイムゾーン、リクエストに含まれない復習履歴へ誤って依存することもありません。
簡易SM-2の計算方法をご確認ください
品質が3未満の場合は想起失敗とみなし、次の間隔を1日に戻して早めに再提示します。新規カードで合格した最初の復習も1日間隔です。すでに1日間隔のカードで合格すると、SM-2の一般的な初期進行に従って次は6日になります。それ以降の合格では、現在の間隔に品質評価から求めた容易度係数を掛けます。係数は標準値2.5から始まり、完璧な想起では少し上がり、難しい合格では下がりますが、最低値は1.3です。得られた日数は最も近い整数に丸めます。別個の反復回数や過去の容易度係数を保存せず、指定された間隔と評価だけで計算するため、簡易方式としています。応答には、計算後の間隔、次回復習日、入力品質、想起成功を示す真偽値が含まれます。
学習手順で結果を一貫してお使いください
返された次の間隔をカードと一緒に保存し、返された復習日をキューへ登録します。次の学習時には、保存した間隔、新しい品質評価、その復習日を再度送信してください。難しい教材は早く戻り、確実に覚えた教材は間隔が広がる、簡潔なフィードバック循環になります。本ツールは、うるう年を含む実在のグレゴリオ暦の日付を検証し、曖昧な文字列として扱わず暦日を加算します。小数、欠落、範囲外の評価を推測せず拒否するため、不具合のある画面やインポートも発見しやすくなります。アルゴリズムは決定的で、ネットワーク、乱数、現在時刻、学習者プロファイル、人工知能を使用しません。そのため、再現可能なテストや監査可能な教育ソフトウェアに適しています。この予定は医療的な保証ではなく実用的な基準です。期限、疲労、科目の難易度、アクセシビリティに応じて調整しながら、明確な計算規則を維持できます。
活用例
個人用学習デッキを予定します
複雑な予定管理サービスを維持せず、自己評価ごとに次の期限を決定します。
学習アプリへ反復機能を追加します
決定的なエンドポイントで、学習者の評価後にカード間隔を更新します。
カード運用を監査します
保存済みの日付、間隔、品質評価から予定を再計算し、一貫性を確認します。
よくある質問
品質評価は何を意味しますか?
完全な失敗を0、努力のない完璧な想起を5として整数で指定します。3、4、5は想起成功です。
思い出せなかった場合はどうなりますか?
品質が3未満なら次の間隔を1日に戻し、カードを早めに再提示します。
完全なSM-2アルゴリズムですか?
いいえ。SM-2の代表的な間隔・品質係数規則を使いますが、反復回数や過去の容易度係数は保持しません。
なぜ今回の日付を入力するのですか?
復習日を明示すると結果が決定的になり、サーバー時刻やお客様のタイムゾーンを仮定せずに済みます。
品質は0から5の範囲外でもよいですか?
いいえ。範囲外、小数、数値以外の値は無効な入力エラーになります。
APIリクエストの料金はいくらですか?
APIリクエスト1回の料金は$0.002です。ブラウザーの無料体験でも計算できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/life/flashcard-spaced-repetition \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"current_date":"2026-08-05","current_interval":10,"quality":4}'const res = await fetch("https://api.kit.forhosting.com/life/flashcard-spaced-repetition", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"current_date": "2026-08-05",
"current_interval": 10,
"quality": 4
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/life/flashcard-spaced-repetition",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"current_date": "2026-08-05",
"current_interval": 10,
"quality": 4
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/life/flashcard-spaced-repetition", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"current_date":"2026-08-05","current_interval":10,"quality":4}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"current_date":"2026-08-05","current_interval":10,"quality":4}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/life/flashcard-spaced-repetition", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"current_date": "2026-08-05",
"current_interval": 10,
"quality": 4
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "life.flashcard_spaced_repetition",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |