目次

まえがき

第1章 CloudScriptを使おう

1.1 CloudScriptとは
1.2 管理画面の使い方
1.3 CloudScriptを実装する
1.4 CloudScriptを呼び出す
1.5 CloudScriptの実行結果

第2章 Azure Functions を使おう

2.1 Azure Functions とは
2.2 Azure Functions を使うメリット
2.3 Azure Functions を使うデメリット
2.4 Azure Functions の料金
2.5 環境構築
2.6 Visual Studio Codeの準備
2.7 CS2AFHelperClasses.csの準備
2.8 サーバー側の実装
2.9 Azure Functions の登録
2.10 クライアント側の実装
2.11 Azure Functionsの実行
2.12 Azure Functions のログをVSCodeで確認する
2.13 コールドスタートを回避する

第3章 Azure Functions で API を実行しよう

3.1 環境変数の登録
3.2 環境変数の呼び出し方
3.3 サーバーAPI実行のサンプル
3.4 APIの実行

第4章 ローカルデバッグをしよう

4.1 ローカルデバッグとは
4.2 環境構築
4.3 ローカルデバッグの実行
4.4 ローカルデバッグの中止

第5章 セグメントを使おう

5.1 セグメントとは
5.2 セグメントの初期登録内容
5.3 セグメントの登録
5.4 セグメントの動作確認
5.5 セグメントの各種API

第6章 スケジュール済みタスクを使おう

6.1 スケジュール済みタスクとは
6.2 スケジュール済みタスク(手動)の登録
6.3 スケジュール済みタスク(手動)の実行
6.4 スケジュール済みタスク(定期的)の登録
6.5 スケジュール済みタスク(定期的)の実行
6.6 Azure Functionsでイベントを受け取る
6.7 コールドスタートを回避する

第7章 アクションとルールを使おう

7.1 アクションとルールとは
7.2 アクションとルールの登録
7.3 アクションとルールの実行
7.4 カスタムイベントを作成する
7.5 Azure Functionsでイベントを受け取る

第8章 リワード広告を使おう

8.1 広告の概要
8.2 PlayFab での広告の定義
8.3 これから実現することの全体像
8.4 リワード広告のサンプルプロジェクト
8.5 登録した広告配置の取得
8.6 アクティビティの報告
8.7 報酬の付与
8.8 広告に回数制限を入れる

第9章 おまけ

9.1 プレイヤーをタグで管理しよう
9.2 プレイヤーをクエリで検索しよう

あとがき

まえがき

 本書を手に取っていただき、ありがとうございます。

 以前、初めての書籍として『猫でもわかるPlayFab入門』を発売しました。本を書こうと決めたときは、「自分なんかが本を書いて需要があるのだろうか」と消極的な気持ちがありましたが、いつも応援してくださっている方の後押しもあり、なんとか書き上げることができました。発売後はたくさんの方にシェアをしていただいたおかげで、100名以上の方々にご購入いただくことができました。この数字をどう感じるかは人それぞれだと思いますが、私自身としては「大成功だった」と感じています。これも、みなさんのおかげです。本当にありがとうございます。

 一冊目を発売してみて、PlayFabの解説本に一定数の需要があることを確認し、すぐ二冊目にあたる本書の執筆にとりかかりました。PlayFabを使いこなす上で自動化まわりの機能の理解は欠かせません。しかしながら、自動化まわりの機能は便利ですが学習コストが高く、なかなか手を出しにくい分野であることも事実です。私自身も勉強をしていて、「どういった順番で勉強していけばいいのだろう」「ここはどういう動きになるのだろう」と、わからない点が多く、学習にかなり時間を費やしてしまいました。「公式ドキュメントだけでは理解が難しい」と感じているのは私だけではないと思います。ここを整理して執筆するだけでも、これから勉強を始める人にとっては数十時間の節約になることは間違いありません。

 私が調べたことは惜しみなく公開しますので、みなさんは本書の情報を使って、ご自身のゲーム開発を円滑に進められるはずです。PlayFabを採用するということは、「実装コストを減らしたい」と考えている人がほとんどだと思います。それなのに、PlayFabの学習コストを増やしていては、本末転倒です。本書をお読みになって、どんどん学習コストを減らしてください。最小限の勉強時間でPlayFabを習得してください。みなさんが私と同じ苦労を味わう必要はありません。

 いろいろとつまづきながら学習した経験から、つまづくポイントもわかっています。つまづく点を先回りして解決できるよう、画像も多めに使用し、わかりやすさと見やすさにこだわって書きました。この本を読むことで、PlayFabにかける勉強時間を少なくして、ゲーム開発の部分に時間を割くことができます。この本が少しでもみなさんのためになれば幸いです。

 PlayFabのことを教えてくださった方々、普段の発信をシェアしたりコメントしてくださる方々、応援してくださる方々のおかげで、本書の執筆にいたることができました。深く感謝いたします。

