2014年2月28日金曜日

iOSアプリをGoogle Analyticsでアクセス解析するとこんな感じ

Google Analytics for iOS

アクセス解析するとこんな感じ

前回の続きで実際にどのように解析できるかご紹介します。


リアルタイム

サマリー

リアルタイムでのアクセス状況が確認できます。
自分のアプリで今何人遊んでいるか分かるので眺めているだけでニヤニヤできます。



ユーザー

サマリー

日毎のアクティブユーザー数や新規、リピートの割合、平均セッション時間なども取れます。
この例だと「リピーターばかりで、新規ユーザーが少ないなあ」などと分析できます。


iOSのサマリー

iOSのバージョンや端末毎の割合、画面の解像度などが分かります。
これを見るとかなりの割合がiOS7ユーザーであることが解析できます。


行動

サマリー

スクリーンビュー数やイベント数などがここで参照できます。
前回、トラッキングを実装したページやイベントがここに反映されるわけです。


イベントアクション毎のサマリー

イベントは、カテゴリ、アクション、ラベルを設定するのでそのセクションごとにサマリーが見られます。
私のアプリは英単語を答えるので、カテゴリに「回答」、アクションに「正解」「不正解」、ラベルに「実際に回答した単語」を設定してどのような単語が多く回答されたのかを解析しています。

イベントは上手に設定すれば、アプリの改善に役に立ちます。
例えばステージクリアー制のゲームでステージ別クリアーした回数をトラッキングすると、「ステージ4は50回クリアーされているのに、次のステージ5は3回しかクリアーされていない」という事実が判明し、ステージ5の難易度を下げたほうが良いことが分かります。


おわりに

以上、さらっとではありますがGoogle Analyticsでアクセス解析をして取れるデータの例をご紹介しました。
私自身も正直使いこなせているとは言えず、もっと高度な解析ができるはずです。
ですが、簡単なトラッキングをするだけでもこれだけの数字が取れるのでとりあえず入れてみるのをオススメします。

2014年2月27日木曜日

iOSアプリをGoogle Analyticsでアクセス解析する方法

Google Analytics for iOS

iOSアプリをGoogle Analyticsでアクセス解析する方法

iOSアプリにGoogle Analyticsを組み込むとアクセス解析ができます。
実は結構簡単にできるので、今回はそのやり方をご紹介します。
※2014/2/27時点 ver3.03c

Google Analyticsアカウントの作成


サイトにアクセス

http://www.google.co.jp/analytics/


アカウントを作成

『アカウントを作成』ボタンをクリック


Google アナリティクスの使用を開始

『お申し込み』ボタンをクリック


新しいアカウント

トラッキングの対象『モバイルアプリ』

アカウント名『iOSアプリ』
(いくつかのアプリをまとめるカテゴリ名のようなもの)

アプリ名『テストiOSアプリ』

業種『インターネット、通信事業』
(該当のものを適当に選択)

レポートのタイムゾーン『日本』 (GMT++09:00)東京

データ共有設定『全てのチェックをはずす』
(オプション項目なので用途に合わせて適当に選択)

※ここはご自分で適切なモノに変えてください。



トラッキングIDを取得

『トラッキングIDを取得』ボタンをクリック



Googleアナリティクス利用規約

『同意する』ボタンをクリック



トラッキングID、SDK取得

トラッキング IDをメモ
【UA-48******-1】<注意>*は数字です

Google Analytics iOS SDK『ダウンロード』
→【GoogleAnalyticsServicesiOS.zip】を取得





Google Analytics iOS SDKの組み込み


ファイルの追加

ダウンロードしたSDKから以下のファイルをプロジェクトに追加

  • GAI.h
  • GAITracker.h
  • GAITrackedViewController.h
  • GAIDictionaryBuilder.h
  • GAIFields.h
  • GAILogger.h
  • libGoogleAnalyticsServices.a


フレームワークの追加

