Developers
Summit




             実践!スマホアプリのマネタイズ!!
       ~マーケット把握術と
       iPhone&Androidプログラミングテクニック~

                          株式会社メタップス代表取締役CEO       佐藤航陽
                パナソニックAVCマルチメディアソフト株式会社           加藤勝也
                                                  瀬戸健二
15-C-1
                パナソニックAVCマルチメディアソフト株式会社

                パナソニックAVCマルチメディアソフト株式会社           日高正博

#devsumiC
                Developers Summit 2013 Action !
Developers
Summit
                 登壇者紹介

佐藤 航陽                                加藤 勝也
@metaps_sato                         @kacchi0516

スマートフォンの                             iOSプログラミング
未来を創る                                のスペシャリスト



瀬戸 健二                                日高 正博
@rongon_xp                           @mhidaka

課金システムの                              Android大百科
地雷を知り尽くす                             野生の羊

               Developers Summit 2013 Action !
Developers
Summit




             I suggest your Next Action!




                   Developers Summit 2013 Action !
Developers
  Summit
                          Action!
MY RECOMMEND NEXT ACTION!




     モバイルアプリの可能性を感じてください

   デブサミで受けた刺激、アイデアをかたちに。

        千里の道も…
 最初の一歩を一緒に踏み出して見ませんか?


                   Developers Summit 2013 Action !
Developers
Summit




             アプリのマネタイズ
             個人ディベロッパーがアプリで稼ぐための収益化
             戦略




15-C-1                   佐藤 航陽
#devsumiC                     株式会社メタップス
                               代表取締役CEO
Developers
 Summit


                自己紹介

佐藤航陽
Katsuaki Sato
株式会社メタップス
代表取締役CEO
1986年 福島生まれ
東京・US・シンガポール・香港で活動
サービス導入アプリは累計5,000万DL以上


http://www.metaps.com/
Developers
Summit


             アプリ市場のトレンド
売上トップ25位以内に占めるフリーミアムの割合




  100%              96%
Developers
 Summit


     アプリはどれぐらい儲かるの?

              Google Play   AppStore

売上1~5位          1億円~        2億円~

売上6~10位        6,000万円       1億円

売上11~20位       3,000万円      6,000万円

売上20~30位       2,000万円      3,000万円
Developers
Summit
             最も典型的な成功例




                 CPI広告


                     CPC広告
Developers
 Summit


              法人アプリが主流へ
• 売上ランキング100位以内の95%が法人
• トップディベロッパーは初月に1,000万円以上
  のプロモーション予算を投下している




              個人開発者は不利?
Developers
 Summit


       個人ディベロッパーの狙い目
• Google Playはまだまだ個人でも通用する
• 小型ディベロッパーが大ヒットを飛ばしている




3             4    1
Developers
 Summit


              Google Playの特徴
• AppStoreのように広告と順位は比例しない
• 面白いアプリはノンプロモでDLが集まる

        AppStore       Google Play

 クオリティ重視              自由放任主義
 順位変動が激しい             順位変動が少ない
 人の目で判断               アルゴリズムで判断
Developers
Summit


    お金をかけずにDLを稼ぐ方法

         ランキングの把握


         ソーシャルメディアの活用


         ASO(アプリストア最適化)
Developers
Summit


 Google Play ランキングロジック

 インストール数        アンインストール数



  アプリの起動          評価 【★の数】


  アンインストされなければDLが少なくとも上位は狙える
Developers
 Summit


    Androidはリリース30日が勝負
• 30日間だけ掲載される「人気の新着」を活用


         人気の新着     30日目   人気の新着(非表示)


              人気             人気


         売上トップ              売上トップ
Developers
Summit


Google Play 新着から流入数
開始7日間の獲得件数    人気の新着(無料)   デイリーの自然流入数



    50,000件    10位以内      3,000~5,000件


    30,000件   10位~19位     2,000~3,000件


    20,000件   20位~29位     1,000~2,000件


    15,000件   30位~39位     500~1,000件
Developers
 Summit


       ソーシャルメディアへのポスト
• ゲームクリア時、アプリ起動時、スプラッシュ
• 人の招待をうまく活用する



        Email   facebook   twitter   mixi   GREE   LINE   KAKAO

日本     45%        4%        6%       3%     7%     36%     0%
韓国     22%        5%        4%       0%     0%     0%     69%
Developers
Summit


             Bokete(ボケテ)の例
                 • 広告投下なしで10万DL
                   以上(Android版)

                 • Twitterで面白い画像を
                   ユーザが投稿して紹介

                 • 常に口コミがアプリ外で起
                   こり続ける
Developers
 Summit


              レビュー媒体
• 大小50以上の媒体が存在する
• 紹介してくれるかどうかはネタ次第
Developers
 Summit


          ASO(アプリストア最適化)
• キーワードによっては1日数百件程度の流入
• タイトル・ディスクリプションにワードを設定
• アイコン・スプラッシュなどデザイン面



  キーワード        アイコン   スクリーン
Developers
Summit


       ユーザは何を検索するか?

      時事ネタ・人物名・欲望系・アプリ名


      アドバイスツーツでボリュームを判断


      複合ワードはサジェストで判断できる
Developers
Summit


             アイコンは命


      色        枠      線



  細かさ         文字      光沢
Developers
Summit


             AppAnnieをフル活用
             http://www.appannie.com

                              •   競合調査
                              •   アイコントレンド
                              •   順位の把握
                              •   売上の把握
Developers
Summit


             Thank you!!
Developers
Summit




         iPhone(iOS)のアプリ内課金
    実践!スマホアプリのマネタイズ!!
    ~マーケット把握術とiPhone&Androidプログラミングテク
    ニック




15-C-1                                    加藤 勝也
                                       パナソニックAVCマルチメディアソフト(株)



             Developers Summit 2013 Action !
