本文へプロジェクトを復活させるためのコーディング支援ツールの活用方法
概要
- 個人プロジェクト の進行とAIコーディング支援の活用体験
- OpenSubsonic API を利用したYouTube Musicのクライアント化
- Claude Code による実装過程とワークフローの詳細
- 必要最小限の MVP構築 と実用化までの課題整理
- AI支援の意義 と自己成長とのバランスへの考察
Claude CodeでOpenSubsonic対応YouTube Music Shimを作った話
- 長年未完だった 個人プロジェクト の再挑戦
- 例:日本語の「 積ん読」のような、いつかやりたい積みプロジェクト
- 今回のPOCは YouTube Music と OpenSubsonic API の橋渡し
- OpenSubsonicはクライアント・サーバー分離を容易にする API仕様
- サーバーに Navidrome、デスクトップに Feishin、Androidに Symfonium を愛用
- ytmusicapi でメタデータ取得、 yt-dlp で音楽ストリーミングを実装
- 基本的なストリーミングはすぐ動作、だが 全エンドポイントの準拠実装 に手間
- 新しいプロジェクトに目移りしがちで中断、典型的な積みプロジェクト化
Claude CodeによるMVP実装の準備
- すでに手書きでPOC済みのため、実装方針を明確化
- uvプロジェクト 作成、 FastAPI ・ Pydantic ・ ytmusicapi ・ yt-dlp を依存関係に追加
main.pyをFastAPIのサンプルに変更、openapi.json(OpenSubsonic仕様)を配置
- READMEにプロジェクト説明を記載
- CLAUDE.md を
/initコマンドで生成し、コーディング規約も追記
- 型アノテーション・Googleスタイルdocstring・Pydantic V2・pytestスタイルのユニットテスト推奨
- この初期状態を Gitリポジトリ として公開
Claude Codeを使った開発ワークフロー
- プランモード で次の作業をプロンプト
- 初期プランの抜けや問題点は追加質問で深掘り
- 必要に応じてリソースリンクを提示、検索ツールでイディオム調査も依頼
- 「Accept and clear context」で文脈を整理しつつ繰り返し進行
- 最初のプロンプト例:
- openapi.jsonを参照し、 新しいjsonエンドポイント のみFastAPIで非同期stub実装を依頼
- 実装後は ダブルチェック を依頼し、ミスを修正
- 主要な変更ごとに
/initで CLAUDE.md を更新
MVP(Minimum Viable Product)で必要な機能の実装
- サブソニッククライアント接続、曲検索、ストリーミングに必要な 最小機能 をClaudeに質問
ytmusicapiで検索、yt-dlpでストリーム
- Feishin で接続時に問題発生→サーバーログをClaudeに渡して反復修正
- 例:
.viewサフィックスの除去、エンドポイントのレスポンス形式修正
- エラー発生時には ユニットテスト を追加し、再発防止
- 数回の反復で 音声ストリーミング成功 を体験
実用化への長い道のり
- OpenSubsonicは約 80エンドポイント、15カテゴリに分散
- MVPでは以下のみサポート
- getLicense, getUser, getGenres, getMusicDirectories(いずれも空だが構造は正しいレスポンス)
- getSong(IDパススルー)、search3(シンプルな検索)、stream(最適音質URL抽出)、getCoverArt(カバー画像URL抽出)
- フル機能対応には
ytmusicapiの キャッシュ 導入、 sqlite でメタデータ保存、閲覧系エンドポイントの実装
- ストリーム中の曲をディスクに保存し、再ダウンロード防止
- クライアントが途中切断した場合の ファイルクリーンアップ 処理
- 認証 関連は未対応(公開予定なしのため)
AIコーディング支援の意義と自己成長のバランス
- AI支援で「 本当に欲しいけど実現できなかったプロジェクト」を形に
- 一方で、AI依存による スキル低下 も懸念
- 学び・成長のためのプロジェクト と 実現したい願望系プロジェクト を分けて考える重要性
- 「Sub-standard」と命名したこのプロジェクトは、後者の典型例
まとめ
- AIコーディング支援 は積みプロジェクトの消化や、願望実現に有用
- ただし、 自己成長のための挑戦 も並行して行うことが大切
- それぞれのプロジェクトの意味合いを意識しつつ、AIツールを活用する姿勢
提供: ハクソク · 要約更新:
AIによる日本語要約です。内容は原文とあわせてご確認ください。
Hacker Newsの議論を読む
自分が一番放置しがちなプロジェクトはゲームだな。放置したプロジェクトが何十個も入ったフォルダがあって、今はそれを実験として捉えてる。先週、これらのプロジェクトの一つをClaudeにやらせてみたんだけど、めっちゃ楽しかった!すぐに全体の流れを掴んでくれた。CCに放置プロジェクトだって言ったら、「まずはV0のゲームプレイループを完成させよう、そしたらさらに楽しめるし、諦めないで済むよ」って言ってくれた。ゲーム開発がすごく楽しくて、デザインのアイデアを出したら、ちゃんと動くコードを持ってきてくれる。手続き型アルゴリズムに関する資料を渡したら、実装もしてくれたし、ブレインストーミングもしてくれた。グラフィック資産も作ってくれて(外部ツールとして手続き型2Dジェネレーターのセットを作った)、ストーリー作りも手伝ってくれた。最近、コンピュータを使っててこんなに楽しいのは久しぶりだよ。Claude Code + Godot = 楽しい。またやりたくなってきた。