Googleが提供する広告プラットフォーム「AdMob」

niko_yuwono氏:はじめまして、Nikoと申します。Googleという会社で勤めています。本日は個人登壇として登壇しますので、公式な情報として考えないでお願いします。

本日はトピックとして、「Monetization beyond IAP with AdMob」というタイトルになりますが、ちょっと先にお聞きしたいことがありまして。今来てるみなさんの中に、どれくらい「AdMob」という商品を聞いたことある方がいらっしゃいますか?

(会場挙手)

あっ、けっこういますね。実際に個人のアプリとか、今勤めている会社で使っていただいてる方々はどれくらいいらっしゃいますか?

(会場挙手)

あぁ……もっと欲しいんだけど(笑)、十分です!

(会場笑)

ありがとうございます。本日は、課金以外に「広告」というマネタイゼーションの方法を紹介したいと思います。

AdMobは、Googleが提供している広告のプラットフォームになります。いろんなフォーマットもありまして、もちろんおそらくみなさんが馴染みのあるバナーとか、インタースティシャルとか。もしかして「邪魔」と思ってるかもしれないですが、今は本当にいろんなフォーマットがあります。もし昔使ったことがある方々は、もう1度見てみてください。

モバイル広告の種類

1番最初に、AdMobとは。先ほども申し上げたんですが、Googleが提供している広告のプラットフォームで、国内外合わせて100万以上のアプリに導入済みです。あとGoogleの広告ネットワークによる豊富かつクリーンな広告の在庫も、いっぱいあります。Googleの機械学習によって、1番ユーザーに最適な広告を配信するというシステムになります。

先ほども言いましたが、昔はただ単純にバナーとインタースティシャルだけでした。今はインタースティシャルのビデオであったり、ネイティブというフォーマットもあって、自分で自分のアプリのデザインに合わせて広告をカスタムしてレンダリングすることも可能になります。

例えばこちらはインフィードネイティブというものになりまして、バナーと違って……バナーはずっと固定で下にありますが、ネイティブの場合は例えばスクロールの中にいきなり広告が出たりとか。

あと最後のほうはリワード広告というものになりまして、動画リワードというものは動画広告を見たあとに、ユーザーが報酬をもらえる。こちらは一般的にゲームの中に使われていますが、もちろんほかのユーズケースもいろいろあって、例えばアラームアプリとか。いくつかのアラーム音がプレミアム音になっていて、課金かそれとも広告で……課金で購入するとずっと使える音になりますが、広告を使うことによって1日とか、3~4回とか使える音になります、とか。

その場合、もともとユーザーは試したかったんだけど、課金はなかなかハードルが高いので、先にリワード動画広告を見ることによって、プレミアムで手の届かないものを試すことが可能になります。

動画リワード広告の特徴

本日もっと細かく紹介したいと思うフォーマットは、こちらの動画リワード広告になります。動画リワード広告は、例えばユーザーにボタンを……もしかしたらみなさん、こんなフローの広告を見たことがあるかもしれないですが。

「広告を見る」というボタンを押したあとに動画広告が表示されてて、15秒とか30秒とかいろんな長さがあって。それが終わったあとに「アプリをインストールしますか?」というエンドカードが表示されて。それをクローズするか、もしくは「インストール」というボタンをクリックしたら、ユーザーが報酬をもらえる。

その動画リワードの詳細になります。

もちろん最初のほうは、明確に「なにがもらえるか」は重要だと思います。例えばただ単純に「広告見ましょう!」と書くだけでは、ユーザー的にはあまりおもしろくないかもしれない。例えば「広告を見ることによってコイン等が2倍になる」という文言が必要になります。

あと、途中でスキップすることもできます。もちろん、もしスキップしたら報酬はもらえない。先ほど申し上げたんですが、終わったあとにクローズするかインストールするかしたあとに、ユーザーが報酬をもらえます。あとは、ゲームエンジンもサポートしています。もちろんAndroid、iOS、両方とも対応しています。

AdMobで動画リワード広告を導入する手順

次は、AdMob動画リワード広告の導入の手順になります。1番最初はデザインで、2番目は広告ユニットIDの作成で、最後は実装になります。

1番最初は、デザイン。デザインは広告のデザインではなくて……もちろん広告は広告主が自分でデザインして、AdMob経由とか、もちろん他社のネットワークや、メディエーションという機能でも入れられます。デザインは「ロジックデザイン」と「配置デザイン」になります。

ロジックのデザインはなぜ重要かというと、これがまずかったらそもそも広告がユーザーにあまり影響を与えないかもしれないとか、自分にもあまり収益が出ないとか。

例えば広告リクエストのタイミングとか……ユーザーが「広告を見る」というボタンを押したあとにリクエストし始めると、動画広告はほかの広告よりちょっと容量が多めですので、ローディングの時間が少しかかります。

ですので、先にあらかじめリクエストしておいてキャッシュに入れて、ユーザーが「広告を見る」というボタンを押したあとにすぐに表示できるよう、設定していただいたほうがいいと思います。

課金とかぶらないように報酬を設定

次は、広告の表示回数の上限。こちらも重要だと思っています。理由としては、例えばユーザーは広告だけをいっぱい見ていて……もちろんそれも収益には入りますが、フリーコンテンツとしてずっと上げると、自分が持っているコンテンツがなくなるかもしれません。先ほどのアラームのアプリが、いつも動画広告で1日5回とか使えると、全部の音が試せるのであればもうユーザーはそのアプリ自体を「あまりおもしろくない」と思うことになるかもしれません。

ほかの例としては、例えばゲームで特別なキャラクター。もしこの動画広告の上限がなければずっと動画広告でマイニングして、コインなどがいっぱいもらえて、全部のキャラクターがゲットできてしまえば、ユーザー自体が「あっ、もうおもしろくない」と。

