「自分が欲しいアプリ」を作っている話

エンジニアの松崎です。業務ではバックエンドを担当していますが、GWに個人開発でモバイルアプリを作り始めました。今回はその進捗報告です。

以下の動画は無編集なので少し長いですが、現時点で実装してある機能を一通り触りながら紹介しています。

きっかけは、たくさんの猫の記録をつけ続けられなかったこと

うちには今、保護猫が13匹います。

13匹もいると全員の体重・食事・トイレ・体調…いろいろなものを管理するのは非常に大変です。これまで既存のペット管理アプリをいくつか試しましたが、どれもしっくりきませんでした。

UIが多頭飼いを想定していなかったり、記録の手間が多くて続かなかったり。「多頭飼育者向けに本当に使いやすいもの」がなかなか見当たりませんでした。

それなら自分で作ってみようと思い立ったのが今回の個人開発の始まりです。

デザインはLazywebに完全に任せる

最初に悩んだのはデザインです。デザインについては知識が乏しいので、他のアプリなどを参考にしないといけないなと思ってました。ここで活躍したのが Lazyweb というツールです。

Lazywebは25,000社・257,000枚以上の実際のアプリ画面を持つデザインリサーチプラットフォームで、ClaudeCodeのターミナルから直接Lazywebのデータベースを検索・操作できる(MCP)のが最大の特長です。しかも無料。

セットアップはClaudeCode上で数コマンドを打つだけ。連携が完了すると、ターミナルからスラッシュコマンドで使えるようになります。
作りたいプロダクトの内容を伝えると数分で競合調査をレポートで返してくれます。(HTMLファイルとMarkdownファイルが作成されます)

これをベースにClaudeCodeでUIを実装していったのですが「調査→設計→実装」がターミナル上でほぼ完結するのは、新鮮な体験でした。

ClaudeCodeで開発はスムーズに

実装にはFlutterを使用しています。ただ、私はFlutterは少し勉強した程度でアプリ開発の経験はほとんどありません。

それでも動くものが作れているのは、ClaudeCodeのおかげです。

コードのほとんどはClaudeCodeが書いています。自分がやっているのは「こういう画面にしたい」「この操作でこう動いてほしい」といった要件を言語化して伝えること、動作確認、そして「ここが違う」とフィードバックすることです。

たとえば体重入力のUIを「手入力→スライダー→ドラムロールピッカー」と段階的に変更したんですが、「iOSの時計アプリみたいにくるくる回して選びたい」と伝えるだけで、Flutterの実装方法を選定するところから実際のコードまで全部出してくれました。

Flutterの文法を知らなくても、「何を実現したいか」が伝われば前に進めます。

現在の実装状況

アプリ名は未定。ベタにcatlogとかにしたかったんですが、既に同名の有名サービスがあるので同じようにシンプルな名前で考えたいなと思ってます。

ホームペット選択、各種ログ記録ボタン
タイムラインペット毎、日付区切りの記録一覧
メモリアル亡くなった子のプロフィール・記録閲覧、命日管理
削除機能30日以内なら復元可能

記録できる項目

体調3段階セレクター
体重ドラムロールピッカー
食事テキスト入力、履歴から選択可能
排泄チェック記録
投薬テキスト入力
その他自由記述

特に、メモリアル機能は個人的に欠かせない部分です。年始に一番上の猫を亡くして「意図しないときに写真が目に入ると辛い気持ちになるが、意図して過去の記録を見たいときもある」という感覚で生活しているので、ホームからは見れないようにするが、記録は残すという方向で設計しました。

Claudeに任せること、自分でやること

コードに関してはほぼClaudeCode任せです。「任せる/任せない」というより、自分はプロダクトオーナーとして振る舞って、ClaudeCodeがエンジニアとして動いているという感覚に近い気がしてます。

自分が主に担当していること:

  • 何を作るか・何を省くかの判断
  • UXや感情面を含む仕様設計
  • 動作確認とフィードバック

特に、メモリアル機能のような感情的な要素が大きい部分は、自分自身でかなり細かく考えました。

これだけで、Flutter未経験でもアプリが形になっていく。以前は「プログラミング言語を学ばないと作れない」と思っていたものが、少なくとも小規模な個人開発であれば「作りたいものを言語化できれば作れる」に変わってきている気がします。

これからやりたいこと

次のステップの優先順位はこんな感じで考えています。

すぐやる

  • 体重推移グラフ ── 数字を記録するだけでなく、可視化することで猫の異変に気づきやすくなると思うので、実装します。
  • 誕生日・年齢表示 ── 飼育頭数が多くなってくると、どうしても個別の年齢があやふやになるので、パッと視認できるようにします。

リリース前までに

  • プッシュ通知 ── 記録リマインダーは「続けるための仕組み」。ただし、通知が多すぎるとアプリを削除されやすくなりそうなので、テストして最適な頻度を探ります。
  • データベース移行 ── 現在はローカル保存ですが、実利用を考えるとクラウド化は必須だと思うので実装します。

リリース後に

  • データエクスポート ── 記録を外部に出力しておきたいというニーズはあるかと思うので、実装を考えています。

実際に自分で使ってみて、いろいろな過不足を都度改善していければと思っています。

作る楽しさが広がった

個人的に一番感じているのは、ClaudeCodeを使うことで発想を形にするハードルが下がり、物を作ることの楽しさが広がったということです。

アプリのリリースまではまだいくつもハードルがありますが、今年はいくつか自分が作ってみたいものをリリースできたらいいなと思ってます。