ホーリーのプログラミング日記

ホーリーのプログラミング日記

エキセントリック・スーパーアプリクリエイター / アプリ総DL数 約180万 / 全然分からない 俺は雰囲気でアプリを作ってる / iOS : apple.co/3m3HxSm / Android : bit.ly/3ma0liZ

アプリのLTVを計算してみた

 

今日のことなんですが、初めて自分のアプリのLTVなるやつを計算してみました。

LTV、正確にはLife Time Valueのことなんですかね。

そのアプリ1DLごとの単価みたいなやつ。

 

LTV=(ユーザーの課金総額+広告収入総額)÷累計ダウンロード数

 

詳しくはこちらに書いてありますね。

LTVとは?アプリでの計算方法を事例を交えて紹介 | 株式会社アイモバイル

 

初めてって書きましたけど、実は前にも一度計算したことあったんですよ。

「脱出ゲームの収益性を~」みたいな記事を書くにあたって計算してみたことがありました。

脱出ゲームの収益性について晒してみる - ホーリーのプログラミング日記

 

このときは「職安へ行こう」で計算してますけど、約4円という数字が出ています。

これ普通に低い額ですよね。なんせ10万DLでされても40万円ですから。

 

まあこのときはギリ動画広告がなかった頃なので、ここに動画を足したとしても、、、7円くらいですかw

ゲーム性と内容の薄さを鑑みる(かんがみる)限り、そんなに上がらないとは思います。

 

(てか今にして思えばiOSAndroidは別々に計算するのが筋だったかも)

 

んで、LTVを計算したのは多分このとき以来なんですよ。

こないだのロバ師匠の記事を読んでSearchAdsに出稿してみようと思ったんですが、とりあえずLTVを計算してみたわけです。

個人アプリ開発者が少額からできる品質向上と宣伝|ロバおじさん@脱賃金労働プログラマ|note

 

もちろん全部じゃないですよ。これは今の自分のエース、稼ぎ頭だってアプリを数本調べてみました。

 

その結果、、、

 

10円

 

なんと良かったアプリでも10円くらいでしたよw

これは結構考えることが増えましたね。

 

とりあえずアプリの収益ってやつはあれですよね。LTV×DL(ダウンロード)数でしょう。

深く考えずに書きましたけど、あってますよね?w

 

ってことは、どちらかを上げれば収益も上がるわけですよ。

LTVとDL、どちらも上がるに越したことはないんですが、とりあえずどちらかが上がれば上がる。

 

んで、ジャンルによって向き不向きもあるじゃないですか。

例えば脱出ゲームなら、LTVを伸ばすのは不向きだけど、DL数は稼ぎやすいですよね。

その逆はなんだろ?放置ゲームとかかな?まああるでしょうw

 

だから、アプリを作る前に、このへんのイメージを固めるのって大事だなと思いました。

LTVとDLのバランスって言うんですかね?どのへんまでを目指せるアプリなのかなことですよ。

これがどうやっても低くなるようなら、製作期間を短くしたほうがいいし、それなりの期待値になるのなら作り込んだほうがいいでしょう。

 

当たり前に今日まで何も考えてなかったので、これを期に色々と考えてみようと思いました。

LTVを測ってみるのって結構面白いですね。

GooglePlayConsoleのターゲットユーザーおよびコンテンツなんちゃらに入力してみた

 

おおおおお。大変ですよ。Androidの「ターゲット ユーザーおよびコンテンツ」何とかが、明日くらいまで締切じゃないですか。

10日くらい前に、Googleからメールきましたよね。ファミリーポリシーを変更したから、これの入力を9月1日までに済ませてくれってメールが。

 

2019 年 9月 1 日より Google Play のお子様向けアプリに関するポリシーが変更されます。新しいポリシーが適用されることに伴い、 9 月 1 日までにすべての既存アプリについて Google Play Console の [ターゲット ユーザーおよびコンテンツ] 欄への入力をお済ませください。

