iOSアプリのDL数を爆速で伸ばそうとした話

##概要
個人開発のiOSアプリのダウンロード数を伸ばしてみようと思い、いろいろなことにチャレンジした結果をまとめています。
結論から言うと**そんなに伸びませんでした**。
しかし、やったことをそのままにしておくのは勿体無いので、記事としてまとめておきます。
少しでもお役に立てれば幸いです。

###この記事の主なターゲット
私と同様、個人でiOSアプリを開発していて、DL数をさらに伸ばしたい方を対象にしています。
すでに何万DLもされているようなアプリにはあまり効果がないかもしれません。
およそ1日100DL未満くらいのアプリ開発者の方がターゲットです。

###本記事で取り上げるアプリ
**アプリ名：GPS Measure**
<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296554/c7430f71-863d-03c0-0d75-2ad8002ae0a4.jpeg">
https://apps.apple.com/jp/app/gps-measure/id1439677549

簡単に紹介すると、GPSを用いて移動速度や移動距離をサクッと計測するためのアプリです。
出来るだけiOSライクなデザインを意識して、標準アプリのように使えることを心がけています。無料です。


##背景
このアプリを初回リリースしたのが、2018年10月22日。およそ1年5ヶ月前になります。
そこから1年間(2018/10/22~2019/10/21)でのDL数はなんと**2688件**でした。1日平均、約7.36件。

<font color="Gray">みなさんに気軽にDLしてもらいたくて無料にしてみたのに、、、</font>
<font color="Silver">類似アプリよりも高機能なのに、、、</font>
<font color="Gainsboro">デザインも悪くないのに、、、(主観)</font>

本当に悔しかったです。
なんとかもう少しDL数を伸ばしたいと思い、いろいろなことにチャレンジしてみることにしました。


##やったこと
DL数を伸ばすために以下のことをやりました。
各項目について、紹介していきます。
・問題点の洗い出し
・ダークモード対応
・iPadの画面分割機能対応
・使い勝手の向上
・ユーザーからの意見対応
・多言語対応
・SKStoreReviewControllerを用いたレビュー誘導
・AppStoreの最適化

---
###●問題点の洗い出し
問題なくして改善はありえません。
ダウンロード数を伸ばす試みとして、まず問題点を洗い出し、どんなことをしたらいいか検討しました。

####Step1：目標の設定と現状の把握
まずは目標の設定と現状の把握を行いました。
考えた結果、~~特に理由はないのですが~~目標を「DL数1日平均100件以上」と定めてみることにしました。
先述の通り、現状は「平均7.36件」でしたので、差分の「93ダウンロード」が目標とのギャップになります。
このギャップを「問題点」とし、それを無くしていく「解決策」を考えました。

####Step2：問題点の精査と分類
問題をより細かく分解し、ギャップが生まれてしまっている要因を洗い出しました。
そして、その要因を分類して、こねくりまわして、以下のマトリクスを作りました。
(注意：私はこの分野に関しては**ど素人**です。あくまでも自分の考えを整理するための表なので、間違っている可能性が高いです。)
![matrix.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296554/e8c739fb-4a64-d393-4d7a-98e99cb65e87.jpeg)
・存在価値の低いアプリ：AppStoreの検索結果の最下層にいるアプリ。機能もチープで誰もDLしないようなアプリ。
・知る人ぞ知るアプリ：知名度は低いが魅力が詰まっているアプリ。コアなユーザーだけが使ってくれている。DL数は少ない。
・目障りなアプリ：やたら広告を出しているアプリ、また謎にAppStore上位にあるアプリ。いろんな人の目に止まるが、ユーザーの求めているものではなかったり、見た目や機能が乏しいことからDLまではイマイチ結びついていない。母数が大きい分DL数はそこそこある。
・DLしてもらえるアプリ：いろんな人の目にとまり、かつ、機能を適切に理解してもらえ、多くの人にDLしてもらえるアプリ。


####Step3：立てた仮説とその検証
マトリクスの左下(現状)から右上のエリアにアプリを持ってくるために、以下の2つに取り組むことにしました。
**・魅力度を向上させる**
**・知名度を向上させる**
「この2つを達成できれば、きっとDL数が増えるのではないか」というのが立てた仮説になります。
これ以降の対応内容は、基本的にこの仮説を実行するための手段です。

