AI駆動開発で挑んだ服装提案アプリ、そして僕は開発を止めた
はじめに
こんにちは、naokiです。
最近、「AI駆動開発」なんて言葉をよく耳にしますよね。AIと「対話」しながら開発を進めることで、昔では考えられないスピードでアイデアを形にできる時代になりました。
就活時から「自分で作って自分で売る」ことができるエンジニアを目指していたので、この潮流は追い風でした。
その大きな可能性にワクワクして、「これで何か作ってみたい!」と勢いよく個人開発の世界に飛び込んだ一人です。
この記事で書きたいのは、キラキラした成功体験ではありません。 むしろ、その逆です。AIという強力な相棒がいても、個人開発にはやっぱり特有の難しさや、メンタル的にキツい瞬間が訪れます。
この3週間、僕がどんな風に開発を進め、何に悩み、どんな葛藤の末に「開発中止」という決断を下したのか。そのリアルな道のりを、ありのままに記録として残そうと思いました。
この僕の失敗談が、同じようにAIとプロダクト作りに向き合う開発者の皆さん、特に「このまま進めていいのかな…」なんて壁にぶつかっている方にとって、少しでも共感できる部分や、何かのヒントになれば嬉しいです。
この記事を読んでほしい人
- AIを使って個人開発に挑戦している、またはこれから挑戦したいと思っている方
- 開発の途中で「このアプリ、本当に価値あるのかな?」と悩み、モチベーションが揺らいでいる方
- カッコいい成功事例だけじゃなく、リアルな失敗談を知りたい方
この記事で話すこと/話さないこと
✅ 話すこと
- 僕が実践したAI駆動開発のリアルな流れ
- 開発して感じた良いこと、大変だったこと、そして心の葛藤
- 時間もお金もかけたのに、なぜ開発を止めたのか?その正直な理由
❌ 話さないこと
- VercelやSupabaseなどの具体的な使い方
- Google Maps APIやOpenWeatherMap APIなどの詳しいコード解説
- AIモデルの技術的なお話
こんなアプリ、作ろうとしてました
僕が作ろうとしていたのは、「今日のあなたに、最適な服装を。」をコンセプトにした、とてもシンプルな服装提案アプリです。
【アプリの機能】
現在地と目的地、そして移動時間を入力すると、それぞれの場所の天気予報(気温や雨の確率など)をAPIで取ってきてくれます。
さらに、その情報をもとにAIが「今日の気候なら、こんな服装が一日快適ですよ」と、具体的なコーディネートを提案してくれる、というものです。
【開発のきっかけ】
このアプリを作ろうと思ったきっかけは、僕自身のすごく個人的な悩みからでした。
特に春や秋みたいに、朝と夜で気温が全然違う日ってありませんか?
朝の気温だけ見て薄着で出かけたら、帰り道で凍えながら帰る…なんて経験、きっと誰にでもあるはず。
朝のバタバタしている時間に、「今日、何着ていこう…」とクローゼットの前で固まってしまう時間。地味ですけど、確実なストレスなんですよね。
「天気予報を見ればいいじゃん」と言われたら、まさにその通り。
でも、気温の数字だけ見ても、実際の体感温度って分かりにくくないですか?湿度や風の強さ、日中の気温の変化まで考えて服を選ぶのって、意外と面倒だったりします。
この「ちょっとした面倒」をテクノロジーで解決して、毎朝の数分間を快適にできたら最高だな、と思ったのが始まりでした。
開発を支えてくれた技術たち
今回の開発では、イマドキの技術とAIの力をフル活用する構成にしました。
- フロントエンド: TypeScript, Next.js (React)
- バックエンド: TypeScript, Next.js (API Routes)
- サーバー/ホスティング: Vercel
- データベース: PostgreSQL (Supabase)
- AIエージェント: Claude Code
- 決済API: Stripe
- 地点取得API: Google Maps Platform
- 天気取得API: OpenWeatherMap
- AIモデル: OpenAI GPT-o4 mini
できるだけ効率よく、スムーズに開発を進めたかったので、フロントとバックをNext.jsとTypeScriptで統一。デプロイはVercelで構築しました。データベースにSupabaseを選んだのは、手軽にPostgreSQLが使えて、認証機能なんかもサクッと導入できるからです。
そして、今回の主役がAI。コーディングの相棒としてClaude Codeを、服装提案の頭脳としてOpenAIのGPT-o4 miniを使いました。
開発の裏側:僕の投資
-
AIへの投資: API利用でSonnet4を6時間回しただけで、20ドルを吹っ飛んだ経験があったのと、Claude Opus4を存分に使いたかったので、月額$100のMaxプランを契約。
GitHub Actionsとも連携させて、コードレビューもAIに手伝ってもらいました。 -
総開発日数: 約3週間
- 平日: 1〜2時間/日
- 休日: 4〜6時間/日
AIと二人三脚ですすめた開発の全手順
これから個人開発をする誰かの参考になればという思いを込めて、僕が実際にどう開発を進めたのか、その手順を具体的に書いておこうと思います。
Step 1: プロジェクトの土台作り
まずは、アプリの骨格から。
Next.jsプロジェクトを作成:
npx create-next-app@latest kion-code --typescript --tailwind --eslint
Gitで管理して、GitHubにアップ:
git init
git add .
git commit -m "Initial commit"
git remote add origin [Your-Repository-URL]
git push -u origin main
この時点でVercelと連携させておくと、pushするたびに自動でデプロイしてくれるので非常に楽でした。
Step 2: AIアシスタント(Claude)の準備
開発の相棒、Claudeとの連携を固めます。
以下のドキュメントを見て、環境整備を行いました。
Step 3: 設計フェーズ - AIとブレスト
コードを書き始める前に、AIとじっくり対話して設計の解像度を上げていきます。ここを丁寧にやるかどうかが、後の開発効率に大きく影響すると感じました。
- 要件定義 (何を作るか): まずは自分の言葉で「どんな悩みを解決したい?」「そのために絶対必要な機能は?」を書き出します。初めは自分の頭で考え、アドバイスをもらう程度でAIを使いました。
-
基本設計 (機能を具体的に): 次に、書き出した要件から、必要な画面と機能をリストアップ。この時、「これがないと始まらない」コア機能と、「あったら嬉しいな」くらいのサブ機能に分けるのが超重要です。
- コア機能: 場所の入力、天気情報の表示、服装の提案
- サブ機能: ユーザー登録、過去の提案履歴、お気に入り、決済機能
-
詳細設計 (AIとの対話): ここからAIの出番。基本設計をインプットにして、AIとブレストを繰り返します。
- 使ったAI: 主にGeminiとClaude。
-
僕なりの使い分け: 感覚的なものですが、アプリ全体の構成やアーキテクチャみたいな大きな話はGeminiと、具体的なコードレベルの設計や実装の相談はClaudeと話すのが、すごくしっくりきました。
「このアプリのパス構成、どう思う?」とGeminiに聞いて、出てきた案を元に「じゃあ、このコンポーネントの設計はどうしようか?」とClaudeと詰めていく感じです。
APIのパス設計、DBのテーブル構造、コンポーネントの分け方など、一人だと延々と悩んでしまうような部分も、AIに相談することで客観的な意見がもらえて、スムーズに意思決定できました。
Step 4: 実装フェーズ - AIとペアプロ気分
設計図ができたら、いよいよ実装です。ここでもAI(Claude Code)をフル活用しました。
-
まずは見た目から: ユーザーが直接触るフロントエンド、それもコア機能から作っていきました。やっぱり、目に見えて動くものが出来上がっていくのは、モチベーション維持に繋がります。
-
AIへの指示は「小さく、具体的に」: AIに実装をお願いするときの最大のコツは、欲張って大きな指示をしないこと。「このアプリ、まるっと作って」みたいな無茶振りは、期待外れのコードが出てくるだけです。
良い指示の例: 「Tailwind CSSを使って、現在地と目的地の入力欄が2つと、提案ボタンが1つあるReactコンポーネントを作って。ファイル名はLocationForm.tsxで、入力された値は親に渡せるように、propsで関数を受け取れるようにして。」
こんな風に、機能ごと、コンポーネントごとにタスクを分解して、一つずつ「作って→確認して」を繰り返す。この地道な作業が、結局一番の近道でした。
-
裏側の仕組みを作る: フロントの主要な画面が見えてきたら、API(バックエンド)の開発へ。ここでも「GoogleのAPIで場所の情報を取ってきて、その情報を天気APIに渡して、最終的にいい感じのJSONで返してくれるAPI作って」というように、一つずつ具体的な指示を積み重ねていきました。
開発して感じたこと
開発を始めた最初の2週間は、正直、最高に楽しかったです。AIが魔法のようにコードを書いてくれて、今までなら何日もかかったであろう機能が、数時間で形になっていく。アイデアがどんどん動くUIになっていくのを見て、「これはいける!多くの人の悩みを解決できるし、お金も稼げるかも!」なんて、本気で思っていました。
でも、開発がコア機能からサブ機能、特にマネタイズのためのStripe連携あたりに進んだ頃から、心の中にモヤモヤとした違和感が生まれ始めました。
挫折①:「これ、本当にお金払って使いたい?」という疑問
最大の壁は、僕自身のプロダクトに対する熱が、急速に冷めていったことでした。きっかけは、決済機能を実装しているとき。ふと、手が止まりました。
「もし自分がユーザーだったら、このアプリに月額料金を払うだろうか?」
その問いに対する僕の答えは、悲しいくらい明確に「ノー」でした。
- 代わりはいくらでもある: 冷静に考えれば、服装に悩んだら、今ある天気アプリを開けばいい。Googleで「東京 気温 服装」と検索すれば、いくらでも情報は出てきます。僕のアプリが提供できる価値は、その一手間を省く「ちょっとした便利さ」だけ。そのために、わざわざお金を払う人はどれくらいいるんだろう?
- 課題がニッチすぎる: 「朝の服装選びに悩む」という課題は、確かにある。でも、それは多くの人にとって「死ぬほど困っている」ことではないんです。ほとんどの人は、数分悩むか、何も考えずに適当な服を着て家を出る。この小さなマーケットで、有料ユーザーを見つけるのは、想像以上に大変そうだぞ、と。
- 自分が使わないかも: そして何より決定的だったのが、「開発者の僕自身が、完成しても毎日使わないかもしれない」という予感でした。自分が一番のファンになれないプロダクトに、情熱を注ぎ続けることはできませんでした。
挫折②:個人開発でマネタイズする人、マジですごい
この経験を通して、個人開発でしっかり収益を上げている人たちへの尊敬の気持ちが、爆発的に高まりました。本当に、本当にすごいです。
技術があれば、アプリは作れます。でも、アプリが作れることと、それがビジネスになることは、全く別のスキルが必要なんだと痛感しました。
ユーザーに「使ってみたい」と思わせて、さらに「お金を払ってもいい」と思わせる価値を見つけ出し、それを届けきる力。ユーザーを一人集めることすら大変なのに、それを事業として成り立たせている人たちは、もはや尊敬しかありません。
それでも、得られたものは大きかった
開発は途中でやめてしまいましたが、この3週間は決して無駄じゃありませんでした。むしろ、たくさんの学びがありました。
- API連携の経験値: 普段何気なく使っている地図アプリや天気予報サイトが、裏側でどう動いているのか。実際にGoogleやOpenWeatherMapのAPIを触ってみることで、その仕組みを肌で感じることができました。この経験は、間違いなく今後の開発の引き出しになります。
- AIとの上手な付き合い方: AIは万能の魔法使いではなく、あくまで超優秀な「アシスタント」なんだと分かりました。何をしたいか明確に伝え、出てきたものしっかりレビューし、最終的に判断するのは自分。この「AIを使いこなす」感覚は、これからのエンジニアにとって、すごく大事なスキルになるはずだと思います。
これからどうするか:失敗をバネに、次の一歩へ
今回のプロジェクトは、野球でいうところの「壮大な素振り」だったのかもしれません。思いっきりバットを振って、結果は空振りだったけど、確実に自分のフォームは良改善し始めている。そんな感覚です。
この経験から僕が得た一番の教訓は、いきなりホームラン(マネタイズ)を狙うんじゃなくて、まずはバットにボールを当てる(多くの人に使ってもらう)経験を積むべきだ、ということです。
なので、僕の次の挑戦は、こんな風に考えています。
- 無料アプリから再挑戦する: まずは収益を一切考えず、純粋に「自分が心から欲しいもの」や「友達が喜んでくれそうなもの」をテーマに、小さな無料アプリをいくつか作ってみます。
- 「使われる」経験を積む: アプリを世に出して、感想をもらって、改善する。たとえユーザーが10人でも、その人たちが喜んでくれるプロダクトを作れたら、それは僕にとって大きな成功体験になるはずです。
- 今回の学びをフル活用する: 今回得たAPIの知識やAIとの連携ノウハウがあれば、次の開発はもっとスムーズに進むはず。
今回の開発は、結果だけ見れば「失敗」ですが、やって良かったと思っています。
このもどかしさと学びを力に変えて、また新しい開発に挑戦しようと思います。
もし、この記事を読んでくれている皆さんも、同じように道に迷っていたら、開発を止めることや、方向転換することも、次へ進むための一歩だと思います。
ここまで読んでくださりありがとうございました。
Discussion