ねこじょーかー

本書の目的

 本書の目的は、PlayFabの基礎を理解している人が、サーバー処理であるAzure Functionsの使い方や、アクションとルールなどの自動化の機能をひと通り使えるようになることです。サーバー処理が入ると学習の難易度が上がりますが、本書ではわかりやすさに重点を置いて書いているので、迷うことなく進められると思います。PlayFabの基礎の学習が終わった人はもちろん、自動化まわりの機能を集中して学習したい人にとっても、この本はぴったりです。

本書で得られること

 ・CloudScriptの知識

 ・Azure Functionsの知識

 ・ローカルデバッグの知識

 ・アクションとルールの知識

 ・スケジュール済みタスクの知識

 ・セグメントの知識

 ・リワード広告の知識

対象読者

 ・PlayFabの基礎学習が終わっている人

 ・サーバー処理や自動化について興味がある人

 ・PlayFabの高みを目指したい人

 ・普段からPlayFabを使っているが、復習も兼ねて学びたい人

前提知識

 本書は、以下の知識がある前提とします。UnityやC#の説明は省き、PlayFabに特化した説明をしています。

 ・PlayFabの基礎知識(入門編で紹介している内容が理解できていれば十分です)

使用したソフトウェアのバージョン

 本書では以下のバージョンを使用しています。PlayFabSDKは最新のバージョンを使用して構いません。Unityのバージョンも特に揃える必要はありません。

 ・Unity 2019.4.1f1

 ・PlayFab SDK 2.89.200629

 ・PlayFabAllSDK 1.77.200730

第1章 CloudScriptを使おう

 PlayFabでは、サーバー処理をCloudScriptという形で提供しています。本章では、CloudScriptの概要と、簡単な使い方について解説します。

1.1 CloudScriptとは

 CloudScriptは、サーバー側で関数を書いておくことで、クライアント側から呼び出しができる仕組みです。サーバー処理とすることで、次のようなメリットがあります。

 ・データの改ざんがしにくくなる

 ・リリース後は再リリース無しでプログラム修正ができる

 クライアント側で処理をしていると、悪意をもったユーザーがデータの改ざんをする可能性もありますが、サーバー処理とすることで改ざんがしにくくなります。また、ユーザーに配布するプログラムにはCloudScriptが含まれないため、リリース後も再リリース無しでプログラム修正をすることも可能になります。ビルドをしてリリースをして審査をして、という手順を何度も踏むとかなり時間がかかりますよね。この手順を省略できるだけでも、かなりメリットがあると思います。もちろん、クライアントとサーバーで通信が必要になるため、実行には時間がかかります。何でもかんでもサーバー処理にすればいいというわけでもないので、必要な分だけサーバー処理としましょう。

 第2章「Azure Functions を使おう」でも解説をしていますが、サーバー処理はAzure Functionsを経由して実行するほうが便利なので、本書ではAzure Functionsの使い方をメインに解説します。したがって、CloudScriptを直接実行する使い方は、簡単にしか解説しません。