「Linked Frameworks and Libraries」の「+」ボタンで追加

以下のフレームワークを追加
  • libGoogleAnalyticsServices.a
  • CoreData.framework
  • SystemConfiguration.framework
  • libz.dylib




トラッキングの実装


サンプルとして「Single View Application」へ実装します


トラッキング開始


  • AppDelegate.m
======================================================
#import "GAI.h"

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    
    // Initialize tracker.
    [[GAI sharedInstance] trackerWithTrackingId:@"UA-48******-1"];
    
    return YES;
}
======================================================

ページをトラッキング(自動計測)


  • ViewController.h
======================================================
#import "GAITrackedViewController.h"

@interface ViewController : GAITrackedViewController

@end
======================================================



  • ViewController.m
======================================================
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    // Automatic Screen Tracking
    self.screenName = @"Test view 01";
    
}
======================================================



ページをトラッキング(手動)


  • ViewController.m
======================================================
ViewController.m

#import "GAI.h"
#import "GAIFields.h"
#import "GAIDictionaryBuilder.h"


- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    // Manual Screen Tracking
    id tracker = [[GAI sharedInstance] defaultTracker];
    
    // Set the screen name on the tracker
    // so that it is used in all hits sent from this screen.
    [tracker set:kGAIScreenName value:@"Test view 02"];
    
    // Send a screenview.
    [tracker send:[[GAIDictionaryBuilder createAppView]  build]];
    
}
======================================================



イベントをトラッキング


  • ViewController.m
======================================================
#import "GAI.h"
#import "GAIDictionaryBuilder.h"

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    //Events  Tracking
    id tracker = [[GAI sharedInstance] defaultTracker];
    
    [tracker send:[[GAIDictionaryBuilder
      createEventWithCategory:@"ui_action"    // Event category (required)
                       action:@"button_press" // Event action (required)
                        label:@"play"         // Event label
                        value:nil] build]];   // Event value
}
======================================================



動作確認

Google Analyticsでトラッキングを確認できればOK


実装の詳細

他にも機能はあるので、実装の詳細については以下を参照




アクセス解析

次回、トラックしたページ、イベントがどのように解析できるのか掲載します。
掲載しました。

2014年2月26日水曜日

ASOはとりあえずアプリ名とキーワード

iOSアプリをリリースするときに『ASO』気になりませんか?
ASOとはApp Store Optimizationの略です。
App Storeで検索されたときに上手く引っかかるように最適化すること。
つまり、App StoreのSEO対策のことですね。

でも、そんなに検索ってされてるのって思ってませんか?
私もそう思っていたのですが実は結構されているようです。
App Storeでダウンロードされるアプリの約50%は検索からとのこと。

個人的な経験としてもASOによるダウンロード数アップは実感しています。
1本目に出した実験的なアプリは最初、キーワードをほとんど設定してませんでした。
アップデートを機にいくつかのキーワードを盛り込んだところ、ほぼゼロだったダウンロード数が日々数本程度に増えたのです。

とはいってもASOだけで一冊の本になるくらい様々な施策や考え方があり、何をやれば良いのか正直分からないと思います。
とりあえずはアプリ名とキーワードを気にすることから始めましょう。

アプリ名はカッコ良い独自の名前を付けたくなります。
でも、それだと誰もその名前で検索してくる人はほとんどいません。
そこでサブタイトルをつけちゃいましょう。

弾幕系シューティングゲームだったらこんな感じで。
「XXXX 〜超難易度弾幕系シューティング〜」
後はタイトルに入れられない単語をキーワードに入れておきましょう。

注意点としてはタイトルとキーワードに重複する単語を入れるとリジェクトされるという噂があるのでそこは慎重に。
あと、長過ぎるのもだめで推奨は35文字以内とのこと。

アプリ名とキーワードはバージョンアップしないと変更できないので申請するときにASOのことを考えながら決めましょう。

