More Related Content
Similar to Devsumi2013 15-C-1 実践!スマホアプリのマネタイズ!! ~マーケット把握術と iPhone&Androidプログラミングテクニック~ (20)
More from Masahiro Hidaka (20)
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 !
- 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/
- 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万円
- 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
クオリティ重視 自由放任主義
順位変動が激しい 順位変動が少ない
人の目で判断 アルゴリズムで判断
- 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で面白い画像を
ユーザが投稿して紹介
• 常に口コミがアプリ外で起
こり続ける
- 20. Developers
Summit
ASO(アプリストア最適化)
• キーワードによっては1日数百件程度の流入
• タイトル・ディスクリプションにワードを設定
• アイコン・スプラッシュなどデザイン面
キーワード アイコン スクリーン
- 21. Developers
Summit
ユーザは何を検索するか?
時事ネタ・人物名・欲望系・アプリ名
アドバイスツーツでボリュームを判断
複合ワードはサジェストで判断できる
- 23. Developers
Summit
AppAnnieをフル活用
http://www.appannie.com
• 競合調査
• アイコントレンド
• 順位の把握
• 売上の把握
- 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
- 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
- 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
- 37. Developers
Summit Auto-renewable subscriptions
(自動更新購読)タイプ
• 一定期間有効なプロダクト
– 期間が終了すると自動的に更新
– 期間は、1 週間・1 ヶ月・2 ヶ月・3 ヶ月・
6 ヶ 月・1 年
• 雑誌とか新聞の定期購読
Developers Summit 2013 Action ! 13
- 39. Developers
Summit
StoreKitフレームワーク
• 基本的にStoreKitを通して(使って)
AppStoreとやりとりを行う
Developers Summit 2013 Action ! 15
- 40. Developers
Summit
最もシンプルな購入の流れ
アプリ内課金が アプリケーション StoreKitフレームワーク AppStore
利用できるかチェック
プロダクト情報は
問い合わせること
Developers Summit 2013 Action ! 16
- 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
- 47. Developers
Summit
Androidのアプリ内課金
In-app Billing of Android
15-C-1 瀬戸 健二
パナソニックAVCマルチメディアソフト(株)
Developers Summit 2013 Action !
- 49. Developers
Summit
自己紹介
• 瀬戸 健二(28)
– パナソニックAVCマルチメディアソフト(株)
– 航空機エンターテイメントシステム開発、
モバイルアプリ開発
– Android、Linux、マイコンなどが得意
– 元TechBoosterメンバー
– Twi9er
• @rongon_xp
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 !
- 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 !
- 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 !
- 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 !
- 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 !
- 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 !
- 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 !