検索

WebGL のロード時間と市場投入までの時間を短縮

Marxent が Unity のプロフェッショナルサービスによってアプリケーションのパフォーマンスを最適化した方法

Marxent:Unity プロフェッショナルサービスのケーススタディ

2 つの高機能なソフトウェアプログラムと多種多様なウェブ技術を合わせて最高のユーザー体験を作り出すにはどうすればよいのか? Marxent は世界トップクラスの開発者チームの総力を結集してウェブ用の 360 度 3D のインテリアデザインのツールを最適化し、それを使って客や店員が自分たちで高度なビジュアライゼーションを行ったり、それを変更したりできるようにしました。さらに Unity のプロフェッショナルサービスを活用して、より良い製品をより早く市場に届けられるようしました。

Beck と Barry Besecker は 2011 年に Marxent をスタートさせ、最先端の 3D 技術を活用することによって、小売業者、特に個人住宅向けの家具やインテリアを専門とする業者の売り上げを増やし、返品を減らす手伝いをしました。最初兄弟は一度限りの AR、VR アプリケーションを作りましたが、パフォーマンスを高め、統合したコンテンツを管理する必要性に迫られた結果、OpenGL を Unity のリアルタイムエンジンに切り替えました。最終的に彼らの Marxent® 3D Cloud プラットフォームは業界の最先端を行くものとなり、現在彼らはオムニチャネル 3D デザインとヴィジュアライゼーションの分野で世界をリードしています。

プロジェクト

迅速でインタラクティブなビジュアライゼーションがインテリアデザインの売り上げを増やし、返品を減らす

目標

種々のブラウザ環境でのアプリのロード時間を最適化

プラットフォーム

WebGL、iOS、Android

チームメンバー

80

場所

オハイオ州、マイアミズバーグ – オースティン・ランディング

Unity のリアルタイムエンジンはなくてはならない要素です

Marxent’s 3D Room Designer は、ブラウザベースのインテリアデザインツールです。これを使えば、消費者や店員は高機能な 3D 環境で家具、色、壁の処理、寸法を自由に組み合わせることができます。シンプルでレスポンシブなインターフェースによって購入者は実際に目で見ながら家具を組み合わせたり、予算を見積もったりすることができます。その際に Unity のリアルタイムエンジンが重要な役割を果たします。

Marxent が最新の WebGL の 3D Room Designer への実装をデモで紹介した際、新規のクライアントからロード時間が長すぎることを指摘されました。Marxent のエンジニアはアプリケーション全体に対し大幅な最適化を行ったばかりだったのですが、この問題の原因は不明のままでした。エンジニアたちは消費者により良いエンドユーザー体験を提供し、売り上げを増やすために引き続き問題の解決に取り組みました。

当時彼らは、Unity リアルタイムエンジンや WebAssembly のような、一部に特異なコードを持つフォーマットでのレンダリングプログラムの振る舞いについてはあまり理解できていませんでした。そこで Marxent は Unity プロフェッショナルサービスに助けを求め、Unity のコードや Marxent のコード、あるいは .dll やフレームワークが構築される方法に関連して、主に WebGL プラットフォームでの起動やロード時間に悪影響を与えているものが何であれ、それを調べて解決してもらうことにしました。

成果:

  • より速く、より効率的な 3D プログラムによって顧客体験を改良
  • Unity プラットフォームで作業できる自社内の人材を増強
  • 2 つの世界トップクラスのソフトウェア会社間での提携がさらに強固に

目標: ロード時間の短縮

3D Room Designer のフロントエンドは、ネイティブな HTML と JavaScript でビルドされ、後者は外部の JavaScript の呼び出しを通じて Unity WebGL Player とやり取りします。それをパワーアップするのが Marxenta が作り管理する一連のライブラリで、ライブラリはすべての Marxent® 3D Cloud アプリケーションの間でシェアされます。

Marxent の開発者からプロジェクトのアーキテクチャ、システム、開発プロセス、セットアップ、ライブラリについての説明が行われた後、Marxent と Unity のチームは WebGL のプレイヤーデータとコードベースのサイズを縮小し、アプリケーションフローを最適化することに力を集中しました。具体的には次のようなことを実行しました:

  • WebAssembly の実装
  • プレイヤービルドから不要なアセットを削除し、大きな必須アセットのサイズを最適化
  • 不要な Unity のパッケージ(モジュール)を削除
  • ストリッピングの改善とマネージドコードライブラリの一部を削除することによってマネージドコードのサイズを最適化
  • シェーダのコンパイル時間とファーストシーンのアップフロントロード時間を最大限に短縮
  • その他の CPU に関するボトルネックを削除