2014年2月25日火曜日

PNGを圧縮して軽くする(透過や透明のアルファチャンネル対応)

アプリを開発しているとPNG画像をよく使います。
でも、PNGって意外に容量が大きくなったりするんですよね。
そんなときはTinyPNGというWebサービスがオススメです。













サイトに圧縮したい画像をドラッグアンドドロップするだけ。
画質はほぼ変わらず圧縮、軽量化してくれます。
透過や透明などのアルファチャンネルにも対応しています。

試しに圧縮してみた画像をアップするので比較してみてください。
分からないですよね。
これでも容量的には64%削減されています。


圧縮前
圧縮後

2014年2月24日月曜日

iOSアプリのアイコン画像(角丸)の入手方法

自分で開発したiOSアプリのアイコン画像が必要になるときありませんか?
アプリの紹介などをサイトに掲載するときとか。
iOSアプリのアイコンは自分で用意する画像は正方形なので、あの角が丸まった画像って開発者は持ってないんですよね。

そんなときには「AppStoreアプリアイコン取得プログラム」というWebサービスが便利です。
アプリの名前を入れて検索するだけでアイコン画像が出てきます。
画像のサイズは512x512です。
ただ、このサービスはアプリをリリースしていないと使えないので注意してください。

リリースしてないアイコンが欲しい場合は、ここでとりあえず他のアプリのモノを取って、その輪郭通りに自分の持ってる正方形の画像を切り取るという方法もありますのでご参考までに。


2014年2月21日金曜日

Googleドライブでフォームをつくる

iOSアプリを公開するためにはサポートサイトが必要です。
そして、そのサイトには開発者への何かしらの連絡手段がなければいけません。
個人が特定されないような手段としてはフォームがよいと思います。
そこでGoogleドライブで作ってみてはいかがでしょうか。


まずはGoogleドライブでこのようなフォームを作ります。




これだけだと、スプレッドシートにデータが溜まるだけなので、入力されたかどうか確認しなければなりません。
そこで、入力されたときにメールが飛ぶようにしましょう。


回答のスプレッドシートに以下のようなスクリプトを作成します。

=====================================
function sendMailFromForm() {

    // 件名、本文、フッター
    var subject = "お問い合わせ"; 
    var body = "";

    // メール送信先
    var admin = "hogehoge@gmail.com"; // 管理者(必須)
    var cc    = "";    // Cc:
    var bcc   = ""; // Bcc:
    var reply = ""; // Reply-To:
    var to    = admin;    // To: 

    try{
        // スプレッドシートの操作
        var sh   = SpreadsheetApp.getActiveSheet();
        var rows = sh.getLastRow();
        var cols = sh.getLastColumn();
        var rg   = sh.getDataRange();
        Logger.log("rows="+rows+" cols="+cols);

        // メール件名・本文作成と送信先メールアドレス取得
        for (var j = 1; j <= cols; j++ ) {
            var col_name  = rg.getCell(1, j).getValue();    // カラム名
            var col_value = rg.getCell(rows, j).getValue(); // 入力値
            body += "【"+col_name+"】\n";
            body += col_value + "\n\n";
        }

        // 送信先オプション
        var options = {};
        if ( cc )    options.cc      = cc;
        if ( bcc )   options.bcc     = bcc;
        if ( reply ) options.replyTo = reply;

        // メール送信
        if ( to ) {
            MailApp.sendEmail(to, subject, body, options);
        }else{
            MailApp.sendEmail(admin, "error", body);
        }
    }catch(e){
        MailApp.sendEmail(admin, "error", e.message);
    } 
}
==================================

これを以下のようにトリガーで設定するだけでOKです。




フォームはこのようなメールフォーム以外にもアンケートなど幅広く使えるので覚えておくと便利です。


2014年2月20日木曜日

iOSアプリは起動に時間がかかると落ちる

