【facebook】インスタントゲーム広告実装について


※こちらは2018年に弊社ブログで掲載していた内容と同様の内容の記事になります。

こんにちは👀
月島ファクトリープログラマーのmotchyと申します👶

このたび、弊社で作成したfacebookインスタントゲームに広告表示対応を行いました。
今回は、この対応に伴い使用したAudience Networkや広告表示の実装方法についてご紹介させていただきます。


*:.。..。.:+·ﾟ·✽:.。..。.:+·ﾟ·✽:.。..。.:+·ﾟ·✽:.。..。.:+·ﾟ·*:.。..。.:+


### ★広告を表示したゲーム

弊社では現在、「Space Evaders」「Fruit Paradise」と２つのインスタントゲームをfacebookにあげております。

今回は、「Fruit Paradise」に広告表示対応を行いました。

※ゲームをプレイしてみたい人はコチラからドウゾヽ(ﾞ·ω·ﾞ)人(ﾞ·ω·ﾞ)ゝ
[「Space Evaders」](https://www.facebook.com/profile.php?id=100063896287003)
[「Fruit Paradise」](https://www.facebook.com/FruitParadiseM/?modal=admin_todo_tour)

※ゲームの開発記が気になる方はコチラをドウゾヽ(ﾞ·ω·ﾞ)人(ﾞ·ω·ﾞ)ゝ
[「Space Evaders」](https://qiita.com/moon_q/items/33134e2acb6d3a61e561)
[「Fruit Paradise」](https://qiita.com/moon_q/items/68e26a3d0bb8816a4608)


*:.。..。.:+·ﾟ·✽:.。..。.:+·ﾟ·✽:.。..。.:+·ﾟ·✽:.。..。.:+·ﾟ·*:.。..。.:+


### ★インスタントゲームの広告の種類

2018/12現在、facebookのインスタントゲームでは、下記の種類の広告を配信することができます。今回弊社では、リワード動画の表示対応を行いました。

・インタースティシャル動画広告
　スキップ可能、完全視聴で収益発生

・リワード動画
　スキップ不可能、完全視聴で収益発生


*:.。..。.:+·ﾟ·✽:.。..。.:+·ﾟ·✽:.。..。.:+·ﾟ·✽:.。..。.:+·ﾟ·*:.。..。.:+


### ★開発手順

広告配信はfacebookのAudience Networkを使用して対応しました。
そもそも、Audience Network･･･って、ナニ_φ(·ω·` )？
という感じですが、すごくざっくりいうと、facebookが提供している広告配信サービス的なものな認識。

対応は、下記URLの手順と要件を参考に実施しました。
「Audience Networkでインスタントゲームの収益化を始める」

以下、上記の手順に沿って行った実装～リリースについて、順を追ってご説明させていただきます。

##### 1.Facebookアプリにインスタントゲームを設定

今回は、既存のゲームに対して広告対応を行うため、ここはパス。
まずはゲームを作ってねということです。

##### 2.アプリダッシュボードからAudience Networkの利用を開始

「Audience Networkでインスタントゲームの収益化を始める」の「Audience Networkの利用開始」という項目に、とっても丁寧に書いてくれてます。
ただ、アプリ管理者の権限がないと実施できない項目なので、この設定ができないときは、権限を付与してもらうか、アプリ管理者に実施してもらいましょう。
アプリを作った本人ならば大丈夫です。

##### 3.収益化マネージャを使用して、Audience Network広告の配置を作成

作成方法や各項目の役割については下記を参照してください。
「広告スペースについて」
「広告スペースを作成する」

##### 4.支払い情報の追加

言葉のままです。Audience Networkからの支払いを受けるために必要な設定項目です。
納税者識別番号や納税関連書類について入力や提出が求められるので、企業で使用する場合は、偉い人に設定してもらうようお願いしましょう。
「支払い情報の追加」
ここまで設定をすると、実装後に広告が見れるようになります。

##### 5.インスタントゲームのソースコードに広告配置を統合

3 の工程で設定される配置IDを使用して、広告配置の実装を行います。
下記のURLから、実装するにあたっての前提条件の記載やデモソースが見れるので、こちらを参考にするといいと思います。
「Monetizing your game with Audience Network」

実装工程は、インスタンスの生成⇒ロード⇒表示 これだけです。
なお、わたしは、下記リファレンスの例に沿って実装しました。
「API Reference v6.2」

下記状況を考慮した実装について
⓵PCから広告表示をしようとした場合
後続の「6.テスト」にも記載していますが、インスタントゲームの広告はPCでは表示できません。この場合、getSupportedAPIs( ) の引数に広告取得APIを渡し、広告を取得するAPIがサポートされているか否かを確認する必要があります。
サポートされていない場合（PCの場合）にはそれ相応の実装を行う必要があります。
わたしは、PCからは広告は見れない旨のメッセージと、通常プレイボタンを表示する対応をおこないました。
⓶超新規で作成したユーザーで広告表示をしようとした場合
facebookでは、ユーザー情報等からターゲティングを行い表示する広告を配信しています。そのため、facebookに登録したばかりのユーザー等はターゲティングが行えず表示する広告を取得できません。
この場合は「表示できる広告がありませんよー」という例外がスローされます。
わたしは、表示できる広告がない旨のメッセージと、通常プレイボタンを表示する対応をおこないました。

「Monetizing your game with Audience Network」の、「ベストプラクティスとトラブルシューティング」の対応をちゃんとしていれば、エラーハンドリングについて改めて意識することはないですが、ターゲティングができていないユーザーに対して例外がスローされることにちょっと感動したので、追記させていただきました。
いじょ。

##### 6.テスト

「Monetizing your game with Audience Network」にも記載がありますが、広告表示のテストは、デスクトップやエミュレーターでは実施できません。
そのため、広告表示のテストは、モバイルデバイスからテストを実施する必要があります。
　　　
【課題】
上記に伴い、テスト時は修正した資産のアップロード⇒テストを繰返し実施していたのですが、修正がはいるたびにアップロードをしたため、必要以上にバージョンがあがってしまいました。
対象のアプリに紐付くテスト用のアプリを作成してみましたが、テスト用のアプリIDに対して資産をアップロードしても、紐付いている本番用のアプリのバージョンも一緒にあがってしまいました。
今回は暫定対応として、改修対象のアプリと紐付かないまったく別のアプリをテスト用に登録し、広告表示のテストはそちらでおこないました。

んー、まわりくどい･･･めんどくさい(´·ω·`)

テスト方法については、もっといい方法があると思うのですが・・・模索中です。
いい方法をご存知の方がいらっしゃったら、コメントをください・・・(´·ω·`)
バージョンをバカバカ上げるような修正をしなければいいじゃないか。。。というコメントはご勘弁ください・・・ ﾜｰﾝ。

##### 7.リリース

ここで少し要注意。
広告の審査とアプリの審査は、別で実施しているようです。
facebook for developersの申請が通っても、facebook for businessのレビューが承認されないと、広告の表示はされません。


*:.。..。.:+·ﾟ·✽:.。..。.:+·ﾟ·✽:.。..。.:+·ﾟ·✽:.。..。.:+·ﾟ·*:.。..。.:+

### ★全体を通して

初めてだらけだったので、時間もかかり、戸惑う部分も多かったですが、振り返ってみると、広告表示って思ったよりも簡単にできるんだなと思いました。
小規模ゲームでも、さくっと広告がつけられるのはとっても魅力的なサービスだなと思います。
設定がすこーしだけ面倒ですが、実装自体は簡単なので、インスタントゲームを作るならば、広告表示は入れたほうがいいと思います。

今後は、より効率よく収益が上げられるように、収益化マネージャーの設定等もお勉強してみたいと思います。（いまはほとんどデフォルト）
なにか面白いことがあったら、ブログに書こうかな。


以上です。
最後まで読んでいただき、ありがとうございました。