すべてのデベロッパーの皆様は、配信アプリのターゲット ユーザーにお子様を含めるかどうかを慎重にご検討ください。ターゲット ユーザーにお子様が含まれない場合は、短時間で入力が可能です。ターゲット ユーザーにお子様が含まれている場合は、コンテンツや個人情報の取り扱いに関するポリシー要件を満たす必要があります。

詳しい情報は、Android Developers ウェブサイトやブログ投稿をご確認ください。また、Google Playアプリ開発を成功させるためのアカデミーでは、新しいポリシーに関するトレーニングも提供しております。

本件のご対応を、どうぞよろしくお願いいたします。

Google Play チーム

 

昨日書いたapp-ads.txtは、正直そんなに大事じゃないと思うんですよ。

将来的に、大事なことになる可能性はあれど、現状は対応してなくても大変なことにはならないでしょう。

切り捨て御免 - ホーリーのプログラミング日記

 

でも、多分このターゲットユーザーなんちゃらかんちゃらは、対応しないと大変なことになる気がしています。多分w

まあそんなことを言いながら、昨日までやってなかったんですけどね。

例によって、先んじて一個だけ入力を済ませてたんですが、その他は放置しておりました。

 

えー、そんなわけで、さっき入力を全部済ませましたよ。

 

GooglePlayConsoleから「ストアでの表示」を選択して、「アプリのコンテンツ」をクリック。

 

f:id:gevvoihorry:20190829173013p:plain

 

すると、アプリの対象年齢を選んでくれって言われるんですよね。

ここが結構ややこしいというか、一種の地雷だって声を聞きましたよ。

詳しくはこちらのブログに書いてありますね

【ゲーム開発】Google Play Consoleの「App Content - ターゲット ユーザーおよびコンテンツ」 - Bocchi Games

 

とりあえず結論から言えば、僕は子供向けのアプリ以外は全部18歳以上を選択しました。

13歳以上を選択しちゃうと、確か広告もそれに対応させなきゃいけないんですよね。

AdMobで言えば、アプリ→ブロックのコントロール→広告レーティング、で出来るやつですけど。

 

f:id:gevvoihorry:20190829173112p:plain

 

しかしこれ選択すると、「収益4割減やでー」みたいなこと言われるので、正直怖いんですよ。

なので、何も考えずに18歳以上を選択しました。

 

んで、多分みんな悩むのはここですよね。対象年齢を選んだあとに出る、この画面。

子供の興味を引く可能性があるかどうかってやつですよ。

 

f:id:gevvoihorry:20190829173140p:plain

 

これ全く分からないですよね。「引くかどうかなんて知らんわ」っていうのが本音なんですが、正直慎重にならざるを得ないポイントだと思います。

なんせほら、ここで「興味を引かない」を選択したら、その後BAN(削除)される可能性があるでしょう。

「お前のアプリ、露骨に子供の興味を引いてるから、さっき削除しといたぞ」なんてメールが来るに違いありません。

 

ただ、ここで「興味を引く」を選ぶと、GooglePlayでアプリの横に「子供向けではありません」って表記が出るんですよね。

これがすごいデメリットに感じるので、あえて「興味を引かない」を選んだ方もいると思うんですよ。

でも僕は「興味を引く」を選択しました。基本的に全部これですね。

 

なんせほら、子供向けではありませんってことはあれでしょう。

 

子供はやらないでね。

 

やるなよ。

  

いいか、絶対にやるなよ

 

ってことでしょう。

 

むしろ考えようによっては、逆にDL数増えるんじゃないかと思い、全部これを選択してみました。

結果的にDL数が減少したときは、ダチョウの上島さんを恨みたいと思います。

 

===

 

基本的にはこんな感じで終わったんですよ。18歳以上を選択して、子供の興味を引くを選択しました。

ただ、6~12歳くらいを対象にしたアプリは例外でしたね。

小学生向けの学習アプリを10本弱くらい出してるので、それらは普通に対象年齢を選択しましたよ。

 

そもそもファミリー向けプログラムにはオプトインしてるし、COPPAのそれにも対応してるので、問題なかったと思います。

 

