Androidアプリのよくあるイカしたアプリのダウンロードボタンの作成方法! と、流入元分析!

クレカの有効期限切れで、、サーバー落ちてましたw。。

SEOだいぶ下がったか、、泣

というわけで、泣く子も黙るわけでもない久々の更新

アプリDLボタンのバッジ作成ツール

ここからバッジをサクッと生成できるんす!

https://play.google.com/intl/ja/badges/

UTMソース や、UTMキャンペーン を指定して、

どのブログや、SNSから流入してDLしたなどがわかるようになってます。

レポートは、Google Play Consoleの下記画面から見れるようです。

UTMタグで獲得チャネルの分析

https://developers.google.com/analytics/devguides/collection/android/v4/campaigns#google-play-url-builder

GooglePlay向けのUTMタグ生成サイトが、404になっていて、
どこで、android用のUTMタグの正しい形式を確認すればとおもっていましたが、バッジ作成ツールで生成すればよかったんですね。
先程の、バッジツールで、UTMソースや、キャンペーンを指定するとタグが反映されるので、
そちらでわかります。


<a href='https://play.google.com/store/apps/details?id=[パッケージ名]&utm_source=[UTMソース]&utm_campaign=[UTMキャンペーン]&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1'><img alt='Google Play で手に入れよう' src='https://play.google.com/intl/ja/badges/images/generic/ja_badge_web_generic.png'/></a>

この部分。


https://play.google.com/store/apps/details?id=[パッケージ名]&utm_source=[UTMソース]&utm_campaign=[UTMキャンペーン]

他にも便利なツールが色々

こちらはiOS/Androidのバッジも作れるすぐれもの!

http://mama-hack.com/app-reach/

関係ありそうなサイト一覧

UnityAndroidで、下記エラーがSDKやなにかを入れたタイミングでエラーを履くようになった。

確認環境
* Unity2017 2.0f1
* Gradleビルド

こんなエラーや、


Build failure com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Landroid/support/annotation/AnimRes; See the Console for details.

こんなエラーや、


UnityEditor.BuildPlayerWindow+BuildMethodException: 3 errors at UnityEditor.BuildPlayerWindow+DefaultBuildMethods.BuildPlayer (BuildPlayerOptions options) [0x00207] in /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPlayerWindowBuildMethods.cs:172 at UnityEditor.BuildPlayerWindow.CallBuildMethods (Boolean askForBuildLocation, BuildOptions defaultBuildOptions) [0x00050] in /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPlayerWindowBuildMethods.cs:83 UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

こんなエラーや、


