PlayFabとCognitiveを
連携させて健全なゲーム運営を
2020/01/29
Cogbot 勉強会! #26 - 新春 LT Night !
Japan PlayFab User Group なかしょ(中島進也)
Profile
• 名前:なかしょ(中島 進也)
• Twitter:@nakasho_dev
• ブログ:なかしょの技術日誌
http://nakasho-dev.hatenablog.jp/
• 最近の興味
TDD、LeanXP、DevOps、Xamarin、mBaaS、Tizen
• 主な参加コミュニティ
JXUG 、JPFUG 、.NETラボ、Cogbot、Teratail、TestNight、XPJUG
※本資料は私個人の意見であり、所属企業・部門見解を代表する
ものではありません。
2
3
参考:https://azure.microsoft.com/ja-jp/services/playfab/
Azure Play Fabの機能
4
参考:https://docs.microsoft.com/ja-jp/gaming/playfab/index#pivot=documentation&panel=quickstarts
ゲーム内でユーザが入力するコンテンツ例
• 名前(ハンドルネーム)
• 自己紹介
• プロフィール画像
• チャットメッセージ
• UGC( User Generated Content )
5
そのコンテンツ
安全ですか?
6
ゲーム内で(一般的に)表示されたら困るもの
• 不適切な表現
• 露骨に性的な表現
• 性的な内容を暗示する表現
• 下品な表現
• 個人データ
7
ゲーム内で(一般的に)表示されたら困るもの
• 不適切な表現
• 露骨に性的な表現
• 性的な内容を暗示する表現
• 下品な表現
• 個人データ
8
こんなゲーム
やりたくない
9
不適切な表現を防ぐにも、
ユーザが入力した内容から判
断するの難しくない?
特に画像を判断するのどうし
よう?
10
そこでCognitive Serviceの
Content Moderatorです!
11
Content Moderator API
• Image Moderation API
画像をスキャンし、タグ、信頼度スコア、その他の抽出された情報を使
用して、成人向けやきわどいコンテンツの可能性があるものを検出しま
す。
• Text Moderation API
テキスト コンテンツをスキャンします。 不適切な用語と個人データが
返されます。
• Video Moderation API
ビデオをスキャンし、成人向けやきわどいコンテンツの可能性があるも
のを検出します。
• List Management API
画像とテキストの除外一覧と対象一覧を作成して管理します。 有効に
した場合、Image - Match および Text - Screen 操作では、提出したコ
ンテンツとカスタム一覧とのあいまい一致が照合されます。 12
Text Moderation APIの例
POST
https://japaneast.api.cognitive.microsoft.com/contentmoderato
r/moderate/v1.0/ProcessText/Screen?autocorrect=true&PII=tr
ue&classify=True HTTP/1.1
Host: japaneast.api.cognitive.microsoft.com
Content-Type: text/plain
Ocp-Apim-Subscription-Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
I'll kill you
13
I‘ll kill you !?
Text Moderation APIのレスポンス例の一部
14
"Classification": {
"ReviewRecommended": true,
"Category1": {
"Score": 0.025640359148383141
},
"Category2": {
"Score": 0.22437357902526855
},
"Category3": {
"Score": 0.98799997568130493
}
},
[Category1]
特定の状況で性的に露骨
か、または成人向けであ
ると見なされる可能性の
ある言語の潜在的な存在
を示します。
Text Moderation APIのレスポンス例の一部
15
"Classification": {
"ReviewRecommended": true,
"Category1": {
"Score": 0.025640359148383141
},
"Category2": {
"Score": 0.22437357902526855
},
"Category3": {
"Score": 0.98799997568130493
}
},
[Category2]
特定の状況で性的な連想
を起こさせるか、または
成熟した表現であると見
なされる可能性のある言
語の潜在的な存在を示し
ます。
Text Moderation APIのレスポンス例の一部
16
"Classification": {
"ReviewRecommended": true,
"Category1": {
"Score": 0.025640359148383141
},
"Category2": {
"Score": 0.22437357902526855
},
"Category3": {
"Score": 0.98799997568130493
}
},
[Category3]
特定の状況で不快である
と見なされる可能性のあ
る言語の潜在的な存在を
示します。
PlayFabと
どう連携する?
17
CloudScript
• JavaScriptで書いたプログラムを実行する
もうすぐAzure Functionsを使用できるようになる、はず?・・・
• CloudScriptは様々なことができる
詫び石を配る
ユーザをbanする
他のサーバを呼び出す
• PlayStream Eventsを契機に実行できる
ユーザの操作
ステータスの変化
18
ContentModeratorAPIを
呼び出せる
ユーザがコンテンツを登
録・変更した際に実行で
きる
19
[イベントタイプ]
player_displayname_ch
anged
プレイヤーが表示名を変
更したときのイベント
こんな処理ができるかな?(未検証)
1. ユーザがハンドルネームを変更
2. PlayFabのplayer_displayname_changedイベントが発生
3. イベントに紐づけているCloudScriptを実行
4. CloudScriptからText Moderation APIを叩いて検証
5. 不適切な表現だと判断されたらBAN!!
20
ちょっと心配事
• 日本語の検出が弱い
カスタムリストを使用する?
• PlayStreamイベントを契機に実行するCloudScriptの実行時間は
1秒が上限?
通常は1分だけどPlayFabの処理に割り込むから短いのかも?
公式のどこかで見たけど今見たらソースが見つからない...
• Play Fabは北米リージョンなのでレイテンシが心配
東日本リージョンにはいつ展開されるのかな?
21
その他
22
児童虐待などの「有害ネット情報」、サイト
側に罰金 英政府が計画
• ソーシャルメディア(SNS)やネット企業向けの「業
務規範」を作る、独立した規制団体を設立する
• 規制団体には、業務規範を守らない企業に罰金を科す
などの権限を与える
• 企業の幹部に罰金を科したり、業務規範に違反したサ
イトを見られなくするようプロバイダーに命じたりす
るなどの、さらなる権限を規制団体に与えることも検
討する
23
参考: https://www.bbc.com/japanese/features-and-analysis-47931799
PhotoDNA
• PhotoDNAとはマイクロソフトが開発した技術で、類似する画
像を識別するために画像のハッシュ値を計算する。現在同社の
サービスであるBing、OneDriveだけでなく、Google Gmail、
Twitter、Facebook、Adobe Systems、National Center for
Missing and Exploited Childrenで採用されている。
• 主に児童ポルノの流通阻止の為に使用されており、画像のハッ
シュを計算することで検出している。このハッシュはサイズが
変更されていたり、目立たない配色変更を含む画像の変更が
あっても変更されないように計算されている。PhotoDNAは画
像を白黒化し、サイズを変更し、格子状に分割し、輝度勾配や
輪郭を探索している。
• PhotoDNA無償提供を開始。
24
参考: https://ja.wikipedia.org/wiki/PhotoDNA
JPFUG (Japan PlayFab User Group)
25
参考: https://jpfug.connpass.com/
まとめ
• Play Fab はゲーム開発に必要なものが多く揃っている
• ソーシャルゲームなどで不適切な表現は排除すべき
• Content Moderator APIで不適切な表現を検出しよう
• PlayFabに組み込んでくれればよいのになー
26
27
2月7日 LTします。
「Azure DevOpsとVisual Studio App Centerを
モバイルアプリのCI/CDに活用しよう」
28
ご清聴ありがとうございました。
なかしょ(中島 進也)
@nakasho_dev
29

PlayFabとCognitiveを 連携させて健全なゲーム運営を