f:id:gevvoihorry:20190829173309p:plain

f:id:gevvoihorry:20190829173252p:plain

 

広告もAdMobのTagForChildDirectedTreatmentみたいなのを使って、子供向けのそれを表示してるので多分大丈夫でしょう。

Targeting  |  Unity  |  Google Developers

 

一個だけ分からなかったのはこれですね。子供向けを選んでいくと、最終的にこんな画面が表示されるんですよ。

 

f:id:gevvoihorry:20190829173343p:plain

 

ここにある、個人情報(PII)を収集しますか?ってところが分かりませんでした。

アプリによってはUnityAnalyticsが入ってたんで、これが該当するのかどうか疑問だったわけです。

 

なんですけど、詳細画面を見たら問題ない感じだったので「いいえ」を選択してみました。

Manage target audience & app content settings - Play Console Help

 

氏名やメールアドレスなどの個人を特定できる情報(PII)を収集する場合は、開示が必要です。また必要に応じて保護者の同意を得るようにしてください。詳細については、Play のユーザーデータに関するポリシーと対象国で適用される法規制をご確認ください。

 

「氏名やメールアドレスなどの個人を特定できる情報」は収集してないですからね。多分w

なので、いいえを選びつつ、ポチポチしてみました。

 

えー、これでGooglePlayConsoleのファミリーポリシーっていうか、ターゲットユーザーコンテンツなんちゃらは終わりですよ。

 

P.S.

興味を引く引かないのやつ、BANはされないみたいですね。

書き終わってから、あれこれ検索してたら、Sawada64さんのツイートを発見しましたよ。

GooglePlayに書いてあるそうです。読んでなかったw

 

切り捨て御免

 

おおおおお。大変ですよ。そいや一昨日(27日)くらいから、app-ads.txtのサポートが開始されてるんですよね。

こないだ取り急ぎ対応してみたなんて書きましたけど、あれブログ用に一個やっただけで、その他は放置してたんですよ。

取り急ぎapp-ads.txtに対応してみた - ホーリーのプログラミング日記

 

AdMobの画面を見る限り、対応しなければいけないアプリの数は50。

つまり1/50しか終わってないって状態なんですが、これはあれですね。

 

潔く諦めようと思います

 

めぼしいアプリだけ対応して、あとは諦めるのが得策でしょう。

まあ別に対応しなくても、現状何もないですしね。多分w

(将来的には対応してるアプリに対して、優先的に広告が配信される可能性があると聞きました)

 

んで、この諦め基準っていうか、切り捨て基準が自分の中にあるんですよ。

普段から何も考えずに適当にアプリを作るんですけど、さすがに全部メンテナンスするのは大変じゃないですか。てか普通に考えて無理ゲーでしょう。

 

なので、月の収益にラインを設けて、それに達しないアプリは見捨てることにしています。

何か有効な施策を思いついてるときは別ですけど、そうでなければ容赦なく切り捨てですね。

 

例えば月1万円に達しないアプリは切り捨て、みたいなことですよ。

 

、、、

 

あ、すみません。嘘つきました。月5千円とかそのくらいですかねw

来年の今頃は「1万にも達しないものは切り捨てじゃー!!」って言っていたいんですけど、現状そんな贅沢なことは出来ません。

むしろ月5千円も稼いでくれてたら、めっちゃ可愛いですよ。毎日なでてやりたい。

 

えー、とにかくあれです。アプリ自体は無駄にあるんですが、全部手を入れるのは無理なので、適当に切り捨ててるって話です。

だからapp-ads.txtも、実際にはそんなに対応しないでしょうね。Androidは全部対応するけど、面倒な審査があるiOSは5本以上10本未満みたいな。

 

何でも無駄は切り捨てですよ。

【C#】配列オンリーだった俺、Listの存在を知る

 

そいや前回の記事でしれっと「Listに格納」みたいなことを書きましたけど、Listを覚えたのは、このときが初めてだったんですよね。