---
###●ダークモード対応
(対応する仮説：魅力度向上)

この半年間、アプリ開発者の皆様が悩んできたメイントピックだと思います。
まだ必須対応とまでは言われていませんが、類似アプリの中でダークモードに対応しているものが少なかったので、差別化を狙ってダークモード対応を行いました。(勉強の意味も兼ねてたりします)
以下、自分がやったやり方を簡単に紹介します。

####OS標準の色
こちらの対応方法は想像より簡単でした。
まず、OSが提供している標準のカラーセットに対しては、大抵「System xxx color」という色がXcode11から提供されています。
例えば、背景色でしたら以下のものが提供されています。
<img width="315" alt="backgroundcolor.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296554/356b91f0-8cd4-5d60-ee9a-c70eaece0ade.png">
基本は、これらの色に変えていけばOKだと思います。
赤や青などの色もこのSystem xxx colorが用意されているので、そちらに変えるのがおすすめです。

####アプリで独自に定義している色
こちらは一手間かかります。
まず、Assets.xcassetsに行き、New Color Setを選択して新しいカラーセットを作成します。(ここではOriginalRedColorという名前にします)
<img width="549" alt="newcolor.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296554/81c54a37-5d30-af0e-bb83-4c84e30512ba.png">

次に、AttributesからAppearancesを選択し、「Any, Dark」を選択します。
iOS12以前のモデルに関してはダークモードという概念がないのでAnyの色が選択され、iOS13以降ではLightとDarkで切り替わります。
Any, Darkにしておけば、iOS13以降のライトモードではAny側の色になります。
特別理由がなければAny, Darkで良いと思います。
<img width="500" alt="anydark.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296554/f14c92ca-ad2f-9fb9-e7dc-5e55ece0ea4d.png">

最後にそれぞれのAppearanceに対して適切な色を選びます。
下の例では極端に色を変えていますが、[Appleのガイドライン](https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/color/)を見る限りでは、若干濃くするくらいが正解な気がします。(どなたか適切な色の作り方をご存知の方はぜひ教えてください！)
<img width="378" alt="appearance.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296554/85991970-72e7-1868-c376-5317b79fb85f.png">
このように設定しておくことで、OS標準のカラーセットと同じようにOSのモードに合わせて動的に変わる独自のカラーセットが出来上がります。

---
###●iPadの画面分割機能対応
(対応する仮説：魅力度向上)

