
Rustを避けて6ヶ月を過ごしました。「カーネル開発者のためのものだ」「Webの仕事には難しすぎる」と自分に言い聞かせていました。しかし、Pythonよりも速く、NodeよりもポータブルなCLIツールが必要になり、試してみる気になりました。
2ヶ月後、私は定期的にRustを書いています。キャリアを変えたからでも、すべてのプロジェクトに必要だからでもありません。Rustを知ることで、JavaScriptとPythonの開発者として静かに成長できたからです。
誰もが警告する借用チェッカー(borrow checker)は、罰ではありません。教師です。
JavaScriptを書くとき、変数を誰が所有しているか、いつ解放されるか、コードの2つの部分が同時にそれを変更する可能性があるか、といったことは考えません。ランタイムがすべて目に見えない形で処理します。Rustは、コンパイル時にそれらを明示的に考えることを強制します。
Rustから価値を得るために、本番環境でRustを書く必要はありません。所有権モデルを学ぶことは、JavaScript、Python、Goなど、ミュータブルな状態を持つあらゆるものについて推論する方法を変えるでしょう。
最初の数週間はコンパイラと格闘しました。その後、コンパイラが「なぜ」文句を言っているのかを理解し始め、JavaScriptの書き方が変わったことに気づきました。インプレースでの変更が減り、データの所有権がより明示的になりました。ミュータブルな参照を暗黙的に共有しない関数が増えました。
JavaScriptでは、これはごく自然に感じられます。
let data = fetchData();
processA(data);
processB(data);
しかし、processAはdataに何をしますか?何もしないかもしれません。変更するかもしれません。関数を読まなければなりません。Rustは所有権を明示的にします。
let data = fetch_data();
process_a(&data); // borrows: data is read-only here
process_b(&mut data); // mutates: borrow checker tracks this
このモデルが理解できると、JavaScriptでオブジェクトを関数に渡し、それが変更されないことを願っているすべての場所に気づき始めます。Rustはそれを声に出して言わせるだけです。
Rustの借用チェッカーとは何ですか?
これは理論的な話ではありません。RustはWebエコシステムで実際に足場を築いています。
WebAssembly: Rustは他のほとんどの言語よりも優れたWASMへのコンパイルが可能です。ブラウザでパフォーマンスが重要なロジック(画像処理、暗号化、パースなど)を実行する必要がある場合、Rust + WASMは有力な選択肢です。wasm-packツールは本当に良くなりました。
CLIツール: Clapを使って単一バイナリツールを構築するのは高速で、結果としてランタイム依存関係なしで配布できます。私はプロジェクトのために小さなファイル処理ツールを構築しましたが、配布はバイナリを渡すだけでした。それだけです。
Edge Functions: Cloudflare WorkersはRustをサポートしています。コールドスタート時間はNodeよりもはるかに短く、レイテンシに敏感なミドルウェア(認証チェック、A/Bルーティング)にとっては重要です。
開発者ツール: すでに使用しているツールの多くはRustで書かれています。Biome、SWC、Turbopack、Rolldownなどです。これらは、RustがNodeの同等品よりも10倍から50倍高速なJavaScriptツールを構築することを実用的にしたために存在します。
Rustの公式ドキュメントはdoc.rust-lang.org/bookで無料で公開されており、私が読んだ技術書の中でも本当に優れたものの一つです。最初の10章を読み進めてください。第4章あたりで借用チェッカーに強くぶつかるでしょう。諦めずに続けてください。
Rustlings: ターミナルでの小さな演習。筋肉の記憶に良い。 Advent of Code in Rust: パズルサイズの課題で、実際のタスクを解決することを強制される。 CLIツールを構築する: 普段Pythonで使うようなものを選び、代わりにRustで構築する。
最初の週にRustでWebサーバーを書こうとしないでください。それは最も早く意気消沈する方法です。すべての入力を自分で制御できる自己完結型のプログラムから始めてください。
Rustが私の日常のスタックを置き換えたとは主張しません。私の仕事のほとんどは依然としてJavaScriptとPythonです。しかし、私が身につけたメンタルモデル、つまり所有権について考え、ミューテーションを明示的にし、関数がその入力を借用するか消費するかを気にするようになったことは、それらの言語での書き方に本当に浸透しています。
投資は本物です。コンパイラは最初は容赦ありません。しかし、コンパイラが「実行する前に」正しさを検証したコードを書くことには、深い満足感があります。その後JavaScriptに戻ると、すべてのundefinedとすべての暗黙的なミューテーションが、自分が受け入れることを選択したものであることに気づき始めます。
それは気づくべき悪いことではありません。
Rust Learning WebAssemblyAI CLIログの整形、Cron式の作成、JWTの解析、chmod権限の計算をオフラインで実行。

WebAssembly SIMDによる高性能Rustのアーキテクチャガイドで、実証済みの本番環境での例を用いてブラウザ計算を10倍高速化する方法を詳しく解説します。
続きを読む
Rustのライフタイムとボローチェッカーを習得し、参照のvariance、匿名と名前付きのライフタイム省略を理解し、複雑なコンパイラの競合を回避しましょう。
続きを読む
2026年のWebAssemblyはブラウザを超え、RustをWASIにコンパイルし、WasmtimeをPythonに組み込み、Extismでサンドボックス化されたプラグインシステムを構築し、Cloudflare WorkersやFermyon Spinにデプロイできます。
続きを読む