2025/09/24

生成AIを活用した個人開発事例

Claude Codeで開発する予約管理アプリケーション - 個人開発で学んだ生成AI活用の仕方と注意点

この記事では、社内LT会で発表した内容をベースに、Claude Codeの実践的な活用方法と、使ってみて分かった注意点と成功パターンについて共有します。

スライドはこちらをご覧ください。 xxxxxx

はじめに

妻が撮影スタジオを運営しているのですが、予約管理を手動で行っています。手動で予約管理をすることで、ダブルブッキングの恐れ、作業時間の増加、スタジオ利用者が予約のたびに住所などを入力する必要があるなど、課題が散見されていました。予約管理を自動化することでこれらの課題を解消し、少しでも妻の負担が楽になればと思い、撮影スタジオ専用の予約管理アプリケーションを開発することにしました。

私は過去、同スタジオの予約フォームを開発したこともありますが、プログラミングに関しては初心者レベルです。そんな私が一人で全てを開発するのは中々大変ですが、Claude Codeという生成AI開発を活用することで、不明点を解消しながら開発を進めることができています。

Claude Codeとは

Claude Codeは、Anthropicが開発したターミナル上で動作するAIコーディングアシスタントです。開発者がコードを書く際の様々な作業を自動化・支援します。

主な機能

  1. コード生成
  1. コードベース理解
  1. 自動化

特徴

私は普段VSCodeを使って開発していますが、VSCode上で操作することも可能です。また、Cline上でも動作するので、私はCline経由でClaude Codeを利用していました。 プロンプトの履歴が分かりやすく表示されるのと、planモードが備わっていたためです。

基本的な使い方はシンプルです:

# インストール
npm install -g @anthropic-ai/claude-code

 # プロジェクトディレクトリで実行
cd your-project
claude

実際の活用パターン

1. 設計フェーズでの活用

要件定義の段階から、Claude Codeを活用してアプリケーションの設計を行いました。Claude Codeと壁打ちをしながら、必要な要件を洗い出し、各種設計書を作成しました。 指示を出す際は一般的なプロンプトエンジニアリングと同じで、Claude Codeが担う役割や背景、目的を明確に伝えることで、より適切なアウトプットが得られます。

例えば、以下はアプリケーション要件を詰めるために使ったプロンプトです。

# 役割
優秀なプロダクトマネージャー

# 背景
撮影スタジオ専用のアプリケーションの開発を考えています。
現状は、Webサイトから予約フォームを入力してもらい、入力内容をもとに予約を承ったりお客様へ連絡を入れたりしています。
お客様への通知、予約の簡易化、予約管理の半自動化などを行い、スタジオ管理者とスタジオ利用者双方にメリットのあるアプリケーションを開発したいです。

# 目的
撮影スタジオ専用のアプリケーションを開発するため、
要件定義と基本設計を行う。

# 命令
上記の背景、目的を満たすためのアプリケーション要件を、以下の背景や観点から考えてください。

- 登場人物は以下。
  - 管理者。スタジオを運営する者。
  - 利用者。スタジオの利用を希望する者。
- 予約には2種類ある
  - 本予約:予約確定のもの。キャンセル料発生の対象。本予約期間=利用日の6日前から利用日まで。
  - 仮予約:予約の仮押さえ。キャンセル料は発生せず、利用日の7日前までに予約確定の連絡が必要。
- 予約カレンダーは現在Googleカレンダーを使用しているが、カレンダーも自前のものを開発して移行したい
- どの予約も、承認制とする。利用者はあくまで、予約希望を申請できるだけであり、承認は管理者が行う。
- アプリケーション上で実現したいこと
  - 利用者の予約希望申請
  - 管理者の予約承認
  - 利用者への予約通知(仮予約期間終了、本予約前日の連絡、など)
  - 利用者の登録(氏名、住所、予約回数などを含む)
  - スタジオ利用規約の確認
- 技術スタックはモダンで世界的に需要のある技術要素とする

このプロンプトを見るとわかるかと思いますが、詳細にわかりやすくClaude Codeへ伝えることが重要だと感じています。AIを使わない開発でも同じですが、設計段階でしっかり要件を固めることが手戻りなく開発を進めるうえで重要です。

また、デザインに関してもこの段階である程度固めておいた方が、後々手戻りが発生しにくくなります。デザインルールというドキュメントもこの段階で作成してもらいました。
※デザインルールは、色、フォント、ボタンの形状、余白ルールなどを定義したドキュメントです。有名なものにはAppleのHuman Interface GuidelinesやGoogleのMaterial Designがあります。

2. 実装フェーズでの活用

設計が固まったら、設計書をもとにタスクリストを作成してもらいます。タスクはなるべく小さく分割することで、Claude Codeが無駄な動きをせずに実装することができます。タスク粒度が大きすぎると、AIが途中で迷走してしまうことがあり、全然違うこと機能を実装していたり、動かいないコードを生成してしまうことがあります。

