AI時代に個人開発者がぶつかった次の壁 ― 作ることより、届けることの難しさ
きっかけは、財布の中から大量に出てきた期限切れのクーポン
気づいたら期限が切れていた。そんな経験、ありませんか。
スーパーのレジでもらった割引券、飲食店のクーポン、ECサイトのポイント。いつの間にか財布の中や冷蔵庫の扉に溜まっていって、気づいたときには使えなくなっている。
「これを管理するアプリを作ろう」と思ったのが、リミマネの出発点です。
普段は業務でWebアプリ開発をしています。個人では、企画から設計・開発・リリース・ユーザー獲得まで全部自分で経験したくて、リミマネを作りました。
AIと一緒に設計から始めた
コードを書き始める前に、まず設計をしっかり固めることにしました。
要件定義・DB設計・アーキテクチャ設計・画面設計を、AIと対話しながら進めました。今まで実務での開発では、ここまでAIと設計段階から相談したことはなかったので、Claudeの設計力の高さを実感しました。
設計段階でAIと議論しておいたことで、実装中の手戻りが大幅に減りました。
技術スタックの選定
技術選定では、今後の拡張性と開発効率を考えてNext.js + TypeScript + Supabase + Prismaを採用しました。個人開発でも、実務で扱えるレベルの設計・構成を意識しました。
アーキテクチャへのこだわり
設計はクリーンアーキテクチャ+アトミックデザインを採用しました。
Repository → UseCase → Server Actionsの流れを徹底し、ドメインロジックとインフラを分離しました。
特に注意したのが変更コストの最小化です。
たとえばUserに新しいフィールドを追加するとき、初期実装では7つのファイルを個別に修正する必要がありました。
仕様変更があった際に、AIならもれなく全て対応できるのかもしれないけれど、人間ではそこまで把握しきれないだろうという実装になっていました。
常に保守性を意識した実装にリファクタリングしつつ進め、これからのアプリ開発の土台とするためのポートフォリオ作りを目指しました。
UIはアトミックデザインを採用。Atoms → Molecules → Organisms → Templates → Pagesという階層で、コンポーネントの責務を明確に分けました。
スマホUIをHTMLで先に作り込んでからReactに変換するという順序で進めたことで、実装のブレが少なくなりました。
画面設計の流れ
コードを書く前に、スマホUIをHTMLとCSSで全画面作りました。Claudeでチャット上でやり取りして簡単に確認することができました。
- ダッシュボード
- アイテム一覧(フィルタ・検索・スワイプ操作)
- アイテム登録フォーム(3ステップ・カテゴリ別動的フォーム)
- アイテム詳細・編集
- 通知センター
- ログイン・新規登録・パスワードリセット
- 設定画面
UIを先に固めてからReactに変換する進め方で、「実装してみたら使いにくかった」という手戻りを防げました。
作っていく中で直面した課題
開発を進める中で、Supabase Auth、タイムゾーン、PWA通知など、初めて触れる技術にも多く挑戦しました。
最後まで実現できなかったのが、PWA化した際のアイコンの設定です。
どうやってもアイコンが設定できなくて、泣く泣く諦めました。誰か教えてください(泣)
セキュリティ対応
Supabaseのセキュリティ診断で複数の警告が検出されました。
RLSポリシーの修正、SECURITY DEFINER関数のsearch_path固定、不要な実行権限の剥奪など、一つひとつ対応しました。
こだわったUX
- クーポンには金額・割引率・タイトルのどれかがあれば登録できる柔軟な設計
- 使用済みにするときに節約額を記録できる設計(累計節約額としてダッシュボードに反映)
- スワイプで使用済み・削除ができる一覧画面
- タグで自由に分類してフィルタリング
- 期限の何日前に通知するかをアイテムごとに設定可能
- プッシュ通知・メール通知の両対応
まずは価値提供を優先する
リリース後は収益化も検討しましたが、まずはユーザーに価値を届けることを優先し、現在はプロダクト改善と利用者獲得に注力しています。
リリースして気づいたこと
個人開発は意思決定が速い反面、すべての判断を自分でしなければなりません。
「コールドスタートをどこまで許容するか」「アクセシビリティ対応はいつやるか」——正解のない問いに向き合い続けることが、開発の大半でした。
また、リリースしてからどう広めていくかという問題に直面しました。
とりあえず作った。それだけではどうにも広まりませんでした。当然のことですが、リリースして初めてその難しさに気づきました。
友人に使ってもらおうとしました。サインアップ時にエラーが出てしまい、離脱されました。そのエラーは直しましたが、友人はそれ以降使っていません。
親に紹介しました。身近な人に使ってもらおうとしましたが、想定していなかった利用ハードルが見えてきました。
親世代にPWAは難しかったようです。アプリの画面すら開けませんでした。
PWA化まで対応しましたが、そこで初めて「技術的に使える」と「実際に使ってもらえる」の間には大きな差があることを実感しました。
身近な人への利用依頼だけでは広がらないことも分かりました。
SNSも始めましたが、フォロワーはまだ3人。さて、どうやって必要な人に届けるか。
すでに次のアプリ開発も進めていますが、作ることだけを続けていてもユーザーは増えません。
僕のボトルネックは開発スピードでもアイデアでもなく、どうしたら使ってもらえるようになるかということでした。
今後の展望
PC向けUIの整備、オンボーディング画面の追加、データエクスポート機能なども順次対応していきたいです。
現在はVercelの無料プランで運用していますが、ユーザーが増えてきたタイミングでProプランへの移行も検討しています。
ただし、先ほども述べたとおり、どうやって広めていくかが今後の最も大きな課題です。
広告費をかけて宣伝するというのは少しずれている気がしています。
現時点では広告費をかけて大きく集客するより、まずは利用者の声を聞きながらサービス価値を高める段階だと考えています。
ということで、手始めにこのストーリーを書いてみました。
このアカウントが何人かに閲覧されているということだけはわかっています。
このアプリのアクティブユーザーが5名を超えるまで、僕はClaudeにもCursorにも課金しないと心に決めています。
AIによって開発速度は大きく変わりました。
でも、作ったものを必要な人に届ける力は、まだ自分自身が磨く必要があります。
まずはアクティブユーザー5人。
そこから実際の声をもとに改善を続け、使ってもらえるアプリへ育てていきます。
リミマネ、使ってみてください
https://limit-manager.vercel.app
クーポンの期限切れで損をしている方、ぜひ一度試してみてください。
フィードバックもお待ちしています。
個人開発やサービス作りに挑戦している方、同じようにAIを使って開発している方からのフィードバックも歓迎しています。