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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
TOMIKAWA Sotaro
October 25, 2025
Programming
15
53k
なんで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
Atomics APIを知る / Understanding Atomics API
ssssota
1
930
Web技術を最大限活用してRAW画像を現像する / Developing RAW Images on the Web
ssssota
2
2.8k
漸進。
ssssota
0
3.4k
Preact、HooksとSignalsの両立 / Preact: Harmonizing Hooks and Signals
ssssota
1
3.3k
useSyncExternalStoreを使いまくる
ssssota
6
6.4k
React CompilerとFine Grained Reactivityと宣言的UIのこれから / The next chapter of declarative UI
ssssota
8
5.8k
新しいAPI createRawSnippet触ってみた / What is the createRawSnippet?
ssssota
2
270
脱法Svelte / Evasion of svelte rules
ssssota
1
290
Documentation testsの恩恵 / Documentation testing benefits
ssssota
2
1.2k
Other Decks in Programming
See All in Programming
開発者から情シスまで - 多様なユーザー層に届けるAPI提供戦略 / Postman API Night Okinawa 2026 Winter
tasshi
0
200
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
170
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.9k
「ブロックテーマでは再現できない」は本当か?
inc2734
0
980
CSC307 Lecture 07
javiergs
PRO
0
550
Oxlint JS plugins
kazupon
1
940
360° Signals in Angular: Signal Forms with SignalStore & Resources @ngLondon 01/2026
manfredsteyer
PRO
0
130
AgentCoreとHuman in the Loop
har1101
5
230
AIによる高速開発をどう制御するか? ガードレール設置で開発速度と品質を両立させたチームの事例
tonkotsuboy_com
7
2.3k
LLM Observabilityによる 対話型音声AIアプリケーションの安定運用
gekko0114
2
430
CSC307 Lecture 03
javiergs
PRO
1
490
今から始めるClaude Code超入門
448jp
8
8.7k
Featured
See All Featured
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
200
Designing Powerful Visuals for Engaging Learning
tmiket
0
230
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
120
Rails Girls Zürich Keynote
gr2m
96
14k
First, design no harm
axbom
PRO
2
1.1k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
How to Talk to Developers About Accessibility
jct
2
130
[SF Ruby Conf 2025] Rails X
palkan
1
750
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
3.9k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
53
Build your cross-platform service in a week with App Engine
jlugia
234
18k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.2k
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製ツールチェインの進化が怖い!