なるべく小さい粒度でタスクリストを作成し、タスクを1つずつ実行してもらうことで次の利点が得られます:

結果として、通常1か月以上はかかるであろう作業が1週間程度で完了できました。

落とし穴:認証機能での失敗

車輪の再発明をしてしまった事例

実装する中で失敗した点がありました。認証機能の実装を依頼した際、Claude Codeは以下のタスクリストをもとに実装を行っていました:

Claude Codeが提案していたタスクリストの一部

### 2.1 認証・アカウント管理システム
- [ ] 2.1.1 DynamoDBテーブル作成(Users、UserAgreements)
- [ ] 2.1.2 認証Lambda実装(登録、ログイン、ログアウト、トークン更新)
- [ ] 2.1.3 パスワードリセットLambda実装
- [ ] 2.1.4 JWT認証ミドルウェア実装
- [ ] 2.1.5 ユーザープロフィール管理Lambda実装
- [ ] 2.1.6 ログイン・登録画面UI実装
- [ ] 2.1.7 プロフィール編集画面UI実装
- [ ] 2.1.8 ユーザー権限管理(一般/管理者)

これらのタスクを1からコーディングして開発を進めていたのです。 私は当時AWSに関する知識があまりなかったこともあり、このタスクリストのまま進めていました。しかしAWSの学習を進めていく中で、AWS Cognitoという認証基盤を提供するサービスがあることを知り、「これってCoginito使えば簡単に実装できるんじゃ・・・」と気づきました。

本来実装したかったもの

Coginitoを利用することで、セキュアかつ大幅な工数削減ができる可能性があります。以下はCoginitoを利用した際にどの程度工数が削減できるかをAIに試算してもらったものです:

タスク従来実装Cognito使用削減率
認証基盤3-5日0.5-1日80%
パスワードリセット1-2日0.5日75%
JWT検証1-2日0.5日75%
権限管理2-3日0.5日80%
合計7-12日2.5-3.5日約70%削減

この試算が正しいかは別途検証が必要ですが、少なくとも先に述べたタスクリストを実装するより、簡単に実装できることは間違いないと思います。

学んだ教訓

この経験から重要な気づきを得ました:

より具体的な指示を出さないと、汎用的な提案をしてくる

Claude Codeは確かに動作するコードを生成しますが、時にハードコーディングして実装を解決しようとする場合もあり、個人開発レベルでの実装コストを考慮した設計にならないことがあります。(中~大規模で最適な設計になることがある)

効果的に使うための必須知識

Claude Codeを使ってよりコスト効率の良い開発を進めていくには、以下の知識が必要だと思いました:

1. AWS SAAレベルのような、各クラウドの基礎知識

2. 要件定義力

3. レビュー能力

重要なのは、「AIに作らせる」のではなく「AIと一緒に作る」というマインドセットです。10年後はわかりませんが、現時点ではAIはあくまでCoplilotであり、ドライバーは人間のエンジニアです。エンジニアとしての基礎力がないと、AIを効果的に活用することは難しいと感じました。

実際の効果と注意点

効果

注意点

具体的な使い方のコツ

プロンプトの改善例

悪い例

“予約機能を作って” → AIが迷走しやすい

普通の例

“予約の作成、一覧、削除ができる機能を作って” → 動くが、コンテキストに沿っていない可能性がある

良い例

“AWS Lambda + DynamoDBを使って、予約の作成、一覧、削除ができるAPIを作って。”

タスクの分割

大きなタスクは小さく分割して依頼:

  1. まずタスクリストを作成してもらう
  2. タスクを一つずつ実行
  3. 各タスクの完了を確認してから次へ

まとめ

Claude Codeをはじめとするコーディングエージェントは確実に個人開発を加速させる強力なツールです。要件定義から設計書作成、実装、テストまで、開発の各フェーズで大きな効果を発揮します。 ただし、すべてがAIで完結するわけはなく、効果的に活用するには利用者がエンジニアとして成長することだと思います。

これらが必要不可欠です。

設計判断や品質保証、セキュリティ面は依然として人間の重要な役割です。AIと人間がそれぞれの強みを活かして協働することで、個人でも高品質なプロダクトを効率的に開発できるようになったと実感しています。

おわりに

今回の経験を通じて、生成AIツールの可能性と限界の両方を理解することができました。これから個人開発やプロトタイピングを始める方は、ぜひ生成AIを活用してみてください。 まずは小さなタスクから始めて、徐々に複雑な開発にチャレンジしていくことをお勧めします。失敗を恐れず、AIと一緒に学びながら開発を進めていきましょう。


この記事は社内LT会での発表内容を基に作成しました。実際の開発経験に基づく内容ですが、プロジェクトは現在も開発中です。