クラウドゲーミングを試そう AWS Wavelength(5G MEC)も使うよ！

# 概要
最近流行っているクラウドゲーミングを気軽に手元で試すことを目的にした記事です。

ゲーム開発者向けではありますが、ネットワーク関係の人も楽しく読んでもらえると思います。

複数回に分けて、概念の紹介や試せる活用例に触れていきます。

実際に構築する前に、概念や用語について解説します。

## MECについて
インターネットは通常、目的の宛先に届くまで様々な機器を経由して通信を行います。

あなたの家からAWSのEC2でホスティングしたサイトにアクセスしようとする場合、東京のAWSデータセンターに届くまで、様々な場所を経由します。

仮にあなたの家とサーバーが直に繋がっていたとしても、光の速さを超えてることはできず遅延が発生します。

CDNなどのキャッシュを各地に設置することで遅延削減を図るデザインはよく使われますが、

あくまでキャッシュを保存させているだけで、クラウドゲーミングのようなものには対応できません。

その問題を解決する一つの方法として、マルチアクセスエッジコンピューティング(MEC)という技術があります。

例えば5Gモバイルネットワーク網、つまり通信アンテナの近くや基地局の中に設置することで、物理的な距離を縮めます。

さらに一般的なインターネットを通過せず、通信キャリアの安定したネットワークの中で完結し、低遅延かつ安定した環境が使えます。

5Gが低遅延と謳っているのはこれが主な理由だったりします。

この環境を構築しようと通信キャリアやローカル5Gでの実験が行われています。

将来的には日本中の基地局はもちろん、通信アンテナやそれを設置している**信号機**や**電柱**などの都市インフラの中にデプロイできるVMやDockerコンテナような仮想化環境が用意されるんじゃないかなと期待しています。

街を歩けば、そこら中例のクジラに囲まれる時代が来るかもしれません。

そんな中申請すれば誰でもEC2として利用できるKDDIが提供する5G MECサービス、AWS Wavelengthがはじまりました。

## Wavelengthについて
Wavelengthは、MEUを通常のEC2と同じように使用できるAWSのサービスです。

日本ではKDDI(au)がサービス提供を開始しており、東京と大阪に専用のアベイラビリティゾーンが存在します。

auの4G/5G端末からのみ繋がる（ICMPプロトコルだけはどこからでも）ようになっており、ここEC2設置してキャリアのIPアドレスを紐づけられるようになってます。

安定かつ低遅延でWavelengthのEC2にアクセスできるようで、現在どのくらいの性能が出るか計測中です。

https://zenn.dev/chujohiroto/scraps/69bfea236482ed

https://qiita.com/yyasuda/items/7b6d374710db2c912fa5

https://qiita.com/yyasuda/items/205596e5204d90bf0ee4

場所に依存するので、あなたの街での報告もお待ちしております。

まあぶっちゅけると、今すぐ超低遅延が体験できるというわけではなく、

実際は無線の遅延などもあるので、有線の光回線と従来のクラウドデータセンターのレスポンスに比べると見劣りします。

