本シリーズを刊行順・時系列順に並べ替え
長く続くシリーズには、読者が作品を初めて受け取った刊行順と、架空世界で出来事が起きた時系列順という、どちらも有効な読み方があります。このツールでは、各作品の題名と二つの順番を入力し、指定した基準で整えた一覧を返します。初読時の驚きを大切にする場合は刊行順を、物語を古い出来事から追う場合は時系列順をご利用いただけます。
無料で実行
目的に合う読書体験をお選びください
刊行順と時系列順では、答える問いが異なります。刊行順は、著者と出版社が作品を発表した順番です。そのため、後から明かされる事実、作風の変化、前日譚の意外性を、当時の読者と同じ流れで味わえます。時系列順は作中の時間軸に従い、前日譚や時間が前後する巻を、出来事が起きた位置へ配置します。並べ替える前に、発表当時の体験と連続した物語のどちらを優先するかお決めください。各書籍を一行として、題名、刊行順位、時系列順位を入力し、基準を選択します。結果には両方の数値が残るため、配置の根拠も確認できます。このツールが最善の読み方を決めることはありません。ご提示の資料、出版社の推奨、または調査済みの年表を正として、入力された情報をそのまま適用します。
信頼できる順位をご用意ください
各書籍には、空でない題名と二つの正の整数が必要です。刊行順位はほかの巻に対していつ発表されたかを示し、時系列順位は主な出来事が世界内のどこに位置するかを示します。中編、前日譚、関連短編、派生作品も計画に含めたい場合は追加し、本編だけを扱う場合は省いてください。順位は連番でなくてもよく、10、20、30 のように間隔があっても正しく並びます。選択した順位が同じ作品は、入力時の相対的な順番を維持します。この安定した処理は、同時進行の物語や資料上で一組にされた作品に便利です。すべての行は並べ替え前に検証されます。配列の欠落や空配列、空の題名、小数、ゼロ、負数、未対応の基準には明確な入力エラーを返し、もっともらしい誤った一覧を作りません。
読書計画や案内に結果をご活用ください
応答には、選択した基準と並べ替え済みの書籍配列が含まれます。各行には題名と二つの順位が保持されるため、そのまま表示したり、読書記録へコピーしたり、同じデータを二度実行して二通りの読み方を比較したりできます。読書会では、刊行順によって発表史に依存する驚きを守れます。再読では、時系列順により、元は前後して提示された原因と結果が見えやすくなります。図書館、書店、書評担当者、ファンサイトの編集者も、新しい前日譚が加わった際に、一貫した案内を維持できます。処理はネットワーク、乱数、現在日時を使わないため、同じ入力からは常に同じ結果が得られます。メタデータの検索や議論のある年代判定は行いません。元データで編集上の判断を済ませてから、API リクエスト 1 件あたり $0.002 で最終的な並べ替えをご利用ください。
活用例
初めて読む順番を計画する
刊行順に整え、当時の読者と同じ流れで事実の開示や前日譚をお楽しみいただけます。
時系列で再読する計画を作る
入力した長編や中編を、架空世界の時間軸上の位置へ配置できます。
シリーズ案内を更新する
新刊によって刊行順や年表が変わっても、再現可能な一覧を生成できます。
よくある質問
どの並べ替え基準を指定できますか?
刊行順には publication、作中の時系列順には chronological を指定します。それ以外は入力エラーになります。
刊行日やシリーズ情報を検索しますか?
いいえ。ネットワーク検索は行わず、ご入力いただいた題名と順位だけを並べ替えます。
二冊の順位が同じ場合はどうなりますか?
入力一覧における二冊の相対的な順番がそのまま維持されます。
順位は連番である必要がありますか?
いいえ。正の整数であればよく、番号の間に空きがあっても問題ありません。
API リクエストの料金はいくらですか?
API リクエスト 1 件の料金は $0.002 です。ブラウザー版は端末内で無料実行できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/life/book-series-reading-order \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"books":[{"title":"The First Published Tale","publication_order":1,"chronological_order":3},{"title":"The Ancient Prelude","publication_order":3,"chronological_order":1},{"title":"The Middle Years","publication_order":2,"chronological_order":2}],"order_type":"chronological"}'const res = await fetch("https://api.kit.forhosting.com/life/book-series-reading-order", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"books": [
{
"title": "The First Published Tale",
"publication_order": 1,
"chronological_order": 3
},
{
"title": "The Ancient Prelude",
"publication_order": 3,
"chronological_order": 1
},
{
"title": "The Middle Years",
"publication_order": 2,
"chronological_order": 2
}
],
"order_type": "chronological"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/life/book-series-reading-order",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"books": [
{
"title": "The First Published Tale",
"publication_order": 1,
"chronological_order": 3
},
{
"title": "The Ancient Prelude",
"publication_order": 3,
"chronological_order": 1
},
{
"title": "The Middle Years",
"publication_order": 2,
"chronological_order": 2
}
],
"order_type": "chronological"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/life/book-series-reading-order", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"books":[{"title":"The First Published Tale","publication_order":1,"chronological_order":3},{"title":"The Ancient Prelude","publication_order":3,"chronological_order":1},{"title":"The Middle Years","publication_order":2,"chronological_order":2}],"order_type":"chronological"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"books":[{"title":"The First Published Tale","publication_order":1,"chronological_order":3},{"title":"The Ancient Prelude","publication_order":3,"chronological_order":1},{"title":"The Middle Years","publication_order":2,"chronological_order":2}],"order_type":"chronological"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/life/book-series-reading-order", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"books": [
{
"title": "The First Published Tale",
"publication_order": 1,
"chronological_order": 3
},
{
"title": "The Ancient Prelude",
"publication_order": 3,
"chronological_order": 1
},
{
"title": "The Middle Years",
"publication_order": 2,
"chronological_order": 2
}
],
"order_type": "chronological"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "life.book_series_reading_order",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |