Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
なんでRustの環境構築してないのにRust製のツールが動くの? / Why Do Rust-...
Search
TOMIKAWA Sotaro
October 25, 2025
Programming
15
48k
なんでRustの環境構築してないのにRust製のツールが動くの? / Why Do Rust-Based Tools Run Without a Rust Environment?
https://vuefes.jp/2025/
TOMIKAWA Sotaro
October 25, 2025
Tweet
Share
More Decks by TOMIKAWA Sotaro
See All by TOMIKAWA Sotaro
Web技術を最大限活用してRAW画像を現像する / Developing RAW Images on the Web
ssssota
2
2.3k
漸進。
ssssota
0
3.1k
Preact、HooksとSignalsの両立 / Preact: Harmonizing Hooks and Signals
ssssota
1
3k
useSyncExternalStoreを使いまくる
ssssota
6
6k
React CompilerとFine Grained Reactivityと宣言的UIのこれから / The next chapter of declarative UI
ssssota
8
5.6k
新しいAPI createRawSnippet触ってみた / What is the createRawSnippet?
ssssota
2
240
脱法Svelte / Evasion of svelte rules
ssssota
1
260
Documentation testsの恩恵 / Documentation testing benefits
ssssota
2
1.1k
TypeScriptとDocumentaion tests / Documentation tests with TypeScript
ssssota
8
4k
Other Decks in Programming
See All in Programming
CSC509 Lecture 11
javiergs
PRO
0
300
2026年向け会社紹介資料
misu
0
150
PyCon mini 東海 2025「個人ではじめるマルチAIエージェント入門 〜LangChain × LangGraphでアイデアを形にするステップ〜」
komofr
3
890
CSC509 Lecture 08
javiergs
PRO
0
280
Blazing Fast UI Development with Compose Hot Reload (droidcon London 2025)
zsmb
0
490
AI駆動開発ライフサイクル(AI-DLC)のホワイトペーパーを解説
swxhariu5
0
450
Health Kit × Foundation Models でAIコーチを作ってみた
ryunakayama
0
100
Inside of Swift Export
giginet
PRO
1
520
Making Angular Apps Smarter with Generative AI: Local and Offline-capable
christianliebel
PRO
0
110
Eloquentを使ってどこまでコードの治安を保てるのか?を新人が考察してみた
itokoh0405
0
3.1k
SidekiqでAIに商品説明を生成させてみた
akinko_0915
0
120
開発組織の戦略的な役割と 設計スキル向上の効果
masuda220
PRO
10
2.2k
Featured
See All Featured
Balancing Empowerment & Direction
lara
5
730
Leading Effective Engineering Teams in the AI Era
addyosmani
8
1.1k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.2k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8k
How to train your dragon (web standard)
notwaldorf
97
6.4k
Git: the NoSQL Database
bkeepers
PRO
431
66k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.7k
For a Future-Friendly Web
brad_frost
180
10k
Fireside Chat
paigeccino
41
3.7k
Scaling GitHub
holman
463
140k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
10
920
Six Lessons from altMBA
skipperchong
29
4.1k
Transcript
なんでRustの環境構築してないのに Rust製のツールが動くの? Why Do Rust-Based Tools Run Without a Rust
Environment? sssssota / #vuefes
深刻な「Rust製ツールチェイン侵⾷」問題 いま、フロントエンド開発を始めるとRust製のツールチェインが必ず登場する(?) Rolldown, Oxc, SWC, Biome, Deno, Rspack, Lightning CSS,
etc... その勢いはとどまるところを知らず、 ランタイム、エンジン、リンター、フォーマッター、バンドラー、などなど...
いや、待てよ...? JavaScriptのためにNode.jsは⼊れたけど、 「Rustの環境構築」してないぞ...?
なぜか動くRust製ツールたち なんでうごくの...?こわくなってきた...😰 Rust製ツールこわい npmでinstallしただけなのに (そうじゃないものもあるけど) なんなら、JavaScriptで機能を拡張したり協調して動くことだってある。ヒェッ ...主にパターンは3つ。CLIかNode-APIかWASM。
1. CLIベースのRust製ツール DenoやBiomeがこれに該当。 インストールすると、単純なCLI、バイナリが配置される。 Node.jsをインストールする行為に近い。 バイナリということは、OS/CPUによって対応してたりしてなかったり。 package.jsonの `optionalDependencies` という仕組みで OS/CPUに応じたバイナリがインストールされる。
2. Node-APIベースのRust製ツール Rolldown, Oxc, SWC, Rspackなどが該当。 OS/CPU依存のネイティブバイナリ、でもNode.jsと通信できる。 =Node-API Rustには、Node-APIを実装するためのフレームワークNAPI-RSがある。 NAPI-RSにより手軽にNode.jsとRustの世界をつなぐことができる。
3. WASMベースのRust製ツール WebAssemblyベースのRust製ツールはOS/CPUに依存しない。 →ブラウザ上でも動かせる。OS/CPU毎にビルドしなくて良い。 ただし、1,2のようなネイティブな手法よりは動作が遅い。 現在、RustからWASMを作る方法としては以下の2つが主流: 1. wasm-bindgen 2. NAPI-RS
(WASI) (上記のいずれも使わない方法もあるが省略)
WASM (WebAssembly: ワズム) WebAssemblyはいわば高階関数(関数を返す関数)みたいなもの できることは関数呼び出し、メモリ操作と計算だけ。Importsでできることが決まる
WASI (WebAssembly System Interface: ワズィ) WASIは入出力の仕様が決まっているWASM ファイルの読み書き、時間取得など入出力関数のシグネチャが定義されている。
3. WASMベースのRust製ツール(wasm-bindgen) wasm-bindgenは • 非WASIなWebAssembly • それを使うためのJavaScript + 型定義ファイル を出力する。
Rustで提供される標準ライブラリの大部分は使えない。 =ファイルシステムやネットワークへのアクセスには工夫が必要 一方、DOM操作APIをRustから使える仕組みがあるなどの利点もある。 SWCやNode.jsのTypeScript対応(Amaro)などで利用されている。
3. WASMベースのRust製ツール(NAPI-RS) NAPI-RSはWASIベースのWASMも出力できる。 wasm-bindgenと比べ制約も少なく、RustのコードベースをWASMにできる。 WASIなので、ファイルシステムなども扱えるし、WASMなのでブラウザで動く。 →ブラウザで動く開発環境(StackBlitz等)を支える主力な技術となっている
おわり Rust製ツールチェインは、 • ネイティブコンパイル (CLI / Node-API) • WASM (WASI)
により開発環境がなくてもJavaScriptと協調して動く。 今後のRust製ツールチェインの進化が怖い!