前回は、無停止のF.O.Xを支えるインフラ技術について紹介しました。今回はスマートフォンの広告効果測定で欠かせないSDKの開発について紹介します。なぜスマートフォンの広告効果測定にSDKが必要なのか、またSDK開発で重要となるミドルウェアの対応方法についても解説します。
PC広告とスマートフォン広告の違い
PC広告の場合はWeb広告が主流です。Web広告で効果測定を行う場合は、Web上で完結するため、セッション間で同一ユーザを特定して測定が可能です。具体的には、コンバージョンページ上にHTMLのタグを埋め込みます。各ページに埋め込まれたHTMLのタグからサーバへリクエストが送られ、これらをサーバ側で照合して効果を測定しています。
スマートフォン広告の場合も、広告のリンク先がWebの場合にはWeb広告と同様にして測定が可能です。しかしスマートフォンアプリのダウンロードを促す広告の場合、Web広告のようにHTMLタグによる測定は行えません。なぜなら広告のリンク先がWebブラウザからアプリのマーケットになってしまうため、セッションが途切れてしまうからです。以下が通常の広告とスマートフォンアプリのダウンロード広告の遷移図です。
スマートフォンアプリのダウンロード広告の効果測定
スマートフォンアプリの広告効果測定を行う場合、F.O.XではiOS/AndroidそれぞれのSDKを提供しており、それをアプリに組み込むことによって、アプリのインストール単位でどの広告から流入したかという効果測定を可能にしています。
ネイティブSDKをミドルウェアへ対応させるには
スマートフォンアプリは、効率化を目的としてミドルウェアと呼ばれるツールを使用し開発することが増えてきています。ミドルウェアを使用する目的の1つに、開発工数の削減があります。なぜ開発工数を削減できるのか、その理由は以下の3点です。
- iOS/Androidの同時開発が可能
- 多くのミドルウェアでは、1つのソースからiOS/Android両方のアプリを制作することができます。たとえば、Unityというミドルウェアを使えば、iOS、Android、Windowsなど様々なOSに対応したアプリを同時に開発することができます。
- 開発言語の習得工数を削減できる
- ミドルウェアを使うことによって、開発する言語を標準の言語から変更することができます。たとえば、iPhoneでは標準の開発言語はObjectiveCですが、Adobe AIRというミドルウェアを使えばActionScript3でも開発が可能になります。ObjectiveCを習得する工数が削減できることになります。
- ショートコードを利用できる
- ミドルウェアでは、よく使うショートコードが予め用意されています。それらを使用することによって、開発工数の削減をすることができます。たとえば、Cocos2d-xというミドルウェアでは、アクションゲームに使われる部品が多く用意されています。
スピードが求められるスマートフォン開発において、開発工数を削減できるミドルウェアの重要性は増しています。昨今では、Unity、Adobe AIR、Cocos2d-xなど様々なミドルウェアが存在しています。F.O.Xでは、それぞれのミドルウェアの言語やツールに対応したSDKを開発して提供をしています。
ミドルウェア対応における開発のポイントを、今年2013年5月に対応したCocos2d-xを例にして以下に紹介します。Cocos2d-xは、2Dゲームを開発することに適したオープンソースのミドルウェアで、現在ソーシャルゲームを中心に利用が進んでいます。
開発言語をそろえる
Cocos2d-xの開発言語には、C++かLuaが用意されています。開発者はC++かLuaでコードを書いているので、SDKのメソッドもそれらの言語から呼び出せるようにします。通常F.O.Xが提供しているSDKは、iOSであればObjectiveC、AndroidであればJavaでメソッドを記述しています。そこで、ネイティブの言語からミドルウェアの言語を呼び出せるようにラッパーを作成します。
たとえばiOSの場合、C++からObjectiveCのメソッドを呼び出すために、mmファイルを用意します。mmファイルには、C++とObjectiveCを両方書くことができるためです。Cocos2d-xの開発者は、mmファイルに書かれたC++のメソッドを呼ぶことによって、ObjectiveCのメソッドを実行できます。
アプリの開発環境に対応する
ミドルウェアを使ったアプリ開発の場合、通常のネイティブアプリの開発とは異なった開発環境を使用していることがあります。たとえば、iOSではXcodeが、AndroidではEclipseが標準の開発環境ですが、Unityでは独自の開発環境が提供されています。使用している開発環境によって、提供するファイルの形式や導入の手順が変わってくるので、使用している開発環境に合わせて開発する必要があります。
Cocos2d-xのときは、iOSはXcodeで、AndroidはEclipseを使って開発していることを想定して、開発を行いました。そのためiOSとAndroidで提供するファイルも導入の手順も別にしています。一方、Adobe AIRやUnityでは独自の開発環境を使用していることを前提にしてSDKの開発を行ったため、iOSとAndroidのSDKを1つのパッケージとして提供しています。さらにUnityではGUIでメソッドを追加できるようなインターフェースも提供しています。
このようにアプリ開発者がスムーズに導入できるよう、開発環境に適した形式で提供しています。