C# CloudScript
- Azure Functions との連携 -
南 @_y_minami
2020.01.25 PlayFab Meetup in Microsoft #2
自己紹介
• 名前
南(みなみ)
• 所属
miraibox Inc.
• Twitter
@_y_minami
• 好き/興味
C# .NET Unity Azure PlayFab MagicOnion 紅茶
本日の内容
本日の内容
• CloudScript とは
• Azure Functions とは
• C# CloudScript の使い方
• まとめ
CloudScript とは
CloudScript とは
• PlayFab の主要な機能の一つ
• PlayFab は基本的にはクライアントから API を呼ぶだけで
本来はサーバーが必要なゲームをれる
• しかし PlayFab の機能でまかなうことができない場合もある
• その場合は PlayFab 内に自分で書いた Script を登録して
それを呼び出して処理することができる
• FaaS(Function as a Service) のような感覚で使える
• 利用料金は PlayFab の料金に含まれる(つまり無料)
• 言語は JavaScript のみに対応
• JavaScript のみに対応…😭
Azure Functions とは
Azure Functions とは
• Azure の主要な機能の一つ
• FaaS
• 様々な料金プランがあるが無料から利用可能
• 多くの言語に対応
• C# JavaScript F# Java PowerShell Python TypeScript
• Visual Studio などでローカルデバッグが可能
• リアルタイムでオンラインのログのモニタリングが可能
Azure Functions とは
• Azure の主要な機能の一つ
• FaaS
• 様々な料金プランがあるが無料から利用可能
• 多くの言語に対応
• C# JavaScript F# Java PowerShell Python TypeScript
• Visual Studio などでローカルデバッグが可能
• リアルタイムでオンラインのログのモニタリングが可能
Azure Functions は良いことたくさん。
C# CloudScript は PlayFab から Azure Functions を
良い感じに利用可能になるという話。
C# CloudScript の使い方
C# CloudScript の使い方
2019 年中に Public Preview になる予定だったので
使ってみた話をするつもりでしたが、
1/24 現在では Private Preview のままなので
ドキュメントやデモ動画で学んだ話をします 😭😭😭
今回紹介する内容は今後変更される可能性があります。
C# Cloud Script の使い方
• C# で Azure Function のコードを書く
• Azure Functions へ Function を Deploy
• PlayFab へ Azure Functions の Function を Register
• Client or Server or PlayFab(Actions) から Call
C# で Azure Function のコードを書く
C# で Azure Function のコードを書く
C# で Azure Function のコードを書く
Azure Functions は 1/23 に v3 がリリースされている。
C# CloudScript では v2 がサポートされているが、
Public Preview になる頃には v3 もサポートされる
可能性も高い。(と思いたい)
C# で Azure Function のコードを書く
トリガーは Http と Queue をサポート。
今まで通りの CloudScript の使い方をする場合は
Http トリガーを使う。
Queue トリガーは大量のデータを一旦キューに積んで
非同期に処理したい場合に使う。(バッチ処理など)
PlayFab の Scheduled Task より柔軟なバッチ処理が可能。
(と思われるが詳しいことは今後に期待)
C# で Azure Function のコードを書く
Authorization level は Anonymous にしておくと
どこからでも Function を呼べる。
C# で Function を書く
C# で Function を書く
var context = await FunctionContext<dynamic>.Create(req);
var playerId = context.CurrentPlayerId;
という書き方でユーザーの情報を取得できるのがポイント。
Azure Functions へ Function を Deploy
Azure Functions へ Function を Deploy
Azure Functions へ Function を Deploy
PlayFab とのレイテンシを最小にするために
リージョンを East US 2 または East US にすることが
推奨されている。
これは PlayFab 連携をする上では Azure Functions に
限った話ではないので覚えておくとよい。
PlayFab へ Azure Functions を Register
PlayFab へ Azure Functions を Register
Client or Server から Call
Client or Server から Call
少し長いがやってることは難しくない。
- EntityKey に自分の情報を詰める
- FunctionName に Azure Functions の名前を指定
- FunctionParameter に Azure Functions に渡したいパラメーターを詰める
- コールバックで実行したい処理があれば書いておく
- PlayFabCloudScriptAPI.ExecuteFunction を呼ぶ
PlayFab(Actions)から Call
PlayFab(Actions)から Call
Register した Azure Functions を
簡単に呼び出せるようになっている
VS Code なら Azure Functions Extension
• C# で書ける
• Application Insights を使ったデバッグ
VS Code なら Azure Functions Extension
PlayFab Explorer もリリースされる予定
PlayFab Explorer もリリースされる予定
PlayFab Explorer もリリースされる予定
GameManager 側の Explorer と
だいぶまぎらわしいので注意。
参考資料
• PlayFab CloudScript using Azure Functions(公式ドキュメント)
https://docs.microsoft.com/en-us/gaming/playfab/features/automation/cloudscript-af/
• PlayFab + Azure Functions + Visual Studio Code - Crazy Awesome Games!
(公式動画)
https://www.youtube.com/watch?v=apQbkDn1lNo&feature=youtu.be
参考資料
なおこのドキュメントは
サイトの言語設定を
日本語にすると消失する
まとめ
まとめ
• C# CloudScript、とても良さそうなのでリリースされたら是非使いましょう!
• Azure Functions の知識が多少必要になるので予習しておくと良いかも。
• 最新情報は PlayFab の Blog と公式ドキュメント(英語)をチェック。
https://blog.playfab.com/blog
• https://docs.microsoft.com/en-us/gaming/playfab/features/automation/cloudscript-
af/
ご清聴ありがとうございました