iOSアプリは起動に時間がかかると落ちる。
そんな内容の記述をたまたま見つけたので備忘録として残しておきます。

この現象はシミュレーターやXcode経由の実機デバッグでは発生しません。
そのため、リリース後にいきなり発覚することがありえます。
具体的にはクラッシュリポートに以下のコードが出力されます。

Exception Codes: 0x8badf00d

具体的には約20秒以上かかると発生する事象のようです。
最初に表示するビューの初期化処理が起動時間に含まれます。
重い初期化処理が必要な場合は初期ビューからサブビューを呼び出し、そこで処理を行うなどの工夫が必要になります。

このような事象があるということを頭の片隅に残しておくと、イザというときに役に立ちますので覚えておきましょう。


2014年2月19日水曜日

iOSアプリは100M以内で作ろう

iOSアプリを作っていると案外容量は気にしないものです。
でも、解像度が高いので画面一杯の画像を使ったり、長いBGMをいくつも入れたりするといつの間にかサイズが大きくなりがちです。
アプリのサイズ制限というものは無いことになっていますが、実は超えない方が良い数値というものがあるのです。

2014/2/9現在では100Mを超えるアプリはWiFi接続時にしかダウンロードできなくなります。
つまり、100M以内ならば3G/LTEでダウンロードできます。

この上限容量も最初は20Mから始まり、50Mになり、ついに100Mになりました。
これは高速なLTE回線が普及してきたのでそれなりのサイズでもそれほど時間がかからずに落とせるからということなのでしょう。

WiFiでしか落とせないアプリではダウンロード数が限られてきます。
普通に作っていれば100Mを超えることは無いと思いますが気をつけましょう。

2014年2月18日火曜日

iOSアプリ申請のまとめ

何回かに分けて書いてきたiOSアプリの申請についてまとめます。


  • 申請から審査までは約一週間
  • 申請は月曜日の夜が良い
  • リリース日は審査日より過去にしない
  • 申請時に入力項目がダミーでも審査までに修正すればよい


いつでも変更できる項目

  • 説明文
  • サポートURL



審査後に変更できなくなる項目

  • スクリーンショット
  • キーワード


以上はとても大事なことなので覚えておきましょう。

2014年2月17日月曜日

iOSアプリのサポートURLは何でもいい

懲りずにiOSアプリの申請のお話です。

申請時の必須項目で最初にどうしようかと悩んでしまうのがサポートURLではないでしょうか。
これはApp Storeの「Appサポート」から遷移する先の画面のURLです。

ちゃんとアプリ用のサイトを作っている人なら良いのですが、そうではない場合は何を入れれば良いのかよくわかりません。
いちいち、サイトを立ち上げるのも手間がかかりますしね。
実はこれ何でも良いみたいなのです。

個人のブログであったりFacebookやTwitterでも良いみたいです。
ただ、開発者にコンタクトする手段が無いサイトは駄目なようです。
そのサイトにメールフォームやメールアドレスなどがあればOK。

さらにこのサポートURLは説明文と同じくいつでも変更可能です。
最初に申請するときはとりあえずTwitterあたりにしておいて、暇を見てアプリのサイトを立ち上げて後からそこに変える。
そんな運用の仕方が現実的なのかも知れないですね。

2014年2月14日金曜日

iOSアプリの説明文はいつでも変更できる

しつこくiOSアプリの申請のお話です。

App Storeでスクリーンショットと同じくらい重要な説明文。
申請時にiTunes ConnectのDescriptionとして入力するのですが、申請した後でも変更できます。
審査が終わった後も変更可能です。
つまり、説明文はいつでも変更可能というわけです。

スクリーンショットとキーワードは審査を通過するとバージョンアップするまで変更できません。
同じくらい重要な説明文はいつでも変更できる。
仕様的にはどうなのよと思いますが、使う身になると非常に便利です。