後にアプリと WebAssembly との調和がこのアプリケーションのパフォーマンス最適化(APO)プロジェクトの主要な部分だったことがわかりました。WebAssembly は高速で実行されるテキストフォーマットで、World Wide Web Consortium(W3C)によって開発されたコードで JavaScript を補完できるようにします。 Marxent の製品開発リーダー、Vince Kilian によると、「WebAssembly の統合は Unity 2018.3 のリリースによってもたらされた最も重要な機能の 1 つです」

ひとりの人間がもたらす変化

Unity のリードサポートエンジニアのひとりは、1 週間、現場でクライアントのチームといっしょに過ごしました。Marxent の CTO であり共同創設者の Barry Besecker は言います。「彼の専門知識の深さと幅広さは驚くばかりのものでしたが、おそらくもっと重要なのは、彼が私たちのチームの要となってくれたことです。このすばらしい人物のおかげでチームワークは最高でした」彼の問題解決の能力がすばらしく、企業向けの Unity プラットフォームに関して豊富な経験を備えていたことは言うまでもありませんが、同時にコミュニケーションの中心として Marxent のチームと Unity の開発者やエンジニアをつなぎ、さまざまなソリューションをもたらしました。特にワークセッションでは Unity の WebGL の達人のひとりからのメッセージを直接チームに伝え、すばらしいアイデアを思いついたり厄介な問題を解決したりする手助けをしました。

また彼は、Unity の知的所有権を保護しながらも、Unity の「ブラックボックス」での作業についてしばしば有益で実践的なアドバイスをチームに提供しました。「問題の原因を深いレベルまで掘り下げるためには、システムの構造についてもある程度の理解が必要です。Unity の一部には複雑にネスト化されたステートメントがあり、また一部のスタックは追跡が非常に困難です。したがって彼が持つ深い専門知識と見識は私たちにとってとても重要でした」

高度に生産的な共同作業

APO 実施後、Marxent は顧客に対して、フロントエンドのロード時間の問題をすばやく解決する方法があり、ただちに実装されることを伝えました。Besecker は言います。「顧客は何か問題があるとすぐに私たちに知らせます。今回の問題に関して言えば、ある新しい顧客がテスト段階にあるプロトタイプを使っており、彼らにはより強く改善点を実感してもらうことができました」Marxent の概算ではロード時間は 30% 短縮され、これは感覚的にはかなりな違いです。

この経験を踏まえて Marxent では現在、シェーダーシステム(Unity 2018.3 で導入されたシェーダーパイプラインとレンダ―パイプライン)の拡張性を高めるのに必要な開発支援のための作業のステートメントを制作中です。

Marxent は、今後 Unity においてユーザーが作ったダイナミックな環境とオブジェクトが
強化される方針があることに期待しています。「いくつかの開発者カンファレンスで Unity のプロジェクトを見てきましたが、画面には数百万のインスタンスがあるのに対し、コール数はほんの少ししかありませんでした。非常に革新的だと思いますが、あれは高度な技術を持つ専門家だからできたことで、 Marxent では数千のソファーでさえ同時に生成することができません!」と Kilian は言います。

けれども彼らは数千のソファーの売り上げに貢献しています。基本的に Marxent は商業用 AR/VR ツール開発の最先端に位置しています。彼らとプロフェッショナルサービスとの共同作業には 2 つの側面があります。1 つは製品の最適化、もう 1 つは Unity が自身の製品とロードマップの改良と具現に関し、深い見識を得られることです。たとえば Marxent との共同作業は、一般的な診断ツールとしての メモリプロファイラー の重要性やダイナミックな小売りアプリのためのシェーダーシステムにおけるリアルタイムライティングの重要性などを再認識させました。

「他のベンダーは一切考慮しませんでしたが、Unity を選んだことは正解でした。彼らは私たちが誇る技術と調査研究を高く評価し、私たちは Unity こそがアプリの最適化をサポートする正しい選択肢であることを確信しました。また正直言って、彼らにはすぐにプロジェクトに取りかかれる専門家スタッフがいました」

Barry Besecker, CTO and Co-Founder, Marxent

We use cookies to ensure that we give you the best experience on our website. Click here for more information.