Developers
 Summit
                    自己紹介

• パナソニックAVCマルチメディアソフト(株)
• 業務でもプライベートでもスマートフォンアプリの
  開発してます
   – でも元(?)組込み屋なのでハードも少々嗜む
• Twitter @kacchi0516
• 個人サイト http://www.crossbridge.biz/




              Developers Summit 2013 Action !   2
Developers
Summit




             何を販売できる?




             Developers Summit 2013 Action !   3
Developers
 Summit
              販売できるプロダクト

• コンテンツ(Content)
   – 電子書籍、雑誌、写真など有形のもの、
     ゲム中のキャラクターやアイテムなど
      ー


• 機能プロダクト(Functionality Product)
    – 事前に組込んでいた機能を購入することによって
      解除して提供する


               Developers Summit 2013 Action !   4
Developers
 Summit
              販売できるプロダクト

• サービス(Service)
   – 音声のテキスト化や翻訳など一度限りのサービ
     スをユーザーに提供する


• 定期購読(Subscription)
    – コンテンツやサービスを継続的に利用できるよう
      にする


               Developers Summit 2013 Action !   5
Developers
Summit
             販売できないプロダクト

• 実物の商品やサービス
  – アプリケーションの中で提供できるものは
    電子商品または電子サービスに限定


• ポルノ、誹謗、中傷、ギャンブルに関するもの
   – 当然と言えば当然・・・



               Developers Summit 2013 Action !   6
Developers
Summit
                 Appleの審査

• 販売するプロダクトにもアプリ同様に
  Appleの審査が行われる



             つまりリジェクトされる可能もある




                Developers Summit 2013 Action !   7
Developers
Summit
     どんなものがリジェクトされる?


• カメラやジャイロセンサなどのiOSが提供する
  基本的な機能に対して課金

• 現実世界でも利用できるアプリ内の通貨




             Developers Summit 2013 Action !   8
Developers
Summit




             どんな販売形式がある?




               Developers Summit 2013 Action !   9
Developers
 Summit
              プロダクトの販売形式

• Consumable(消費型)タイプ
• Non-consumable(非消費型)タイプ
• Auto-renewable subscriptions
  (自動更新購読)タイプ
• Free Subscription(無料購読)タイプ
• Non-renewing Subscription
  (非更新購読)タイプ

               Developers Summit 2013 Action !   10
Developers
Summit
             Consumable(消費型)タイプ

• 名前の通り消費するプロダクト
  – ユーザが何度でも購入できる
  – 回復アイテムとかゲーム中の通貨とか
  – ユーザがついつい課金してしまう
    ゲームバランスが大事?!
       • にゃ○こ大戦争のネコカンとか・・・




                 Developers Summit 2013 Action !   11
Developers
Summit
  Non-consumable(非消費型)タイプ

• ユーザが一度だけ購入できる
  (消費されない)
• 広告の削除とか機能制限の解除とか
  – アプリ自体は無料(広告付き)、アプリ内課金で
    広告を削除する
• リストア機能がある
  – 再インストール時や他の端末に
    インストールしたとき
             Developers Summit 2013 Action !   12
Developers
Summit       Auto-renewable subscriptions
                (自動更新購読)タイプ

• 一定期間有効なプロダクト
  – 期間が終了すると自動的に更新
  – 期間は、1 週間・1 ヶ月・2 ヶ月・3 ヶ月・
     6 ヶ 月・1 年


• 雑誌とか新聞の定期購読



                   Developers Summit 2013 Action !   13
Developers
Summit




             で、実装は?




             Developers Summit 2013 Action !   14
Developers
Summit
             StoreKitフレームワーク

• 基本的にStoreKitを通して(使って)
  AppStoreとやりとりを行う




               Developers Summit 2013 Action !   15
Developers
  Summit
               最もシンプルな購入の流れ

 アプリ内課金が   アプリケーション             StoreKitフレームワーク    AppStore
利用できるかチェック

プロダクト情報は
問い合わせること




                 Developers Summit 2013 Action !              16
Developers
Summit




             突然のリジェクト




             Developers Summit 2013 Action !   17
Developers
 Non-Consumable(非消費型)タイプには
Summit


         リストア機能が必須


      リストア機能が実装されていないと
リ
            ジェクト対象

• リストアが簡単にできる機能があるが開発者
  が実装する必要!
• リストアのためのボタンを設ける

             Developers Summit 2013 Action !   18
Developers
Summit




             その他、注意点とか




              Developers Summit 2013 Action !   19
Developers
Summit
               アプリ内課金の脆弱性


               アプリ内課金のコンテンツを
                無料で入手できてしまう
      Appleのサーバとのやり取りを、
別サーバに
            アクセスさせ改ざんしてしまう


     iOS5の時に問題になってAppleがiOS6で対策
     開発者は独自サーバ経由で問い合わせるか
             下記の対応を
https://developer.apple.com/library/ios/#releasenotes/StoreKit/IAP_ReceiptValidati
                                    on/index.html
                         Developers Summit 2013 Action !                           20
Developers
Summit
             テストするポイント

• Non-Consumable(非消費型)プロダクトが
  正しくリストアできるか
• 意図せず複数個購入してしまわないか
  – ボタンを連打してしまっても大丈夫なように
• 購入処理中にネットワークが切断されても
  正しく処理が復旧するか etc...


              Developers Summit 2013 Action !   21
Developers
Summit
                        最後に




             ぜひ、皆さんのアプリに
             アプリ内課金の導入を



               Developers Summit 2013 Action !   22
Developers
Summit




             Androidのアプリ内課金	
  
       In-app Billing of Android




15-C-1                                    瀬戸 健二
                                     パナソニックAVCマルチメディアソフト(株)	


                 Developers Summit 2013 Action !