じょーちょー - ホーリーのプログラミング日記

 

ずっと配列オンリーで来たんですよ。C#は。

でもC#の配列って、めっちゃ使い勝手悪いじゃないですか。

最初に要素数を指定して、それから任意の場所に格納することしか出来ないですよね。

 

例えばPHPなら、適当に配列を宣言して、あとは適当にポンポン放り込めばいいから楽だったんですよ。

 

$testArray = array();

$testArray = "aaa";

$testArray = "bbb";

$testArray = "ccc";

 

みたいな。

 

でもC#だとこんな感じでしょう。

 

string testArray = new string[3];

testArray[0] = "aaa";

testArray[1] = "bbb";

testArray[2] = "ccc";

 

とにかくなんだろう、最初に3なら3って指定しちゃったら、それを変えれないのが不便だと思ってたんですよ。

PHPなら適当にポンポン放り込んで、最終的に20になりましたでいいんですけど、C#の場合は最初に決めた3って要素数は固定じゃないですか。

なので、ずっと不便を感じてたんですが、これListっていうとっても便利なものがあるんですね。

 

てかなんなら和尚本1に書いてありましたよ。UnityではじめるC#に。

 

UnityではじめるC# 基礎編

UnityではじめるC# 基礎編

 

 

いつも必要なとこだけつまみ食いして、適当に進めてきたので、全く知りませんでした。Listの存在を。

これ上記のPHPと同じように、適当に宣言して、あとはポンポン放り込むこと出来るんですね。

つまり要素数の指定はいらないと。

 

private List<string> koreanList = new List<string>();

koreanList.Add("hogehoge");

 

こんな感じで、ビシバシ追加出来ることを知りました。

 

いやー、List便利ですね。C#の配列はずっと使い勝手が悪いと思ってたんですが、それをListが補ってたわけですか。

配列オンリーでロンリーだった僕にも、ようやく光が差し込んだ模様です。

じょーちょー

 

ザックリ言うと、書いてたコードが冗長すぎて、An expression is too long or complex to compile なるエラーが出たんですよ。

なんですけど、最終的にはテキストファイルを読み込む形で解決出来ました。

えー、これだけだと味気ないので、ブログも冗長に書いていきたいと思います。

 

今から思えば、非常にセンスのないコードを書いてたんですよ。

学習アプリで任意の単語を返すコードなんですが、こんなのを書いてました。

 

public string ReturnKorean(int num) {

    string str = "";

    if (num == 0) {

        str = "요일";

    } else if (num == 1) {

        str = "월요일";

    } else if (num == 2) {

        str = "화요일";

    } else if (num == 3) {

        str = "수요일";

    }

    return str;

}

 

引数を指定すると、それに対応した文字列を返す、みたいな。

 

今日までわりとこんなの書いてたんですけど、これがめっちゃ長くなってしまったんですよね。

お恥ずかしながら、1000を超えて1500、、、んで韓国語と日本語のダブルだから3000超えて、、、

まあめっちゃ書いてしまったわけですよ。

 

そしたらAn expression is too long or complex to compileってエラーが出て動かないんですよね。

Unityでビルド出来なくなってしまいました。

 

途中から薄々感づいてたんですが、コードが冗長すぎる。

どう考えてもアプローチがおかしいことに気付いたので、どうするのか考えました。

 

んで、結論はテキストファイルの読み込みですよ。

なんか風の噂では聞いてたんですよね。テキストファイル読み込めるって。

 

なので、あれこれググってみたら、テクノモンキーさんのブログがヒット。

【Unity】テキストファイルを読み込む方法 - テクノモンキーのアプリ開発日記

 

このコードを丸パクリさせていただいたら、バッチリでしたよ。

コードの意味は2割くらいしか分かりませんが、元気に動いてくれました。

 

テキストファイルの文字列を改行で区切って、Listに格納。

あとはこんな感じで、任意の文字列を返せるようになりました。

 

public string ReturnKorean(int num) {

    string str = koreanList[num];

    return str;

}

 

しかしこれあれなんですよね。

