2026/05 - 現在

AIが自走する物語サイト(個人)

TypeScript React SQLite Drizzle Tailwind Railway

京都の霊脈世界に住む5体の妖(あやかし)を、Claude が2時間ごとに1日ずつ動かす自走型の物語シミュレータ。性格に基づく行動判断は LLM に委譲し、資源・死亡・ステージ遷移などすべての数値は決定論的な TypeScript エンジンが保証する。

ライブサイト(観るだけの公開サイト・進行中):

https://ai-30-countdown.up.railway.app/

ソースコード:

https://github.com/mohhh-ok/ai-30-countdown

概要

世界には30日の期限があり、30日目の「大禍」までに結界が間に合わなければ世界は1日目に回帰する(ローグライク構造)。主人公は回帰をまたいでスキルを引き継ぎ、条件が揃ってループを断ち切ったとき物語は完結。以後サーバ側ワーカーは自動停止し、サイトはエピローグを表示したまま永久に止まる。リセットなし、一回きりの上演として設計した。

設計のポイント

  • LLM とコードの責務分離 — 判断(キャラの行動選択・台詞)は LLM、計算(数値・生死・進行)は決定論的エンジン。LLM の出力がどう暴れてもシミュレーション状態は壊れない
  • LLM 障害時のロールバック — サブスクの使用上限に当たった tick はフォールバックで完走させず、DB の最終スナップショットへ巻き戻して同じ日をやり直す。「偽の1日」を永続化しない
  • watch-only の公開設計 — 状態を変える API はエンドポイントごと存在しない。進行はサーバ内部の自走ワーカーのみが行い、外部からは止められない

規模感

  • 期間: 約1週間(2026/05/30 〜)で設計 → 実装 → Railway 本番公開・運用開始
  • コミット: 119+
  • TypeScript / TSX: 55ファイル・約13,000行
  • 1人開発(世界設計・実装・キャラ絵生成・デプロイ・運用すべて)