プログラミング言語 Rust 公式ガイド
プログラミングゲンゴラストコウシキガイド
- 著者:
- Steve Klabnik / Carol Nichols / 尾崎 亮太(スティーブ クラブニック / キャロル ニコールズ / オザキ リョウタ)
- 出版社:
- ドワンゴ
- 出版日:
- 2019年06月28日頃
- ISBN:
- 9784048930703
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
「Rust プログラミング言語は、エンパワーメント (empowerment) を根本原理としています。どんな種類のコードを現在書いているにせよ、Rust は幅広い領域で以前よりも遠くへ到達し、自信を持ってプログラムを組む力を与え (empower) ます。」 (本書「まえがき」より)
システムレベルのプログラムから Web サーバーやコマンドラインアプリなど、さまざまな分野に利用できるプログラミング言語として設計されている Rust。本書は Rust コミュニティ公式のガイドブックである。
基本的な文法事項から、Rust の中心的な機能である「所有権」の詳細、エラー処理や自動テストの方法、さらにはジェネリック型、スマートポインタ、関数型言語、並行プログラミング、オブジェクト指向の機能など、Rust プログラミングの肝となる要素のすべてを丁寧に解説する。
本書は、Rust の基本を理解する概念の章、Rust の機能を適用した小さなプログラムを構築するプロジェクトの章という 2 つで構成されている。それぞれを理解していけば、Rust を利用したプログラム開発にすぐに取りかかれるようになっている。
第 1 章 事始め
第 2 章 数当てゲームをプログラムする
第 3 章 一般的なプログラミングの概念
第 4 章 所有権を理解する
第 5 章 構造体を使用して関係のあるデータを構造化する
第 6 章 enum とパターンマッチング
第 7 章 モジュールを使用してコードを体系化し、再利用する
第 8 章 一般的なコレクション
第 9 章 エラー処理
第 10 章 ジェネリック型、トレイト、ライフタイム
第 11 章 自動テストを書く
第 12 章 入出力プロジェクト: コマンドラインプログラムを構築する
第 13 章 関数型言語の機能: イテレーターとクロージャー
第 14 章 Cargo と crates.io についてより詳しく
第 15 章 スマートポインター
第 16 章 恐れるな! 並行性
第 17 章 Rust のオブジェクト指向プログラミング機能
第 18 章 パターンとマッチング
第 19 章 高度な機能
第 20 章 最後のプロジェクト: マルチスレッドの Web サーバーを構築する
技書の森解説
『プログラミング言語 Rust 公式ガイド』 (Steve Klabnik、Carol Nichols 著、尾崎亮太 訳、ドワンゴ発行、KADOKAWA 発売、2019 年 6 月 28 日刊) は、原タイトル The Rust Programming Language の日本語版で、版元の紹介文が「Rust コミュニティ公式のガイドブック」と位置づける Rust の入門書です。基本的な文法から、Rust の中心的な機能である所有権の詳細、エラー処理と自動テスト、ジェネリック型、スマートポインター、並行プログラミング、オブジェクト指向の機能までを全 20 章で扱います。刊行時の著者紹介によると、Steve Klabnik は Mozilla 勤務で Rust ドキュメンテーションチームのリーダー、Carol Nichols は Rust コアチームのメンバーです。
概念の章とプロジェクトの章で組まれた全 20 章
版元の紹介文によれば、本書は Rust の基本を理解する概念の章と、Rust の機能を適用した小さなプログラムを構築するプロジェクトの章の 2 種類で構成されています。章題の上では、第 2 章「数当てゲームをプログラムする」、第 12 章「入出力プロジェクト: コマンドラインプログラムを構築する」、第 20 章「最後のプロジェクト: マルチスレッドの Web サーバーを構築する」がプログラムを組み上げる章にあたります。その間に、第 1 章「事始め」、第 3 章「一般的なプログラミングの概念」、第 4 章「所有権を理解する」、構造体、enum とパターンマッチング、モジュール、コレクション、エラー処理を扱う第 5 章から第 9 章、第 10 章「ジェネリック型、トレイト、ライフタイム」、第 11 章「自動テストを書く」が並びます。後半はイテレーターとクロージャー、Cargo と crates.io、スマートポインター、並行性、オブジェクト指向プログラミング機能、パターンとマッチング、高度な機能を第 13 章から第 19 章で取り上げ、第 20 章の Web サーバーの構築で締めくくる順序です。
所有権と借用が GC なしでメモリ安全を支える仕組み
Rust が別の言語の経験者にも新しく感じられるのは、メモリをいつ解放するかの決め方が違うからです。C や C++ ではプログラマーが確保と解放を自分で管理し、解放忘れや二重解放、解放済みの領域への参照が不具合や脆弱性の原因になってきました。Java や Python、Go は ガベージコレクション で不要になったメモリを実行時に回収し、その代わりに回収のための処理が実行中に入ります。Rust はどちらとも違い、値ごとに所有者を 1 つ決めて所有者がスコープを抜けた時点で解放するという規則と、参照の貸し出しに関する規則をコンパイラーが検査します。この 所有権と借用 の規則に反するコードはコンパイルが通らないため、実行時の回収処理に頼らずにメモリの安全性を保てます。ライフタイムは、参照が指す先の値より長く生き残らないことをコンパイラーが確かめるための仕組みで、本書では第 10 章でジェネリック型やトレイトと並べて扱われます。
同じ規則は 並行処理 でも効きます。複数のスレッドが同じデータを同時に書き換えるデータ競合は、安全な Rust の範囲ではコンパイルの段階で拒否されます。所有権を第 4 章という早い位置で学び、並行性を第 16 章で扱う本書の並びは、この規則を身につけてから応用へ進む順序になっています。所有権の規則に最初はつまずいても、コンパイラーのエラーメッセージを手がかりに書き直す経験そのものが、Rust を書く力の土台になります。
2019 年刊の紙の版とオンライン版の使い分け
原書の The Rust Programming Language は、Rust の公式サイトで HTML 版が公開されており、rustup で Rust を入れた環境ではオフラインでも開けます。2026 年 10 月の時点のオンライン版は、著者に Chris Krycho が加わり、Rust 1.97.0 (2026 年 7 月 9 日リリース) 以降と Rust 2024 Edition を前提に書かれています。本書は 2019 年 6 月刊の紙の本なので、その後のエディションや言語機能の追加は収録されていません。文法の基本と所有権の考え方を紙で通読するには本書を使い、刊行後に加わった機能や書き方はオンライン版で補う、という使い分けになります。
他の言語の経験者が Rust を独学する一冊として
版元の紹介文は対象読者を明示していませんが、第 2 章で早々に小さなプログラムを組み、第 3 章で一般的なプログラミングの概念を確かめる並びなので、別の言語で変数や関数、条件分岐を一通り書いたことがある人のほうが進めやすい構成です。プログラミングそのものが初めての人は、別の入門書で基礎を固めてから手に取るほうが無理がありません。C や C++ でメモリ管理に手を焼いてきた人、スクリプト言語で書いた道具を速く安全な実行ファイルにしたい人、Rust の公式な説明を順序立てて押さえたい人には、概念の章で規則を学び、プロジェクトの章で手を動かし、最後にマルチスレッドの Web サーバーを自分の手で組み上げる本書が確かな土台になります。
言及した記事 (4 件)
この本は技書デッキのカードです (備え 4 / 流儀: 連打) 図鑑でこの本を見る
この本に興味がある方におすすめ
関連する本
関連記事
ソフトウェア開発の歴史を変えた 5 冊の技術書
アルゴリズムの学問化からコードの可読性革命まで、ソフトウェア開発の方向性を決定づけた 5 冊の技術書を、時代背景とエピソードとともに紹介します。
写経を超える - 技術書のコードを自分のプロジェクトに応用する方法
技術書のサンプルコードを写経するだけでは実力は伸びません。書籍のコードを自分のプロジェクトに応用し、実務で使える力に変える 5 つのステップを解説します。
本を読むスピードは気にしなくていい
1 ページ読むのに 10 分かかっても問題ありません。プログラミングの本はゆっくり読むのが正解である理由と、焦らず読み進めるコツを紹介します。