7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「速いから」だけじゃない。現代のWeb開発でRustを選ぶべき本当の理由

7
Posted at

「速いから」は単なるおまけ。AI時代にRustが最強の相棒になる本当の理由

こんにちは

最初に絶対にお伝えしておきたいんですが、この記事は先日Zennで見かけた記事(「速いからRust」は間違い、みたいな趣旨の記事です)に喧嘩を売ったり、批判したりする意図は1ミリもありません!あの記事の「適材適所で技術を選ぼう」というメッセージには完全に同意していますし、論理的でとても勉強になりました。

ただ、私があまりにもRustという言語を愛しすぎているため、「いやいや、今のRustにはもっともっとヤバい魅力があるんだよ!」というのをどうしても語りたくなってしまい、思わず筆をとった次第です。

なので、この記事は誰かを否定するものではなく、いちRustファンの熱いラブレターとして読んでもらえると嬉しいです!

実行速度だけがRustの魅力じゃない

Webサービスにおいて、ネットワークI/Oがボトルネックになるから言語の速度差なんて誤差になりやすい。これは本当にその通りだと思います。

でも、今の時代にRustを選ぶ最大の理由は、もはや「実行速度が速いから」だけじゃないんです。
コンパイル時の絶対的な安心感、世界のトップ企業がこぞって採用するメモリ安全性、GC(ガベージコレクション)がないことによる安定性、そして何より「AIコーディングとの圧倒的な相性の良さ」。ここが現代におけるRustの最強の武器だと思っています。

順番に私の熱い思いを語らせてください。

1. コンパイル時にもらえる圧倒的な安心感

Rustといえば「所有権」と「借用」ですよね。最初はコンパイラに怒られまくって心折れそうになりますが、これを乗り越えると本当に別世界が見えます。

CやC++で開発しているとどうしても付きまとうメモリリークやセグフォといった怖いバグを、Rustはコンパイルの時点で全部弾いてくれます。コンパイルが通った瞬間に「メモリ系の致命的なクラッシュは起きない」とほぼ確信できるのは、精神衛生上めちゃくちゃ良いです。

メモリ管理の方式 代表的な言語 メリット デメリットやリスク
手動管理 C, C++ 究極のパフォーマンスと制御 メモリリークなどの脆弱性が起きやすい
GC(自動管理) Go, Java, TS, Python メモリを意識しなくて良いので楽 実行時にオーバーヘッドや一時停止(GCポーズ)が起きる
所有権モデル Rust GCなしで安全性を100%担保、しかも最速 コンパイラと仲良くなるための学習コストが必要

そして今、Microsoft、Google、Amazon、Discordなど、名だたる世界のトップ企業が軒並みRustを採用し始めています。
これは単に「実行速度がCやC++並みに速いから」だけではなく、この「圧倒的な安全性」があるからです。実際にメモリ起因の脆弱性が何十パーセントも減ったという報告も出ており、大手企業にとってもはやRustへの移行は必然の流れになっています。

2. 隠れたパフォーマンスキラー「GCポーズ」がない

DiscordがGoからRustに移行した話は有名ですよね。Goもすごく良い言語なんですが、キャッシュが巨大になると、GCが走るたびにシステムが一瞬止まってしまう(GCポーズ)という問題がありました。

RustにはそもそもGCがないので、メモリが不要になった瞬間にパッと解放されます。だから、急に動作が重くなるみたいなスパイクが起きず、ずっと安定して動いてくれるんです。

言語特性 平常時の速度 高負荷になったときの挙動
GCあり 非常に高速 GC実行時に一瞬の停止(スパイク)が発生することがある
GCなし(Rust) 非常に高速 スパイクが起きず、ずっと一定のパフォーマンスを維持できる

「平均的に速い」だけじゃなくて、「どんなに負荷がかかっても急に遅くならない」というのは、長くサービスを運用する上で本当に頼もしい特徴です。

3. 【最重要】AI駆動開発の時代、Rustは最高の相棒になる

個人的にここが一番推したいポイントです!

私は普段、Codex,CC,Antigravity、まぁよくあるコーディングAIらをつかってAI駆動型開発をゴリゴリやっています。そこでめちゃくちゃ実感しているのが、「AIと一番相性がいい言語って、実はRustなんじゃないか」ということです。

McEvalという、AIのコーディング能力を測るベンチマークのテスト結果を見てみてください。GPT-4oにコードを書かせて、テストケースを通過した割合のデータです。