C# CloudScript Azure Functions との連携

  • 1.
    C# CloudScript - AzureFunctions との連携 - 南 @_y_minami 2020.01.25 PlayFab Meetup in Microsoft #2
  • 2.
    自己紹介 • 名前 南(みなみ) • 所属 miraiboxInc. • Twitter @_y_minami • 好き/興味 C# .NET Unity Azure PlayFab MagicOnion 紅茶
  • 3.
  • 4.
    本日の内容 • CloudScript とは •Azure Functions とは • C# CloudScript の使い方 • まとめ
  • 5.
  • 6.
    CloudScript とは • PlayFabの主要な機能の一つ • PlayFab は基本的にはクライアントから API を呼ぶだけで 本来はサーバーが必要なゲームをれる • しかし PlayFab の機能でまかなうことができない場合もある • その場合は PlayFab 内に自分で書いた Script を登録して それを呼び出して処理することができる • FaaS(Function as a Service) のような感覚で使える • 利用料金は PlayFab の料金に含まれる(つまり無料) • 言語は JavaScript のみに対応 • JavaScript のみに対応…😭
  • 7.
  • 8.
    Azure Functions とは •Azure の主要な機能の一つ • FaaS • 様々な料金プランがあるが無料から利用可能 • 多くの言語に対応 • C# JavaScript F# Java PowerShell Python TypeScript • Visual Studio などでローカルデバッグが可能 • リアルタイムでオンラインのログのモニタリングが可能
  • 9.
    Azure Functions とは •Azure の主要な機能の一つ • FaaS • 様々な料金プランがあるが無料から利用可能 • 多くの言語に対応 • C# JavaScript F# Java PowerShell Python TypeScript • Visual Studio などでローカルデバッグが可能 • リアルタイムでオンラインのログのモニタリングが可能 Azure Functions は良いことたくさん。 C# CloudScript は PlayFab から Azure Functions を 良い感じに利用可能になるという話。
  • 10.
  • 11.
    C# CloudScript の使い方 2019年中に Public Preview になる予定だったので 使ってみた話をするつもりでしたが、 1/24 現在では Private Preview のままなので ドキュメントやデモ動画で学んだ話をします 😭😭😭 今回紹介する内容は今後変更される可能性があります。
  • 12.
    C# Cloud Scriptの使い方 • C# で Azure Function のコードを書く • Azure Functions へ Function を Deploy • PlayFab へ Azure Functions の Function を Register • Client or Server or PlayFab(Actions) から Call
  • 13.
    C# で AzureFunction のコードを書く
  • 14.
    C# で AzureFunction のコードを書く
  • 15.
    C# で AzureFunction のコードを書く Azure Functions は 1/23 に v3 がリリースされている。 C# CloudScript では v2 がサポートされているが、 Public Preview になる頃には v3 もサポートされる 可能性も高い。(と思いたい)
  • 16.
    C# で AzureFunction のコードを書く トリガーは Http と Queue をサポート。 今まで通りの CloudScript の使い方をする場合は Http トリガーを使う。 Queue トリガーは大量のデータを一旦キューに積んで 非同期に処理したい場合に使う。(バッチ処理など) PlayFab の Scheduled Task より柔軟なバッチ処理が可能。 (と思われるが詳しいことは今後に期待)
  • 17.
    C# で AzureFunction のコードを書く Authorization level は Anonymous にしておくと どこからでも Function を呼べる。
  • 18.
    C# で Functionを書く
  • 19.
    C# で Functionを書く var context = await FunctionContext<dynamic>.Create(req); var playerId = context.CurrentPlayerId; という書き方でユーザーの情報を取得できるのがポイント。
  • 20.
    Azure Functions へFunction を Deploy
  • 21.
    Azure Functions へFunction を Deploy
  • 22.
    Azure Functions へFunction を Deploy PlayFab とのレイテンシを最小にするために リージョンを East US 2 または East US にすることが 推奨されている。 これは PlayFab 連携をする上では Azure Functions に 限った話ではないので覚えておくとよい。
  • 23.
    PlayFab へ AzureFunctions を Register
  • 24.
    PlayFab へ AzureFunctions を Register
  • 25.
    Client or Serverから Call
  • 26.
    Client or Serverから Call 少し長いがやってることは難しくない。 - EntityKey に自分の情報を詰める - FunctionName に Azure Functions の名前を指定 - FunctionParameter に Azure Functions に渡したいパラメーターを詰める - コールバックで実行したい処理があれば書いておく - PlayFabCloudScriptAPI.ExecuteFunction を呼ぶ
  • 27.
  • 28.
    PlayFab(Actions)から Call Register したAzure Functions を 簡単に呼び出せるようになっている
  • 29.
    VS Code ならAzure Functions Extension • C# で書ける • Application Insights を使ったデバッグ
  • 30.
    VS Code ならAzure Functions Extension
  • 31.
  • 32.
  • 33.
    PlayFab Explorer もリリースされる予定 GameManager側の Explorer と だいぶまぎらわしいので注意。
  • 34.
    参考資料 • PlayFab CloudScriptusing Azure Functions(公式ドキュメント) https://docs.microsoft.com/en-us/gaming/playfab/features/automation/cloudscript-af/ • PlayFab + Azure Functions + Visual Studio Code - Crazy Awesome Games! (公式動画) https://www.youtube.com/watch?v=apQbkDn1lNo&feature=youtu.be
  • 35.
  • 36.
  • 37.
    まとめ • C# CloudScript、とても良さそうなのでリリースされたら是非使いましょう! •Azure Functions の知識が多少必要になるので予習しておくと良いかも。 • 最新情報は PlayFab の Blog と公式ドキュメント(英語)をチェック。 https://blog.playfab.com/blog • https://docs.microsoft.com/en-us/gaming/playfab/features/automation/cloudscript- af/
  • 38.