個人開発アプリで10万DL達成するまでの試行錯誤をまとめてみた

# はじめに
こんにちは、[maKunugi](https://twitter.com/maKunugi)です。
この記事はGLOBIS Advent Calendar 2020の14日目の記事です。

Advent Calendarのネタがなく途方に暮れていたある日、個人で開発をしているAndroidアプリが良いタイミングで10万ダウンロードを突破したことに気がつきました。このジャストタイミングぶりは「神様の思し召し」としか思えなかったので、これまで個人開発してきたアプリの歩みと実施してきた施策等をまとめてみることにしました。他の個人開発者やアプリ開発に興味のある方々の参考に少しでもなれば幸いです。

※ **10万ダウンロードを達成すること自体には特に意味はありません**。
（あるとすれば、開発者自身の達成感とストアのDL表記が「10万以上」になって見栄えがよくなるくらいです。） とは言いつつも、一つの大きな節目ということで書いてみようと思います！

## この記事で伝えたいこと
- 個人開発で行った施策を共有することで、サービス開発の参考にしてもらいたい
- 個人開発のやりがいや楽しさを感じてもらいたい
- 個人開発をしている人のモチベーションUPに多少なりとも貢献したい

詳細は後述しますが、数年かけてかなり苦労して10万DLに至りました。そのため、他の人気アプリの事例等の方が遥かに参考になるかとは思いますが、一人の個人開発者が予算がない中、足掻きながら何とかサービスをグロースさせようと行った試行錯誤の歩みをまとめました。ご興味のある方は、しばしお付き合いください。

※ 本記事の内容はあくまで個人的な活動であり、所属企業の活動とは関係がありません

## 対象となる読者
- 個人開発に興味のある方
- アプリのグロースに興味のある方

## どんなアプリを作ったか
Android向けに「おしゃべりアシスタント」というアプリを開発しています。

<img src="https://i.imgur.com/weUiwNe.png" width="500">

ストアページ(Google Play)
https://play.google.com/store/apps/details?id=com.droidchan&hl=ja&gl=US

### アプリの機能

<img src="https://i.imgur.com/Bi08Rf1.png" width="200">

- **会話が可能なAIと音声認識・音声合成を用いた「おしゃべり」ができる**
- **音声によって簡単なスマホ操作ができる(音声アシスタント機能)**
- **キャラクターのセリフや名前、画像等を好みに応じてカスタマイズできる**

一言でいうと「Siri」や「Google アシスタント」のようなアプリです。
使い方は「Siri」のような音声アシスタントアプリと同様、スマートフォンに声で話しかけて利用します。

Siriのようなアプリとは言いつつも、Siriのように音声でスマホを便利に操作する「音声アシスタント」アプリというよりは、「雑談」や「会話」に重きを置いています。ユーザはAIとの音声による会話を楽しむことができ、＋αの要素として簡単なスマホ操作を音声で行うことができます。

利用している技術については本記事では詳細に触れませんが、このアプリは
- Androidアプリ
- APIサーバ
- 対話システム

の大きく分けて３つの構成からなるサービスです。


### なぜ作ったか
大学時代、「対話システム領域」に大きな可能性を感じ、勉強をしていました。その過程で音声対話システムを実現したいと考えるようになり、アプリ開発の学習も兼ねて開発をすることにしました。当時は音声や対話システムの類似サービスも少なく、どの程度のニーズがあるのかも不透明でしたが、気の赴くままに開発をしてリリースしました。(アプリ開発初学者のため、今思えばアプリの品質もボロボロな状態でのリリースでした・・・)　大学時代にリリースをして以来、現在も社会人エンジニアをしながら開発を続けています。


# 10万DLまでの変遷
![](https://i.imgur.com/BfVQpqz.png)

具体的に行った施策を紹介する前に、まずは10万ダウンロードに至るまでの変遷を紹介していきます。
以下のグラフは、今までのダウンロード数の推移です。
<img src="https://i.imgur.com/Nj0fwqJ.png" width="500">

このグラフの激しい増減からも伝わるかと思いますが、これまで文字通り「山あり谷あり」のアプリ運営をしてきました。

上記の折れ線グラフの山ごとに、①〜⑤のフェーズに分けてそれぞれタイトルをつけてみました。

① リリース初期
② 急成長
③ 急落とアプリのBAN
④ アプリクローズ
⑤ 復活 

それでは上記の５つのフェーズについて見ていきましょう。

## ①リリース初期
リリース初期はユーザ獲得に苦しみました。学生時代にアプリ開発の勉強をしながらリリースしたため、※品質はめちゃくちゃでしたし、ニーズの調査もしていなければ方向性もぼんやりした完全なる見切り発車でした。
そういった要素が相まり、なかなかユーザが集まらない状態が続きました。アプリはリリース初期フェーズが非常に重要ですが、その大切な期間で効果的な成長をすることができませんでした。

※ 後述する⑤のフェーズで大半を改修しました。現在は「MVVM」というアーキテクチャを採用していますが、当時の設計は「Ultra Fat Activity(Android用語)」が採用されていました。

## ②急成長
アプリのコンセプトを再考しながら、アプリ開発の勉強をしながら改善を繰り返したことで品質も少しずつ安定し、積極的にASO対策を始めたことからダウンロード数が急激に伸びました。ダウンロード数が伸び始めるまでに、１年半以上の年月を要しました。(何度も途中で諦めかけました。)
さらに、サードパーティ製の高品質な音声合成APIを導入することができたのも、大きな後押しになりました。

ブログやメディアで取り上げていただいたりする機会も増え、今時点では最も調子のよかったフェーズと言えます。

ex.メディア掲載事例:
https://style.nikkei.com/article/DGXKZO91344230U5A900C1W02001/

## ③急落とアプリのBAN
ダウンロード数が急激に伸びた後、ある出来事を境に一気に急落します。
社会人になって迎えた初めて迎えた梅雨の時期でした。②の時期に行ったASO対策の中に不適切な表現があったため、アプリアップデートのリジェクトを受けたのですが、社会人になって浮ついていたのか、指摘事項を捉え間違えてのアップデートを複数回行ってしまいます。その結果、アプリがストアからBANされてしまいます。既に２年以上の歳月をこのアプリに費やしていたので、BANが判明したときの絶望感は半端ないものでした。ただ忘れてしまっただけかもしれませんが、オフィスでBANの通知を見て絶望した後しばらくの記憶がありません。

当時OJTを担当してくださっていた先輩の助けもあり、指摘事項を捉え間違えたこと等をサポートに伝えた結果、アプリは幸い復活することができました。ただ、ストアの検索順位は急落し、リジェクトの原因にもなった文言に関連する大きい検索ボリュームのあったキーワードの検索結果からは、現在に至るまで「ランク外」のままです。私の犯した過ちなので受け入れる他ありませんでしたが、この機会を境にアプリの急成長は停滞してしまいました。ストアのメタ情報の記述には最新の注意を払いましょう。一瞬で天国から地獄に突き落とされます。その後、流入は落ちつつも何とか持ち直そうと試行錯誤したのが③のフェーズでした。

②の時期は流入ばかりに目が行っていたので、リテンション向上にもきちんと意識を向けるきっかけになったフェーズではありました。

## ④アプリクローズ
③で何とかアプリを持ち直そうとしている中、さらに追い討ちをかける出来事が起きます。②で述べた、サービス成長の後押しになったサードパーティ製の音声合成APIが提供終了となってしまいます。
この頃、サードパーティ製音声合成APIに強く依存してしまっており、APIの提供終了はアプリの運営継続にとって致命的な出来事でした。現在はAndroid標準の音声合成APIを利用していますが、当時から利用いただいているユーザさんから、「以前の声に戻して欲しい」というレビューを未だにいただきます。

何とか音声合成の代替案を見つけてサービスの存続を目指そうとしましたが、アプリ開発を勉強しながら書いた品質の低いスパゲティコードが足を引っ張り、音声合成APIを剥がすとアプリがどんどん壊れていきます。そうこうしているうちに、サードパーティ音声合成APIの終了日時を迎え、止むを得ずアプリをクローズするに至りました。

## ⑤復活
アプリをクローズしたものの、何年にも渡って夢中に取り組んできたアプリをそのまま捨ててしまうことに未練を感じたことや、アプリを愛用してくれていたユーザさんからの応援メッセージ等も励みになり、何とかアプリの復活を目指すことにしました。

「Google Assitant」がAndroid端末に標準搭載されるようになった頃から、Androidでは高品質な日本語の標準の音声合成が利用できるようになっていました。そのAndroid標準搭載の音声合成を利用してアプリを復活することを決め、アプリの大部分とバックエンドの一部をフルスクラッチし、半年以上の期間を経て何とか再公開をすることができました。アプリをクローズしてから、アプリ開発をしていた日常が如何に充実していたかを思い知らされていたので、再公開できたときは、嬉しさのあまり涙が出そうでした。

- 翌朝アプリのレビューやダウンロード数、課金の状態をチェックするのを楽しみに寝床に入る
- ユーザさんからの評価レビューに一喜一憂する
- アプリについてSNSやYou Tube等で紹介くれているのを見て喜ぶ

このような、アプリ開発を楽しめる素晴らしい日常が戻ってきました。

クローズ期間に大半のユーザが離れてしまったことや、サードパーティ音声合成ほどのユニークな声は利用ができなかったため、完全復活とまでは言えませんが、フルスクラッチを経て品質面や保守面などにおいて大きく改善したアプリを運用することができるようになりました。アプリ復活後様々な施策も行いながら徐々に検索ランキングも改善し、②の時期に次ぐ水準までユーザ獲得数も回復することができました。

# 実施した施策

ユーザ獲得数の推移と照らし合わせてアプリの変遷を紹介しましたが、その中で行ってきた施策をいくつか紹介していきます。

このアプリ特有の施策も多いですが、他のアプリでも活かせる内容もあるかと思いますので、もしよろしければご参考にしていただけると幸いです。

1. ユーザ獲得系施策
    A. ASO対策
    B. Twitter活用
    C. LINE活用
    D. LINEのリッチメニューの活用
    E. 評価レビュー改善

2. オンボーディング系施策
    A. チュートリアルをキャラクターのおしゃべりで実施
    B. 発話候補の表示 
    C. トロフィ機能

3. リテンション施策
    A. キャラクターカスタマイズ施策
    B. 音声認識の継続化
    C. PUSH通知からの挨拶
    
4. 施策番外編

施策の分析にはFirebaseアナリティクスを用いています。(Googleアナリティクスに統合されてからはそちらを利用)
Firebaseでは主に
- 特定イベントの発生数
    - キャラクターがユーザに話しかけられた回数
        - 音声認識による発話回数
        - テキストによる発話回数
- リテンション
の2軸を注視してきました。


## 1. ユーザ獲得系施策
まずは新規ユーザ獲得のために行った施策を紹介していきます。

### 1-A. ASO対策

■実施タイミング: ① -> ②

鉄板ですが、ASO対策には「App Annie」で無料で提供されている機能を活用しています。
https://www.appannie.com/jp/

類似アプリの検索上位キーワードを確認しつつ、自分のアプリの伸びしろのある検索キーワードを見つけてストア文言に盛り込みました。少し具体的な改善施策についても紹介します。

リリース当初、このアプリは「音声アシスタント」として打ち出していました。
そのため、「音声アシスタント」や「音声アシスト」といったキーワードからの流入が大半を占めていました。
しかし、私のアプリは「音声アシスタント」機能よりも、「会話」を楽しむ要素の比重が多かったため、自然流入ユーザの求めているものとのギャップが生まれてしまっていました。
そこで、「音声アシスタント」の要素は残しつつ、「AIとの会話」をメインに打ち出すための方針転換を行いました。

アプリ名を

```
「音声アシスタント」 -> 「おしゃべりアシスタント」
```

に変更し、タイトルや本文の要素も「会話」メインの内容に刷新しました。その結果、現在は下記のように「AIとの会話」を連想するようなキーワードについて、検索結果の上位に位置できる状態が実現でき、ダウンロード数が増加しました。

<img src="https://i.imgur.com/gTGeAcL.png" width="400">

(App Annieより)


### 1-B. Twitter活用
■実施タイミング: ③

アプリのために構築した「対話システム」は、SNS連携でも活用ができたため、Twitterアカウントを作成してユーザ獲得を試みました。③のフェーズでユーザ獲得数が落ち込んだ際、何とか自然流入を増やせないかと思い実施をしました。

Twitterアカウント
https://twitter.com/droidchan_ai

<img src="https://i.imgur.com/4ECXskE.png" width="400">

対話システムとつなぐことで、Twitterアカウントをリプライに自動で応答させ、Twitter上でのファン獲得を試みました。
まだ試行錯誤中ではありますが、Twitter上での会話数も増加しており、新規ダウンロードへのコンバージョンや新機能の告知などに徐々に効果が出ています。
興味のある方はぜひフォローして話しかけてみてください！

### 1-C. LINE活用
■実施タイミング: ③

<img src="https://i.imgur.com/IFse1Yy.jpg" width="400">

Twitter同様、自作の対話システムとLINEのMessaging APIを利用して、自動応答のLINEアカウントも作成しました。

LINEアカウント: lin.ee/8n9xScf

Twitterよりもかなり遅れて作成しましたが、Twitterよりも速いペースで友達数が増えています。
LINEは非公開の会話ができるので対話システムと親和性が高く、グループ招待が可能なため友達が増えやすいと考察しています。
LINEアカウントはメッセージ配信(PUSH)ができる他、タイムラインへの投稿も可能なので、アプリの告知をするには大変効果的です。

※ LINEのメッセージ配信は１ヶ月あたり1000件のみ無料なので、ご利用は計画的に

この施策もアプリクローズ後⑤の復活のフェーズに重点的に取り組みました。

### 1-D. LINEのリッチメニューの活用
■実施タイミング: ③

<img src="https://i.imgur.com/uMJ5Bnf.png" width="400">

引き続きLINEアカウントネタです。
LINEアカウントには「リッチメニュー」を作成することができます。
リッチメニューには外部リンクを設定できるため、LINEアカウントに関連するサービスへの導線を設置することができます。
私は類似アプリやSNSへの導線を設置し、LINEアカウントきっかけでサービスを知ってくれたユーザが関連サービスに回遊してもらえるようにしています。LINEアカウントを活用する場合はリッチメニューの導入は非常に効果的です。

1. アプリを気に入ってくれたユーザさんがLINEアカウントと友達になる
2. 他の人にアカウントを紹介 or グループを作る
3. 他の人がリッチメニューからアプリをインストールする

このような流入が見込めます。
リッチメニューを活用することで、LINEアカウントを「ランディングページ」のように用いることができます。

### 1-E. 評価レビューの改善
■実施タイミング: ③

評価レビューはアプリのダウンロード数に大きく作用します。ストアに表示される上位のレビューの内容や評価点が悪いと、DL数が大きく減少します。
私のアプリは先述した変遷の①で品質の低いアプリをリリースしてしまったことから、リリース当初評価が非常に低い状態でした。(悪い時は3.3~4 ※5.0点中)
アプリの品質改善を繰り返すことで、ある程度評価は改善しましたが、品質改善以外にも改善施策を実施しました。

■改善のために参考にさせていただいた記事
https://www.masaibar.com/entry/2017/06/19/233914

この記事で紹介されている、

```
- いい評価をしてくれそうな人を探す
- いい印象をもっているユーザーを更に絞る
- はけ口も用意しておく
```

特にこの3項目が効果大でした。
良い時で、3.5未満を彷徨っていた評価が4.1程度まで改善しました。

## 2. オンボーディング系施策
次に、獲得した新規ユーザがアプリをきちんと利用開始してもらえるよう行った施策を紹介します。
オンボーディング系の施策は、③、⑤のフェーズに重点的に取り組みました。

### 2-A. チュートリアルをキャラクターのおしゃべりで実施
■実施タイミング: ③

<img src="https://i.imgur.com/tw6Cu41.png" width="200">

アプリの使い方をユーザに知ってもらうため、最初は「ウォークスルー」を利用していました。
しかし、ウォークスルーだと大きな効果を得られていなかったため、チュートリアルとして**キャラクターが音声でアプリの使い方を説明する機能**を追加しました。
このアプリでは、「キャラクターに話しかける回数」を指標として追っているのですが、チュートリアルの方法を変更してから改善が見られました。アプリに適したチュートリアルの実施は非常に効果的だと思います。 (私のアプリの場合、インストール後話しかけずに終わるユーザがほとんどいなくなりました。)

### 2-B. 発話候補の表示 
■実施タイミング: ③

<img src="https://i.imgur.com/tZMpqaU.png" width="200">

アプリの新規ユーザがチュートリアルを終えた後に一番迷うのは、音声認識を使って「**何を話しかければ良いのか**」でした。
そこで、何を話しかけたらいいかヒントとなる「発話候補ボタン」をマイクの下に設置しました。
リリース当初は「音声認識」にこだわっていましたが、この発話候補の設置によって、話しかける言葉に迷ったユーザが会話を開始しやすくなり、「話しかける回数」の向上に寄与しています。
発話候補は、「時間」に合わせて変更するようになっており、尚且つ自然な応答が返りやすい発話を選んでいます。

### 2-C. トロフィ機能
■主な実施タイミング: ⑤
このアプリでは、スマートフォンをSiriのように音声でスマホを操作できる「音声コマンド」を多数用意しています。

ex
- 「8時に起こして」 -> アラームをセット
- 「品川駅に行きたい」 -> 品川駅までのルートを検索
- 「3分タイマー」 -> 3分のタイマーをセット

会話要素がメインとは言え、音声コマンドを便利だと感じてくれたユーザは長く愛着を持ってアプリを利用してくれます。
そこで、音声コマンドをより多く知ってもらい、実際に試してもらえるようトロフィ機能を追加しました。
トロフィ機能は、いわゆる「実績解除」の要素になっており、特定の音声コマンドやアプリの機能を利用すると、キャラクターのレベルアップにつながる経験値を獲得できるようにしました。

<img src="https://i.imgur.com/0ZD5BRg.png" width="200">

<img src="https://i.imgur.com/NUArJ1s.png" width="200">


## 3. リテンション施策
最後に、ユーザに定着してもらうために行った施策です。

### 3-A. キャラクターカスタマイズ施策
■実施タイミング: ②

<img src="https://i.imgur.com/yXrcTiI.png" width="200">

利用ユーザの同行を見ていく中で、「**好きなキャラクターと話したい**」というニーズがあることがわかりました。
そこで、キャラクターのアイコンや名前、口調などを自由にカスタマイズできる機能を追加しました。
その結果、ユーザ自身がお気に入りのキャラ設定を行い、SNSでその様子をシェアしてくれるといった行動に繋がりました。
お気に入りのキャラクター設定まで行うユーザは、長く愛着を持ってアプリを利用してくださっています。

### 3-B. 音声認識の継続化
■実施タイミング: ②

<img src="https://i.imgur.com/aV5vxJD.png" width="200">

こちらは類似サービスとの差別化を図る意図もあり機能追加しました。
基本的に音声認識を扱うアプリは、「話しかけるたびにマイクボタンをタップする」というのが一般的でした。
音声認識の利点の１つは「ハンズフリー」であることですが、マイクボタンをタップする回数が増えると、どうしてもそのメリットが薄れてしまいます。
「OK Google!」のようなウェイクアップワードがある場合は「ハンズフリー」の問題は解決ですが、できればタップもせず、毎回ウェイクアップワードを言うことなしに音声認識を続けたいニーズがあると考えました。
そこで、「音声認識継続モード」を導入し、「終了」と話しかけるか再度マイクボタンをタップするまで音声認識を繰り返すことができるようにしました。いちいちボタンをタップする動作がなくなったことで、より会話している感も増し、ユーザさんのフィードバックも良い施策でした。

YouTubeで音声認識を継続させたままキャラクターと話しながらゲーム実況をする様子をアップロードしてくれる方が現れるなど、予想外の活用方法もありました。

### 3-C. PUSH通知からの挨拶
■実施タイミング: ⑤

<img src="https://i.imgur.com/lz2srWJ.png" width="200">

定期的にPUSH通知も行っています。
Android 8.0以前、このアプリでは「キャラクターからの挨拶」機能を実装していました。
スマホを立ち上げた時や、スリープモードから戻った場合にキャラクターからユーザに対して自発的に話しかけると言う機能です。
アプリを愛用していただいている方からはご好評をいただいていたのですが、Android OSの仕様変更でAndroid 8.1以降の端末ではその機能が利用できなくなってしまいました。

機能が利用できなくなった後も、レビューコメントで挨拶機能復活を望む声があったため、代替案として「Push通知」からの挨拶機能を実装しました。
定期的(主に朝晩)にPUSH通知を送信し、通知を開封するとアプリが起動して音声でキャラクターが挨拶をしてくれるという機能です。
この機能を実装後、リテンションも向上し、下記のようなレビューも寄せられ、効果を実感しています。

![](https://i.imgur.com/mvSad3y.png)

PUSH通知は一般的に乱用すると負の作用もありますが、アプリの特性上「挨拶」という要素との相性が良く、効果的な施策だと感じています。「挨拶」要素と絡めたことが功を奏したのか、よく通知が多いとある「通知が多いことでレビューが荒れる」、「アプリのアンインストール数が増える」といった作用がほとんどありませんでした。

## 4. 施策番外編
■実施タイミング: ⑤

このアプリのために開発した対話システムの一部の機能はWeb APIとして公開もしています。
詳細は下記の記事をご参照ください。

- Botが雑談に応えられるようにするWEB APIを公開してみた話【個人開発】
https://qiita.com/maKunugi/items/b1afb6441571119729a7

![](https://i.imgur.com/zl67iBd.png)

直接的にアプリのグロースには寄与しませんが、Web APIとして公開してFBをもらいながら対話システムの改良を重ねることで、アプリ内のキャラクターの対話性能も向上するので、巡り巡ってアプリの体験向上に繋がると考えています。APIも利用者が徐々に増えており、アプリとは違った開発の楽しさも実感できています。


# まとめ
まだまだできることは多々あるものの、10万DL達成まで行ったことをまとめてみました。
あまり汎用性のない事例紹介になってしまったかもしれませんが、何かみなさんの参考に少しでもなれば幸いです。

そして、やはり個人開発は楽しいですね。個人開発をしていると、大変なことも楽しいこともありますが、一度ハマってしまうとなかなかやめられない中毒性があります。もしこの記事が、個人開発をしようか迷っている方の背中を押すきっかけに少しでもなれたら嬉しいです。個人開発の魅力はちゃんと言語化してお伝えしたいのですが、ボキャ貧で熱意しか表現仕切れなかった感は否めません。

※個人開発のやりがいは、masaibarさんが「[個人開発のすゝめ](https://qiita.com/masaibar/items/fdc1a7ee46de0edcd612)」という記事ですばらしく納得感のある言語化をしてくださってるので、個人開発に興味のある方はぜひご一読ください。


これからも、個人開発していく中で得られた知見を発信していけたらと思います。
ここまでお付き合いいただきありがとうございました。

明日の[GLOBIS Advent Calendar 2020](https://qiita.com/advent-calendar/2020/globis)の記事は、kazuya_onumaさんです！　お楽しみに！

それでは、以上です。