Google Driveにはユーザーデータだけでなく、アプリケーション個別のデータを保存する機能があります。この機能でAndroid端末からクラウドデータセーブを行う実験をします。
配布物(ソースコードとバイナリ)と、使用方法については、「Google Driveでクラウドセーブ」をご覧ください。
このプログラムで使用しているGoogle Drive App Data機能を動作させるには、以下の作業が必要です。
この後は、cloudappdataをあなたのアプリとして再ビルドして使用するまでの手順を示します。なお、後半には「Google Playストアへのアプリの登録が不要」「Google Playゲームサービスの使用登録が不要」「Google Mobile Service(GMS)が不要」となる手順の解説も行います。
当方が配布しているcloudappdataのソースは、そのままビルドすると「net.gorry.com.example.cloudappdata」という識別子のアプリとして完成します。この識別子は当方がすでに公開アプリとして使用しているため、あなたのアプリとして登録することはできません。
そのため、cloudappdataをあなたのアプリとするには、まず識別子を変更する必要があります。以後、あなたのアプリのための識別子を「org.hoge.com.example.cloudappdata」にするものとして解説を行います。
以上で、ビルドしたアプリは「org.hoge.com.example.cloudappdata」となり、新しいアプリとしてGoogle Playストアへ登録することができるようになります。*2
アプリを作成しただけでは、Google Drive App Data機能は使用できるようになりません。まず、ビルドしたアプリをGoogle Playストアへ登録する必要があります。登録の手順についてはここでは割愛します。
ストアへアプリをアップロードしたあと、あなたがテストを行うだけなら、そのアプリを「公開」する必要はありません。「下書き」のままにしておいて結構です。
Google Playストアへアプリを登録したら、そのアプリに対して「ゲームサービスの登録」をする必要があります。この部分についての解説はGoogle Developersサイトに「Setting Up Google Play Game Services with the Google Play Developer Console」として書かれていますが、この記事の時点ではまだ日本語訳されていません。以下に実例として手順を記します。
Google Playストアへ登録したアプリに対して「サービスとAPI」を選択してください。以下のような画面が現れます。
[新しいゲームを追加]を選び、ゲーム名と種類を入力します。この項目は後で変更できますので、ここでは適当でかまいません。
追加したゲームは、選択すると以下のような画面となります。先ほど入力したゲーム名と種類に加えて、説明やアイコンの登録ができますが、まだ登録しなくても構いません。ここでは[リンク済みアプリ]を選びます。
どのタイプのアプリを追加するかを選択します。ここでは、Androidアプリを選びます。
続いて、リンクするアプリの情報を入力します。
リンクするアプリの情報の入力が完了すると、以下のように表示されます。 [今すぐアプリを承認]をクリックして、次へ進みます。
ユーザーに対してこのゲームサービスに表示される、ゲームの情報を入力します。現在は空のままで構いません。
アプリの識別子と、そのapkファイルを作成するのに使用した証明書の情報を入力します。 アプリの識別子は「org.hoge.com.example.cloudappdata」です。
証明書の情報はいろいろな取得方法がありますが、ここではapkファイルから直接取り出してみます*3。コマンドプロンプトを起動し、ストアへのアップロード用に署名したapkファイル(ここではcloudappdata.apk)に対して、「unzip -p cloudappdata.apk META-INF/*.RSA META-INF/*.DSA | keytool -printcert」とコマンドを入力します。以下の赤線の部分が、先ほどのダイアログで入力する証明書の情報です。
以上を入力すると、このアプリに対応するクライアントIDが配布されます。このIDはゲームサービスで必要となりますが、Google Drive App Dataの使用のみであれば不要です。
リンク済みアプリの一覧には、以下のように表示されます。
以上で最低限の情報入力は完了ですが、必要であればテスターを追加しておくとよいでしょう。
ゲームサービスのゲーム一覧へ戻り、ゲームを選択すると、「ゲームの詳細」画面となります。その一番下に以下のようなリンクがあります。
これをクリックすると、登録したゲームサービスに対応するGoogle APIの設定画面を開くことができます。
[Services]を開き、[Drive API]と[Drive SDK]をONにします。
[API Access]を開きます。[Client ID for installed applications]の項目に、ゲームサービスで登録したアプリの情報が入っているのが確認できます。
このままでもいいのですが、この状態ではDrive APIにアクセスできるのは「Google Playストアに登録するAPKファイル」のみ、つまりリリースビルドしたもののみです。デバッグできないのは不便なので、デバッグビルドしたアプリの情報も追加してみましょう。
まず、[Create another client ID...]をクリックします。
まず、[Application type]として[Installed Application]を、[Installed application type]として[Android]を指定します。
続いて、ゲームサービスで登録したときと同様に、アプリの識別子と、そのapkファイルを作成するのに使用した証明書の情報を入力します。 アプリの識別子は「org.hoge.com.example.cloudappdata」です。
続いて、デバッグビルドしたAPKファイルから証明書の情報を取り出します。Eclipseでデバッグビルドすると、bin/cloudappdata.apkが作成されます。このファイルに対して、同様に「unzip -p cloudappdata.apk META-INF/*.RSA META-INF/*.DSA | keytool -printcert」とコマンドを入力して証明書の情報を表示します。
以上で登録はすべて終了です。なお、これらのデータの登録や変更を行ってから、その変更がサービス実体に反映されるまで、現在は10分ほどかかるようです。
その後の調査で、「Google Drive App Dataを使用するだけ」ならもっと少ない手順で使えることが判明しました。Google Playストアへのアプリ登録や、ゲームサービスの登録は必ずしも必要ではありません。
これで、cloudappdataアプリケーションを実行できる環境が整います。設定がサービス実体に反映されるまで数分ほど待つと、使用できるようになります。
その後の調査で、「Google Drive App Dataを使用するだけ」ならもっと少ない権限で使えることが判明しました。「cloudappdata_nogms」サンプルでは、「USE_CREDENTIALS」「GET_ACCOUNTS」権限を必要としません。また、端末に「Google Play 開発者サービス」のインストールを必要とせず、「Google Mobile Service(GMS)」の搭載も必要としません。
ただし、この方法の場合は、Drive APIに対して「Androidアプリケーション」でなく、「一般的なクライアントアプリケーション」としてのID発行が必要となります。発行の手順は、以下の通りです。
これで、cloudappdata_nogmsアプリケーションを実行できる環境が整います。設定がサービス実体に反映されるまで数分ほど待つと、使用できるようになります。