何か突発的に流行ったキーワードなどを素早く盛り込んだ説明文に変更して検索で引っかかりやすくする。
ふと、いい文句が浮かんだので思うままに説明を変える。
プロモーション用の動画を作ったのでそのURLを表記する。

などなど、臨機応変に自分のアプリの説明文を自由に使うことができます。
変更してもモチロン申請も審査も必要無く、数分から数十分でApp Storeに反映されます。

iOSアプリの説明文はいつでも変更できる。
とても大事なことなのでしっかりと覚えておきましょう。

2014年2月13日木曜日

iOSアプリの審査後にキーワードも変更不可

またまたiOSアプリの申請のお話です。

前回のお話ではスクリーンショットは審査に入ると変更が不可というお話でした。
実はもうひとつ変更不可能になる項目があってそれが「キーワード」です。

キーワードはApp Storeに直接表示されるわけではないので、適当してしまいがちです。
しかし、広告にお金を掛けられない場合はApp Storeを見てダウンロードするユーザーはかなり多いので検索に引っかかるようにキーワードを設定するのはとても重要です。

アプリの名前は何となく審査後には変更できないなあと想像できます。
説明文が実はいつでも変更可能だということが分かるとキーワードも同じように変えられるだろうと思いがちです。
でも実はアプリ名やスクリーンショットと同じようにバージョンアップまで変えられなかったりします。

説明文に含められない語句を補うためのキーワードですが、その2つの変更できるタイミングがバラバラというのは実に使い勝手が良くないと思います。
ですが、現状はそのような仕様なので気をつけるしかありません。

説明文に依存しないようなキーワードを審査前にしっかりと決めるのが良いと思います。

2014年2月12日水曜日

iOSアプリの審査後にスクリーンショットは変更不可

さらにiOSアプリの申請のお話です。

前回のお話ではスクリーンショットと説明はダミーで申請しようということでした。
それは申請後でも変更できるからなのですが、じゃあ審査が始まったらどうかというとスクリーンショットが変更できなくなります。

昔はいつでも変更できたらしく、私もそう思っていて最初のアプリは適当な画像をひとつだけアップしていました。
そうして後で変更が効かないことが分かり、愕然としたものです。
結局、バージョンアップするまでアプリのスクリーンショットは1枚きりでした。

審査自体はそのアプリの画面でサイズさえあっていればスクリーンショットは何でも通るでしょう。
ですが、App Storeに載せることができるアプリの画面イメージはそこだけですので非常に重要です。

スクリーンショットは申請から審査前までしか変更が効かないので、十分に考えた上で画像をアップしましょう。

2014年2月11日火曜日

iOSアプリはスクリーンショットと説明はダミーで申請しよう

引き続き、iOSアプリの申請のお話です。

Appleへの申請時にアプリの説明やキーワード、画面のスクリーンショットを登録する必要があります。
これはApp Storeに掲載される情報なのでとても大事です。
海外向けにも公開する場合は英語版、日本語版と必要になるので結構手間と時間がかかります。
だったら、申請するときはとりあえずのダミーにしてしまいましょう。

このあたりの情報は申請した後からAppleの審査が始まるまでの間で修正することができます。
審査は大体1週間から10日かかるので、その待たされている間にゆっくりとStoreに載る情報を考えましょう。
審査が始まる前にダミーと差し替えてしまえば何の問題もありません。
何よりそれらの作業をする時間分早く申請ができるので、早くリリースをすることができます。

App Storeに載せる情報はとても大事なのでしっかりと時間をかけたいところです。
申請から審査までの期間が長いのを逆手にとって、その時間を有効に使いましょう。

2014年2月10日月曜日

iOSアプリの申請は月曜の夜が良い3つの理由

iOSアプリはAppleの審査があります。
私の経験では大体1週間から10日待たされます。
それを踏まえたうえでアプリの申請は月曜の夜がいいと個人的には思います。
理由は以下の3つです。