これは必須対応案件なので本題から少し外れてしまうのですが、2020年4月までに以下の3つに対応しなくてはいけないとAppleからアナウンスされています。
・ Adopt Launch StoryBoards
・ Support any size
・ Support Split Screen Multitasking[^1]
参考→[WWDC2019 Modernizing Your UI for iOS 13](https://developer.apple.com/videos/play/wwdc2019/224/)

私の場合、「Launch Storyboard」と「Support Any Size」には対応してあったので、まだ対応していなかった残りの「Support Split Screen Multitasking」(iPadの画面分割機能)に今回対応しました。

結論だけ言うと、
・Targets>GeneralのDevice Orientationの全てにチェック
・Require full screenのチェックを外す
これをすると、すぐに対応できました。
<img width="439" alt="splitScreen.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296554/4c9b117d-50ac-dcf3-604a-e9c76244cb9e.png">
Split Screen Multitaskingに対応すると、iPadにおいて様々な画面サイズで動作することになります。
**レイアウト崩れがないかは要チェック**です。
<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296554/71c9c0d4-129c-5286-b27f-721e4814c0ff.png">
これに対応したおかげで、iPadでの使い勝手が上がったと思うので、iPadユーザーも取り込めるのではないかと期待しています。

---
###●使い勝手の向上
(対応する仮説：魅力度向上)

アプリ開発においてUIやUXについて考えることは非常に大切です。
このアプリは、元々シンプルなデザイン&機能なのですが、より使い勝手を向上できるところはないか徹底的に考えました。
その結果、地図の拡大画面でできることを増やしてみて、使い勝手を上げられないか挑戦してみることにしました。
前のバージョンまでは、常に画面の中心が現在地になるように自動的に追尾させる仕様でした。
しかし、この仕様では今までの移動経路を確認しづらかったので、ユーザーが地図をスライドさせたら自動追尾機能をオフにして、またオンにしたら追尾再開するような仕様に今回変えてみました。

他にも Appleの[Human Design Guideline](https://developer.apple.com/design/human-interface-guidelines/)や、GoogleのMaterial Designの[スペーシングに関するガイドライン](https://material.io/design/layout/spacing-methods.html)などを参考に、使いやすいUIを取り入れてみました。

---
###●ユーザーからの意見対応
(対応する仮説：魅力度向上)

このアプリをこれまで使ってくれていたユーザーに率直な意見を聞いてみました。
その結果、アプリのコンセプトがブレない、以下の要望に対応することにしました。
・北を「磁北」と「真北」で切り替えられるようにしてほしい
・距離単位に「海マイル(海里)」を追加してほしい

####余談：ユーザーの意見を全て取り入れるべきではない
本題から少し逸れますが、私個人のポリシーを記載しておきます。
ユーザーの意見の中には、大幅な改修や機能追加を必要とするものもありましたが、それらは当アプリのコンセプトとは異なっていたため一旦なしにし、コンセプトからブレない範囲での機能追加に絞りました。
なんでもかんでもユーザーの意見を取り入れてしまうのは、危険だと私は考えています。
いわゆる「何でもできるアプリ」は「何にも使えないアプリ」だと思っているため、機能をできるだけシンプルにし、ターゲットユーザーとユースケースを明確にしています。
シンプルなアプリかどうかは、「〇〇な人用の、xxするためのアプリ」と一言で言えるかどうかを判断基準にしています。

---
###●多言語対応
(対応する仮説：魅力度向上、知名度向上)

今までのバージョンでは、日本語と英語の2ヶ国語にしか対応していませんでした。
より多くの言語に対応することで魅力度と知名度の両方の向上が期待できると考え、今回のアップデートでは、新たにスペイン語、フランス語、ドイツ語、中国語(簡体字)に対応してみました。
この言語の選定は、WWDCでAppStore Labという、AppStoreの専門チームの人とマンツーマンで話せる場所にて、アドバイスをいただいた言語を基準にしています。

ちなみにXcodeのローカライズの仕組みを使えば、文言だけでなく画像や色なども言語に合わせて変更することができます。
このアプリでは画像をアイコン以外に用いていないので、文言だけの多言語対応をしました。

---
###●SKStoreReviewControllerを用いたレビュー誘導
(対応する仮説：魅力度向上、知名度向上)

新たな試みとして、レビュー誘導の仕組みも導入してみました。
SKStoreReviewControllerを使えば、簡単にアプリ内からレビューしてもらうことができます。
<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296554/ae53d228-afdf-0037-fb7f-317d687e8f20.png">

ただしこれを表示できるのは年間3回までなので、出しどころが鍵を握ります。
私の場合、以下のタイミングで誘導することで、高評価を得ようと企みました。
・5回以上計測を行った、かつ
・2日以上利用した、かつ
・計測を完了した タイミング
~~低評価をつけるユーザーはそもそも何回も計測しないと推測しており、星1がつけられるくらいなら最初からレビュー誘導させない作戦です。~~

---
###●App Storeの最適化
(対応する仮説：魅力度向上、知名度向上)

App Storeで見つけてもらえないと、あらゆるユーザーからのダウンロードは見込めません。
しかも、私が作ったアプリは完全に後出しで、類似アプリがいくつもあるような状態です。
そのため「スピードメーター」みたいな一般的なキーワードでは、何回スクロールしてもなかなか出てきませんでした。
これを改善するために、以下の取り組みを行いました。

####検索キーワードの多言語化
少しでも上位に表示されるように、検索キーワードの多言語化を行いました。
こうすることで、日/英以外のユーザーが検索した時でも検索にヒットして見つけてもらえる可能性が上がると考えています。

####スクリーンショット
目に止まるような工夫として、スクリーンショットにも手を加えています。(ただの画面キャプチャにはしない)
このアプリの場合、スクリーンショットの背景色をオレンジ(ライトモードでもダークモードでも目立ちやすい色)にし、横画面のスクリーンショットにしています。
<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296554/c57e9cc0-45ac-86ed-8ddc-8917befb625b.png">
こうすることで、スクロールした時にパッと目に止まる可能性が高いと考えたからです。
また、ダークモードの画像もスクリーンショットに載せてみました。ないよりはましかなという程度です。

####アプリ紹介の多言語化
アプリを見つけてもらっても、自分のわかる言語でないとインストールしてもらえる確率がグッと減ってしまします。
今回のバージョンでは、日英合わせて6ヶ国語に対応していますのでそれぞれの言葉でスクリーンショットやアプリの紹介文を作成しました。
当たり前のことなのですが、言語数に比例して用意するスクリーンショットの枚数が増えていきます。
**必要なスクリーンショットの枚数 = 紹介したいスクリーンショット数　× 4種類のサイズ × 言語数**
なので注意してください。

##結果
これらの改善策に加えて、細かな不具合修正などを行い、気合の入ったVersion2.2.0を2020年2月13日にリリースしました。
リリースに際して、純粋に改善活動の効果だけを確認したかったので、以下のようにリリース告知を行いました。

リリースから1週間：特に何もしないで、どれだけ変化するか確認する
1週間後：各種SNSで発信を行い、DL数がどれだけ変化するか確認する

以下、リリース直前の30日間と、リリース後の30日間を比較した結果です。
(2020/3/15時点でのオプトイン率[^2]は44%)

###DL数などの変化
**リリース前1週間とリリース後1週間の比較**
・プロダクトページ閲覧数：334 → **333**(微減)
・DL数(Appユニット数)：103 → **132**(28%UP)

|Before<br>(2/6 - 2/12)|<img width="1264" alt="Before.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296554/63194334-42b4-c91c-7584-0b79f391a30d.png">|
|:--|:--|
|**After<br>(2/13 - 2/19)**|<img width="1266" alt="After.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296554/352e3ed2-b63e-6c81-7b2c-5a3cfbab2d7b.png">|


**リリース前30日間とリリース後30日間の比較**
・プロダクトページ閲覧数：1281 → **2162**(69%UP)
・DL数(Appユニット数)：434 → **817**(88%UP)

|Before<br>(1/14 - 2/12)|<img width="1246" alt="before.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296554/4d03a557-c266-bae8-268c-728ab14649b7.png">|
|:--|:--|
|**After<br>(2/13 - 3/13)**|<img width="1266" alt="after.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296554/81eef129-f10c-797e-d247-4fd2c2579050.png">|

ええ、なんとも**しょっぱい結果**でした。
特にSNSで発信を行わずに、しれっとアップデートだけした最初の1週間は、インプレッション数・コンバージョン率が落ちるという有様でした。。。

当初の予定では、「5000ダウンロード 前期比999%UP」みたいな爆速の改善をキメて、Qiitaに記事を投稿する予定だったのですが、現状ではこんな感じです。
ただSNSで告知後、右肩上がりに転じて、徐々に1日平均のDL数も伸びてきているので、いつか目標の1日平均100DLいくことを期待します。

###多言語対応の効果(国/地域別の変化)
国別の結果は以下の通りです。

|Before<br>(1/14 - 2/12)|After<br>(2/13 - 3/13)|
|:-:|:-:|
|<img width="300" alt="beforeCountry.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296554/1081823c-bddd-508b-ddf8-cc8ff6914a43.png">|<img width="300" alt="afterCountry.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296554/f26c1d0a-8378-0be4-4aa6-672ff21b15b7.png">|

地域別の結果は以下の通りです。
<img width="942" alt="region.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296554/61842311-21c1-e5fc-9efa-aef29c9a1ccf.png">


こちらもまた微妙です。相変わらず日本一強ですが、今までほとんどDL数のなかったフランスやドイツからも徐々にDLされるようになりました。多言語対応の結果かと思われます。
特にヨーロッパ地域の前期比317%UPは、**アツい**です。

###レビュー数の変化
SKStoreReviewControllerの導入結果としましては、Version1.0をリリース後16ヶ月で通算13件だった評価が、この記事を執筆しているタイミングで21件まで増加しました。
リリースから1ヶ月で8件増えているので、こちらも効果があったと言えそうです。
おかげさまで、評価も4.4とそこそこ高評価をいただいております。
<img height="100" alt="star.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296554/a5a3a504-65b9-c9f3-2e92-49db5a13cde1.png">

この評価が中長期的にみて、DL数増加に影響すると考えています。(高評価を持続できてればという条件付きですが、、、)

###AppStoreの最適化の成果
これは完全にAppStoreのアルゴリズムなので理由は定かではないですが、今まで検索結果の下の方にいたこのアプリが、徐々に上の方に来はじめました。
「スピードメーター」で検索した時、私のアプリは50番目くらいに表示されていたのですが、最近だと15~20番目あたりまで来ています。
検索結果が上位に来たからDL数が伸びたのか、それともDL数が伸びたから検索結果が上位に来たのか。
完全に[ニワトリとタマゴ問題](https://ja.wikipedia.org/wiki/%E9%B6%8F%E3%81%8C%E5%85%88%E3%81%8B%E3%80%81%E5%8D%B5%E3%81%8C%E5%85%88%E3%81%8B)ですが、努力した甲斐が少しはあったかもしれません。
(事前に色々なキーワードで調べて、順位をメモっておけばよかったと後悔)

###考察
さて、当初掲げていた、
**・魅力度を向上させる**
**・知名度を向上させる**
という仮説は、どうだったのか？

それぞれの仮説は以下の指標の変化と結び付くと思います。
・魅力度→コンバージョン率が向上したか？
・知名度→インプレッション数が向上したか？

結果を見てみますと、それぞれ以下のように変化しています。
・コンバージョン率：2.32%→3.49%(1.17ポイントUP)
・インプレッション数：24596→31981(30%UP)

この変化がどれだけのものなのか、比較材料を持っていないため判断できないのですが、とりあえずは**掲げていた仮説を立証するための手段を行ったことで、向上させることができた**のでよかったです。

記事の締めとしては**イマイチ弱い**のですが、以下の考察を持って締めくくりたいと思います。

・**これらのことを行うとコンバージョン率とインプレッション数をあげることができ、その結果アプリのDL数を微速ながら伸ばすことができる**と言えそう。
・よっぽど**バズらせて知名度を向上させでもしない限り、DL数は爆速で伸びたりしない**。


##その後の経過観察
本記事の反応が良ければ、その後どうなったのか更新したいと思います。
### リリース後31~60日目(3/14~4/12)の様子
<img width="1274" alt="スクリーンショット 2020-05-06 16.14.53.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296554/f8dd0211-3d69-e717-2eee-d91e7c6941c4.png">
・インプレッション数：31981 → 50874(59%UP)
・プロダクトページ閲覧数：2162 → 3453(60%UP)
・コンバージョン率：3.49% → 3.47%(-0.02ポイント)
・DL数(Appユニット数)：817 → 1252(53%UP)

所感：プロダクトページ閲覧数は、Qiita投稿後に右肩上がり傾向にあり、その後少し落ちた。Qiitaで日間ランキング上位に入り、人目に触れたのが大きく影響した気がする。
Qiitaの影響が落ち着いた後、また右肩上がり傾向にあり、順調にDL数を伸ばしている。
4/12時点でのレビュー数をキャプチャし忘れていたのが悔やまれるが、およそ40件くらいまで増えていたと思う。(1ヶ月で20件増えた)

### リリース後61~90日目(4/13~5/12)の様子
<img width="1278" alt="スクリーンショット 2020-05-27 18.16.12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296554/8d209994-bc1e-8f50-1052-bc1516b2fb48.png">
・インプレッション数：50874 → 79983(57%UP)
・プロダクトページ閲覧数：3453 → 6042(75%UP)
・コンバージョン率：3.47% → 3.54(0.07ポイントUP)
・DL数(Appユニット数)：1252 → 1971(57%UP)

所感：5/5くらいをピークにグイグイDL数を伸ばし、最高で平均90DL/日まで達した。目標としている100DL/日まであと一歩だったが、そこでストップ。カクっとDL数が落ち込んでしまった。
5/2に不具合修正を行った、Version2.2.1をリリースしたので、もしかしたらそれが影響しているのかも？(完全に不明)
5/12時点でのレビュー数は70件だった(1ヶ月で30件増えた)。その後も1日平均1件ずつ増えており、SKStoreReviewControllerの効果が着実に出てきているのを感じている。

[^1]: Support Split Screen Multitaskingについては、Appleの公式の見解が「強くお勧めします」という表現に変わってきています。(https://developer.apple.com/jp/news/?id=01132020b)
[^2]: 診断データおよび利用情報をApp開発者と共有することに同意したユーザの割合