元々はテキストファイルに書いてあったんですよ。

 

テキストファイルに書く→C#にコピペ、なんてことをしてたんですが、このコピペ作業が全て無駄だった。

てかこの無駄を今日まで相当やってきた模様です。

 

「これ面倒くさくね?」って作業があったら、大体アプローチが間違ってるんですよね。

そういう直感を信じて、ビシバシ手抜きの方法を探さないとダメだなと思いました。

 

P.S.

今回のことで知ったんですが、Unityって色んな形式のファイルを読み込めるんですね。

テキストアセット - Unity マニュアル

 

.txt

.html

.htm

.xml

.bytes

.json

.csv

.yaml

.fnt

 

正直、知ってるのは上2つしかないんですが、jsoncsvはいずれ使う気がします。

 

サーバーと接続して、あれこれする際にjsonてやつを使った気がするんですよ。

UnityとMySQLが繋がった - ホーリーのプログラミング日記

 

PHPで取得したデータをjsonに変換して、それをC#、つまりUnity側に渡してた気がします。

よく知らないんですけど、jsonやつは便利屋なんですよね。だから、いずれどこかで縁があるでしょう。

 

またcsvなんですけど、これもどこかで縁があるはず。

これこそ、今日までの人生で一度も使ったことないんですよ。

噂は聞いてますよ。隣町の中学にcsvってやつがいて、相当喧嘩が強いらしいみたいな。

 

しかもなんなら県下最大の暴走族、Excelと仲が良くて、ちょいちょい集会に顔出してることも知ってます。

でも、今日まで縁はなかったんですよ。

「会ったらバチバチにいわしてやんよ」みたいなことを言いながら、本当はビビって逃げ回っておりました。

 

でもまあ、どこかで会うことにはなるでしょう。

Excelcsvも未知ですが、どこかで出くわして、バッチバチにやられるはずです。

 

Unity で CSV ファイルを読み込む方法|こんぶ|note

今後は0ではないのだよ

 

こないだ、アプリへのお金のかけかたが分からないって記事を書きました。

よく分からないんで、今は0ですっていう。

今は0です - ホーリーのプログラミング日記

 

そしたら、心の師と仰いでいる「ロバおじさん」さんから、アンサー代わりの記事をいただけましたよ。

個人アプリ開発者が少額からできる品質向上と宣伝|ロバおじさん@地方在宅勤務プログラマ|note

 

  

非常にクレバーな方なので、noteはもちろん、アプリ関係のツイートも勉強にしかならないんですよね。

 

師匠。ありがたき幸せでございます。。

 

===

 

いやー、しかしアイコン制作から宣伝、翻訳まで、事細かに書いてありますよね。

勝手ながら永久保存版としておきましょうw

 

早速やってみたいのは、SearchAdsとGengoですね。

アイコン制作は、幸いなことに妻がデザイナーなので、助かってるんですよ。

なので、それ以外は全部やる気でいます。

 

(デザイナーを見つけるには、クラウドワークス→スタンダードプラン→コンペ機能、がいいんですね。妻と喧嘩したら頼むかもw)

 

実はSearchAdsは前に少し触ったことはあるんですが、本当に少し、ソフトタッチすぎてデータが取れておりませんw

数千円からでもOKらしいので、それで出稿してみて、LTV>ユーザー獲得単価となれば、ガンガンいけばいいんでしょうね。

(LTV=(ユーザーの課金総額+広告収入総額)÷累計ダウンロード数)

 

LTVってなんぞ?という話なんですが、ググったら詳しい記事がヒットしましたよ。

LTVとは?アプリでの計算方法を事例を交えて紹介 | 株式会社アイモバイル

 

指定するワードによってもDL単価は変わるでしょうから、そのへんをチェックすると面白いのかもしれません。

 

少し話ズレますけど、LTVが高いアプリがほしいんですよ。

まあそんなこと当たり前だし、みんなほしいですよねw

多分継続率が一番大事だと思うので、めぼしいアプリをテコ入れしてみようと思います。

 