1つめの理由として、Appleの審査が土日には稼動してないことです。
ということは、土曜日に申請しても月曜日からしか審査してくれないのでそれだけ待つ日数が増えてしまいます。

2つめの理由として、土日を挟む回数です。
申請から審査まで1週間以上かかるので必ずどこかで土日を挟むことになります。
金曜日に申請して10日かかる場合は土日を2回挟んでしまうことになり、やっぱり待つ日数が増えます。

3つめの理由として、時差です。
上記2つの理由から待たされる時間が少なくなるの申請日は月曜日がベストだと考えます。
さらに、Apple審査は米国でやっているので時差がマイナス17時間になります。
つまり、月曜日の夜が向こうでは月曜日の早朝になるわけです。

月曜の朝に審査に出せば土日の休みを挟むのが1回で済むので、待たされるのが短くなる。
iOSアプリの申請は月曜の夜に出すことをオススメします。

2014年2月7日金曜日

開発したアプリ『えいたんご』がyahooニュースに掲載されました

開発したアプリ『えいたんご』がyahooニュースに掲載されました。
http://headlines.yahoo.co.jp/hl?a=20140206-00000026-zdn_m-game

といっても、「ITmedia Mobile」に掲載された記事がyahooニュースに載っていただけなのですが。

今回は、こちらから「新着アプリ情報」としてメールをして取り上げてもらいました。
プロモーション活動として色々なところに情報を発信していますが、中々取り上げてもらえません。
ですが、鉄砲は打たなければ絶対に当たらないので、打てるのならば打ちまくったほうがイイと思います。
打っている内にコツを掴んでくるかも知れませんので。

ちなみに今回取り上げてもらうまではかなりのレビュー依頼を投げたので、文面が少しずつブラッシュアップされていきました。
だから、ようやく載せてもらえたのかも知れません。
まあ、恐らく運とタイミングだと思いますが。

という訳でプロモーション活動は「下手な鉄砲でも打ちまくるのが大事」ということですね。

2014年2月6日木曜日

リリース日が過去だとApp Storeの新着に載らない?

iOSアプリはAppleの審査があり大体1週間ほど掛かります。
リリース日を設定してから審査を申し込むのですが、その期間を考えずに日にちを決めてしまうと審査が終わった日より設定したリリース日が過去になることがあります。
そうなると新着アプリとしてApp Storeに載らないという話があります。

自分では試したことが無いので現在のApp Storeでその仕様なのかは分かりません。
ですが、少なくても過去そのような仕様であったことは確かなようです。
現在もそうである可能性があるならば最初から回避しておいた方が良いでしょう。

前の記事にも書きましたがApp Storeの新着効果は絶大なものがあります。
もし本当に今でも新着に載らないようだと致命的な機会損失を被ることになります。
そのようなことにならない為にもリリース日は審査が終わりそうな日よりも後の日付にしておきましょう。
未来の日付にしておいても後からまた変えられるので別段何の問題もありませんので。

2014年2月4日火曜日

App Storeの新着効果は一週間

アプリをリリースするとApp Storeに新着として表示されます。
リリース前に広告等のプロモーションをしていない場合は大体それを見てユーザーはダウンロードします。
実はこの新着効果はかなりのものがあり、何も宣伝していなくてもそこそこの数、英語対応しておけば全世界でダウンロードしてくれます。
しかも、リリースしたその日だけではなくしばらくの間、その効果は続きます。

私が2本リリースした実績だと最初の2日間はかなりのダウンロード数があり、3日目くらいから落ち着いて、5〜7日目くらいにはほぼ効果が無くなるといった感じです。

このことから新着効果の発揮できる期間を3連休やクリスマスなどのダウンロードの見込める期間にぶつけて最大限のダウンロード数を稼ぐことができるかも知れません。

個人の開発者はプロモーションにかけるコストが限られているので、まずは新着効果を踏まえた上でのリリース日を考えてみてはいかがでしょうか。