
個人開発2年間の裏側、5万DL・MAU2万まで【やって良かった7つの施策】
はじめまして、ハムラボ(https://x.com/HamstecLab)と申します。
会社員(エンジニア)をしながら個人開発に挑戦しました。
2年間で5万DL、ピーク時でMAU2万を達成しました。
やって良かった経験を7つシェアします📚
こんな人、必見ですよ!
🚀 新しい事に挑戦したい
💔 開発のモチベが続かない
📢 ユーザー集めに苦戦している
何を作った
「ポケモン対戦を100倍楽しむ」をコンセプトにゲーム体験を快適にするツール「SVバトルメモリーズ」を作りました。(通称:バトメモ)
(iOS と Android で開始、1年後に Web版 もリリース)
特定分野に特化したメモアプリです。
対戦結果を記録・振り返る事で、自己成長の体験をサポート。
記録と記憶にかけて「メモ」というフレーズに。
なぜバトメモを作った
2021年にポケモン25周年で「アカシア」という曲が BUMP OF CHICKEN とタイアップで公開されました。
「透明よりも綺麗な、あの輝きを確かめに行こう」というフレーズで曲が始まる。ポケモンとBUMPで過ごしたこども時代が古い記憶から呼び覚まされ、仕事に忙殺されていた私の頬を冷たい何かが伝う。
その2年後、ポケモンの新作「スカーレット・バイオレット」が発売され、友人を誘いDiscordで通話しながら、あの頃を重ねるようにゲームをプレイ。
学園生活で「自分だけの宝探し」をテーマに3人の「孤独」が描かれたストーリー。大人の私が感動してクリア時は涙を流しました🍔🐲(アギャス)
この熱と勇気が薄れる前に、世界に何か自分の爪痕を残したいという気持ちで個人開発に挑戦しました。
リリースまで
企画とプロトタイプ(MVP検証)に2ヶ月、その後2ヶ月ブラッシュアップし、合計4ヶ月の初期開発でストアリリース 🚀

MVP(Minimum Viable Product)とは?
必要最小限の価値を提供できるプロダクト。
バトメモは「メモして振り返り、上達する」に定めて、ゲーム中に快適にメモできるか、対戦後に分析するのに役立つかを重点的に開発。
最小限のコア価値を出せるものでリリースし、その後アップデートをし続けることで理想に近づけていきました。
「打席に立つ回数を増やし、小さい失敗を重ねて経験値を増やす」を意識。リリース後にも拡張していくこの形は、新機能の制作過程をTwitterで公開することで、ユーザー獲得にも貢献してくれました。
ダウンロード数とユーザー数
*執筆時点の2024年12月現在、iOSとAndroidの合計DL数が5万。
(以下iOSのDL数推移)

ゼロからの集客。モノを作っても知ってもらえず消えていく可能性を、予め覚悟と想定をしていました。
なので、アプリの開発完了後はすぐ紹介動画の作成に取り掛かり、ユーザー獲得の準備をしました。
30分のYouTube動画を1ヶ月かけて作成。Twitterで動画の宣伝をきっかけに数日で「最初の100人」にリーチできました。
1年後、ブラッシュアップした動画を作成し、こちらもユーザー集めに大きく貢献。動画編集の経験なしだったので、勉強しながらでしたがやって本当に良かった。
やって良かった7つの施策
「アプリの機能」「マーケティング」「開発モチベーション」など、
やって良かった7個の取り組みを紹介📚
1. 紹介動画をつくる
2. エゴサでユーザーサポート
3. アプリ画面のシェア機能
4. 数字で反応を見る
5. AIを活用する
6. インフラコストを小さくする
7. 習慣化で開発を継続
1. 紹介動画をつくる
パーティ構築・ダメージ計算・対戦分析できるアプリ 「#バトメモ」が2月27日で1周年🥹🎉
— パモさんなのだ (@pamo3nanoda) February 5, 2024
「📺紹介動画」「📚公式サイト」「🖥️ウェブ版」を記念に作りました!ポケモン対戦のお供にぜひ (1/3) pic.twitter.com/7JX7VYU9Go
アプリのチュートリアルも兼ねた30分ほどの動画を作成。
固定ツイートに設定し自己紹介にする、アプリ内に動画を埋め込むことで、使い方の紹介として活用しました。
アプリ内にシステム的なチュートリアルも実装しましたが、飛ばしたい人もいるので、紹介動画は後から見直せるチュートリアルとして貢献。

動画編集の経験がなくて尻すぼみしてしまうかもしれません。最初はアプリ画面を録画して字幕を追加する形から小さくスタートしてみましょう!
また、紹介動画を作成する際に解説するマスコットを用意する事がきっかけで、Twitterの運用係の「パモさんなのだ」が生まれました🐹💻
Duolingoの緑色の鳥や、あすけんの女など、マスコットを採用している例があります。ユーザーと接するさいに、マスコット越しだと印象がやわらかくなっておすすめです。これも良かった施策ですがそれは別の機会に。
2. エゴサでユーザーサポート
サービス名でエゴサして、ユーザーサポートをしています。
困っている内容からニーズや発見があります。

メールと違い、サポート内容がインターネットに残るため同じ内容で困っている人に再利用できるリソースにもなり、結果的にサポート業務の総時間減少とユーザー満足度の向上の両方を得られます。
ひとりのユーザーとしても、自分から問い合わせて助けてもらうよりも、
運営側から助けに来てくれる方が体験が良いと感じます。
アプリのビルドを待っている時間や、開発の休憩時間など空いたスキマでエゴサしています。1日に50回くらいしてます。好意的な感想にはイイネで自分も相手も幸せな気持ちに👏
アリババの共同創業者、ジャック・マー
「私は他人の不満を聞くと興奮する、そこにチャンスが隠れているから」
3. アプリ画面のシェア機能
アプリの画面を Twitter や各種サービスにシェアする機能を実装しました。
任意のデフォルトテキストを指定できるので、サービス名のタグを入れて、口コミのしかけとして貢献しました。


実装の手間に対するコスパが非常に良いのでイチオシの施策。
エゴサ時にスクショだけでサービス名がない投稿の場合、こちらから見つけれないため、デフォルトテキストを指定できたのも助かりました。
4. 数字で反応を見る
ユーザー集客の結果はDL数、アプリ改善の結果はアクティブ数など、反応を数字で意識しました。
DL数はストアのコンソールから確認できますが、アクティブユーザー数は、Firebase Analyticsなどのロギングを実装することで記録できます。
こちらも実装の手間に対してのコスパが良いのでおすすめです。
Firebase Analyticsとは、アプリ内のユーザーの行動を分析できる機能のことです。 アプリにアクセスした人数や利用時間、誰が利用したのか、どんな属性の人が利用したのかといったデータをもとに、さまざまなレポートを作成できます。

アクティブ数は「日(Daily)」「週(Weekly)」「月(Monthly)」で分類されることが多いです。それぞれ頭文字をとって、DAU・WAU・MAUです。
多くの指標を追っても大変なので、「継続率」に絞りました。
継続率はユーザーがどれだけ使い続けてくれたかを示します。
つまり、アプリの「満足度」と読み替えれます。

といっても、数字に固執しすぎると疲れるので、自分の思う「良い」をどんどん開発して、どの程度の数字が良いかの絶対的な評価よりも、自分の前月と比較してどうかを見る形が、心にやさしいと思います。
矛盾したこと言いますが、数字にあんまり固執しなくてもいいです。
望む結果に影響する変数は複雑に関係しているので、ひとつ改善して数字が出なかったから効果がないと過度に落ち込まないでください。
たくさん種を撒き、いずれかの点がいつか出会う点と繋がって線になって、線が面になって数字で認知できるのだと思います。
その過程は決して無駄じゃないです。
NBA Playoffs 2023、ヤニス・アデトクンボは敗退が決定した直後、
「このシーズンは失敗か」と記者に聞かれこう返事しました。
あなたは仕事で毎年昇進しますか?
そうではない年は「失敗」か?
答えは「NO」だ。
目標に向かって毎年努力しているはずだ。
その努力は失敗ではない。
「成功へのステップ」である。
5. AIを活用する
開発の作業速度を高める施策です。
「GitHub Copilot(10$/月)」と「Chat GPT(無料版)」をメインに利用。
GitHub Copilot とは、 AI が最適なコードを提案し、コーディング作業を支援するサービスです。 ユーザーが記載したコメントや関数などから AI が最適なコードを推測して提案してくれます。
私にとっての革命でした。
学習速度の「質」の向上と、作業速度の「量」の両面で役立ちました。
コードをステップごとに解説してもらう、理解が足りない時は別の表現で再度解説を要求し、今の自分のレベルにあったサポートをしてもらいました。
作りたい画面や機能があるが、プログラムを書く勉強だけで数日経過してアプリの画面には何も変化がないことが私は苦痛でした。
知識の勉強で前に進んではいるけれど、アプリの画面は変わらないので
「何も進んでいない」焦りを感じるからです。
(そうではないことを理解はしているけど、していない状態)
なので、初めにGPTにサンプルコードを書いてもらう、雛型にして修正していく、理解は完璧ではないが動くものを作る。
進めていくに知識理解が深まったら、リファクタして作り直す。
という形で進めました。

コードで質問すると、解説とコードをセットで返事してくれる最高の相棒。
AIのおかげで何にも勉強しなくても魔法のようにコードができたような話ではなく、補助してもらうことでスクラップ&ビルドの回転数を増やして、
学習効率を上げて技術力を習得した泥臭いやり方です。
(もちろん公式ドキュメントも穴が開くほど読み込みますが、先に手を動かして理解を深めるやり方が性格に合っていました)
また、GitHub Copilot のコード補完は書きたいであろうコードを提案してくれるので、文字を打つ「量」をこなす面で大きく役立ちました。

グレーの文字部分が Copilot の提案したコード。
Claude や Cursor など、他にもいろいろなAIツールがあります。
試して自分に合った相棒を見つけましょう。
6. インフラコストを小さくする
インフラ費用は小さければ小さいほど良いです。
ユーザーが自分の構築データを公開できる機能のがあるのですが、
実装方式を見直し、インフラコストを下げた実例の紹介です。
Firestore一本で利用していた状態から、
Xserver と Firestore を用途に組み合わせてコストダウンしました。
Xserver とはレンタルサーバーのサービスです。
費用が固定で、ネットワークのトラフィック費用がかからないので、Hosting費で困っている人は一つの選択肢になると思います。
■ 変更前の設計
1. 「Firebasestore」で保存
2. アプリは「FirestoreDataBundles」でFirebaseHostingから取得
→ 最初はFirebasestoreの直接参照だったが、レコード数が増えてreadのコスト増加したため、databundlesでキャッシュ化&コストダウンを図った
→ 次第に、FirebaseHostingのトラフィックの従量課金でコストが増加
■ 変更後の設計
1. 「Firebasestore」で保存
2. 「Xserver」でcronで定期的にfirestoreをクエリしjsonを生成
4. 「Xserver」にjsonをapiで返す簡易apiサーバーを作成
3. アプリはデータをXserverから取得
→ cronでデータ更新するまでの間はデータが最新ではない代わりに、
・サーバー費が定額固定(1000円 / 月前後)
・トラフィックのネットワークコストが「ゼロ」

フロントエンドとバックエンドで分類されるように、アプリ開発者にとってサーバーに関する知識やAPI実装などは専門外でハードルを感じるかもしれません。
専門外の新しい領域への挑戦にも、AIを良き相棒として役立てましょう。
7. 習慣化で開発を継続
「マインド」のお話です。
ありきたりですが、モチベーションを原動力にしないこと、習慣化を原動力にすることを意識しました。
モチベは上下するのが当たり前で自分にコントロールできない定数。
それ以外の原動力として「習慣化」に注力しました。
具体例で有効だったのを一つご紹介。
起床時にPCを付け、最初に VS Code* を開く
* Visual Studio Code, プログラムを書くためのツール
渋々作業を始めると進んでいた経験無いでしょうか?そう、最初の一歩がとっても重いのです。その1歩に脳みそを介在させずに条件反射するように、PCの電源ボタンを押してVS Codeを開くことを身体に刷り込みました。
開いたはいいけれど結局コードを書かずにYouTubeを見ても良いです。毎日続けて、コードを書くための環境準備のハードルを下げ、書き始めるチャンスを上げました。

ここからは余談です。継続ができたら次は「質」の向上です。作業時間を延ばしたり、深く集中したりです。私に特に有効だったのがコレ。
・早寝早起きする(9時に寝て5時から活動)
・身体に良さそうな食事をとる(サラダをモリモリ食う)
睡眠と食事の内容は人・体質によって合うものが異なると思うので、
自分の身体の調子が良くなるものにすると理解してください。
めっちゃフツーなことで面白味に欠けますね。少しカッコ良い言い方をすると「モンクモード」というライフスタイルに「肉体は乗り物、頭や心が良くても肉体の状態が悪いとパフォーマンスが出ない」の考えがあります。
モンクモードとは、修行僧(モンク)のように外界の情報をシャットアウトして、1つのタスクに集中して取り組み生産性を高めるライフスタイル。
不安で眠れないことが多く「早く寝なきゃ」、作業開始が遅くて気づいたら夜で「もう残り時間ないや」のストレスが天敵でした。
ずっとというわけではないですが、これが体現できている期間は睡眠のストレスが無くなり最高の肉体状態に。脳内でスーパーマリオのスター状態のBGMが鳴り続けました(テンテンテンテンテテンテンテテンテンテンテンテンテンテテンテンテテンテンテンテンテンテンテテンテンテテンテン♪)

モンクモードの中に「SNSから距離を取る」「外部から距離を取って孤独になる」があります。
やるべきことをやる時間を確保するために、それ以外の魅力的な誘惑を断ち切るのです。
やる気がないから行動できないのではなく、それ以上に魅力的な他の活動(タイムライン見たり、友達と遊んだり)を優先してしまうのです。
私の場合、21時に寝て5時に起きることで、友達は寝てて連絡とれないし、趣味のゲームは人が少なくて対戦がマッチングしない状況を作ることで、
誘惑を断ち切るのに効果的でした。
(おまけ) 「できない」→「今はまだできない」に
おまけを2つ。技術的なテクニックではなく「マインド」の話です。
「バトメモ」は1ヶ月ペースで新しい機能を追加しました。メモアプリだけれど、クイズゲームや、物理演算を使ったスイカライクなゲームを作ったり、最近ではブラウザ版でゲーム画面を解析して自動でメモや統計を表示したりと技術面で幅広い挑戦をしました。
🌈#バトメモ 大型アップデート🌈
— パモさんなのだ (@pamo3nanoda) April 3, 2024
スキルを駆使するスイカライクな「#パモゲーム」が新登場!パモさんをくっつけて大きくしよう🍑バナナモに到達できるか、君の挑戦を待ち受けるぞ・・🥹🫵 pic.twitter.com/cjLfJkugdg
いずれも未経験の分野で、開発を始めてから新しく知識を習得しました。「できない」ことを「今はまだできない」と考えるマインドがこの挑戦を支えてくれました。
きっかけになった、友人との思い出話です。
「ブラウザ版もあったら素敵だね」と話をしてくれた友人。私は「WEB開発は経験ないし、サーバーのインフラ知識も必要だから無理」と返答。友人はポジティブな未来の希望を語ってくれたのに、できない理由の否定から反応した自分にひどく落ち込みました。
AIでスキル習得の効率が上がっているのに、自分の可能性を狭めるのはもったいないと思い、以降この精神を意識しています。
できないコトが今もたくさんありますが、「まだ」できないだけで、
「まだ」挑戦していないだけなのだから、これからも挑戦します。


(おまけ)早い段階から人に見てもらう
これは再現性が低いため、良かったと感じた私の経験談です。
個人開発する際に、実は友人を2人巻き込みんで始めました。「やるから見ててほしい、あわよくば参加して。面白い体験になると思うから」と。
Discord で進捗を毎日投稿していました。少しずつ出来上がっていくアプリ画面に感想・励ましの反応してもらい心の支えになっていました。
同時期にAIを使い始めたので、進化に感動したり、一緒に勉強してアプリに使うマスターデータを作成したりかけがえのない体験をしました。(なので、実は完全な個人開発ではなく初期にこの2人の励ましのおかげ🙌)
たとえ投稿して反応がなくても続けました。自分の作業を残すことで前日の作業を自分でチェックできるので、今でもこの習慣が役立っています。

アプリをリリースした後は、Twitterで次の新機能の開発進捗を掲載し、ユーザーさんの反応を頂きました。同様に、速い段階で自分以外の人に反応を貰う点で心の支えになったので、これもおすすめです。
開発の思い出
UIを改善し続ける
「わかりやすさ」を上げるため、文字以外の表現や、情報を必要なタイミングにだけ自動で表示するなどUIに多くの時間を割り当てました。
「🚀機能→30%」「🎨UI→50%」「🍀リファクタ→20%」
概ねのこのリソース配分で開発しています。
デザインスキルはアプリの中だけなく、ユーザー集めのクリエイティブ、SNS運用のクリエイティブにも活きます。つまり、サービス運用全体に貢献できるスキルなのでコスパが良いです。

継続はチカラなり
毎日作業することを目標にしていました。結果、2年間で開発をしなかった日数は2週間程。毎日の稼働平均6時間でした。
🚀 アプリが形になる「モノづくり」が楽しめた
💪 スキルが上達する「自己成長」を楽しめた
⌚ スキルが本業にも作用し「効率化」ができた
が続けられた要因です。

ストアランキングに自分のアプリが?!
2回目の紹介動画で多くの人に知ってもらってピークで37位にランクイン!

苦労した事
いい話ばかりではなく、悪い話も少し。
ずばり「広告の運用」です。
広告の実装に関してはコードに関しては情報がインターネットで得られるのですが「収益の最適化」に関しては情報が少なく、今現在も苦戦してます。

Admobを利用しています。類似アプリとの収益単価(eCPM)と比較した場合、収益額が1/10という状況😨(規模感や額を聞いたら低さにビックリすると思います)
クリック数と収益額でクリック単価を計算できるのですが、iOSがとても低いという部分までは判明しましたが、収益額の算出方法などは開示されない情報であったり、相談できる場所が限られているため他にも苦労されている人が多いんじゃないかなと思います。
加えて、何か調整をした場合にも、実際に適用して数字の改善を検証するしかないので、心的ストレスがキツイ・・・。
広告運用は各サービスの運用者の経験からなるノウハウな領域と感じています。同じ経験して解決したよ~って人いらっしゃいましたらお助けください・・!私が持っているノウハウと情報交換しましょうー!
【備考】
Admobコミュニティという掲示板を公式が用意しております。私の収益単価が引くケースの場合、app-ads.txtやプライバシー取得などの一般的な事項を再確認してというテンプレ回答で、解決に至りませんでした😢
最後に
ポケモン対戦を100倍楽しむ、無料ツール「SVバトルメモリーズ」
2年間の経験を凝縮しました。
当初、ここまで公開するつもりはなかったのですが、書き出したら溢れ出してしまいました。さらに追加で5つ書いたので有料分も見てね。
これから新しい挑戦として、働き方を変える予定です。少し充電期間をとって、2025年の4月を目標に転職もしくは、フリーランスをする予定です。
興味をもって頂いて、お仕事をご一緒したい方ご連絡ください📧💨
💼 私のスキルや具体的な条件はコチラ
この言葉でお別れです。またどこかでお会いしましょう!
1日は24時間しかない。
8時間は寝ている。8時間は働いている。これで16時間。
朝昼晩、食べれば19時間。
身支度に1時間。これで20時間経過した。
残りの4時間。無駄にはできない。
やるべきことに集中しろ。俺は集中してきたから今の地位がある。
もうちょっと聞きたい人(有料)
参考になった人、もうちょっと話を聞きたい人向けに「5つ」公開!
チップ感覚で応援いただけると嬉しいです🍰
それではどうぞ~!
ここから先は
この記事が参加している募集
この記事が気に入ったらチップで応援してみませんか?