1.2 管理画面の使い方

 PlayFab管理画面の「自動化 > CloudScript > リビジョン」と進んでいくと、サーバーで定義されているCloudScriptが表示されます(図1.1)。黒い部分には、あらかじめサンプルプログラムが実装されていて、ここに自分で関数を追加します。言語はJavaScriptしか対応していないため、C#をメインに使っている人は難しく感じると思います。しかし、先ほども書きましたが、サーバー処理はAzure Functionsの使い方をメインに解説するため、内容は理解できなくて大丈夫です。

図1.1: 管理画面のCloudScript

 右上に「GITHUBを使用」というボタンがありますが、ここからGitHubと連携することで、コミットすると自動的にPlayFabへアップロードすることができます。連携をしなくても、「新しいリビジョンをアップロード」を押すことで、手動でアップロードすることも可能です。また、「リビジョン1(ライブ)」という選択式のリストもあるのが見えます。これは、新しいリビジョンをアップロードするとリビジョンがひとつ増えて、今実行すると動くリビジョンが「ライブ」として表示される仕組みです。例えば、リリースして何か不具合があった場合に、すぐ差し戻しをしたりすることも簡単にできます。プログラムからはリビジョン指定の実行もできるので、ライブのプログラムを切り替えなくても、過去のプログラムの実行もできたりします。なお、Azure Functionsを使う場合はGitHubと連携することができないので、管理画面からリビジョンを見ることはできません。

1.3 CloudScriptを実装する

 CloudScriptのサンプルは最初から実装されています。今回はその中から、HelloWorld関数をそのまま使用することにします(リスト1.1)。

リスト1.1: HelloWorld

handlers.helloWorld = function (args, context) {

    var message = "Hello " + currentPlayerId + "!";

    log.info(message);
    var inputValue = null;
    if (args && args.inputValue)
        inputValue = args.inputValue;
    log.debug("helloWorld:", { input: args.inputValue });

    return { messageValue: message };
};

1.4 CloudScriptを呼び出す

 クライアント側からHelloWorld関数を呼び出してみましょう。呼び出しには、ExecuteCloudScript1を使用します。

リスト1.2: HelloWorldの呼び出し

public void CallCloudScript()
{
    PlayFabClientAPI.ExecuteCloudScript(new ExecuteCloudScriptRequest()
    {
        FunctionName = "helloWorld",
        FunctionParameter = new { inputValue = "nekojoker" },
        GeneratePlayStreamEvent = true,
        RevisionSelection = CloudScriptRevisionOption.Live,
        SpecificRevision = null
    }, result =>
    {
        Debug.Log("CloudScriptの実行成功!");

        var jsonResult = (JsonObject)result.FunctionResult;
        jsonResult.TryGetValue("messageValue", out object messageValue);

        Debug.Log(messageValue);
    }, error =>
    {
        Debug.Log(error.GenerateErrorReport());
    });
}

 FunctionNameは呼び出す関数名です。リスト1.1のhandlers.の後ろについている文字列が関数名なので、helloWorldを渡してあげます。FunctionParameterはCloudScriptに渡す引数です。GeneratePlayStreamEventはPlayStreamイベントを作るかどうかで、特別な理由がなければtrueにしておきます。RevisionSelectionは、呼び出すリビジョンを指定するプロパティです。基本はライブなリビジョンを呼び出すのが普通だと思うので、Liveを指定します。常に最新のリビジョンを呼び出したい場合は、Latestを指定してください。また、特定のリビジョンを呼び出したい場合は、Specificを指定した上で、SpecificRevisionにリビジョン番号を指定します。

1.5 CloudScriptの実行結果

 Unityを実行して、CloudScriptを呼び出してみましょう。図1.2のログが出れば実行成功です。

図1.2: CloudScriptの実行ログ

 実行した結果は、PlayFabのイベントログにも細かく出力されます(図1.3)。サーバー処理の中でログ出力をすれば、Logsの中に出力される動きになっています。今回はlog.debugとlog.infoで2回出力しているので、Logsの中にも2回出力されていることが確認できますね。

図1.3: CloudScriptのイベントログ

1. https://docs.microsoft.com/en-us/rest/api/playfab/client/server-side-cloud-script/executecloudscript

試し読みはここまでです。
この続きは、製品版でお楽しみください。