個人のゲーム開発者がAzure PlayFabに入門してみた4つの理由

## まえがき
個人のゲーム開発者として Azure PlayFab に入門しました。

早速使ってみた系の記事を書こうと思いましたが、PlayFab は日本で触っている人があまり多くない印象ですので、

- そもそも PlayFab とはなにか
- なぜ入門しようと思ったのか

という点から書き残してみようと思いました。

ふわっとした記事ですので、技術的に深い内容を期待される方はブラウザバックをおすすめします。

## Azure PlayFabとは
ゲームに特化した BaaS(Backend as a Service) です。

2018年1月に Microsoft に買収されて現在も成長中のサービスです。
日本では最近ようやく名前を見ることが増えてきましたが、海外では既にメジャーなサービスで実績も多数あるようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97193/cf6541bc-981a-c885-7201-67fa4fc89f97.png)
※画像は [Microsoft の de:code 2019 の資料](https://www.slideshare.net/dmasubuchi/a-azure-playfab-liveops) から引用させていただきました。

PlayFab を利用すると、ゲームに必要な様々なバックエンドの機能を自分で1から開発する必要がなくなります。

下記は PlayFab で提供している機能を一部抜粋したものです。
※現時点ではプレビューの機能も含まれています。

- 様々な方法によるプレイヤーの認証/アカウント連携（Google/FaceBook/Steam/iOS/Android etc）
- [タイトルデータの管理（マスターデータやゲームのコンフィグの管理）](https://qiita.com/_y_minami/items/3396f832d868d52bbbaf)
- [プレイヤーデータの管理（ユーザーやキャラクターデータの管理）](https://qiita.com/_y_minami/items/5914b2ef89a8c83444b7)
- フレンド機能
- グループ機能（いわゆるパーティやギルドやクランなどの管理）
- [マッチング機能](https://qiita.com/_y_minami/items/6a686a88cca7da08db2f)
- [ランキング機能](https://qiita.com/_y_minami/items/9143502f465ad11ff2ca)
- チャット機能（テキスト/音声チャット、なぜか PlayFab Party という名前なのでわかりづらい）
- 通貨の管理（いわゆる魔法石やゲーム内通貨などの管理）
- ショップ機能
- アイテムトレード機能
- [ギフト機能](https://qiita.com/_y_minami/items/e60a667f7933867aee0c)
- プッシュ通知機能
- メール機能
- ニュース機能
- 分析機能

ドキュメントを読むと他にも様々な機能があることがわかりますが、直近で私が使いそうな機能を列挙しました。

なお、PlayFab はもともとゲームの運用を支えるためのサービス郡で、特に GoogleAnalytics のゲーム版とでも言うような分析ツールとしての色が強いようです。

しかし現在は機能が強化され、上記のように運用や分析の範囲に留まらない機能も提供されています。

# 個人のゲーム開発者が Azure PlayFab に入門してみた4つの理由
結論から書くと以下の4つです。

- サービスを使って開発工数を削減したかった
- 手軽に使えるマネージドなデータストアが欲しかった
- コストをかけたくなかった
- Microsoft の買収による今後の成長に期待した

### 1. サービスを使って開発工数を削減したかった
私は趣味で個人でゲームを作っています。

ゲームを作るのが好きなので、インゲームの部分はクライアント/サーバーサイドのどちらもとても楽しく制作が進んでいます。

一方で、認証/ショップ/分析などの機能はゲームに必要ではあるものの、それを作ることが目的ではないですし、それなのに作るのは大変な部分ですし、なかなか開発作業の気が進みませんでした。

これらの機能を自分で開発せずにサービスを利用すれば、開発工数を削減しつつ、自分が1から開発するよりも堅牢で使いやすいシステムをユーザーに提供できそうだと考えました。

### 2. 手軽に使えるマネージドなデータストアが欲しかった
マスタデータやユーザーデータの管理を PlayFab に任せることができることも魅力に感じたポイントです。

私が仕事でゲームを開発していたとき、これらのデータはすべて RDB で管理していました。
趣味の個人開発でも RDB を採用したいと考えていましたが、マネージドな RDB のサービスで安価で手軽に使えるものが見つからず、なにを採用するか悩んでいました。

PlayFab のデータ管理の機能は KVS ですので、当初は実運用に耐えられないのではないかと不安視していました。
しかしいざ使ってみると、小規模な個人開発においては意外と困る場面はなさそうでしたので、当面は PlayFab を使ってみることにしました。

### 3. コストをかけたくなかった
PlayFab には無料で利用できる Essentials プランがあり、このプランでも多くの機能を MAU の制限もなく利用することができます。
Essentials プランでは Azure のサポートを受けることはできませんが、後述するコミュニティフォーラムを頼ることができます。

Essentials プランより多くの機能を利用したい場合は10万 MAU まで月額 $99 で利用できる IndieStudio プランを利用することになりますが、IndieStudio プランでも 1000MAU を超えるまでは無料で使用することが可能ですので、リリースするまでは料金が一切発生しません。

### 4. Microsoft の買収による今後の成長に期待した
これは賛否がわかれるところかもしれません。

ただ PlayFab と同じく2018年に買収された GitHub の最近の様子を見てみると、プライベートリポジトリが無料で作れるようになったり、Azure との連携が強まったり、最近ではPull Pandaを吸収したり、買収が良い影響に繋がっていたように思えます。

最近の Microsoft はゲーム分野に力を注いでいく姿勢を見せていますし、PlayFab もこれまで以上に成長していくだろうと予想して今の段階で積極的に触ってみることにしました。

## あとがき
思いのほか長文になってしまいました。。

次回はマスタデータやユーザーデータの管理方法など、実際に使ってみた記事を書きたいと思います。


いろいろ書きました。
- [UnityからPlayFabのユーザーデータをCRUDする](https://qiita.com/_y_minami/items/5914b2ef89a8c83444b7)
- [UnityでPlayFabのタイトルデータを取得して表示する](https://qiita.com/_y_minami/items/3396f832d868d52bbbaf)
- [Azure PlayFab上にテストユーザーを大量生成してギフトをさくっと一括配布してみた](https://qiita.com/_y_minami/items/e60a667f7933867aee0c)
- [Azure PlayFabのとても便利なランキング機能を使ってみた&ついでにランキング報酬も配ってみた](https://qiita.com/_y_minami/items/9143502f465ad11ff2ca)
- [Azure PlayFabのとても便利なマッチメイキング（マッチング）機能を使ってみた](https://qiita.com/_y_minami/items/6a686a88cca7da08db2f)
- [Azure PlayFabのアクションとルールを使って自動的にアイテムを配布してみた](https://qiita.com/_y_minami/items/ed7b3162796ddba21a64)
- [Azure PlayFabでPlayStreamを使ってユーザーのBANを実装する](https://qiita.com/_y_minami/items/1bc688590fc712c51366)
- [Unity+PlayFabでasync/awaitを使う方法](https://qiita.com/_y_minami/items/7ad2bf7f706c24b67c1c)

## 参考資料などへのリンク
- [PlayFab の Web](https://azure.microsoft.com/ja-jp/services/playfab/)

- [PlayFab のドキュメント](https://docs.microsoft.com/ja-jp/gaming/playfab/)
※最近まで英語のみでしたが日本語化されました！
　まだ機械翻訳が読みにくいところがあるので、人力での翻訳も進めてほしいですね。

- [コミュニティフォーラム](https://community.playfab.com/)
※こちらも英語中心ですが、数時間以内にいくつも投稿があってやりとりが活発です。
※無料プランでは Azure のサポートは利用できないのでコミュニティを頼ることになります。

- [コミュニティ Slack](https://api.playfab.com/slack)
※コミュニティの Slack にここから参加申し込みができます。

- [個人からトリプルAタイトルのゲーム開発者まで。Azure PlayFab で LiveOps しよう](https://www.slideshare.net/dmasubuchi/a-azure-playfab-liveops)
※最初に引用させていただいた de:code2019 の資料です。
※私が触れていない分析系の話が盛りだくさんです。