Tencent Cloudで考えるOzのアーキテクチャ

# そもそもTencentと言えば
普段ゲームをやらない方はあまり馴染みがないかもしれませんが、Tencentといえば超有名ゲームの製作や配信に複数関わっている企業のイメージがあります。

また、WeChatをはじめとするSNS、ライブコーマース、ストリーミング分野にも非常に強いというイメージがあるので、全体としてコミュニケーションとエンタメに強い会社という印象があります。
（きっとそれだけではないのでしょうが）

そんなコミュニケーションとエンターテイメントで有名なWebサービスといえば、、

---


<font>$\Huge{\textbf{OZ}}$</font>

https://s-wars.jp/story/story_oz.html

---

ということで、Tencent CloudでOzのアーキテクチャを考えてみたいと思います。
※OZがわからない方はぜひリンク先&映画サマーウォーズを見てみてください！

# Ozのアーキテクチャを考える上でのポイント
Ozは非常に多機能であり、全機能を考えると流石に膨大になってしまうので、いくつかのポイントに絞って考えたいと思います。

主に現代でも結構厳しい（と思われる）以下の要件について考えてみます。

## アクセス端末が非力
>アクセス方法　― How to access? ―
>お持ちのインターネット、携帯電話、TVなどから簡単にアクセスできます。

とのことです。
サマーウォーズ劇中では携帯電話（スマートフォンなんてものではなくガラケーでした）でOzへアクセスしている人もいました。いくらアニメ調の比較的軽いポリゴンといえど、ローカルレンダリングは不可能でしょう。
（最もPCなどと比べて操作性の差はあったようなので携帯電話でのレンダリングは多少画質等最適化されているのかもしれませんが）

## なのにアバターを動かし、視界のレンダリング・配信
端末が十分に強力な場合は物体の座標のみ連携して端末側で再レンダリングさせるなど動画を全て送信しない配信の最適化可能と思いますが、端末が非力な場合はレンダリング済みの動画を配信する手法を取らざるを得ない場合もあり、帯域がかなりしんどいことになります。

## 利用者が多い
10億人らしいです。シンプルにきつい。クラウド必須です。



# 妄想したアーキテクチャ

ということでざざっと書いたアーキテクチャは以下の通りです。
アーキテクチャを書くときにえ、こんなのあるの？とか特に注目したいなと思ったサービスの背景色を変えてみました。

以降それらサービスについて取り上げてすこし説明します。

![構成図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244678/9c1fe74c-fbdf-9e19-e644-9ad83a6529be.png)


## Tencent CAR

要件の大部分をほぼ一人で解決したすごい子です。

Cloud Application Renderingというサービスで、まさにクラウドゲーミングなどにぴったりのサービスで、Ozのアーキテクチャを考える上では携帯電話などの比較的非力なユーザのクラウドレンダリングに使用する想定をしています。

**意外と完全な類似サービスがない**もので、下記のV-Cubeさんの記事にも書かれていますが、

AWS AppStreamは用途的にはどちらかというとハイスペック仮想デスクトップという感覚が強く、不特定多数のユーザが登録/ログインして利用するようなサービスではないです。（3Dモデリングとか教育用途の共有には良いと思います）

Pixel StreamingはUE4に限定されるなどこっちはこっちで制約が多く、
かといってたとえばGeForce Nowのような完全なクラウドゲーミングサービスは逆にシステムを作り込むためのバックエンドホスティング機能が足りないです。

こういった、バックエンド要素が必要で、かつユーザ端末に性能を求められない場合に使えるサービスというのはかなり限られるんじゃないでしょうか。

今回妄想で描いたアーキテクチャがかなり簡素になっているのもCARの影響が大きいです。CARが入力処理などをかなり取り持ってくれるため、スリム化できると考えています。

**単純な映像配信などであれば正直AWSなどでも頑張れてしまうのですが、CARはかなり唯一無二ですね。**

https://jp.vcube.com/sdk/blog/pixel_streaming_tencent_cloud_car

