Jamie Kerber (Very Good Ventures) / Joel Wynarska (Toyota Connected N.A.) — 25min + Q&A Flutter DevRoom — "Fluorite: Console-Grade Game Engine in Flutter"
- Jamie Kerber — Very Good Ventures コンサルティングシニアエンジニア。Fluoriteプロジェクトのリードエンジニア。当日の代理発表者。
- Joel Wynarska — Toyota Connected North America プリンシパルエンジニア。Fluoriteプロジェクトの創設者・リード。当日不参加、ビデオメッセージで挨拶。
Toyota Connectedは IVIホーム画面(Wayland + Linux組み込み向けFlutterエンベッダー)を開発中。Yocto Linux上の Meta-Flutter プロジェクトの中核であり、車載Linux全般を支える。RAV4 2020 および 2026年モデル に搭載済み(プロダクション稼働)。
課題:2Dの静的インターフェースのみ → UI/UXの表現力が制限される
| ユースケース | 説明 |
|---|---|
| インタラクティブ・マニュアル | 車両機能の使い方を3Dイラスト付きステップバイステップで提示 |
| ハードウェア状態可視化 | 車両3Dモデル上で故障箇所をピンポイント表示。セルフサービス修理案内と連携 |
| 環境マッピング | 車外3Dマップを車内画面に投影、障害物回避の操縦支援 |
| 直感的コントロール | エアコン・ワイパー等の設定を3Dオブジェクトで操作。実車に近い見た目 |
⚠ 発表者注記:「あくまで私個人の技術的推測であり、既存製品のロードマップを反映するものではない」
flowchart TD
Start[3Dが必要] --> Unity[Unity / Unreal]
Start --> Godot[Godot]
Start --> FGPU[Flutter GPU]
Unity --> R1r["クローズドソース<br>Yocto非互換<br>高額ライセンス"]
Godot --> R2r["Pi5で起動20秒超<br>リソース過剰"]
FGPU --> R3r["iOSのみ安定<br>Linux非対応"]
R1r --> R1[❌ 却下]
R2r --> R2[❌ 却下]
R3r --> R3[❌ 却下]
R1 & R2 & R3 --> Build[手持ち技術で自前構築]
Build --> Fluorite[✅ Fluorite]
| 観点 | 詳細 |
|---|---|
| ソースコード | クローズドソース。プロプライエタリなバイナリ(blob)をLinuxディストリビューションに含める必要がある |
| Yocto互換性 | 「プロプライエタリblobの同梱によりYocto互換性が失われる。ユースケースの大部分がそこにある(a massive chunk of our use cases)」と発言。Yoctoビルドシステム自体はプロプライエタリblobを技術的に組み込めるため、ここでの「互換性を失う」はビルドの可否ではなく、OSS前提で構築されたToyota Connected / meta-flutterのエコシステムにクローズドソースを持ち込めないというポリシー上の制約と考えられる |
| リソース消費 | Flutterアプリにネイティブビューとして統合する場合、画面上の表示一つひとつに対してエンジン全体のインスタンスを個別に起動する必要がある。実験の結果、フレームレートの低下とパフォーマンス悪化を確認 |
| ライセンス費用 | 年間数百万ドル規模 |
| 総評 | 「話にならない(non-starter)」と明言 |
| 観点 | 詳細 |
|---|---|
| 起動時間 | Raspberry Pi 5で20秒超。組み込み用途では到底受け入れられない |
| リソース消費 | さらに詳しくテストした結果、Unity/Unrealと同様にリソース消費が激しいことを確認 |
| 評価背景 | 「最近かなり採用が進んでいるエンジン」と認めた上で、組み込み用途では不適格と判断 |
| 観点 | 詳細 |
|---|---|
| iOS | 安定 |
| Android | 不安定 |
| Linux | 利用不可 |
| macOS | 利用不可 |
| Windows | 利用不可 |
| API成熟度 | 「絶えず改善されてはいるものの、開発スピードには追いついていなかった」 |
| 総評 | Linuxで動かない時点で選択肢から除外 |
| 要素 | 技術 | 由来 |
|---|---|---|
| 既存資産 | IVIホーム画面 / ivi-homescreen(Wayland向けFlutterエンベッダー) | Toyota Connected(GitHub公開) |
| 開発中 | Flutter SDL3 Embedder(クロスプラットフォームI/O) | Toyota Connected(発表者が "working on" と言及、未公開) |
| 追加 | Filament(PBR 3Dレンダラー) | Google OSS |
| = 結果 | Fluorite(Flutter完全統合ゲームエンジン) | ソースリポジトリ未公開 |
block-beta
columns 2
Dart["Dart API — 開発者向け高レベルAPI"]:2
Flutter["Flutter — UI / 状態管理"]
Filament["Filament — PBR 3D / Vulkan"]
ECS["C++ ECS Core"]
SDL3["SDL3 Embedder — I/O"]
GPU["GPU (Vulkan 1.1+)"]:2
| レイヤー | 技術 | 備考 |
|---|---|---|
| ECS Core | C++ | 低レベル最適化、メモリ/処理の精密制御。組み込み・低スペックHW向け |
| 開発者API | Dart | Unity/Unreal/Godot風のクリーンな高レベルAPI。知識100%移転可能 |
| 3D Rendering | Filament (PBR) | 物理ベースレンダリング、Vulkan駆動、完全GPU加速 |
| UI Framework | Flutter | 状態管理(Provider/RiverPod/Bloc)、レイアウトシステム、ホットリロード |
| I/O | SDL3 Embedder | 組み込み・デスクトップ・モバイル間のクロスプラットフォーム入出力 |
| 機能 | 詳細 |
|---|---|
| ECS + シーングラフ | エンティティにコンポーネント(Transform, Collider, Model, Renderable, BehaviorScript)を付与。階層的シーングラフで複雑なネスト構造を表現 |
| モデル定義タッチトリガーゾーン | 3Dアーティストがモデル上のクリッカブル領域を定義 → 開発者がイベントを接続。並行作業を可能にする。デモ:タイヤをタップで空気圧調整 |
| 3D ↔ Flutter UI 同期 | ゲーム状態とFlutterウィジェットがリアルタイム同期。デモ:UIスライダーがタイヤ空気圧インジケータのサイズを制御 |
| PBRレンダリング | Filamentによる高品質な物理ベース3D。組み込み向け最適化済み。カスタマイズ可能なシェーダー/レンダリングパイプライン |
| ホットリロード | Flutterのホットリロードがそのまま動作。コード保存→1秒未満でシーン反映。Unity/Godotより桁違いに高速と主張 |
| Flutterウィジェット統合 | Fluoriteビューは単一Flutterウィジェット。アプリ内の任意位置に配置可能。マルチビュー対応、ビュー間で状態共有 |
Blender互換。既存ゲームプロジェクトから数分〜数秒でアセット移行可能と主張。
glTF GLB KTX HDR GLSL superset
SDL3の「プラットフォーム非依存な性質」により、以下をサポートすると発言:
| プラットフォーム | 発表での説明 |
|---|---|
| 組み込みLinux | 「Yocto含む」と明言。主要ターゲット |
| iOS / Android | モバイル対応 |
| Windows / macOS / Linux | デスクトップ。「全主要デスクトップOS」 |
| ゲームコンソール | 「SDL3のおかげで対応できる」。SDL3がツーリングを提供し、FlutterとFilamentのプラットフォーム非依存な性質と合わせて「近い将来届けられる」と発言 |
| WebAssembly / WebGPU | Q&Aで「まだ検討していない」と回答。現在はデスクトップOSに集中 |
| 優先度 | 項目 | 状態 | 詳細 |
|---|---|---|---|
| 1 | Jolt物理エンジン統合 | 次の優先事項 | エンティティにphysicsコンポーネントとして付与。剛体・軟体、各種コライダー設定 |
| 2 | CLI / GUIツール | 計画中 | デザイナーと開発者の両方を支援するクリエイティブワークフロー |
| 3 | SDL3 Dart APIパッケージ公開 | 計画中 | SDL3のDartバインディングを単独パッケージとして公開 |
| 4 | コラボレーション募集 | FOSDEM発表の主目的 | 外部チームからの開発リソースのコミットメント。共通ロードマップ策定。Webサイト近日公開 |
Q: WebAssembly / WebGPUでFlutter Webアプリにも対応可能か? まだ検討していない。現在はWindows, 一部Linuxディストリビューション, macOSの最新版に集中。GitHubリポジトリ公開後にissueとして歓迎する。
Q: レンダリングはCPUかGPUか? 完全にGPU加速。Vulkanで駆動。プラットフォームのフルGPUアクセラレーションを利用。
Q: アクセシビリティ対応は? API策定中。Flutterのセマンティックツリーを活用し、Fluorite Viewウィジェットがセマンティクスサブツリーにノードを提供する方式を検討中。
Q: IVIシステムのUIテストプロセスは? 自分の担当範囲外で回答不可。別チームの責任。ただしトヨタの厳格な品質基準を通過しないと車両には搭載されない。
Q: 車両以外のボード(ロボティクス等)への移植、センサーデータ(点群、LiDAR)のレンダリングは? 非常に面白いユースケース。自分たちで実験するかは不明だが、そういった体験を可能にしたい。ボード互換性はLinux + Vulkan 1.1以上で基本的に動作するはず。現在Raspberry Pi 5でテスト中。
- 戦略・方向性・コラボレーション — Joel Wynarska(Toyota Connected North America)
- 技術的質問 — Jamie Kerber(発表時に提示)