ですので、上限を設定することによって、ユーザーもゲームやアプリとしてずっと「おもしろい」と思い続けられることが重要と思います。

ロジックデザインの最後のところは、課金とかぶらないような報酬のバリューの設定になります。例えば今もしみなさんが、課金やほかのサブスクリプションのマネタイゼーションモデルを使っている場合に、ベストプラクティスとしては、広告でゲットできる報酬は課金でゲットできるものと別にしたほうがいいと思います。

例えば、「課金は1ダイヤモンドでゲットできます。広告は10ゴルド、1ダイヤモンドは100ゴルドで購入できます」。理由としては、もし1広告で1ダイヤモンドもらえるなら、全ユーザーが課金しなくなるかもしれない。いきなりみなさんの収入がなくなるかもしれない(笑)。それはもちろん、望ましくはないと思います。

広告の配置について考える

次は配置のデザインです。もちろんこの動画リワード広告は収益のためだけのものではなくて、例えばユーザーのリテンションであったり、ユーザーの1セッションの長さや、ユーザーエンゲージメントを高めるためのツールとして考えてもいいと思います。

例としては、ユーザーリテンションを高めるための配置。ゲームのボスで3回連続負けた場合に、「広告を見る」オプションを表示して、なにかパワーアップアイテムをもらえるとか、「回復しますか?」とか。回復はもちろん、課金で回復するか動画広告で回復するか。いろんなケースがあって、こちらのほうはほとんどゲームが一般的かと思います。あとは、課金率が低いアイテムを動画リワード広告で購入させるという手もあります。

次に、広告ユニットIDの作成になります。広告ユニットIDの作成は本当に簡単で、1番最初にAdMobのアカウントを作成していただいて、そのあと「動画リワード」のフォーマットを選んでいただいて、そのあと広告ユニットIDの名前を記入していただいて、最後は報酬のバリューとタイプ。

例えばこの広告ユニットIDは1ダイヤモンドとか、この広告ユニットIDは100ゴルドとか。それはこちら側で設定することが可能です。もちろん途中で変えられるんですが、激しい変化はあまりお勧めはしていない。例えばもともと100ゴルドなのに10ゴルドにしたら、ユーザーからのクレームも来るかもしれません。

AdMobの実装

最後は、実装のところです。実装は、本日はAndroid側を説明させていただきます。1番最初にGradleのところで、play-services-adsというライブラリか、firebase -adsというライブラリ、両方とも使えますので1つ選んでいただければ大丈夫と思います。

次は簡単で、もちろんアプリケーションクラスでも大丈夫ですが、こちらのAdMob SDKを初期化していただいて。1回だけで十分ですので、アプリケーションクラスでもメインアクティビティでも、アプリの設計によってお任せします。

そのあと、イベントリスナーの設定になります。

イベントリスナーはいろいろありますが、この3つが1番重要と思います。1番最初は、「onRewardedVideoAdLoaded」というイベントになりまして、こちらのほうは動画リワード広告がロードされたときのイベント。2番目は「onRewarded」というイベントになりまして、ユーザーに報酬を与える際のイベント。最後のほうは「onRewardedVideoAdFailedToLoad」というイベントになりまして、動画リワード広告のリクエストが失敗した場合のイベントになります。

もちろんこちらのほうは、名前どおりそれぞれの対応ができます。のちほどonRewardedのほうは説明いたします。

イベントリスナーを設定したあとに、広告をリクエストするという行動を説明します。できるだけ早めにリクエストして、キャッシュする。こちらは先ほども申し上げたように、例えばユーザーが「広告を見る」というボタンをクリックしたあとにロードをリクエストし始めると、ちょっと時間がかかります。ぐるぐるローディングすると、もしかしたらユーザーがイライラしたりとか、「なんですぐ出ないの?」とかなるかもしれない。

ですので早めにリクエストしてキャッシュしていただければ、ユーザーが「広告を見る」というボタンを押すタイミングですぐに表示することが可能です。

次に、動画リワード広告はシングルトンデザインを利用していますので、SDKが用意しているインスタンスを利用する。下のほうでも見れますが、「MobileAds.getRewardedVideoAdInstance」という関数があって、こちらのほうは動画リワード広告のインスタンスを取得することが可能です。

そして3番目のポイントは、スレッドの管理はSDK側で行っているので、リクエストするときにはわざわざバックグラウンドのスレッドで行うのではなく、メインスレッドでリクエストすることをおすすめしています。

リクエストするときはただ単純に、先ほど設定した広告ユニットIDをこちらのほうで入れていただいて、「mRewardedVideoAd.loadAd」という関数プラス、「AdRequest」というオブジェクトを作成していただければ、もうこちらで十分です。

次は表示する部分になります。

先ほどすでに申し上げたように、動画リワード広告はシングルトンというデザインになりますので、メイン画面でリクエストを行ってもゲームの途中でアクセスすることが可能です。ただ、本当にその動画広告自体がロード完了したかどうかを確認するために、この「isLoaded」という関数を呼んでいただければ、確認することが可能です。もちろん、もしfalseの場合には表示することは不可能になります。

最後のところなんですが、ユーザーに報酬を与えるところになります。

もちろんユーザーに報酬を与えないとまたクレームになるかもしれないので、こちらのほうもあらかじめ実装してください。

先ほどの「onRewarded」というイベントリスナーが動画を見終わったあとに呼ばれて、そのあとリワードのタイプとバリューを取得することが可能ですので、例えば自分の社内のサーバーのAPIに送ったりとか、Firebase Analyticsにイベントを送ることは、こちらのほうで行えます。

私からは以上ですが、もしなにか質問がありましたら懇親会でぜひ、声かけてください。以上、ありがとうございます。

(会場拍手)