「AIがあれば個人開発できる」は本当か?モバイル未経験で作ってみた
ここ数年で、AIはぐっと身近になりました。個人がAIを使ってアプリを作る。そんな話も、あちこちで聞くようになっています。私自身、もともとアプリ開発に興味があったこともあり、実際にAIを使ってどこまで作れるのか、それを確かめたくてアプリ作りを始めました。
プログラミング自体はC#やC++で少し触ったことがあったのですが、モバイルアプリの開発はほぼ初めて。そんな状態から、AI(Claude)を相棒に、ランニングアプリを作っています。この記事では、何を・なぜ・どうやって作っているのかという全体像を、うまくいったこともつまずいたことも含めて、ありのまま書いていきます。これから個人開発を始めたい人の、少しでも参考になればうれしいです。
何を作っているのか(そして、なぜランニングアプリなのか)
作っているのは「ランびより」という、ランニングの記録アプリです。ただ距離やタイムを残すだけではなくて、走った記録に、その日の気温・湿度・暑さ指数(WBGT)・気圧といった”環境データ”が自動でつくのが特徴です。この暑さ指数が何度から危険とされているのか、走りやすさを○△×で判定する線をどこに引いたのかは、別の記事に書きました。
なぜこれを作ろうと思ったのか。きっかけは、自分がランナーなのに、Stravaのような定番アプリを一度も使っていなかったことでした。理由はシンプルで、スマホを持って走ると、その揺れが気になったり、それで走り方(フォーム)が乱れたりするのが嫌だったんです。だから私は、走るときにスマホを持ちたくなかった。それなら逆に、走っている最中は何も持たない・何もしない。走り終わった後に記録して、そのとき自動で天気を紐づける、という形に振り切りました。
もう一つの理由が、既存のアプリにない機能を探した結果です。私はふだんZeppというアプリを使っているのですが、そこには「天気とランニングを結びつける」機能がありませんでした。念のためClaudeにも調べてもらったところ、天気を軸にしたランニングアプリはほとんど見当たらないとのこと。考えてみると、「今日は暑いな」「なんだか調子が悪いな」というのは、走っていれば肌感覚では分かります。でも、それを実際に”データ”として見られたら面白いんじゃないか。気温やWBGTと自分の体感を並べて振り返れたら、「今日の走りがイマイチなのは、自分のせいなのか、その日の環境のせいなのか」が見えてくる。そういうアプリがあったら、まず自分が欲しい。そう思えたことで、続けられそうな手応えになりました。
どうやって作っているか(AIの”使い分け”がカギでした)
質問が多いであろうコーディングについて。コードは私がゼロから全部書いているわけではなく、AI(Claude)に任せています。AIに意図を伝えてコードを書いてもらう、最近よく聞く「バイブコーディング」に近いやり方です。ただ、バイブコーディングに近いとはいえ、要件定義や設計はしっかり行っています(要件定義については、後で説明します)。
開発環境は、「Cursor」というコードエディタの中で「Claude Code」を動かし、アプリ本体は「Expo(React Native)」という仕組みで作っています。細かいセットアップの話は別の記事に譲りますが、ざっくりこんな構成です。
もう一つ工夫をしていて、私は2つの道具を役割で使い分けています。一つは「Claude Code」。実際にコードを書いてもらう、いわば”実装役”です。もう一つは「Cowork」。作るものの要件を一緒に整理したり、設計に穴がないかレビューしてもらったり、こういうブログの文章を一緒に考えてもらう、”相談役”です。同じClaudeでも、「手を動かす係」と「壁打ち相手の係」を分けると、自分の頭の中が整理されて、迷いがぐっと減りました。
進め方としては、いきなりコードを書き始めるのではなく、先に「何を作るか(要件定義)」を文章にして固めます。それをAIにレビューしてもらい、設計に穴がないか確かめてから、はじめてコードに入ります。遠回りに見えて、この順番にしてから手戻りがぐっと減りました。
モバイル開発が初めてだからこそ、ぶつかった壁
順調そうに書いていますが、実際は詰まってばかりです。中でも一番最初に食らったのが、作ったアプリを自分のスマホで動かそうとした段階でのエラーでした。
モバイルアプリの開発はほぼ初めてで、「Project is incompatible with this version of Expo Go」という英語のエラーが出たとき、正直、何を言われているのかさっぱり分かりませんでした。原因は、開発に使うツールのバージョンと、スマホ側のアプリのバージョンがかみ合っていなかったことでした。ここは解決までに何度かやり直したので、詳しい原因と対処方法はこちらの記事にまとめました。
AIを使ったアプリ開発で大事なのは「要件定義」
ここまで作ってみて強く感じたのは、AIを使ったアプリ開発でいちばん大事なのは「要件定義」だ、ということです。要件定義というのは、システムエンジニア(SE)がよく使う言葉で、ざっくり言えば「何を・誰のために・どんなふうに作るか」を、コードを書く前にはっきりさせておく作業のことです。
さきほど、自分のやり方を「バイブコーディングに近い」と書きました。でも、”ノリだけ”では進めないと言ったのは、まさにここが理由です。AIは、実装がとにかく速い。「こういう画面を作って」とお願いすれば、あっという間にコードが出てきます。でも、”何を作るか”が自分の中で曖昧なままAIに丸投げすると、出てくるものもぶれて、一緒に迷走してしまいます。逆に、作るものがはっきりしていれば、AIは本当に強力な戦力になってくれます。
だから、今はAIがあるので、「やってみたい」という気持ちさえあれば、経験の浅い分野でも思ったより踏み込めると思います。私自身、モバイルアプリの開発は初めてでしたが、分からないことはその都度AIに聞きながら、なんとか形にできています。ただ、そこには一つだけ条件があります。「何を作りたいか」を自分の言葉で決められていること。ここさえ押さえれば、その分野に詳しくなくても、かなりのところまで進めます。
まとめ
モバイルアプリの開発は初めての状態から、AIを相棒に作り始めて、今のところ、少しずつ形になってきました。振り返ると、大事だったのは3つです。
- 自分が本当にほしいもの(=続けられるテーマ)を選ぶこと
- AIを「実装役(Claude Code)」と「相談役(Cowork)」で使い分けること
- コードより先に「何を作るか」を決めること
ちなみに今は、最初のバージョン(v1.0)を作り終えて、公開前に少人数で試す「クローズドテスト」も完了しました。12人のテスターをどう集めたかは、こちらの記事にまとめています。
これから、作る過程で出てきた具体的なつまずき(さっきのExpo Goのエラーや、テストで見つけたバグの話など)も、一つずつ記事にしていきます。もし「AIで何か作ってみたい」と思っている人がいたら、一緒に手を動かしていけたらうれしいです。
(作っているアプリ「ランびより」については、近日公開予定の紹介ページからどうぞ。)