CommandInvokationFailure: Gradle build failed. /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/java -classpath "/Applications/Unity/PlaybackEngines/AndroidPlayer/Tools/gradle/lib/gradle-launcher-2.14.jar" org.gradle.launcher.GradleMain "assembleRelease" stderr[ FAILURE: Build failed with an exception.

なにか原因かわからないため、解決するためにやったこと。

  • Player Settings の Publishing Setting > Custom Gradle Templateにチェックをいれ、
    カスタムのgradleをいじれる、mainTemplateをさわって、また戻したり。

  • Unityを再起動したり

  • Android SDKのToolsのAPIバージョンをあげたり。
    https://answers.unity.com/questions/1435579/how-can-i-fix-this-error-unityeditorbuildplayerwin.html

  • https://issuetracker.unity3d.com/issues/android-project-with-iap-plugin-fails-to-build-with-gradle-release-mode-only-and-throws-java-dot-io-dot-ioexception

Unityのバージョンを疑ったり

で、何かのタイミングで、エラーがでなくなり、無事APKファイルが履かれました…!

Unity で、Android gradle buildで、Multidexに対応する方法

UnityでAndroidアプリを作る際に、Multidexサポートに対応しないといけない場合に、
最初した際のメモ。

参考情報

https://forum.unity.com/threads/build-using-gradle-and-multidex-support.492117/

https://answers.unity.com/questions/1301593/android-gradle-build-error.html

要点

  • Custom Gradle Templateを使う (Build systemはgrandleに)

検証環境

  • MacOS High Sierra
  • Unity2017 2.0f3(Personal)

Unity NGUIで、ローカライズの設定手順

NGUIで、とりあえず英語と日本語を管理する方法

STEP.1 asset storeからインポートしたNGUIのLocalization.txtをリネームして、移動

これを、

Assets/NGUI/Examples/Resources/Localization.txt → Localization.csv

リネームして、

Assets/Resources/Localization.csv に移動。
※Resourcesフォルダが無い場合は、作ってね。

これをしないと、NGUIアセットをアップデートする度、ローカライズ文言がリセットされてしまいます (´;ω;`)

STEP.2 ローカライズの文言を作る

Assets/Resources/Localization.csv

をテキストエディタ等で開いて、英語,日本語のように記載していきます。

Localization.csvの中身


KEY,English,Japanese Flag,Flag-US,Flag-JA Language,English,Japanese NGUI_STAGE_1_NAME,Hamburger,ハンバーガー NGUI_STAGE_2_NAME,Sandwich,サンドイッチ

※カンマ区切りで、KEY,英語,日本語と記載しています。

STEP.3 Unityを再起動する。

これしないと、なぜか反映されなかったです。
※ビルドしても反映される事もあったり。

STEP.4 UI LabelにLocalizeをアタッチ

※先ほどLocalization.csvにKEYとして記載した、「NGUI_STAGE_1_NAME」を入力すると、英語、日本語が表示されます。

CentOS7 ターミナル上で、指定ディレクトリ以下、指定文字列一括置換

CentOS等で、大きいプロジェクトファイル内の文字を、
横断して一括で文字列置換したい時がある、
例えば、ハードコーディングしてしまった、定数や、ドメイン等。
指定文字列を一括置換したい時がある。

そんな時に使えるコマンド

下記はカレントディレクトリ配下のphpファイル全てを横断検索して指定文字列に置換している例


$ find ./ -type f -name "*.php" | xargs sed -i 's/置換対象文字列/置換後の文字列/g'

よく使うけど、よく忘れるのでメモ。

検索対象の確認だけなら、

指定ディレクトリ配下のファイルを横断して指定文字列を検索


$ find ./ -type f -name "*.php" -print | xargs grep '検索文字列'

以上

Unityの Color型 は Vector4型 から暗黙的に変換することができます。知らなかった。。

 function の引数にColor型を指定したい場合にどうやっていいかわからなかったけど、、これを使えばいいのね!


void func(Color color = new Vector4()){ }

https://docs.unity3d.com/jp/540/ScriptReference/Color-operator_Color.html

Color は Vector4 から暗黙的に変換することができます。

そうだっだんですね。。w

遅延に遅延を重ねたweb&アプリ開発プロダクトへ参加する際にぶつかる壁

チーム開発

遅延に遅延を重ねたweb&アプリ開発プロダクトへ後から参加する際にぶつかる壁

開発遅延する大きな原因は、

  • 把握できないシステム(他の人が作ったシステム)
  • 既にプロダクトがネガティブな空気になってしまっている
  • 自分のスキル不足&努力不足&工夫不足
  • 実際にコードを書く部分しか工数として把握していない
  • 本当に必要なものが何かわかっていない
  • 使っているベンダーシステムの影響
  • 要件がわかっていない
  • 何がわらないかわからない

既に負債を背負った、プロダクトにアサインする際の注意点

エンジニアが数名の場合は、全体を把握しているもしくは結合部分を知っているエンジニアに相談して動くべし

  • ようするにプログラミング部分の監督さんにお伺いをかけてから動く。監督が複数人いるとチームがうまくいくイメージがないですよね?(プランナーとは別)
     これを怠ると、素晴らしいコードを書いても逆に勝手に仕様決めてしまう事が多く怒られる、もしくは嫉妬される原因なるので注意!
    (僕の経験した先輩はみんな自分から教えてくれるような人が一人もいませんでしたので、ここは自分からお伺いを掛ける必要ある!)

  • 大きいシステムになればなるほど、見えない部分が多くなり後からジョインしたエンジニアは初期エンジニアよりどうしても工数がかかってします。
     仕様把握に99%、開発に1%の工数バランスもザラにある。
     その場合は引き受けるタスクを、しっかり選択する必要がある。

 ポイントは、独立して実装を完結できる機能か、結合しないと完了できない機能を見極める必要がある。
 結合してみないと読めないタスクはどうしても監督エンジニアの実装部分を考慮する事にパワーを割いてしまい、
 本来やった方がいいタスクに注力できない。

  • 監督エンジニアは、後から入ったエンジニアは仕様把握に大量の時間を取られる事を考慮してタスク配分を考えると良好な関係になるかも。
        

Unityなどの「Color(0.1f,1f,1f)」の形式に、変換するツール

UnityC# new Color型変換

Unityなどの「Color(0.1f,1f,1f)」の形式に、変換するツール

個人的に、UnityでHex値を、Color(1f,1f,1f)の型に変換する事が多く、以外にググっても見つけられないので、
webでサクッと変換できるツールを実装しました。

こちら → Hex値->Color(1f,1f,1f)に変換するツール

※ちなみに、RGB型(255,255,255)にも変換できます..

Unity3Dで、3Dのテクスチャ(画像)だけスクロールする

Unity3Dで、3Dオブジェクトのテクスチャ(画像)だけスクロールする

  • ただのPlaneの3Dに貼り付けてある画像をスクロールするだけで前に進んでいるように見せたり。

  • もしくは縦にスクロールさせて滝をつくったり応用できます。

よく使うが忘れてしまうのでメモ

UvScroll.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;



public class UvScroll : MonoBehaviour {

    // UVスクロール
    public float scrollSpeedX = 0.5f;
    public float scrollSpeedY = 0.5f;

    void Update()
    {
        var offsetX = Time.time * scrollSpeedX;
        var offsetY = Time.time * scrollSpeedY;
        GetComponent<Renderer> ().material.mainTextureOffset = new Vector2(offsetX, offsetY);
    }
}

確認した環境

  • Unity2017
  • MacOSX El Capitan

Unity + NGUI の 「UI Button」のOnClickイベントをスクリプトで登録する方法

タイトルの通り、UnityのNGUIで、「UI Button」のOnClickイベントをスクリプトで登録する方法について

NGUIの便利なUIButtonですが、
スクリプトでOnClickのイベントを登録した事がなかったですが、
色々しらべたところやり方が分かったのでメモします!

下記がそのソース。

GameManager.cs


// イベントを登録したいボタンのオブジェクト GameObject btnObj; // NGUIのUI Button UIButton btn = btnObj.GetComponent<UIButton>(); // イベントデリゲートを用意 EventDelegate btnEvent = new EventDelegate(); // このクラスのOnClickというメソッド btnEvent.Set(this,"OnClick"); // 同じイベントが複数入ってしまうことを避けるため一旦イベントをクリア btn.onClick.Clear(); // イベントを追加 btn.onClick.Add(btnEvent); // NGUIのオブジェクトに子として追加 NGUITools.AddChild (nguiParentObj, btnObj);

以上です!

また、

btn.onClick.Clear();

は、Unityエディタ上で何回も実行などしていると、
イベントがどんどん増えてしまうので、念のためリセットします。
ここらへんは環境にあわせて適宜調整してください。

ググったんですが、日本語の情報がなかったので、
備忘録のためメモ。