『これ、どこに置けばいい?』─ フロントエンド発のFSDを、Rust製ゲームエンジンで守らせた話
応募日: 2026-06-16
トークタイトル(70文字以内)#
『これ、どこに置けばいい?』─ フロントエンド発のFSDを、Rust製ゲームエンジンで守らせた話
トーク概要(1000文字以内)#
「『これ、どこに置けばいい? 半年後の自分は、ちゃんと見つけられる?』」── インフラ屋のわたしが、Rustの個人開発でずっと抱えてきたモヤモヤです。
本職はインフラエンジニアでSRE。反復作業を疑うのが日課です。趣味でRust + Bevy + Dioxus desktopのゲームエンジンエディタ「Bebeu」を個人開発しています。ドメイン(Character / SpriteGroup / Animation / Effect …)とCRUD featureが増えていく予感に、手が止まりました。「ここに置いた理由を、半年後の自分が覚えていられない」。配置に毎回悩むコストが、スピードを確実に削っていく感覚がありました。
そんな折、フロントエンド界隈で広まっているFeature-Sliced Design (FSD)に行き着きます。app / pages / widgets / features / entities / sharedの6レイヤーに分け、同レイヤー間の依存を禁止する。「どこに置くか」をレイヤー名で機械的に決められる設計思想です。Web FE由来で、公式エコシステムはSteigerというJS/TSのlinterでencapsulationを強制します。
それでもRustのdesktopアプリで通用するのか?──「持ち込むのはWeb。守るのはRust。」と決めて、editorをslice.rs + slice/のfacadeパターンで組み直し、pub modを禁止して、Rustのmod可視性に、FSDのレイヤー境界を守らせました。結果、deep-import違反はbuild error。SteigerがJS/TSで頑張っていたencapsulationが、Rustではコンパイラ標準で手に入る。フロントエンド発の架構が、ゲームエンジンエディタで予想以上にハマりました。
さらに、この機械的に決まる決定木は、AIエージェントと一緒に書くとき効きが倍になりました。promptにも、明日の自分にもそのまま効きます。AIがdeep-importしてきても、Rustが即build errorで止めてくれる。半年後の自分も、AIエージェントも、わたしのコードを”読みに来る”側 ─ 画面の向こうの読者です。レイヤー名さえあれば、迷子にしません。
本セッションでは、フロントエンド発のアーキテクチャをゲームエンジンエディタに持ち込み、RustとAIに増幅された越境体験を共有します。「FSDの決定木」「Rustのコンパイラ」「AI駆動開発との相性」── 3つの守護者を、フロントエンド越境の実例として持ち帰ってください。Rustを使わない方には、可視性でencapsulationを守れる他言語への翻案レシピになります。
リポジトリ(公開ミラー): github.com/sakai-nako/Bebeu