Developers
Summit




               自己紹介	




             Developers Summit 2013 Action !
Developers
 Summit
                               自己紹介	


•  瀬戸 健二(28)	
  
   –  パナソニックAVCマルチメディアソフト(株)	
  
   –  航空機エンターテイメントシステム開発、	
  
      モバイルアプリ開発	
  
   –  Android、Linux、マイコンなどが得意	
  
   –  元TechBoosterメンバー	
  
   –  Twi9er	
  
        •  @rongon_xp	
  


                            Developers Summit 2013 Action !
Developers
Summit




             Androidのアプリ内課金	




                Developers Summit 2013 Action !
Developers
 Summit

              本日のテーマ
                   	

•  アプリ内課金プログラミング完全ガイドでは	
  
   In-­‐app	
  Billing(IAB)	
  v2について解説	
  
•  発売直後にIABv3が発表・・・。	
  
•  今日はIABv3について	
  
   お話させて頂きます	
  




                Developers Summit 2013 Action !
Developers


              IABv3特徴
 Summit

                     	

•  実装がとても簡単に。	
  
   –  v2では100行以上、v3では50行程度に。	
  
•  非同期処理の排除とローカルキャッシング	
  
   –  高速なAPI実行が可能に。	
  
   –  セキュリティ向上	
  
•  購入情報の管理	
  
•  アイテム情報の参照	
  

              Developers Summit 2013 Action !
Developers


      Androidアプリ内課金	
  -­‐	
  概要
Summit

                                	

•  Playストアサーバ上に存在する購入情報を更新する	
  
•  アプリからはPlayストアアプリを介してPlayストアサ
   ーバにアクセスする	
  

                                                   購入情報	




               Developers Summit 2013 Action !
Developers


             IABv2の購入シーケンス
Summit

                         	




                 Developers Summit 2013 Action !
Developers


              IABv2のアプリ構成	
 Summit




•  課金リクエストを送信するためのサービス	
  
•  非同期メッセージを受け取るためのブロードキャストレシーバ	
  
•  アプリケーションに通知するためのレスポンスハンドラと	
  
   オブザーバ	




                Developers Summit 2013 Action !
Developers


              IABv3の購入シーケンス
Summit

                          	

                        getBuyIntent()	


                           Bundle
                 (RESPONSE_CODE, BUY_INTENT)	

                                                                 Play	
  
 Your	
  
                                                                Store	
  
 App	
           startIntentSenderForResult()	
                  App	
                                                                            IAB API	

                           Bundle
             (RESPONSE_CODE, INAPP_PURCHASE_DATA,                           同期レスポンス	
                       INAPP_SIGNATURE)	




                            Developers Summit 2013 Action !
Developers


             IABv3のアプリ構成
Summit

                        	

•  同期処理になったため、アプリ構成がシン
   プルになった	
                                                        Playストアアプリ	

              アプリ本体	


                                                         InAppBilling	
  
                                       bind	
              Service	
             セキュリティ	



                    Developers Summit 2013 Action !
Developers
Summit




             アイテムの購入	




              Developers Summit 2013 Action !
Developers
  Summit

                      アイテムの購入(1)
                               	

•  IInAppBillingService.getBuyIntent()で購入画面を
   起動	
	
  
//	
  購入画面を起動するためのインテントを取得	
  
Bundle	
  buyIntentBundle	
  =	
  mService.getBuyIntent(3,	
  getPackageName(),	
  
	
  	
  	
  sku,	
  "inapp",	
  "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ");	
  
	
  
PendingIntent	
  pendingIntent	
  =	
  
buyIntentBundle.getParcelable("BUY_INTENT");	
  
	
  
//	
  インテントを使って購入画面を起動する	
  
startIntentSenderForResult(pendingIntent.getIntentSender(),	
  
	
  	
  	
  1001,	
  new	
  Intent(),	
  Integer.valueOf(0),	
  Integer.valueOf(0),	
  
	
  	
  	
  Integer.valueOf(0));	
  
                                               Developers Summit 2013 Action ! 
	
  
Developers
 Summit

                         アイテムの購入(2)
                                  	

•  購入結果はonAchvityResult()に返される	
@Override	
  
protected	
  void	
  onAchvityResult(int	
  requestCode,	
  int	
  resultCode,	
  Intent	
  data)	
  {	
  	
  
	
  	
  	
  if	
  (requestCode	
  ==	
  mRequestCode)	
  {	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  int	
  responseCode	
  =	
  data.getIntExtra("RESPONSE_CODE",	
  0);	
  
	
  	
  	
  	
  	
  	
  String	
  purchaseData	
  =	
  data.getStringExtra("INAPP_PURCHASE_DATA");	
  
	
  	
  	
  	
  	
  	
  String	
  dataSignature	
  =	
  data.getStringExtra("INAPP_DATA_SIGNATURE");	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  if	
  (resultCode	
  ==	
  RESULT_OK)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  //	
  購入処理	
  
	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  }	
  
}	

                                        Developers Summit 2013 Action !
Developers
Summit




             アイテムの消費	




              Developers Summit 2013 Action !
Developers
Summit

             アイテムの消費(1)	

•  IABv3ではすべての購入情報がPlayストア
   サーバで管理	
  

•  消費しないと再購入できない	
  –  消費型 :	
  購入が完了したら消費処理を実施	
  
  –  非消費型 :	
  購入が完了しても消費処理をしない	
  




               Developers Summit 2013 Action !
Developers
   Summit

                    アイテムの消費(2)
                             	

 •  消費型アイテムの場合はconsumePurchaseを実
    行することで再購入できるようにする	
  
 •  INAPP_PURCHASE_DATAに含まれている
    purchaseTokenを指定する	


int	
  response	
  =	
  	
  
	
  	
  	
  mService.consumePurchase(3,	
  getPackageName(),	
  
purchaseToken);	


                             Developers Summit 2013 Action !