https://www.tencentcloud.com/jp/products/car?from_qcintl=322130601

## Tencent Distributed Database

これは知らなかったので結構興味を持ちました。

**Tencentが自社開発した分散DB**とのこと。

Ozのアーキテクチャを考える上ではどうしてもネックになるのがデータベースの扱いです。（Ozではショッピングなどもできるため、強い整合性を持ちスケーラビリティのあるDBが要求される。そして利用者がめちゃ多い、、）

分散DB自体がかなり高度な製品なので、あること自体がすごいのですが、**自社開発**という点がポイント高いです。分散DBはどうしても癖があるので、自社開発=Tencentによるサポートが他社開発やOSSより期待できるというのは良い点だと思っています。

"Ozっぽさ"に直接関わるサービスではありませんが、Tencentの技術力の高さを感じるサービスなので取り上げてみました。

https://www.tencentcloud.com/jp/products/tdapg?from_qcintl=322050202


## 各種Anti-Cheat、Moderationサービス
パトランプのアイコンにまとめました。かなりエンタメらしいサービスですね。

ModerationについてはAzureなんかにModeration系のサービスがあることにはあるので、唯一無二というほどではないのですが、Anti-Cheatがあるのは"らしい"なと思いました。

ただ、Moderationについても、確かに唯一無二というサービスではないのですが、**WeChatやPvP型のゲームを運営しているTencentの持つノウハウ、データをもとにしたModerationにはかなり期待ができる**と考えています。

個人的には、これらのサービスを見つけたことで、ゲームホスティングするならTencent Cloudはかなり良い選択肢なんじゃないかと思いました（自社でModerationチームを抱えるのは大変と聞きますし、、、）

https://www.tencentcloud.com/jp/products/ace?from_qcintl=322070704

https://www.tencentcloud.com/jp/products/tms?from_qcintl=322070402

※Moderation系は多いのでTextだけ貼ります。

## その他サッと取り上げるサービス
妄想アーキテクチャで背景色は変えなかったのですが、せっかくなので記載したTencentサービスについて少し付記します。

### Chat
チャットですね。SDKで組み込めるので楽そうです。
WeChatやライブコマースを抱えている関係でその他ShortVideoの生成やVideoにフィルタ（効果）入れるようなサービスもSaaS的に利用できるようです。今回のOzのアーキテクチャを考えるという趣旨から外れるので特別にはとりあげませんでした。

https://www.tencentcloud.com/jp/products/im?from_qcintl=322010101

https://www.tencentcloud.com/jp/products/x-magic?from_qcintl=322130503

### Tencent Kubernetes Engine
もちろん普通のVMホスティングも利用可能ですが、Ozくらいの規模なら、、、とTKEを取り上げてみました。
Kubernetes利用できるのはもはや必須要件ですね。ちゃんとあるというのがポイント。

https://www.tencentcloud.com/jp/products/tke?from_qcintl=322020301

### Tencent Cloud Object Storage
Objcet Storageです。これに限らず普通にクラウドに欲しいようなものはありましたので、構成上困ることもあまりないのかなと思っています。

その上で所感としては配信、ネットワーク系がかなり強いですね、、、**Anycast Internet Acceleration（IPエニーキャストによる通信品質向上サービス）とかクラウドサービスとしては初めてみました。**（私が知らないだけだったらすみません）

https://www.tencentcloud.com/jp/products/cos?from_qcintl=322040101

https://www.tencentcloud.com/jp/products/aia?from_qcintl=322060109

# まとめ

* Tencent CARを利用すればOzのコア機能のアーキテクチャは結構簡素にできてしまいそう。
* Tencent CloudはCAR以外にも、モデレーションやアンチチート、IP AnyCastなどの機能がサービスとして提供されており、**特にゲームやコミュニケーションプラットフォームホスティングにかなり強いクラウド**
* **プレイヤー間コミュニケーションのあるゲーム配信するなら実績的にも最有力**の一つだと思います
* もちろん**分散DBはじめ必要なサービスは一通りあるのでゲーム以外にも**使えます