んで、あとはGengoですよ。実はこれもやったことないんですよね。

https://gengo.com/ja/

 

ただ、前に「泳げおっさん」ってゲームを出してまして、これが海外で2万DLくらいされてるんですよ。

クオリティを考えたらビックリな数字なんですけど、これ知り合いのアメリカ人に翻訳してもらったんです。だから、その影響なのかもしれないですね。

 

しかしそのアメリカ人っていうのは、知り合い(日本人)の旦那さんでして、そんなに頻繁にお願いできる間柄ではない。

なので、今度Gengoを使ってみて、その仮説を検証してみたいと思います。

 

えー、とにかく、この記事読んでたら、あれこれアイディアが湧いてきました。

早速手を動かしたいと思います。

個人アプリ開発者が少額からできる品質向上と宣伝|ロバおじさん@地方在宅勤務プログラマ|note

 

今後は0ではない。

 

0ではないのだよ。

雰囲気でアプリ開発してる人たちの、ちょっと真面目な勉強会

 

ついこないだなんですけど、初めて「たーぼぉ」さんとお会いしたんですよ。

僕と同じくらいの時期にアプリ開発を始めて、常に2歩3歩先を行ってるたーぼぉさんですね。

 

同じように独学でされてるのは知ってたんで、勝手に仲間意識は持ってたんですよ。

とは言っても正直な話「好き7 : 嫉妬3」って感じですけどね。

「同じ境遇だから好きだけど、やっぱ嫉妬するわw」みたいな。

 

それで初めてお会いして、あれこれお話させてもらったわけですが、とりあえずいい人だし、話面白いし、共通点多すぎで、想像以上にいい出会いだったなと思います。

 

んで、さらに言えば新作アプリもめっちゃいい感じなんですよね。

RPG風の脱出ゲームなんですが、触った感じも楽しいし、なんならリリース数日後にストアで見たら、レビュー100件以上、平均評価4.8とかでしたよ。

 

 

いやー、やっぱすごいな、たーぼぉさん。

 

これは「好き3 : 嫉妬7」に変わってしまうな

 

と思ったのは、ここだけの話にしておきましょう。

 

===

 

えー、そんなこんなで思った話なんですけど、やっぱ人と会うと得るものが沢山ありますね。

特に今回は自分と似た境遇の人で、なおかつ先を行ってる人だったので、学ぶことが多かったです。

だから、今後も機会があれば、他の開発者の方とお会いしたいなと思ったんですよ。

 

あまりよく知らないんですが、巷では「勉強会」なるものが開かれてたりするじゃないですか。

なので、そういった勉強会に参加することも、少し考えるようになりました。

 

まあ、そうはいってもあれですけどね。基本的にシャイだし、エンジニアの人怖いしで、そんなに参加することはないと思ってるんですよ。

ここまで書いておいてなんなんですけど、やっぱ知らないところに参加するのは怖いじゃないですかw

 

僕から見るとみんなすごいし、知識も経験も段違いに見えるので、接触するのが怖いっていうのが、正直なところなんですよ。

 

だからあれですね。

 

雰囲気でアプリ開発してる人たちの、ちょっと真面目な勉強会

 

みたいなのがあれば、ぜひとも参加させていただきたい。

 

えー、想像でしかないんですが、交わされる会話もこんな感じ。

 

ホーリー「ところでiPhoneXの対応ってどうしてます?」

Aさん「適当にはやったけど、実機では確認してないね」

Bさん「シュミレーターでチラ見しただけ」

Cさん「iPhoneXって何か対応することあるの?」

Dさん「ずっとiPhoneエックスだと思ってたわ。。」

 

このくらいのクオリティがいいですね。

学びは少ないけど笑いは多い、みたいな。

まあ勉強会の体(てい)をなすのかは疑問ですけど。

 

とにかく、そんなこんなで、機会があれば他の開発者さんと会いたいなって思い始めました。

 

雰囲気で開発されてる方との、ちょっと真面目な出会いに期待しております。