Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RustとWebGPUで実現するアバター描画システムの刷新とコスト削減

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on. →

 RustとWebGPUで実現するアバター描画システムの刷新とコスト削減

GREE Tech Conference 2026で発表された資料です。
https://techcon.gree.jp/2026/session/Short-Session-3

Avatar for gree_tech

gree_tech PRO

October 16, 2026

More Decks by gree_tech

Other Decks in Technology

Transcript

  1. 目次 • 背景 ◦ プロダクト:モンプラ ◦ WebGPUに置き換えたアバターシステム • 課題 ◦

    なぜGPUインスタンスをやめたい? ◦ WebGPUに置き換え? • CPU化 ◦ 従来型のリファクタリング ◦ AIでのリファクタリング:失敗と成功 • まとめ 3
  2. 背景 • • • • 『モンスタープラネット』(通称:モンプラ) ◦ 2010年リリース 3Dアバターをサポート MascotCapsule(2001〜)をベース(独自システム)

    C++/Cg言語:GPUレンダリング Rust + WebGPUのシステムで置換 CPUレンダリングでコスト削減 (GeminiとClaude Codeで2026/03に開発) 4
  3. なんでRustとWebGPU? : 開発の容易性 C++ / Cg OpenGL XWindow Linux サーバー

    動作確認が面倒 MacやWindowsで 動かない。 VMでも動かない。 OpenGL・C++はデバッグ難 Rust / WGSL WebGPU Mac/Windows/Linux/ブラウザ 動作確認が簡単 ブラウザでの動作保証 エラーチェック ⭕ ※WebGPUはVulkan, Metal, Direct3Dを基盤とするGPUのAPI 6
  4. 課題:高いし、動かなくなってきた • GPUレンダリング ◦ NVIDIAのCgというシェーダー言語(古い技術) ▪ 2012年のバージョンが最後 • 課題 ◦

    ◦ 最新のGPUインスタンスは割高。 ▪ CPUインスタンス • m6a.2xlarge(8vCPU, 32GB ) • 0.44$/h ▪ GPUインスタンス • g5.2xlarge(8vCPU, 32GB, VRAM 24GB ) • 1.75$/h 最新のGPU(RTX [234]0xx やT4)では動かない ▪ A100やH100では動くが。 GPUインスタンスは 4倍高い サービスの継続性に支障 7
  5. CPU化:従来型のリファクタリングの失敗 • 従来型のリファクタリング(生成AI以前) ◦ リファクタリング対象のコード:テストがない。 動く状態を保ちながら少しずつ改変<ー失敗 ◦ ◦ Cg言語とGLSL言語を同居<ー失敗 固定シェーダー的なグローバルの状態のあるOpenGL<ー古い

    ◦ • 置き換えは ことごとく失敗 失敗例 ◦ ◦ ◦ OSMesa:(CPUで動かすヘッドレスのOpenGL) ▪ Cgのランタイムがうごかない。 ▪ Cgのランタイムはソースコードがない。 Cg言語をGLSL言語に変換して動作 ▪ CgのランタイムはGLSLをサポートとあるが動かない。 CgのランタイムをOpenGLのフレームワークに置換 ▪ セグフォがでるがエラーメッセージが不十分(デバッグできない。) ▪ OpenGL:mesaのソースコードレベルの解析が必要。 8
  6. CPU化:生成AI丸投げによる失敗 • 生成AI(Claude Code)に丸投げ ◦ ◦ • 生成AI ▪ ソースコードを読ませて、アーキテクチャ分析

    ▪ Cg言語からGLSLやWebGPUへの置き換え うまくいかない原因 ▪ 一気にコードを生成しすぎ。(認知的過負荷) • AIは適当な四角形を出し始める。 ▪ デバッグできない。 ▪ 検証するポイントを指定できてない。 中身がわかっていそうでも 一括生成は失敗 デバッグできない 失敗例 ◦ ◦ C++/Cgのコードを分析して、C++/WebGPUに変更せよ! ▪ セグフォ多発、単色の画像の出力。 ▪ GDBデバッグできない。(もともと生成AI以前もデバッグできなかった。) C++/Cgのコードを分析して、Rust/WebGPUに変更せよ! ▪ 単色の画像がでたり、四角い箱がでてきた。 9
  7. CPU化:生成AIによるレビューの壁打、開発計画作成 • 開発計画の立案:生成AI(Gemini)と壁打ち ◦ ◦ ◦ AI(Gemini)と壁打ち:自分の開発計画に自信がない 段階的な開発 ▪ AIが開発の方法のレビュー

    TDDが鍵 ▪ じっくり計画 段階的開発&TDD ▪ 数学的な座標変換、アセットのパーサー、WGSLのコード ▪ ゲートキーパーを置く(モジュールごとにデバッグ) ▪ タスクを分割:開発精度が向上 Rustで開発:セグフォ対策 • 開発(Claude Code) ◦ ◦ ◦ Claude Codeで開発、キャラの輪郭がでた。(画像でデバッグ) 人間が画像をみて、AIにフィードバック ▪ キャラが後ろ向いている(座標軸の向きの問題) ▪ 黄色い肌のいろが濁っている(透過処理の問題) ▪ パーツがキャラの本体から離れている。(ボーンの処理の問題) 本番環境から画像を収集してフィードバック 10
  8. その後:本番導入へ • サポートセンター(入稿)やStaging環境での評価 ◦ ◦ ◦ ◦ 背景の透過処理の問題 モーションファイルがない場合のスキップ処理の問題 リクエストを落とす(リクエストハンドラとワーカー分離)

    長時間稼働の問題:アセットのキャッシュがFULLでデッドロック • 本番導入 ◦ ◦ GPUインスタンスをCPUインスタンスにできた。 ▪ メモリも削減できた。 費用は5分の1になった ▪ GPU(1.75$/h)ー>CPU(0.38$/h) • 旧:g5.2xlarge(8vCPU, Memory 32GB ) • 新:c6a.2xlarge(8vCPU, Memory 16GB ) 11
  9. まとめ • 生成AI活用によるシステムの置き換え ◦ ◦ ◦ レガシーシステム(C++/Cg/OpenGL・GPUレンダリング) 現代的なシステム(Rust/WebGPU・CPUレンダリング) 費用は5分の1 •

    従来型のリファクタリングの失敗 • AI開発失敗パターン ◦ 生成AIに分析から実装まで丸投げ、デバッグできない。 • AI開発成功パターン ◦ ◦ ◦ ◦ 認知負荷をさげるために開発計画をAIと立案 ▪ 開発計画(Gemini)と実際の開発(Claude)のAIを分離 一気に開発させず、タスクを分離 デバッグ可能なマイルストーン デバッグしやすい言語(Rust)を選択 ▪ C++・OpenGLのセグフォのデバッグは困難 12