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

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

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

切り捨て御免

 

おおおおお。大変ですよ。そいや一昨日(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エックスだと思ってたわ。。」

 

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

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

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

 

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

 

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

自分1人なんだな

 

働き始めた頃だから、20年近く前とかそのくらいなんですけど、バイト先の先輩が言ってたんですよ。「1人現場は仕事が進まないから嫌だ」って。

窓拭きのバイトをしてたわけですけど、基本的には複数人で作業することが多いわけです。

なんですけど、たまにあるんですよ。1人で小さいビルなんかを作業することが。

 

僕はむしろマイペースに作業出来る1人現場が好きだったので、嫌いって理由が分かりませんでした。

 

「1人現場って自分の好きなように出来るからよくないですか?」

「いや、だって俺がサボってる間に仕事進まないじゃん」

「なにそれ。。」

 

みたいなやり取りがあったんですよ。

ようは、複数人の現場だと、自分がサボってても仕事は進むわけで、それが1人だと進まないってわけですね。

 

これが当時は意味不明で、「いやいや、お前サボりすぎだろ。働けよ」なんて思ってたんですが、今は少し気持ちが分かります。

てか自分も気付いたら思ってますからね。

 

俺がサボってる間に仕事進んでねぇ

 

って。

 

これは思いっきりアプリのことなんですけど、自分1人でやってるから、自分がサボったら進まないわけですよ。

 

サボったら進まない。これが個人開発の恐怖。。

なんていう、よく分からないことを思っています。

 

いやー、しかし個人開発ってやつは、全部自分次第だから怖いですね。

そうはいっても複数人体制にする気なんてゼロなんですが、とにかく怖いなと思った次第です。

 

通常仕事って、それなりの年数やってれば、周りにパスをするようになるわけですよ。

このパートはAさんに振って、んでこのパートはBさん、みたいな。

それで、気付けば周りに協力してもらうのが当たり前になってるわけですが、最近改めて「アプリ開発は自分1人なんだな」を実感しています。

 

サボったら進まない。

 

サボったら進みませんよ

 

まあそれでもサボっちゃうけどw

64bit対応したはずなのに「このリリースはGooglePlayの64ビット要件に準拠していません」て言われたんだけど、x86を外したら通った件

 

めっちゃ長いタイトルなんですけど、そのまんまの話がこないだあったんですよ。

正確には昨日とか一昨日とか、そんなレベルの話です。

 

Androidの64bit対応ってあるじゃないですか。

それをやったはずなのに、なんでだかGooglePlayConsoleでエラーになったんですよ。

 

 

ザックリ言えばあれじゃないですか。IL2CPPを選択して、ARM64にチェックを入れればOKですよね。

他にもAndroid App Bundleみたいなのがありますけど、これは64bit対応とは別件でしょう。同時期に警告出るようになっただけで。

 

f:id:gevvoihorry:20190822194202p:plain


んで、上記の2点を選択した状態でアプリをビルドしたんですよ。

それでそのファイルをGooglePlayConsoleにやったんですけど、そこでエラーになるんですよね。64ビット要件に準拠していませんとか言われて。

 

f:id:gevvoihorry:20190822194222p:plain

 

困ってたんですけど、他にも同じような仲間がいたので、時間が解決するだろうと静観してました。

そしたら今日ですよ。nekoupさんのツイートを見かけたんですよね。

「うーん」て感じだけど、x86のチェックを外すと行けるっていう。

 

 

これを見て早速やってみましたよ。

僕にはどうなってもいいようなアプリが沢山あるので、その中のひとつを人柱ならぬアプリ柱として差し出しました。

 

f:id:gevvoihorry:20190822194527p:plain

 

x86を外してビルド。んでGooglePlayConsoleに上げた結果、よく分かりませんが通りましたw

 

んで、一応x86について調べたんですよ。

そしたらUnityさん公式のブログがヒット。

Android サポートに関するお知らせ:64 ビット対応および App Bundle サポートの 2017.4 LTS バックポート – Unity Blog

 

x86 ベースの Android サポートについて

Unity では、Android の ARM 64 ビットサポートを追加した一方で、x86 ベースの Android の使用状況の調査も行いました。その結果、x86 ベース Androidバイスの市場への供給は非常に限られたものであり、Unity の x86 ベース Android サポートの導入も非常に狭い範囲に留まったことが分かりました。このため、x86 ベースの Android サポートはバージョン 2019.2 をもって廃止となり、Unity 2019.3 をもって完全に削除されます。Unity 2018 の各バージョンと、2018.4 LTS における x86 ベース Android のサポートは、当該バージョンのライフサイクルが終了するまで維持されます。

 

よく分からないんですが、Unity 2019.3 では削除される項目なんですね。

 

だからあれですよ。

 

躊躇なくチェックを外してやりました

 

リストラ予定のおっさんに、へーこらするほど、お人好しじゃないですからね。僕は。

 

一応、よく分からん警告も出たんですよ。

 

f:id:gevvoihorry:20190822194814p:plain

 

「インストール可能なデバイスのタイプが制限されました」って。

多分これがx86を外した結果なんですかね。そうだとしたら、さっきの公式ブログには「市場への供給は非常に限られたもの」って書いてたんで、気にしないことにします。

もしも別の何かだったら痛手ですが、まあいいでしょう。これはアプリ柱だしw

 

この64bit対応のエラー自体、時間が解決する気はしてるんですが、気持ちが悪いので一応通してみました。

x86なんて外していいんですよ」とはもちろん言わないし、外した結果何が起きるのかも知りませんが、とりあえず通ったって話ですね。

 

僕の実機では問題なく動いてるので、とりあえず良しとした次第ですw