Developers
Summit




             トラブルシューティング	




               Developers Summit 2013 Action !
Developers
Summit

             うまく動かないとき(1)
                        	

•  テストアカウントを設定していない	
  
  –  Androidデバイスのプライマリアカウントに設定	
  
•  公開鍵をアプリに設定していない	
  
  –  Developer	
  Consoleで取得可能	
  
•  Playストアにアプリ/課金アイテムを登録し
   た直後	
  
  –  反映されるのに数時間〜数日かかることがある	
  

                  Developers Summit 2013 Action !
Developers
 Summit

              うまく動かないとき(2)
                         	

•  アプリの署名が不正	
  
   –  Playストアに登録している署名と一致している
      必要がある	
  
•  アプリの公開設定	
  
   –  公開設定にすると動作する場合も・・・。	




                 Developers Summit 2013 Action !
Developers
Summit

       どちらを使えばいいのか?	

•  v3は定期購読未サポート	
  
  –  アプリ内課金アイテムのみであればv3でok	
  


•  簡単に実装したいのであればv3	
  




             Developers Summit 2013 Action !
Developers
Summit




•  ご清聴ありがとうございました	




             Developers Summit 2013 Action !
Developers
Summit




               参考資料	




             Developers Summit 2013 Action !
Developers
 Summit

              アイテムの販売形式
                      	

•  消耗型	
  
   –  ゲーム上のお金、ポーションなど使用すると消耗してしまうもの	
  


•  非消耗型	
  
   –  アプリ上の機能制限のアンロックなど、購入することで永続的に効
      果が持続されるもの	
  


•  購読型	
  
   –  定期的な課金によって効果が持続されるもの	



                Developers Summit 2013 Action !
Developers


             IABv3	
  Sample	
  App
Summit

                                  	




                  Developers Summit 2013 Action !
Developers


                       IABv3	
  Sample	
  App
 Summit

                                            	

•  サンプルアプリケーションをダウンロード	
  
   –  Extras	
  -­‐>	
  Google	
  Play	
  Billing	
  Library	
  
•  Eclipseにインポート	
  
•  サンプルアプリを修正	
  
   –  パッケージ名を変更	
  
   –  公開鍵を設定	
  
•  アプリをPlayストアにアップロード	
  
•  アップロードしたapkをadb	
  install	

                                  Developers Summit 2013 Action !
Developers


              INAPP_PURCHASE_DATA
 Summit

                                	

