その知識はもう古い?エンジニアが時代に取り残されないためのサバイバル術〜CEDEC, Uniteから見る最新技術トレンド〜
ミスリル株式会社エンジニアの加茂です。
先月CEDEC, UniteTokyoに参加してきたのでレポートします。
今年のCEDECはパシフィコ横浜会議センターで3日間、UniteTokyoは台場のグランドニッコー東京で2日間開催されました。
会社からの手厚いサポートもあり、今年は全日フル参加させていただきました。
5日間で20以上の講演を聴講しましたが、今年は特に刺激的な講演が多かったと思います。
聴講した講演のジャンルは、Unityの最新機能、大型スマホゲームの運用事例などの、明日からすぐに業務に使えそうなものから、Hololens2の最新機能、Stadiaの開発環境、GoogleMapsAPIを使った位置ゲームの作り方など、長期的に学んでいきたいものまで多岐に渡りました。その中でいくつかの技術トレンドが見えてきたので紹介させていただきたいと思います。
Unityのトレンド
まず、Unity関連で最も注目を集めていたのはDOTSとScriptable Render Pipelineの2つだったと思います。
DOTSとはData-Oriented Technology Stackの略で、Unityが肝入りで推し進めている「データ指向で再構築されたUnityの中核基盤」と言えます。このDOTSが台頭してきた背景には、「Performance by default」というUnityのスローガンがあります。つまり、Unityで作られたゲームがチューニングなしのデフォルトの状態でハイパフォーマンスに動くようにしたい。そのために、従来のオブジェクト指向の考え方を脱却し、現在のマルチコアプロセッサや広いメモリを最大限活用した、データ指向の設計でUnityの基盤を作り直そう、という発想です。DOTSは、安全にマルチスレッドを活用するための「C# JobSystem」、メモリ効率が高い実装をするための「ECS (Entity Component System)」、そしてこれらの強い制約条件下で書かれたC#からCPUに合わせて高度に最適化されたアセンブラを生成する「Burst コンパイラー」の3つの柱からなります。
ゲーム開発者としては、DOTSによって新しく何ができるようになったのかが一番気になるところだと思います。端的に言いますと、特にモバイル端末においてパフォーマンスの問題で諦めていたいくつかのゲームが作れる可能性が出てきました。
例えば、大量のオブジェクトが出現するオープンワールドと呼ばれるジャンルのゲーム。コンソールゲームでは1大ジャンルとなっているオープンワールドも、モバイルゲームではまだまだその数は少なく、その理由のひとつとして大量のオブジェクトを出すと特にモバイル端末ではロードに時間がかかったり、描画負荷がかかるなどの問題がありました。しかしDOTSによってロード・描画の高速化がなされたことで、こうしたゲームも作れる可能性が高まってきました。実際にオープンワールドのサンプルゲームをiPhoneで動作させている講演もあり、DOTSは実用可能なレベルまできていると感じました。ただし、Entity Component Systemに関してはまだプレビュー版で仕様が安定していないので、プレビューが外れてから学んでも遅くはないと思います。
またScriptable Render Pipeline(以下SRP)に関する講演もかなり多く、注目されている技術だと感じました。これまでUnityの描画パイプラインは開発者が制御できませんでした。そのため描画周りで凝ったことをやろうとすると、その処理のためだけにカメラを増やすなどの特殊対応が必要になったり、そもそも実現不可能であったりしたのですが、SRPが登場したことによって開発者がC#で描画パイプラインを構築できるようになりました。SRPを使って、シャドウマップやSSAO、縮小バッファなどを実際に導入した講演を見ましたが、今までのUnityとは描画周りの自由度が大きく変わってきていると感じました。
サーバーサイドのトレンド
Unity以外の技術だと、HTTP/2の採用事例の講演にも注目しました。
HTTP/2はWeb高速化の取り組みから生まれ、2015年に標準化が完了したプロトコルです。標準化から4年が経ち、ゲーム業界でも導入事例が増えてきました。HTTP/1.1では1つのリクエストが完了するまで次のリクエストを送ることができず、非効率なため、モダンなWebブラウザは複数同時接続を貼ることで多重化に対応しています。しかし、同時接続はネットワークに負荷をかけるため、最大6個程度までしか接続できないようにブラウザ側で制御されています。HTTP/2ではTCP1接続の中で100以上のストリームの通信が可能なため、初期データなど細かい大量のダウンロードを高速化できるのです。
講演の中では、HTTP/2を用いてアセットバンドルのダウンロード時間を10倍以上速くした話や、AWSでHTTP/2非対応のサービスを使わずにインフラ設計をした話など実用的な話が多く、プロジェクトでHTTP/2を採用することは十分に現実的な選択肢になってきていると感じました。
また、Amazon GameLift Realtime Serverや、Google Cloud Game Serversなど、ゲームサーバーの機能をフルマネージドなサービスとして提供しようと各社凌ぎを削っており、この分野は、開発者にとって今後ますます使いやすいサービスが増えてくると思いました。
例えば、リアルタイムマルチプレイのゲームを作るためには、スケーラビリティ、パフォーマンスチューニング、複雑なマッチングシステムなど、考慮しなければならないことが山ほどあり、これまでは多大な実装・管理コストがかかりました。これらのことが、コンソール上でのわずかな操作と数行のスクリプトのみで実現できるようになってきているのです。これまで大規模なチームと予算でしか作ることができなかったゲームが、小さなチームで短期間に作れる可能性を感じ、とてもワクワクしました。
一線で活躍し続けるエンジニアになるために
今回、CEDECとUniteTokyoに参加して強く感じたのは、ゲーム開発における技術が今まさに大きく変わろうとしているということです。
これらはまだまだ枯れていない技術ですが、単なる流行り廃りではなく、「今まで作れなかったゲームが作れるようになる」という点でとても大きな意味を持っていると思っています。
時代に取り残されずに、一線で活躍し続けるエンジニアになるためには、新しい技術を継続して学び続けていくしかありませんが、一人で黙々とそれを続けて行くことは大変なことです。
幸い弊社は、会社として個人の成長のために時間もお金も大きく投資していますし、得た知見を共有して、お互いに切磋琢磨していくことを大切にしている会社だと強く感じています。また、合理的である限り、変化を恐れずに新しい技術をプロジェクトに実戦投入していく大胆さを持っているので、学んだ技術を仕事で使えるチャンスにかなり恵まれていると思っています。
ミスリルでは一緒にNextStandardな技術に挑戦していく仲間を募集しています。
ご応募お待ちしております!