順位 言語 テスト通過率 AIとの相性の考察
1 Rust 0.830 (83.0%) コンパイラが厳しいので、AIの推論のミスを強力に防げる
2 Java 0.811 (81.1%) 静的型付けとエコシステムの広さで高精度
3 Python 0.760 (76.0%) データ量は多いけど、実行してみないとバグがわからないリスクがある
4 Ruby 0.640 (64.0%) 動的すぎてAIが文脈を見失いやすい
5 Go 0.620 (62.0%) シンプルだからこそ、エッジケースの処理でAIがミスしやすい
6 TypeScript 0.560 (56.0%) 型が柔軟すぎて、AIが意図しない推論をしてしまうことがある

開発しやすいイメージのあるTypeScriptやGoよりも、Rustがトップクラスの成績を出してるんです。不思議ですよね。

なんでかっていうと、Rustのコンパイラがめちゃくちゃ厳しいからです。
AIがちょっとでも型の矛盾や所有権のルール違反があるコードを出すと、コンパイラが「ここがこう間違ってるよ」って超具体的に教えてくれます。そのエラーメッセージをそのままAIに投げ返せば、AIが完璧に修正してくれます。

AIがコードを書いて、厳しいRustコンパイラがレビューして、AIが直す。このループを回すには、コンパイラが厳格なRustが本当に最強の環境なんです。

4. 既存資産という障壁もAIが壊してくれる

「昔からあるCやC++のライブラリやコードが使えないからRustはちょっと…」という声もよく聞きます。確かに、これまで蓄積された知的財産の量はCやC++とは比べものになりません。

でも、今のAIの進化を見ていると、既存のC/C++のコードをRustに変換するのって、AIが一番得意な作業のひとつになりつつあります。この「過去の遺産があるから乗り換えられない」というアドバンテージも、これからAIの力でどんどん簡単に埋められていくはずです。

5. 唯一の弱点「ビルド時間」との戦い方

もちろん私の愛するRustにも弱点はあると思います。とにかくビルド(コンパイル)が遅いです。これはまったく否定できません。
しかし、これも設定やツールの工夫次第で十分「許容値」に持っていくことができると私は考えています。

アプローチ 概要と熱いポイント どんな時におすすめ?
cargo check , LSPに頼り切る 実行バイナリを作らず、構文と型のチェックだけを爆速でやってくれます。今の時代、エディタ(rust-analyzerなど)の裏側で常にこれを走らせてリアルタイムにエラーを検知させるのが、絶対に外せない基本スタイルです! 息をするように常に(日々のコーディング中)
Cargo.toml の設定をいじる 外部ツールを入れる前にまずこれです。依存ライブラリの最適化レベルを調整したり、デバッグ情報を分割(split-debuginfo)するだけで、ローカルのビルド時間がグッと縮まります。環境によって効果が変わるのでまずは試す価値あり 全てのプロジェクトで真っ先に
爆速リンカ(mold や lld)の使用 ビルドの最後の「リンク処理」を並列化して圧倒的に高速化してくれます。依存関係が多いプロジェクトだと数十秒が数秒に縮む魔法のツールです!ただしOSによって最適解が違う(Linuxはmoldやsold、Windowsはrust-lld、Macはzldやsold)のでそこだけ注意が必要です。 依存クレートが育ってきた中規模以上のプロジェクト
sccache でキャッシュを使い回す コンパイル結果を保存して再利用するツールです。ローカルの単発開発、CI(自動テスト)環境での時間短縮や、複数のプロジェクトで共通のクレートのビルド結果を使い回す時に真価を発揮してくれます。 CI環境や、複数プロジェクトを同時進行する時
Cranelift バックエンドの活用 まだ一般的ではないですが開発中のビルド高速化を目的とした実験的・先進的なアプローチです。 少し用途は限定的かも

これらを組み合わせれば、開発のテンポが崩れるほどのストレスはかなり減らせます。

おわりに

プロトタイプを数日でサクッと作るなら、PythonやTypeScriptの方が絶対早いですし、そこは適材適所だと思います。

でも、「AIという最高の相棒と一緒に、安定した最強のシステムを作りたい」と思ったとき、Rustは今のソフトウェア開発の一つの最適な答えなんじゃないかなと本気で思っています。

最後にもう一度言いますが、最初のきっかけになったブログ記事や筆者の方を敵に回したいわけでは決してありません!むしろ、あんなにしっかり技術の比較をされている視点はすごくリスペクトしています。

ただ、どうしても私のRust愛と、特に今のAI時代におけるRustのヤバさを伝えたくて書かせていただきました。この記事を読んで、少しでも「Rust、ちょっと触ってみようかな」と思ってくれる人が増えたら最高に嬉しいです!読んでくれてありがとうございました!

高校生なのであまめに見てください。
AIと一緒に執筆しました。

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?