今後MECの設置箇所が近くなったり、[SA](https://www.soumu.go.jp/main_content/000713998.pdf)に移行すると、もっとこの遅延が縮まるはずです。

## クラウドレンダリングについて
クラウド上でレンダリングされた映像をストリーミングする技術のことです。

クラウドゲーミングなど注目されており、有名どころでいくと[Google Stadia](https://stadia.google.com/)などがあります。

Unreal EngineのEpic社が提供するデジタルヒューマン作成の[MetaHuman Creator](https://www.unrealengine.com/ja/metahuman-creator)もクラウドレンダリングにて提供されています。

このようにハイエンドな性能が要求されるプロ向けのツールでの活用例も出てきました。

少し変わった応用例としては、[Genvid](https://www.genvidtech.com/ja/)のような、インタラクティブなゲーム観戦体験を提供するプラットフォームでも使用されています。

MR機器でいくと、Hololensの[Azure Remote Rendering](https://azure.microsoft.com/ja-jp/services/remote-rendering)もその例です。

また、クラウドごしではありませんが、最近発表されたOculus Quest2のOculus Air LinkもLANを介したレンダリング技術です。

もし将来的にクラウドレンダリングを前提したMRグラスが発売されれば、それはハードウェアデコーダーと5Gモデムがついたとても**軽量**なデバイスになることでしょう。

レンダリング技術や映像配信技術の工夫で勿論遅延を減らしていくことはできますが、ユーザーの端末と物理的に近い場所にデプロイされるMECの方が都合がよいわけです。 

# How to
UE4やGenvidのクラウドレンダリングの作例がたくさん世の中に出ているので、さっそく試したいところですが、

通常のAWSのEC2インスタンスを建てるのとは異なり、いろいろ準備が必要です。

## AWSに申請しよう
申請があるの？面倒だなあ... と思われているそこのあなた、想像しているよりずっと簡単に申請されますし、許可も下ります。

英語で書く必要もありません。二日くらいで機械的な返信がきます。おそらく、研究機関や法人でなくても申請が通ります。

[かんたんなかんたんな日本語申請ページ](https://pages.awscloud.com/wavelength-signup-form.html?Languages=Japanese)

「Wavelength Zone でアプリケーションを実行するために、どれだけのコンピューティング性能が必要ですか?」などの面倒な記入欄もありますが、

遅延計測のために軽量なインスタンス一つ、GPUインスタンスを一つ、くらいの軽い説明で大丈夫です。

## EC2インスタンスやVPCを設定しよう
ここに大変大変親切な記事があります。
[5G MEC (KDDI / AWS Wavelength) を試す（設定編）](https://qiita.com/yyasuda/items/ca1727a89dfb707e80b2?fbclid=IwAR2fe30r2JQryknZnbo4g9dH8eALdG3VPv-D8NgD-ouhiDkS7ufbPJcUXRY)

この記事を参照して、大阪の近くに住んでいる方は「ap-northeast-1-wl1-kix-wlz-1」を、
東京の近くに住んでいる方は「ap-northeast-1-wl1-nrt-wlz-1」を選んでEC2インスタンスを作りましょう。

GPUインスタンスも1時間くらいであれば200円くらいなので、ゲームセンター感覚で遊べますが、
最小構成のt3.mediumで約5000円/月、GPUインスタンスのg4dn.2xlargeに至っては、約13万円/月です。大富豪以外は止めておきましょう。

GPUインスタンスを建てる準備ができれば、それでOKです。

コマンド一つ自動で構成される記事も準備中です...

# AWS Wavelengthを使ったアプリケーションを作る

## Unreal Engine 4のPixel Streamingを試そう。

Unreal Engineではなんとエンジンがクラウドゲーミングをサポートしています。

以下は第一弾の記事です。まずはローカル環境での動作編です。AWS編に続きます。

https://zenn.dev/chujohiroto/articles/e55ced1facd08e

## Genvidを使ってインタラクティブストリーミングコンテンツを作ろう。
映像配信はTwitchやYouTubeを経由してしまうので、遅延削減にどのくらい効果があるかはわからないですが、

ユーザーからの操作の遅延は縮まるはず？なので、それに期待して試験します。

## Unityを使ってクラウドレンダリングできるかな？
Unityを使ってクラウドレンダリングした例がいくつかあるので、頑張ってみます...

でも難しいかも...

# 参考資料
[5G MEC (KDDI / AWS Wavelength) を試す（設定編）](https://qiita.com/yyasuda/items/ca1727a89dfb707e80b2)

[5G MEC (KDDI / AWS Wavelength) を試す（実測編）](https://qiita.com/yyasuda/items/7b6d374710db2c912fa5)

[5G MEC (KDDI / AWS Wavelength) を試す（比較編）](https://qiita.com/yyasuda/items/205596e5204d90bf0ee4)

[【初心者】AWS Wavelengthを使ってみる](https://qiita.com/mksamba/items/9a45a666ae938053fa72)

[[国土IoT] 電柱・信号機等の標準化・共通化・ネットワーク化の提案
](https://ideabox.cio.go.jp/ja/idea/01887/)

[モバイル5Gって速いの？？を実際に測ってみました](https://recruit-tech.co.jp/blog/2021/03/26/mobile5g-verification/)