Opus.88

ピアノ初心者 × AI/ツール作りを temptation bundling(抱き合わせ)した趣味プロジェクト。狙いは 上達速度ではなく 「辞めない × 楽しい」 の最大化。名は Claude(Opus) × 作品番号 Op.88 × ピアノ88鍵。

  • 状態:初期実装完了(2026-06-17, Dispatch経由)。正典は repo 直下 opus-88/DESIGN.md
  • 実装済み:§5.5 生成素材 / §5.3 間隔反復(FSRS) / §5.2 練習ジャーナル の3機能。
  • 起動方法:正典=コンテナ内python main.pyopus-88/backend)→ http://localhost:8000start.ps1 は非正典の Windows ホスト用例外経路。※ Ollama (ollama serve) を先に起動(gemma4:12b 必須)。
  • 設定(2026-06-18)load_dotenv(override=False)。優先順位 env > .env(gitignore) > code default。 ground truth は code default(gemma4:12b/172.23.32.1)と .env.example。起動時 resolved 行を出力。

実装構成(2026-06-17 時点)

ファイル役割
opus-88/backend/main.pyFastAPI バックエンド(ABC生成・ジャーナル・FSRS)
opus-88/web/index.html単一HTML フロントエンド(abcjs 組み込み)
opus-88/backend/data/cards.jsonFSRS カードデータ(自動生成)
opus-88/backend/data/journal.md練習ジャーナル(追記式)
opus-88/start.ps1Windows ホスト用起動スクリプト

3タブ構成

  • 生成タブ:調・種類(スケール/アルペジオ/メロディ/5指練習)・難易度・小節数を指定し、gemma4:12b → ABC記法 → abcjs で楽譜表示+Web Audio 再生。
  • ジャーナルタブ:練習メモを Markdown 形式で追記。生成フレーズをそのまま保存するボタンあり。
  • 復習タブ:曲名・パッセージを登録し FSRS 間隔反復(Again/Hard/Good/Easy の4択)で管理。

技術スタック

  • バックエンド:FastAPI + httpx + fsrs + pydantic + uvicorn
  • フロントエンド:Vanilla JS + abcjs(楽譜表示・Web Audio 再生)
  • Ollama 接続:WSL2 → Windows ホスト IP 172.23.32.1:11434(start.ps1 ではホスト側なので localhost:11434

展望(棚・未着手)

  • ロガー → アンビエント可視化(Web MIDI / React・Three.js)
  • 練習ジャーナル RAG(gemini-rag の型を流用
  • 演奏 diff(partitura/music21)

通底原則

純度と制御は気軽に妥協していい。目的(辞めない × 楽しい)だけは妥協しない。 最大の罠は「道具作りが練習を食うこと」=ツールの完成度は成果物にしない(§3)。

status/tags の正は正典(opus-88/DESIGN.md)。この地図は派生。