2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人開発のビジュアルノベルエンジンをClaude Codeと作った話 ― 決済・自動アップデートまで動かすまでの進め方

2
Posted at

はじめに

NovelCraftという、コードを書かずにビジュアルノベル(ADVゲーム)を作れるデスクトップアプリを、Claude Code(Anthropicが提供するAIコーディングエージェント)と一緒に個人開発しています。Electron + React + TypeScript製で、シナリオ・背景・立ち絵・BGMを組み合わせてゲームを作り、Windows/Mac/Linux/HTML5向けに書き出せるツールです。

現在は決済機能付きのPro版(買い切り/月額)、ライセンス認証、自動アップデート、簡易的なチーム共有機能まで一通り動いています。ここまで一人で(実装はほぼClaude Codeと)作ってきた進め方を、技術detailというより「AIとどう開発を回したか」という観点でまとめます。
▼ 公式サイト・ダウンロードはこちら
https://stardustdreams.github.io/novelcraft/

なぜClaude Codeだったか

個人開発では実装スピードとコンテキスト維持の両方がボトルネックになりがちです。Claude Codeを選んだ理由は主に3つでした。

  • ターミナルから直接ファイル編集・ビルド・git操作までできる(コピペでのやり取りが不要)
  • セッションが長くなっても要約で文脈を引き継げる(アプリ全体の設計を覚えたまま作業を続けられる)
  • 指示をプロジェクトのルールとして固定できる(CLAUDE.md

特に3つ目が個人開発では効いていて、「毎回同じ注意を言わなくていい」状態を作れたのが大きかったです。

開発の進め方

CLAUDE.mdでプロジェクトのルールを固定する

リポジトリ直下にCLAUDE.mdを置き、Claude Codeが毎回のセッション開始時に自動で読み込む前提のルールを書いています。例えば以下のようなものです。

  • ファイル削除など破壊的操作は必ず事前確認する
  • ソースコードは非公開のPrivateリポジトリにバックアップする
  • 公式サイトにはビルド済みインストーラーだけを置き、ソースは一切含めない
  • 複数プロジェクトが同じ作業ディレクトリに同居しているので、それぞれが独立したリポジトリであることを明記する

これにより「うっかり公開リポジトリにソースをpushする」のような事故を未然に防いでいます。

「引き継ぎ資料の[DONE]は申告であって事実ではない」

長期の個人開発では、過去のセッションで「実装済み」とメモしたことが、実は途中で仕様変更されていたり、そもそも未検証だったりすることがあります。そこで運用ルールとして次を徹底しました。

引き継ぎ資料の「[DONE]」表記は事実ではなく「申告」として扱い、鵜呑みにせず実際のソースコードで裏取りしてから判断する

実際に効果があった例として、以前作成した実装計画ファイルに「Pro機能の実装がまだ残っている」という内容が書かれていたのですが、git log・実ファイルの中身・本番環境への疎通確認まで行った結果、その計画は既に別セッションで実装・デプロイまで完了していたことが判明しました。もし計画書の記述をそのまま信じて着手していたら、まるごと無駄な再実装になるところでした。

「AIの過去の発言」も「人間が書いた引き継ぎメモ」も、どちらも一次情報(コード・ログ・実際のAPIレスポンス)で裏取りしてから動く、という姿勢が個人開発でも意外と重要だと感じています。

メモリ機能でセッションをまたいだ文脈を持たせる

Claude Codeにはセッションをまたいで情報を保持する仕組みがあり、「このプロジェクトの決済基盤はこう構成されている」「このユーザーはこういうフィードバックの仕方をする」といった情報を蓄積させています。これにより、数週間前に決めた設計方針や、過去に一度伝えた「こうしてほしい」という指示を、毎回説明し直さなくてもAI側が踏まえて動いてくれるようになりました。

つまずきを「スキル」として資産化する

開発中に遭遇したハマりどころ(例: 本番ビルドだけ起動しないCSPのバグ、electron-builderでのGitHub Releases公開の落とし穴)は、都度その場で解決するだけでなく、再利用可能な手順書(Claude Codeの「スキル」機能)として書き残すようにしています。次に似た症状が出たときにAI側が自動でその手順を参照してくれるため、同じ調査を二度しなくて済みます。

実際にAIと一緒に作れたもの

  • ビジュアルノベルエンジン本体(シーン・キャラクター管理・分岐・エクスポート機能)
  • Pro版のライセンス基盤(Stripe Checkoutでの決済 → Webhookでライセンス自動発行 → アプリ側でオンライン検証)
  • リアルタイムプレビュー(Pro限定機能)
  • Git経由の簡易チーム共有機能
  • サイト訪問者分析・アプリ利用状況の匿名集計(オプトイン)
  • 同意ベースの自動アップデート機能
  • Windows向けインストーラーのビルド・GitHub Releasesでの配布パイプライン

決済まわりのサーバー(Node.js + SQLite)もゼロから実装し、Fly.ioにデプロイして本番のStripe決済まで通しています。バックエンドの実装経験があまりなくても、「何を作りたいか」を明確に伝えて一緒に検証しながら進めることで、ここまで到達できました。

AIと開発する上で意識したこと

  • 信じすぎない: 「動きました」「実装しました」という報告も、実際の画面・ログ・APIレスポンスで確認してから次に進む
  • 指示は都度ではなくルール化する: 毎回同じ注意をするのではなく、CLAUDE.mdやメモリに残して自動的に踏まえてもらう
  • 迷ったら計画を出させてから実行させる: 大きめの変更は、いきなりコードを書かせず先に方針を文章で確認してからにする
  • 知見は使い捨てにしない: 解決した問題は「その場で終わり」にせず、再利用できる形(スキルやメモ)で残す

まとめ

一人では実装に踏み切れなかった決済基盤や自動アップデートまで含めて、Claude Codeと二人三脚で個人開発のアプリを実運用まで持っていくことができました。ポイントは「AIに丸投げする」のではなく、「検証のルールとプロジェクトの文脈をきちんと整備した上で任せる」ことだったと感じています。

同じように個人開発でAIコーディングエージェントを活用したい方の参考になれば幸いです。
実際に作ったアプリはこちらで無料公開しています。よければ触ってみてください。
https://stardustdreams.github.io/novelcraft/

2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?