•  Playストアより得られる購入情報	
02-­‐11	
  10:27:39.908:	
  D/IabHelper(7688):	
  Extras:Bundle[{INAPP_PURCHASE_DATA={	
  
"orderId":"12999763169054705758.1368594429841055",	
  
"packageName":"org.dyndns.ideon.trivialdrivesample",	
  
"productId":"gas",	
  
"purchaseTime":1360578449000,"purchaseState":0,	
  
"purchaseToken":"w…,	
  
RESPONSE_CODE=0}]	




                                Developers Summit 2013 Action !
Developers
Summit

             購入シーケンス(IABv2)
                          	




                 Developers Summit 2013 Action !
Developers
Summit

             購入シーケンス(IABv3)
                          	



                                                購入情報	
                    購入情報	




                     IABv3では不要	


                 Developers Summit 2013 Action !
Developers
Summit

             アイテム情報の参照(1)	

•  購入可能なアイテム情報を取得可能	
  
  –  セール価格など簡単に実現	


                                getSkuDetails()	

                                      Bundle                    Play	
  
             Your	
  
                        (RESPONSE_CODE, DETAILS_LIST)	
        Store	
  
             App	
                                                                App	




                           Developers Summit 2013 Action !
Developers
 Summit

               アイテム情報の参照(2)
                          	

•  getSkuDetails()でアイテム情報を参照	
//	
  サービスIDのリストを作成	
  
ArrayList	
  skuList	
  =	
  new	
  ArrayList();	
  
skuList.add("premiumUpgrade");	
  
skuList.add("gas");	
  
Bundle	
  querySkus	
  =	
  new	
  Bundle();	
  
querySkus.putStringArrayList(“ITEM_ID_LIST”,	
  skuList);	
  
	
  
//	
  アイテム情報を取得	
  
Bundle	
  skuDetails	
  =	
  mService.getSkuDetails(3,	
  getPackageName(),	
  “inapp”,	
  
querySkus);	



                                   Developers Summit 2013 Action !
Developers
  Summit

                   アイテム情報の参照(3)
                              	

•  アイテムの価格を取得する	
int	
  response	
  =	
  skuDetails.getInt("RESPONSE_CODE");	
  
if	
  (response	
  ==	
  0)	
  {	
  
	
  	
  	
  ArrayList	
  responseList	
  	
  
	
  	
  	
  	
  	
  	
  =	
  skuDetails.getStringArrayList("DETAILS_LIST");	
  
	
  	
  	
  	
  
	
  	
  	
  for	
  (String	
  thisResponse	
  :	
  responseList)	
  {	
  
	
  	
  	
  	
  	
  	
  JSONObject	
  object	
  =	
  new	
  JSONObject(thisResponse);	
  
	
  	
  	
  	
  	
  	
  String	
  sku	
  =	
  object.getString("productId");	
  
	
  	
  	
  	
  	
  	
  String	
  price	
  =	
  object.getString("price");	
  
	
  	
  	
  	
  	
  	
  if	
  (sku.equals(“premiumUpgrade”))	
  mPremiumUpgradePrice	
  =	
  price;	
  
	
  	
  	
  	
  	
  	
  else	
  if	
  (sku.equals(“gas”))	
  mGasPrice	
  =	
  price;	
  
	
  	
  	
  }	
  
}	
                                           Developers Summit 2013 Action !
Developers
Summit

                アイテムの消費(1)	

•  消費しないと再購入できない	
  –  消費型 :	
  購入が完了したら消費処理を実施	
  
  –  非消費型 :	
  購入が完了しても消費処理をしない	
                                 getPurchase()	

                                      Bundle
                        (INAPP_PURCHASE_ITEM_LIST, etc)	
                                                                Play	
  
             Your	
  
                             consumePurchase()	
               Store	
  
             App	
                                                                App	
                            SUCCESS/FAILURE	


                           Developers Summit 2013 Action !
Developers
  Summit
     Playストアからの非同期レスポンス(IABv2)
                             	


•  com.android.vending.billing.RESPONSE_CODE	
  
    –  レスポンス	
  
•  com.android.vending.billing.IN_APP_NOTIFY	
  
    –  Playストアサーバ上にある購入情報が更新されたことを示す	
  
•  com.android.vending.billing.PURCHASE_STATE_CHANGED	
  
    –  1つ以上のトランザクション情報	




                       Developers Summit 2013 Action !
Developers
Summit




                It’s your turn.



             ご清聴ありがとうございました


               Developers Summit 2013 Action !
Developers
  Summit
                       書籍紹介
RECOMMEND BOOK



• iPhone&Androidアプリ内課金プロ
  グラミング完全ガイド
• http://www.seshop.com/product/
  detail/14945/

• http://www.amazon.co.jp/dp/4798
  128279




                 Developers Summit 2013 Action !

Devsumi2013 15-C-1 実践!スマホアプリのマネタイズ!! ~マーケット把握術と iPhone&Androidプログラミングテクニック~

  • 1.
    Developers Summit 実践!スマホアプリのマネタイズ!! ~マーケット把握術と iPhone&Androidプログラミングテクニック~ 株式会社メタップス代表取締役CEO 佐藤航陽 パナソニックAVCマルチメディアソフト株式会社 加藤勝也 瀬戸健二 15-C-1 パナソニックAVCマルチメディアソフト株式会社 パナソニックAVCマルチメディアソフト株式会社 日高正博 #devsumiC Developers Summit 2013 Action !
  • 2.
    Developers Summit 登壇者紹介 佐藤 航陽 加藤 勝也 @metaps_sato @kacchi0516 スマートフォンの iOSプログラミング 未来を創る のスペシャリスト 瀬戸 健二 日高 正博 @rongon_xp @mhidaka 課金システムの Android大百科 地雷を知り尽くす 野生の羊 Developers Summit 2013 Action !
  • 3.
    Developers Summit I suggest your Next Action! Developers Summit 2013 Action !
  • 4.
    Developers Summit Action! MY RECOMMEND NEXT ACTION! モバイルアプリの可能性を感じてください デブサミで受けた刺激、アイデアをかたちに。 千里の道も… 最初の一歩を一緒に踏み出して見ませんか? Developers Summit 2013 Action !
  • 5.
    Developers Summit アプリのマネタイズ 個人ディベロッパーがアプリで稼ぐための収益化 戦略 15-C-1 佐藤 航陽 #devsumiC 株式会社メタップス 代表取締役CEO
  • 6.
    Developers Summit 自己紹介 佐藤航陽 Katsuaki Sato 株式会社メタップス 代表取締役CEO 1986年 福島生まれ 東京・US・シンガポール・香港で活動 サービス導入アプリは累計5,000万DL以上 http://www.metaps.com/
  • 7.
    Developers Summit アプリ市場のトレンド 売上トップ25位以内に占めるフリーミアムの割合 100% 96%
  • 8.
    Developers Summit アプリはどれぐらい儲かるの? Google Play AppStore 売上1~5位 1億円~ 2億円~ 売上6~10位 6,000万円 1億円 売上11~20位 3,000万円 6,000万円 売上20~30位 2,000万円 3,000万円
  • 9.
    Developers Summit 最も典型的な成功例 CPI広告 CPC広告
  • 10.
    Developers Summit 法人アプリが主流へ • 売上ランキング100位以内の95%が法人 • トップディベロッパーは初月に1,000万円以上 のプロモーション予算を投下している 個人開発者は不利?
  • 11.
    Developers Summit 個人ディベロッパーの狙い目 • Google Playはまだまだ個人でも通用する • 小型ディベロッパーが大ヒットを飛ばしている 3 4 1
  • 12.
    Developers Summit Google Playの特徴 • AppStoreのように広告と順位は比例しない • 面白いアプリはノンプロモでDLが集まる AppStore Google Play クオリティ重視 自由放任主義 順位変動が激しい 順位変動が少ない 人の目で判断 アルゴリズムで判断
  • 13.
    Developers Summit お金をかけずにDLを稼ぐ方法 ランキングの把握 ソーシャルメディアの活用 ASO(アプリストア最適化)
  • 14.
    Developers Summit Google Playランキングロジック インストール数 アンインストール数 アプリの起動 評価 【★の数】 アンインストされなければDLが少なくとも上位は狙える
  • 15.
    Developers Summit Androidはリリース30日が勝負 • 30日間だけ掲載される「人気の新着」を活用 人気の新着 30日目 人気の新着(非表示) 人気 人気 売上トップ 売上トップ
  • 16.
    Developers Summit Google Play 新着から流入数 開始7日間の獲得件数 人気の新着(無料) デイリーの自然流入数 50,000件 10位以内 3,000~5,000件 30,000件 10位~19位 2,000~3,000件 20,000件 20位~29位 1,000~2,000件 15,000件 30位~39位 500~1,000件
  • 17.
    Developers Summit ソーシャルメディアへのポスト • ゲームクリア時、アプリ起動時、スプラッシュ • 人の招待をうまく活用する Email facebook twitter mixi GREE LINE KAKAO 日本 45% 4% 6% 3% 7% 36% 0% 韓国 22% 5% 4% 0% 0% 0% 69%
  • 18.
    Developers Summit Bokete(ボケテ)の例 • 広告投下なしで10万DL 以上(Android版) • Twitterで面白い画像を ユーザが投稿して紹介 • 常に口コミがアプリ外で起 こり続ける
  • 19.
    Developers Summit レビュー媒体 • 大小50以上の媒体が存在する • 紹介してくれるかどうかはネタ次第
  • 20.
    Developers Summit ASO(アプリストア最適化) • キーワードによっては1日数百件程度の流入 • タイトル・ディスクリプションにワードを設定 • アイコン・スプラッシュなどデザイン面 キーワード アイコン スクリーン
  • 21.
    Developers Summit ユーザは何を検索するか? 時事ネタ・人物名・欲望系・アプリ名 アドバイスツーツでボリュームを判断 複合ワードはサジェストで判断できる
  • 22.
    Developers Summit アイコンは命 色 枠 線 細かさ 文字 光沢
  • 23.
    Developers Summit AppAnnieをフル活用 http://www.appannie.com • 競合調査 • アイコントレンド • 順位の把握 • 売上の把握
  • 24.
    Developers Summit Thank you!!
  • 25.
    Developers Summit iPhone(iOS)のアプリ内課金 実践!スマホアプリのマネタイズ!! ~マーケット把握術とiPhone&Androidプログラミングテク ニック 15-C-1 加藤 勝也 パナソニックAVCマルチメディアソフト(株) Developers Summit 2013 Action !
  • 26.
    Developers Summit 自己紹介 • パナソニックAVCマルチメディアソフト(株) • 業務でもプライベートでもスマートフォンアプリの 開発してます – でも元(?)組込み屋なのでハードも少々嗜む • Twitter @kacchi0516 • 個人サイト http://www.crossbridge.biz/ Developers Summit 2013 Action ! 2
  • 27.
    Developers Summit 何を販売できる? Developers Summit 2013 Action ! 3
  • 28.
    Developers Summit 販売できるプロダクト • コンテンツ(Content) – 電子書籍、雑誌、写真など有形のもの、 ゲム中のキャラクターやアイテムなど ー • 機能プロダクト(Functionality Product) – 事前に組込んでいた機能を購入することによって 解除して提供する Developers Summit 2013 Action ! 4
  • 29.
    Developers Summit 販売できるプロダクト • サービス(Service) – 音声のテキスト化や翻訳など一度限りのサービ スをユーザーに提供する • 定期購読(Subscription) – コンテンツやサービスを継続的に利用できるよう にする Developers Summit 2013 Action ! 5
  • 30.
    Developers Summit 販売できないプロダクト • 実物の商品やサービス – アプリケーションの中で提供できるものは 電子商品または電子サービスに限定 • ポルノ、誹謗、中傷、ギャンブルに関するもの – 当然と言えば当然・・・ Developers Summit 2013 Action ! 6
  • 31.
    Developers Summit Appleの審査 • 販売するプロダクトにもアプリ同様に Appleの審査が行われる つまりリジェクトされる可能もある Developers Summit 2013 Action ! 7
  • 32.
    Developers Summit どんなものがリジェクトされる? • カメラやジャイロセンサなどのiOSが提供する 基本的な機能に対して課金 • 現実世界でも利用できるアプリ内の通貨 Developers Summit 2013 Action ! 8
  • 33.
    Developers Summit どんな販売形式がある? Developers Summit 2013 Action ! 9
  • 34.
    Developers Summit プロダクトの販売形式 • Consumable(消費型)タイプ • Non-consumable(非消費型)タイプ • Auto-renewable subscriptions (自動更新購読)タイプ • Free Subscription(無料購読)タイプ • Non-renewing Subscription (非更新購読)タイプ Developers Summit 2013 Action ! 10
  • 35.
    Developers Summit Consumable(消費型)タイプ • 名前の通り消費するプロダクト – ユーザが何度でも購入できる – 回復アイテムとかゲーム中の通貨とか – ユーザがついつい課金してしまう ゲームバランスが大事?! • にゃ○こ大戦争のネコカンとか・・・ Developers Summit 2013 Action ! 11
  • 36.
    Developers Summit Non-consumable(非消費型)タイプ •ユーザが一度だけ購入できる (消費されない) • 広告の削除とか機能制限の解除とか – アプリ自体は無料(広告付き)、アプリ内課金で 広告を削除する • リストア機能がある – 再インストール時や他の端末に インストールしたとき Developers Summit 2013 Action ! 12
  • 37.
    Developers Summit Auto-renewable subscriptions (自動更新購読)タイプ • 一定期間有効なプロダクト – 期間が終了すると自動的に更新 – 期間は、1 週間・1 ヶ月・2 ヶ月・3 ヶ月・ 6 ヶ 月・1 年 • 雑誌とか新聞の定期購読 Developers Summit 2013 Action ! 13
  • 38.
    Developers Summit で、実装は? Developers Summit 2013 Action ! 14
  • 39.
    Developers Summit StoreKitフレームワーク • 基本的にStoreKitを通して(使って) AppStoreとやりとりを行う Developers Summit 2013 Action ! 15
  • 40.
    Developers Summit 最もシンプルな購入の流れ アプリ内課金が アプリケーション StoreKitフレームワーク AppStore 利用できるかチェック プロダクト情報は 問い合わせること Developers Summit 2013 Action ! 16
  • 41.
    Developers Summit 突然のリジェクト Developers Summit 2013 Action ! 17
  • 42.
    Developers Non-Consumable(非消費型)タイプには Summit リストア機能が必須 リストア機能が実装されていないと
リ ジェクト対象 • リストアが簡単にできる機能があるが開発者 が実装する必要! • リストアのためのボタンを設ける Developers Summit 2013 Action ! 18
  • 43.
    Developers Summit その他、注意点とか Developers Summit 2013 Action ! 19
  • 44.
    Developers Summit アプリ内課金の脆弱性 アプリ内課金のコンテンツを 無料で入手できてしまう Appleのサーバとのやり取りを、
別サーバに アクセスさせ改ざんしてしまう iOS5の時に問題になってAppleがiOS6で対策 開発者は独自サーバ経由で問い合わせるか 下記の対応を https://developer.apple.com/library/ios/#releasenotes/StoreKit/IAP_ReceiptValidati on/index.html Developers Summit 2013 Action ! 20
  • 45.
    Developers Summit テストするポイント • Non-Consumable(非消費型)プロダクトが 正しくリストアできるか • 意図せず複数個購入してしまわないか – ボタンを連打してしまっても大丈夫なように • 購入処理中にネットワークが切断されても 正しく処理が復旧するか etc... Developers Summit 2013 Action ! 21
  • 46.
    Developers Summit 最後に ぜひ、皆さんのアプリに アプリ内課金の導入を Developers Summit 2013 Action ! 22
  • 47.
    Developers Summit Androidのアプリ内課金   In-app Billing of Android 15-C-1 瀬戸 健二 パナソニックAVCマルチメディアソフト(株) Developers Summit 2013 Action !
  • 48.
    Developers Summit 自己紹介 Developers Summit 2013 Action !
  • 49.
    Developers Summit 自己紹介 •  瀬戸 健二(28)   –  パナソニックAVCマルチメディアソフト(株)   –  航空機エンターテイメントシステム開発、   モバイルアプリ開発   –  Android、Linux、マイコンなどが得意   –  元TechBoosterメンバー   –  Twi9er   •  @rongon_xp   Developers Summit 2013 Action !
  • 50.
    Developers Summit Androidのアプリ内課金 Developers Summit 2013 Action !
  • 51.
    Developers Summit 本日のテーマ •  アプリ内課金プログラミング完全ガイドでは   In-­‐app  Billing(IAB)  v2について解説   •  発売直後にIABv3が発表・・・。   •  今日はIABv3について   お話させて頂きます   Developers Summit 2013 Action !
  • 52.
    Developers IABv3特徴 Summit •  実装がとても簡単に。   –  v2では100行以上、v3では50行程度に。   •  非同期処理の排除とローカルキャッシング   –  高速なAPI実行が可能に。   –  セキュリティ向上   •  購入情報の管理   •  アイテム情報の参照   Developers Summit 2013 Action !
  • 53.
    Developers Androidアプリ内課金  -­‐  概要 Summit •  Playストアサーバ上に存在する購入情報を更新する   •  アプリからはPlayストアアプリを介してPlayストアサ ーバにアクセスする   購入情報 Developers Summit 2013 Action !
  • 54.
    Developers IABv2の購入シーケンス Summit Developers Summit 2013 Action !
  • 55.
    Developers IABv2のアプリ構成 Summit •  課金リクエストを送信するためのサービス   •  非同期メッセージを受け取るためのブロードキャストレシーバ   •  アプリケーションに通知するためのレスポンスハンドラと   オブザーバ Developers Summit 2013 Action !
  • 56.
    Developers IABv3の購入シーケンス Summit getBuyIntent() Bundle (RESPONSE_CODE, BUY_INTENT) Play   Your   Store   App startIntentSenderForResult() App IAB API Bundle (RESPONSE_CODE, INAPP_PURCHASE_DATA, 同期レスポンス INAPP_SIGNATURE) Developers Summit 2013 Action !
  • 57.
    Developers IABv3のアプリ構成 Summit •  同期処理になったため、アプリ構成がシン プルになった Playストアアプリ アプリ本体 InAppBilling   bind Service セキュリティ Developers Summit 2013 Action !
  • 58.
    Developers Summit アイテムの購入 Developers Summit 2013 Action !
  • 59.
    Developers Summit アイテムの購入(1) •  IInAppBillingService.getBuyIntent()で購入画面を 起動   //  購入画面を起動するためのインテントを取得   Bundle  buyIntentBundle  =  mService.getBuyIntent(3,  getPackageName(),        sku,  "inapp",  "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ");     PendingIntent  pendingIntent  =   buyIntentBundle.getParcelable("BUY_INTENT");     //  インテントを使って購入画面を起動する   startIntentSenderForResult(pendingIntent.getIntentSender(),        1001,  new  Intent(),  Integer.valueOf(0),  Integer.valueOf(0),        Integer.valueOf(0));   Developers Summit 2013 Action !  
  • 60.
    Developers Summit アイテムの購入(2) •  購入結果はonAchvityResult()に返される @Override   protected  void  onAchvityResult(int  requestCode,  int  resultCode,  Intent  data)  {          if  (requestCode  ==  mRequestCode)  {                                    int  responseCode  =  data.getIntExtra("RESPONSE_CODE",  0);              String  purchaseData  =  data.getStringExtra("INAPP_PURCHASE_DATA");              String  dataSignature  =  data.getStringExtra("INAPP_DATA_SIGNATURE");                                if  (resultCode  ==  RESULT_OK)  {                  //  購入処理              }        }   } Developers Summit 2013 Action !
  • 61.
    Developers Summit アイテムの消費 Developers Summit 2013 Action !
  • 62.
    Developers Summit アイテムの消費(1) •  IABv3ではすべての購入情報がPlayストア サーバで管理   •  消費しないと再購入できない –  消費型 :  購入が完了したら消費処理を実施   –  非消費型 :  購入が完了しても消費処理をしない   Developers Summit 2013 Action !
  • 63.
    Developers Summit アイテムの消費(2) •  消費型アイテムの場合はconsumePurchaseを実 行することで再購入できるようにする   •  INAPP_PURCHASE_DATAに含まれている purchaseTokenを指定する int  response  =          mService.consumePurchase(3,  getPackageName(),   purchaseToken); Developers Summit 2013 Action !
  • 64.
    Developers Summit トラブルシューティング Developers Summit 2013 Action !
  • 65.
    Developers Summit うまく動かないとき(1) •  テストアカウントを設定していない   –  Androidデバイスのプライマリアカウントに設定   •  公開鍵をアプリに設定していない   –  Developer  Consoleで取得可能   •  Playストアにアプリ/課金アイテムを登録し た直後   –  反映されるのに数時間〜数日かかることがある   Developers Summit 2013 Action !
  • 66.
    Developers Summit うまく動かないとき(2) •  アプリの署名が不正   –  Playストアに登録している署名と一致している 必要がある   •  アプリの公開設定   –  公開設定にすると動作する場合も・・・。 Developers Summit 2013 Action !
  • 67.
    Developers Summit どちらを使えばいいのか? •  v3は定期購読未サポート   –  アプリ内課金アイテムのみであればv3でok   •  簡単に実装したいのであればv3   Developers Summit 2013 Action !
  • 68.
  • 69.
    Developers Summit 参考資料 Developers Summit 2013 Action !
  • 70.
    Developers Summit アイテムの販売形式 •  消耗型   –  ゲーム上のお金、ポーションなど使用すると消耗してしまうもの   •  非消耗型   –  アプリ上の機能制限のアンロックなど、購入することで永続的に効 果が持続されるもの   •  購読型   –  定期的な課金によって効果が持続されるもの Developers Summit 2013 Action !
  • 71.
    Developers IABv3  Sample  App Summit Developers Summit 2013 Action !
  • 72.
    Developers IABv3  Sample  App Summit •  サンプルアプリケーションをダウンロード   –  Extras  -­‐>  Google  Play  Billing  Library   •  Eclipseにインポート   •  サンプルアプリを修正   –  パッケージ名を変更   –  公開鍵を設定   •  アプリをPlayストアにアップロード   •  アップロードしたapkをadb  install Developers Summit 2013 Action !
  • 73.
    Developers INAPP_PURCHASE_DATA Summit •  Playストアより得られる購入情報 02-­‐11  10:27:39.908:  D/IabHelper(7688):  Extras:Bundle[{INAPP_PURCHASE_DATA={   "orderId":"12999763169054705758.1368594429841055",   "packageName":"org.dyndns.ideon.trivialdrivesample",   "productId":"gas",   "purchaseTime":1360578449000,"purchaseState":0,   "purchaseToken":"w…,   RESPONSE_CODE=0}] Developers Summit 2013 Action !
  • 74.
    Developers Summit 購入シーケンス(IABv2) Developers Summit 2013 Action !
  • 75.
    Developers Summit 購入シーケンス(IABv3) 購入情報 購入情報 IABv3では不要 Developers Summit 2013 Action !
  • 76.
    Developers Summit アイテム情報の参照(1) •  購入可能なアイテム情報を取得可能   –  セール価格など簡単に実現 getSkuDetails() Bundle Play   Your   (RESPONSE_CODE, DETAILS_LIST) Store   App App Developers Summit 2013 Action !
  • 77.
    Developers Summit アイテム情報の参照(2) •  getSkuDetails()でアイテム情報を参照 //  サービスIDのリストを作成   ArrayList  skuList  =  new  ArrayList();   skuList.add("premiumUpgrade");   skuList.add("gas");   Bundle  querySkus  =  new  Bundle();   querySkus.putStringArrayList(“ITEM_ID_LIST”,  skuList);     //  アイテム情報を取得   Bundle  skuDetails  =  mService.getSkuDetails(3,  getPackageName(),  “inapp”,   querySkus); Developers Summit 2013 Action !
  • 78.
    Developers Summit アイテム情報の参照(3) •  アイテムの価格を取得する int  response  =  skuDetails.getInt("RESPONSE_CODE");   if  (response  ==  0)  {        ArrayList  responseList                =  skuDetails.getStringArrayList("DETAILS_LIST");                for  (String  thisResponse  :  responseList)  {              JSONObject  object  =  new  JSONObject(thisResponse);              String  sku  =  object.getString("productId");              String  price  =  object.getString("price");              if  (sku.equals(“premiumUpgrade”))  mPremiumUpgradePrice  =  price;              else  if  (sku.equals(“gas”))  mGasPrice  =  price;        }   } Developers Summit 2013 Action !
  • 79.
    Developers Summit アイテムの消費(1) •  消費しないと再購入できない –  消費型 :  購入が完了したら消費処理を実施   –  非消費型 :  購入が完了しても消費処理をしない getPurchase() Bundle (INAPP_PURCHASE_ITEM_LIST, etc) Play   Your   consumePurchase() Store   App App SUCCESS/FAILURE Developers Summit 2013 Action !
  • 80.
    Developers Summit Playストアからの非同期レスポンス(IABv2) •  com.android.vending.billing.RESPONSE_CODE   –  レスポンス   •  com.android.vending.billing.IN_APP_NOTIFY   –  Playストアサーバ上にある購入情報が更新されたことを示す   •  com.android.vending.billing.PURCHASE_STATE_CHANGED   –  1つ以上のトランザクション情報 Developers Summit 2013 Action !
  • 81.
    Developers Summit It’s your turn. ご清聴ありがとうございました Developers Summit 2013 Action !
  • 82.
    Developers Summit 書籍紹介 RECOMMEND BOOK • iPhone&Androidアプリ内課金プロ グラミング完全ガイド • http://www.seshop.com/product/ detail/14945/ • http://www.amazon.co.jp/dp/4798 128279 Developers Summit 2013 Action !