今日は、すこし、箱庭ラボの技術力を自分なりに並べてみようと思いました。
なぜそんなことを思ったかと言うと。
「ひまだったから。」
……というと怒られそうですが。
えっと、こういうのどう表現するんですかね。
全速力で走って、
息が切れて、
ようやく立ち止まって、
少し汗がひいた瞬間。
フォレスト・ガンプが、ふと立ち止まって、
“I’m pretty tired. I think I’ll go home now.”
と言った。
そういう瞬間。
今日は、そういう日。
箱庭の技術たな卸し。
こどもの頃、木造平屋の古い家に、
おおきな箱がありました。
ぼくのお気に入りの箱です。
その中には、たくさんのおもちゃが入っていました。
時々、思い出したように、
祖母にお願いして、
棚からとってもらって、
その箱の中をガサガサ漁って、
「あ、こんなんあったんや」
と言って、また夢中になって遊んでいました。
今の箱庭は、たぶん、あの頃と同じです。
そうですね。
ちょっと、並べてみましょうか。
共有メモリによる軽量・高速通信、TCP/UDP/MQTT/Zenoh/ROS/Storage などの通信方式、有界時刻同期、箱庭コンダクター、PDUエンドポイント、PDU RPC、PDU Bridge。Unity、Unreal Engine、Godot、Panda3D、three.js、MuJoCo、マイコンシミュレータAthrill、Runtime Delegation。箱庭ドローンシミュレータ、PX4/ArduPilot連携、PX4箱庭アダプター、箱庭ドローンのアダプター対応、PID自動チューニング基盤、1024台ドローンシミュレーション。TurtleBot3 と Unity と箱庭ドローン連携、箱庭ブリッジ、ARによるリアルとバーチャルの融合。ROS/URDF起点のモデル変換エコシステム、ROS/IDL起点のメッセージ変換エコシステム、MuJoCoベースのセンサシミュレーション、Scratch連携、MCPによるAIドローン操作、PX4コード解説記事の連載。
一つ一つは、「あ、こんなん作ったな」という感じ。
ぜんぶ、思い出ぶかい。
(ぜんぶ、そのとき、その場の作っているときの自分の情景が目に浮かびます。)
物理エンジンとか、ゲームエンジンとか、通信とか、時刻同期とか、マイコンシミュレータとか、ドローン制御とか、ロボットモデル、センサ、AI操作…などなど。
一見バラバラに見えます。
でも、ぼくの中では、あの頃とあまり変わってなくて。
箱の中をガサガサ漁って、
「あ!これとこれ、つながる。」
ガシャーン!
どかーん!
って遊べる。
ただ、昔と違うのは、そのおもちゃが、
いつのまにか誰かの研究とか、開発・検証に使えるようになってる。
そんだけの違いはあります。
変形するおもちゃが好きでした。
ぼくは、おもちゃの中でも、
変形できたり、
組み立て方のバリエーションが豊富だったり、
その日の気分で形を変えられる、
そういうのが好きでした。
きまった遊び方しかできないやつは、すぐ飽きます。
箱庭って、そういうのじゃないんです。
きまった使い方がない。
ドローンを飛ばしてもいい。
ロボットを動かしてもいい。
ゲームエンジンにつないでもいい。
物理エンジンを差し替えてもいい。
実機につないでもいい。
AIに操作させてもいい。
「これは、こう使ってください」というより、
「これとこれ、つないだら何が起きるんやろ」
を試すための遊び場です。
で。
そういう何でもできる環境、つまりプラットフォームは。
「アーキテクチャがしっかりしてないとできない。」
ただ部品をたくさん集めただけだと。
すぐ壊れます。
つないだ瞬間に破綻したり。
一個動いたと思ったら、別のところが動かなくなったり。
(子供心に、そういうおもちゃは僕の箱には残りませんでした)
だから箱庭では、
最初から
「基盤としてどこにこだわり、どこはユーザに委ねる差し替えポイントにするか」
ここだけは、かなり意識してきました。
物理エンジンは差し替えられる。
可視化エンジンも差し替えられる。
通信方式も差し替えられる。
制御プログラムも差し替えられる。
センサ処理も外に出せる。
実機ともつなげられる。
でも、そのためには、共通の時間が必要です。
共通のデータ形式が必要です。
アセット同士を接続するための約束が必要です。
どこまでを同期し、どこからを非同期にするかの設計も必要です。
つまり、自由に遊ぶためには、
その自由さを柔軟に組み込める・壊れない構造がだいじ。
ここをおろそかにすると。
ボロボロ、
崩れ落ちていく。
技術力って、なんでしょうか。
ぼくは、時々思うことがあります。
「技術はあるけど、それ、何の役に立つの?」
いつものセリフです。
ニーズが大事。
市場が大事。
お金が回ることが大事。
わかります。
それは本当に、その通りです。
でも。
昔、どこかで聞いた話です。(多分、TOPPERS開発者会議で)
鍋から鳥の頭と尻尾だけが見えている。
外から見ると、鳥を丸ごと煮込んでいるように見える。
でも、鍋の中をのぞくと、胴体がない。
それでは、お腹は満たされません。
本当に大事なのは、外からは見えていない、鍋の中の胴体部分です。
一枚のパワポだけで、できそうに見せる。とか。
うーん、そういうものではなくて、
ちゃんと動くもので、ちゃんと心を動かすやつ。
ドローンが飛ぶ。ロボットが動く。画面にきれいに表示される。AIが操作する。実機とつながる。
とか、
でもでも、
それだけでも足りません。
まったく。
その裏側にある設計思想。
たとえば、
時間を合わせる仕組みがあるか。
データを受け渡す形式があるか。
責務を分ける設計があるか。
あとから差し替えられる構造があるか。
壊れたときに、どこが壊れたのか分かる境界があるか。
など。
お金が回ることは大事。
ニーズに応えることも大事。
それは、この世界の摂理。
しかたない。
でも、お金が回った後で、技術の辻褄合わせをするようなことは、あまりやりたくありません。
箱庭ラボがこの数年で作ってきたものは、たぶん、その「見えていない胴体部分」です。
これは実験です。
骨組みは作りました。
これからです。
たとえば、
MuJoCo と Godot を組み合わせると、
よくある「ロボットシミュレータ」に見えるかもしれません。
PX4 と MuJoCo を組み合わせると、
よくある「ドローンシミュレータ」に見えるかもしれません。
実機とシミュレーションをつなぐと、
よくある「デジタルツイン」に見えるかもしれません。
AI とドローンをつなぐと、
よくある「AIロボット操作」に見えるかもしれません。
でも、ちょっと違うテイストがあります。
箱庭が作っているのは、
ひとつの完成されたシミュレータではありません。
物理エンジン、可視化エンジン、制御プログラム、センサ処理、実機、AI。
それぞれを分けたまま、同じ時間、同じデータ、同じ世界の中につなぐための骨組みです。
だから、見た目には「よくあるこれ」に見えることがあります。
でも、その裏側では、差し替えられる。
組み替えられる。
分けられる。
つなぎ直せる。
別の世界に展開できる。
そこが、少し違います。
「これとこれを組み合わせると、よくあるこれになります」
で終わらない。
「でも、その組み合わせを変えると、別のものにもなる」
というところに、箱庭の面白さがあります。
箱庭は、
何かひとつの答えを作るためのものではなくて、
なんというか、
答えをつくっても、
あとから組み替えられる。
そんな状態にしておくための、
そういう骨組み、
やさしさなのかも。
おしまい。

コメントを残す