FreelyApps

個人によるアプリ開発の日記です。アプリの収入だけで生活できるようになるのが目標です。UnityでAndroid向けのゲームアプリを作成しています。


    アプリ『トランプ・ジン・ラミー』を公開しました。
    Android/iOS https://goo.gl/PYKFYG

    カテゴリ: Google

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Google Play Developer ConsoleにはクラッシュとANRという項目があります。
    これはアプリのクラッシュ(強制終了)とANR(アプリが応答しなくなる) がどれくらい起こっているかのレポートを見るものです。

    少し前にこのようなレポートが上がっていました。
    タイトルにjava.lang.Error: FATAL EXCEPTION [main]と書かれていて、何が起こっているかわかりませんがまずそうな感じなのはわかりました。
    原因は、
    Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@2bbfaf22: Unmarshalling unknown type code 7274595 at offset 12だと書いてありました。ParcelでUnmarshalling unknown type codeが起こったということです。

    admob-interstitial-error
    Parcelクラスはデータを保存できるオブジェクトを作れるもののようです。オブジェクトも保持できるとのことなので、内部的にはバイト列をもつクラスなのでしょう。(C#でいうとシリアライズ、デシリアライズに対応するのだと思います。)
    このクラスのreadValueが失敗するわけですが、クラスの読み込みがうまくいっていないということです。そこまではわかったのですが、どんなオブジェクトが来ていて、どこで読み込みに失敗するかはまるでわかりません。下の方にある呼び出し元を見るとInterstitialというところから呼ばれているのがわかります。これはインタースティシャル広告の開始のことでコードはライブラリの中です。

    もはやコードを見ることはできないので、検索して調べることにしました。
    同じような問題に遭っている人がいるようでGoogleに質問していました。 議論を見てみると、最後にGoogleがバグを修正したとあります。
    UnityにAdMobで広告を出している場合、Unity向けのパッケージを更新すればいいのか、google_play_servicesライブラリを更新すればいいのか、はたまたどちらも更新が必要なのかはわかりませんでした。
     
    どうもすべての端末で起こるわけではないようでしかも11月頃から発生したことのようです。 それまで発生しなかったことを考えると広告配信のデータの形式が変わり、機種(Android version)によってはそれに対応していないということかもしれません。
    インタースティシャルを使わなければ起きないでしょうが、使えないのは困ります。

    google_play_servicesライブラリを更新するくらいしか手がなさそうです。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Google Playの色々な説明はこのリンクに載っています。

    Google Play デベロッパー コンソールの使い方が主な説明になります。アプリを開発した後にどのように公開すればいいかとか、アプリが満たすべき要件は何かとか、どれくらいアプリがインストールされているかといった統計情報の見方等が解説されています。
    一番最初のページには「Google Play デベロッパー アカウントへの登録」が説明されていて、AndroidのアプリをGoogle Play上で公開しようと思う人は必ず行うことが書いてあります。アカウントの作成に$25かかるといったことはここに書いてあるのです。



    アプリの内容について最も重要な規約は「Google Play デベロッパー プログラム ポリシー」というものです。多くのアプリが守れていなかったり、故意に破っているルールはほとんどこの規約に関することです。
    Androidアプリを作る上でこの規約を知らないということは非常に危険な状態です。この規約を違反していると、Googleはアカウントを停止させることができると明記されています。(重大な違反や違反を繰り返した場合と書いてありますがその判断はGoogleが行うのですから、これは大丈夫だろうといった判断は自己責任です。)アカウントが停止されれば、アプリを公開させることができなくなりますし、会社等がそのような状態に陥れば信用が傷つくことになるでしょう。アカウントが停止させられたときは永久に取り直すことができなくなります。詳細はここにあるので、確認してみてください。
    現状Google Play上のアプリで違反があるものが存在するというのは事実ですが、あくまで対処されていないというだけであり、いつアカウントを停止させられてもおかしくない状況なのです。アプリのポリシー違反を報告することが可能になっていて、やり方がここに載っています。一応説明すると、Google Playアプリで報告するアプリの詳細ページに行きます。ページの下の方にある「不適切なコンテンツを報告」という文字を押すと、何が問題かを選べるのでそれを選び報告することができます。

    開発者だけが規約を守らなければいけないかというとそんなことはありません。ユーザーも規約を守る必要があります。コメント欄に酷い言葉遣いのものが載っていることがありますが、攻撃的な表現は禁止されています。 こういったコメントに対して「スパム」として報告することができます。どのような効果があるかはわかりませんが、投稿したユーザーのGoogleアカウントが停止させられるのかもしれません。 

      このエントリーをはてなブックマークに追加 Clip to Evernote
    以前リファラースパムの対応をしました。
    この結果をグラフで表したので、載せておこうと思います。

    compare.png

    青い線がGoogle Analyticsでデフォルト設定のサイトにアクセスしたすべての数を表しています。オレンジの線がこのブログにアクセスを行っているという条件をいれたアクセスになります。
    途中から青い線とオレンジの線が一致していきます。これは対策を入れてデフォルトで表示されるアクセス数にリファラースパムが除外されるようフィルタがかかっていることを表しています。

    対策前には一致せず、青い線が表すアクセス数がオレンジの線よりも多いことが確認できます。この差分がスパムの数ということになります。あまり突出していないので、アクセス数だけ見ていてもわかりづらいです。

    現在はうまくいっていることが見て取れます。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    以前この記事でリファラースパムというものが発生したと書きました。
    Google Analyticsの統計データが不正確になってしまうため、設置しているサイト管理者にとっては困りものなのです。
    統計データが正しくなくなっていくと、データをもとに判断していたことが当てにならなくなります。

    良く参照されている記事はおそらく求められているものだと思います。そういった記事の共通点を調べれば、どのような内容が良いのかわかってくるはずです。分析することにより、より良い内容になっていくことも期待されます。もちろん、書くためのモチベーションにも大きく影響します。

    しばらくリファラースパムはなかったと思っていたのですが、実は少なかっただけで存在していたみたいです。
    気づいたのは、ある特定の場所から大量のアクセスが残っていたからです。
    例によってフィルタに追加してやれば良いのですが、リファラースパムが登場するたびに同じ作業をするのは面倒です。
    相手にするのは時間の無駄でしかないので、フィルタには追加しなければなりませんが、そのための時間はもったいないです。
    いっぺんに除外する方法はないものかと調べて見つけたのが、このサイトの記事です。

    リファラースパムはFreelyAppsのブログ自体には直接訪れることはありません。
    Google Analyticsに直接情報を送りつけ、アクセス履歴を残すようになっているからです。
    このしくみ利用すると、Google Analyticsを設置しているサイトにアクセスしていない記録を除外すればリファラースパムを取り除いたことになるということです。
    別の言い方だと、Google Analyticsを設置しているサイトにアクセスしている記録だけとれば、リファラースパムが除かれています。
    言われてみればその通りですが、何とも効果的な除外方法です。

    すでにこの設定を反映してあります。
    しばらく様子を見て問題なさそうなら、これで問題解決です。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    このブログはGoogle Analyticsを使っています。
    どのくらいのアクセスがあるのか知りたいからです。
    Google Analyticsを使うと、無料で詳しくアクセスの状況を知ることができます。

    以前forum.topicXXXXXX.darodar.comというサイトから、大量のアクセスがありました。
    どこのサイトか見てみるとロシアのサイトでおかしいと感じました。
    このブログは日本語で書かれているので、まずロシアから訪れる人はいないはずです。
    URLを検索してみたところ、リファラースパムといわれるものだとわかりました。

    リファラースパムとは、Google Analyticsを使って統計を取っているサイトにアクセスログを残し、サイトの管理者をアクセスログに残ったURLに誘導するものです。誘導してどうするかといえば正確なところはわかりませんが、広告のクリックとか恐喝といったところでしょう。いずれにせよ無視するのが賢明です。

    このブログにリンクが貼られ、リンクをクリックしてアクセスした場合、Google Analytics上でどのサイトからアクセスされているかの情報が見れます。実際にリンクが貼られていなくても、通信を行うことで疑似的にそのようなアクセスができます。それを使ったものがリファラースパムのようです。

    被害としては、せっかく取っている統計情報が不正確なものになってしまうことです。
    それでは困るので、Google Analyticsの設定でリファラースパムが統計に入り込まないようにします。

    フィルタに除外するアクセスを指定することで統計に入らないようになります。
    フィルタをカスタムで指定し、除外の設定を行います。
    フィルタフィールドを参照にし、上のサイトであれば「darodar\.com」(\はバックスラッシュのことです)をフィルタパターンに指定します。そうすると、統計にあらわれなくなります。
    過去のアクセスまでなくすことはできないので、早めに設定することが重要です。

    どのようにするかは以下のサイトが参考になりました。
    『検索サポーター』
    『文武両道』

    変なアクセスが増えている人は対策した方がいいと思います。
    こういった迷惑行為は、1日に何万人も見に来るような大きなサイトだけが攻撃の対象だと思っていました。
    現在、FreelyAppsのサイトは1日に10人来れば多い方です。
    それくらいの規模のサイトでも来るのですから、Google Analyticsを使っている人は知っておかないとまずいことだと思います。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Google ウェブマスター ツールというGoogleのサービスがあります。
    Googleの検索で表示されるようにするために登録すると良いみたいです。

    「FreelyApps」とググっても以前は検索できなかったのですが、
    現在はこのページが見つかるようになっています。
    おそらく効果があったのだと思います。

    新しいホームページを作ったりすると、特にリンクがないためにGoogleの検索の仕組みでは見つからないようです。
    ウェブマスター ツールに直接URLを登録すれば、サイトの存在を知らせることができるので、検索できるようになるということです。
    サイトを登録するには、持ち主かどうかの確認があります。
    いくつかの方法があるようですが、私はGoogle Analyticsを設置していたのでそれで認証しました。

    Google AnalyticsとGoogle ウェブマスター ツールの違いをざっくり説明します。

    • Google Analyticsはサイト内でユーザーがどのようなことしているかを知るためのツール

    • Google ウェブマスター ツールはサイト外からユーザーがどのようにやってきたのかを知るためツール


    分析する範囲が違うので組み合わせて使うのが良いようです。


    現在はウェブマスターツールではなくGoogle Search Console(サーチコンソール)に名称が変わっています。割と最近のことなので、今のところウェブマスターツールで検索した方がいろいろな情報が得られると思います。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    以前の記事でMeasurement Protocolを使って、アプリのイベントを計測しようとしていました。
    ユーザーがどのステージに入ったとか、どの画面に入ったことなどを計測することでゲームの改善やバグの発見に役立てることができるからです。

    調べていると、海外で実装できているサイトがありました。
    さっそくダウンロードし、試してみると動きました。
    私のコードと比較して何が違うのか調べたところ、送信しているパラメータに違いがありました。
    anというアプリケーション名を指定するものを送る必要があったのです。
    公式の解説にも設定は必須ではないとあるので、気づきませんでした。
    これを設定しないと計測できないので、解説が不十分であると思います。
    より正確に言うと、モバイルアプリをトラッキングするという設定にした場合にanが必須ということです。

    Google Analyticsの「新しいプロパティ」を作る画面でトラッキングの対象をモバイルアプリと選んでいました。
    計測対照がアプリなのだから適切であると思います。
    ただし、結果的にはこれがうまくいかない原因になったのです。

    トラッキングの対象をモバイルアプリに選んだ場合、
    Measurement Protocolで情報を送るにはv,tid,cid,t以外にanが必須ということです。

    http://www.google-analytics.com/collect?v=1&tid=UA-XXXXXXXX-X&cid=0&t=event&an=YourAppName
    みたいにすれば計測ができます。
    anの値はプロパティ名と関係なくても計測できました。
    存在していることが重要みたいです。

    問題が解決して良かったです。
    公式のページに載っている情報に足りない情報があるというのは、困りましたね。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Google アナリティクスの機能としてHTTPリクエストを送ることでデータを集計することができます。Measurement Protocolというものです。
    これを使うとUnityからHTTP リクエストを送信してGoogle Analyticsに情報を送ることができます。Unityで作ったゲームを何らかのSDKを使わずにスクリプトだけでGoogle Analyticsと連携させることができるということです。

    UnityではWWWクラスを使うと簡単にHTTPリクエストが送れます。
    WWW www = new WWW(URLを文字で書く);
    というようにするだけでアクセスできます。

    Measurement Protocolが要求するURLを作成し、
    WWWクラスにそれを渡せば、Google Analyticsで統計がとれるはずです。

    実際に試してみたのですが、
    管理画面でアクセスがとれていません。
    通信は成功しているようでレスポンスがあります。

    私にはお手上げです。
    もう少し調べてみようと思いますが……

    【追記】
    解決しました。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Google Analyticsを登録してみました。

    まずはブログの統計でも取ってみようかと、
    javascriptのコードを追加してGoogle Analytics管理画面を見ていました。

    プロパティ->トラッキング情報->トラッキングコードという項目に入ると、
    一番上に状態が表示されています。
    ブログにトラッキングコードをコピーしても、しばらくは反映されないみたいです。
    1日くらい放っておいたら、「ステータス: データを受信しています」となりました。
    たぶん正しく設定できていたのでしょう。

    レポートのリアルタイムというところで確認しても良いようです。
    自分で設置したサイトにアクセスして自分のアクセス情報と比べてみれば、
    正しい挙動をしているか確認できると思います。

    計測を開始したら、自分のアクセスを統計に含めたくはありません。
    特定のアクセスを調べないようにするには、いくつか方法があるようです。

    Google Analytics オプトアウト アドオン
    というのを使うのが簡単そうなので、私はこれを使うことにしました。

    このページのトップヘ