Rust (2010年)(ラスト)
Rustは2010年Mozilla Graydon Hoare が開発したシステムプログラミング言語で所有権 (Ownership) ・借用 (Borrowing) ・ライフタイム・型推論・Cargo パッケージマネージャ採用しFirefox/Linux カーネル (2022年Linux 6.1 統合) ・Microsoft Windows・AWS Firecracker等で大量採用される「メモリ安全なC++」と評価される現代システム言語。
Rust (2010年)
概要
Rustは2010年Mozilla Graydon Hoare (Mozilla 退社 2013年) が開発したシステムプログラミング言語で所有権 (Ownership・コンパイル時メモリ管理) ・借用 (Borrowing・参照管理) ・ライフタイム (Lifetime・参照寿命管理) ・型推論・Cargo パッケージマネージャ (crates.io 15万+ パッケージ) ・Pattern Matching・Trait (Java Interface 風) ・Macros (代数的データ型対応) ・async/await (Rust 1.39 2019年) ・WebAssembly 標準対応 (Rust→WASM 主要言語) 採用しFirefox (Mozilla 主導開発)・Linux カーネル (2022年Linux 6.1 統合・初の C/Assembly 以外のカーネル言語) ・Microsoft Windows (一部) ・AWS Firecracker (microVM)・Discord (Go から一部Rust 移行 2020年)・Dropbox (Rust+Python)・Cloudflare (一部)・Tor (匿名通信) 等で大量採用される「メモリ安全なC++」と評価される現代システム言語。Rust 1.82 (2024年10月最新) と継続改良。
主な特徴・仕組み
- 発表: 2010年Mozilla
- コードネーム: Hoare の趣味プロジェクト (2006年起源) →2010年Mozilla 公式サポート
- 言語パラダイム: マルチ (関数型+OOP without inheritance+並行)
- 型付け: 静的型付け (Strong) ・Type Inference (let x = 10;)
- メモリ管理: 所有権 (Ownership) ・GC なし・C++ 性能+Java/Go 安全性
- コンパイル: LLVM ベース・ネイティブ機械語
- マスコット: Ferris (蟹・コミュニティ非公式)
- エディション: Rust 2015 (1.0)・Rust 2018 (1.31)・Rust 2021 (1.56)・Rust 2024 (2024年予定)
所有権 (Ownership) 革命
2010年Rust の最大の革新:
- 動作: 値は1つの「所有者」(Owner) しか持てない・所有者スコープ終了で自動メモリ解放
- 借用 (Borrowing): 参照 (Reference) は所有権を借りる・&mut (可変) と& (不変) で排他制御
- ライフタイム (Lifetime): 参照の寿命をコンパイル時検証
- メモリ安全: GC なしでメモリ漏れ/Double Free/Use-After-Free を100%防止 (コンパイル時)
- 競合 C++: 手動メモリ管理・ヒューマンエラーでバグ多 (Microsoft Security Bug 70% がメモリ問題と発表 2019年)
- 業界影響: 全現代システム言語の所有権概念採用・Swift (RAII)・Carbon (Google 2022年) も類似
Cargo パッケージマネージャ
2014年Rust 1.0 前の主要機能:
- 動作: 依存管理・ビルド・テスト・ドキュメント生成統合
- crates.io (2014年): 15万+ パッケージ (NPM 200万・PyPI 50万・CPAN 10万に対し中規模)
- 競合: NPM (Node.js 2010年)・PyPI (Python 1995年)・CPAN (Perl 1995年)・並走
- メリット: Cargo.toml 1ファイルで完結・「現代パッケージマネージャの理想」評価
Rust 主要バージョン (2010-2024年)
| バージョン | 年 | 主な追加機能 |
|---|---|---|
| Rust 1.0 | 2015年5月 | 初の安定版・以降仕様後方互換性維持 |
| Rust 1.31 (2018 Edition) | 2018 | NLL (Non-Lexical Lifetimes) ・const fn |
| Rust 1.39 | 2019 | async/await |
| Rust 1.56 (2021 Edition) | 2021 | Disjoint Capture in Closure |
| Rust 1.65 | 2022 | Generic Associated Types (GATs) |
| Rust 1.70 | 2023 | OnceCell/OnceLock 標準・improved const generics |
| Rust 1.75 | 2023 | async trait |
| Rust 1.80 | 2024 | LazyCell/LazyLock 標準 |
| Rust 1.82 | 2024年10月 | precise capture・unsafe extern 仕様 |
| Rust 2024 Edition | 2024年予定 | 大規模改良予定 |
Linux カーネル統合 (2022年)
Rust 史上最大の節目:
- 2020年-: Linux カーネル開発者 Linus Torvalds が Rust 統合検討
- 2022年10月Linux 6.1 LTS: Rust 初期統合 (Greg Kroah-Hartman・Miguel Ojeda 主導) ・初のC/Assembly 以外のカーネル言語
- 2023年Linux 6.3-6.6: Rust ドライバ拡大・Asahi Linux (Apple Silicon Mac) GPU ドライバ Rust 実装
- 2024年Linux 6.10: Rust Network Driver・Filesystem Driver
- 歴史的意義: 30年継続のC 一強時代の終焉・全Linux に Rust 普及進行
Mozilla の Rust 戦略 (2010-2020年)
Rust 母体の Mozilla:
- 2010年: Mozilla 公式サポート開始
- 2015年Rust 1.0: Mozilla 主導の安定版
- 2017年Firefox Quantum: Rust 製エンジン Servo の一部統合・60%高速化
- 2020年8月Mozilla 大量解雇: COVID-19 影響で Rust チーム解雇・Mozilla の Rust 投資撤退
- 2021年2月Rust Foundation 設立: AWS・Google・Microsoft・Mozilla・Huawei が共同設立・Rust 開発継続
- 意義: Rust は Mozilla から独立・コミュニティ主導で発展継続
メモリ安全性の業界波及
2019年Microsoft Security Bug 統計:
- Microsoft 報告 (2019年): 過去12年のCVE (脆弱性) の70% がメモリ安全性問題 (C/C++ 由来)
- 対策: Microsoft が Rust 採用宣言 (2019年-) ・Windows 一部Rust 書き換え
- Google も同様: 2019年Android の Rust 採用宣言・現代主要部分Rust 化
- 業界基準: 2020年代「メモリ安全性 = Rust」確立
採用システム (2010-2024年)
- Linux カーネル: 2022年Linux 6.1 から統合・以降全Linux に拡大進行
- ブラウザ: Firefox (Mozilla)・Servo (Rust 製ブラウザエンジン)
- OS: Microsoft Windows (一部)・Redox OS (Rust 製 OS)
- クラウド: AWS Firecracker (microVM・Lambda 基盤)・Cloudflare (Web Edge 一部)
- 企業: Discord (Go から Rust 移行 2020年・状態管理)・Dropbox (一部・データ Storage)・Figma (Web エディタ高速化)・Bytedance/TikTok (バックエンド)
- ブロックチェーン: Solana (高速ブロックチェーン・Rust 実装)・Polkadot・Near
- WebAssembly: Rust→WASM の主要言語 (Cloudflare Workers・Fastly Compute)
- CLI ツール: ripgrep (高速 grep)・fd (高速 find)・bat (改良 cat)・hyperfine (ベンチマーク)
- ゲーム: Embark Studios (Patrick Söderlund・元EA)・Bevy Engine
関連技術との違い
| 項目 | C++ (1985) | Java (1995) | Go (2009) | Rust (2010) |
|---|---|---|---|---|
| メモリ管理 | 手動+smart pointers | GC | GC | 所有権 (Ownership) |
| メモリ安全 | 手動 (バグ多) | あり (GC) | あり (GC) | **100% (コンパイル時) ** |
| 並行処理 | std::thread (C++11) | Thread | Goroutine | async/await+Tokio |
| 性能 | 最高 | 中 (GC ストール) | 中 (GC) | **最高 (C++ 並) ** |
| 学習曲線 | 高 (40年エコシステム) | 中 | 低 (シンプル) | **高 (所有権概念) ** |
| 採用率 (2024 Stack Overflow) | 24% | 31% | 13% | **13% (急成長) ** |
よくある質問 (FAQ)
Q1: Rust と C++ どちらが優れたか? A: 用途次第。C++ は40年エコシステム・既存資産膨大・ゲームエンジン主流。Rust は新しい (2010年-) ・メモリ安全性100%・並行性安全。Linux カーネル (2022年-) でC と並走・Microsoft Windows・Google Android (一部) でRust 採用。新規システムプログラミングはRust 推奨が業界傾向 (2024年-)。
Q2: なぜRust は学習が難しいか? A: (1) 所有権・借用・ライフタイムの3 概念は他言語にない・「Borrow Checker」(コンパイラ) が厳格・(2) Java/Python 経験者は GC に慣れている・手動メモリ管理思考が必要・(3) 初心者は「Fighting the Borrow Checker」と表現する習熟段階あり・但し慣れれば「コンパイラがバグを事前検出してくれる安心感」を得る。
Q3: 現代でRust 学ぶ価値は? A: 大いにあり。(1) システムプログラミング (OS・ブラウザ・ゲームエンジン) でRust 採用拡大・(2) WebAssembly Rust 主流・(3) ブロックチェーン (Solana・Polkadot) で必須・(4) 高給職 (Stack Overflow 2024年Rust 開発者世界平均年収$87,000・Top tier 言語の1つ)・(5) Microsoft・Google・AWS等大手で標準採用・新卒/転職市場で急成長分野。
まとめ
- 2010年Mozilla Graydon Hoare 開発
- 所有権 (Ownership) でメモリ安全
- ライフタイム・型推論・Cargo
- Linux カーネル 2022年統合 (C 以外初)
- 「メモリ安全なC++」評価