ISBN 9784048930703

プログラミング言語Rust 公式ガイド

プログラミング言語Rust 公式ガイド
出版社
ドワンゴ
刊行
2019-06

概要

Rustの所有権・型システム・並行性を公式ガイドで体系的に習得する

想定読者

C/C++またはJava/Python等の経験があり、メモリ安全でパフォーマンスに優れたシステムレベルの言語を習得したいエンジニア。Rustを初めて学ぶが、プログラミング全般の基礎は持っている人。

こんな人には向いていない

  • プログラミング自体が初めての学習者には前提知識(変数・関数・制御構文)の理解が求められるため適していない
  • 文法よりも即座に動くサンプルコードや実践的なWebアプリ・CLIツール開発を中心に学びたい読者には実践例の比重が少なく物足りない可能性がある(Qiita複数記事で指摘あり)
  • Rust 1.21 / Edition 2015 時点の内容であるため、最新のEdition 2021以降の慣用句や非同期(async/await)を学びたい読者には別途補完が必要

読了後にできるようになること

  • 所有権・借用・ライフタイムという、Rustのメモリ安全保証の中核をなす3概念を段階的に理解できる
  • enumとパターンマッチングを組み合わせた、ヌル参照を排除する型安全なエラー処理ができる
  • トレイトとジェネリクスによる多相性の設計パターンを習得し、再利用可能な抽象化を実装できる
  • スマートポインタ(Box / Rc / RefCell)の使い分けと、内部可変性パターンを理解できる
  • Rustの安全な並行プログラミング(スレッド・メッセージパッシング・Mutex)を実装できる
  • CargoとCrates.ioを使ったパッケージ管理とテスト自動化の基本的なワークフローを身につけられる

本書のキー概念(章解説)

  • 第 1 章 事始め — rustupによる環境構築とHello Worldまで。既に環境が整っている場合はスキップ可
  • 第 2 章 数当てゲームをプログラムする — 最初のプロジェクト章。所有権・型推論・パターンマッチングが初めて登場する導入として機能する
  • 第 3 章 一般的なプログラミングの概念
  • 第 4 章 所有権を理解する — 本書最重要章。移動・借用・スライスの3概念を丁寧に読み込む価値がある。ここを理解すると残りの章の見通しが格段に良くなる
  • 第 5 章 構造体を使用して関係のあるデータを構造化する
  • 第 6 章 enumとパターンマッチング
  • 第 7 章 モジュールを使用してコードを体系化し、再利用する
  • 第 8 章 一般的なコレクション
  • 第 9 章 エラー処理 — Result/Option型の実務的な扱いを学ぶ章。実装プロジェクトへの直結度が高い
  • 第 10 章 ジェネリック型、トレイト、ライフタイム — Rustの型システムの核心。ライフタイム注釈はここで初めて体系的に説明される
  • 第 11 章 自動テストを書く
  • 第 12 章 入出力プロジェクト: コマンドラインプログラムを構築する — grep風CLIツールを構築するプロジェクト章。4〜11章の知識を実際のコードに統合する
  • 第 13 章 関数型言語の機能: イテレーターとクロージャー
  • 第 14 章 CargoとCrates.ioについてより詳しく
  • 第 15 章 スマートポインター
  • 第 16 章 恐れるな! 並行性 — スレッド・チャネル・Mutex/Arc による安全な並行プログラミング。Rust固有の並行設計の考え方が整理される章
  • 第 17 章 RustのオブジェクトはP指向プログラミング機能
  • 第 18 章 パターンとマッチング
  • 第 19 章 高度な機能
  • 第 20 章 最後のプロジェクト: マルチスレッドのWebサーバーを構築する — 本書の集大成。スレッドプールを持つHTTPサーバーを実装する。16章までの並行処理知識の総合演習

ハイライト

  • Rustは幅広い領域で以前よりも遠くへ到達し、自信を持ってプログラムを組む力を与えます。システムレベルのプログラムからWebサーバーやコマンドラインアプリなど、さまざまな分野に利用できるプログラミング言語として設計されています。(Rustが特定ドメインに限らない汎用性を持つことを公式の言葉で示した箇所。購入層の広さを判断するのに有効)
  • 文法解説がかなり詳細。公式だけあって文法の解説がとても詳しい。実践例はあまりありません。(日本語Rust書籍を横断比較した記事での評価。本書の強みと弱みを端的に示す実務的な読者視点)

外部からの言及

  • 日本語Rust書籍を比較したQiita記事の中で、本書は『文法解説が最も詳しい』という評価で一致している。一方で『実践例が少ない』という指摘も複数あり、文法理解には優れるが実装体験を別途補う必要があるとみる読者が多い(qiita)
  • Rust入門ガイドや書籍紹介記事では、本書・実践Rust入門・プログラミングRust(O'Reilly)という3冊がほぼ必ずセットで紹介されており、この中での本書の位置づけは『文法の公式リファレンス』として扱われている(qiita)

編集メモ

Qiita上で本書を名指しで言及する記事が3件確認できる(累計likes: 913)。dalance記事(198 likes)が日本語Rust書籍比較の参照点として機能しており、Rust学習ロードマップ記事でも継続的に取り上げられている。ただしqiita_article_count < 10のためessentialには届かない

読む前に押さえておきたいこと

  • 変数・関数・ループ・条件分岐など、いずれかの言語でのプログラミング基礎経験
  • コマンドラインでのファイル操作とテキストエディタの基本的な使い方
  • スタックとヒープの概念的な違いを事前に調べておくと第4章の理解が速まる

学習のコツ

  • 第4章(所有権)は本書全体の要。他の章を読み進める途中で詰まったら、まず第4章に戻って移動・借用・スライスの3概念を確認することを習慣にすると理解が安定する
  • 概念章とプロジェクト章が交互に配置されているため、プロジェクト章(第2・12・20章)を先読みして『何を作るのか』を把握してから概念章を読むと動機づけが維持しやすい
  • 文法説明の比重が高く実践例が少ない(Qiita複数記事で指摘)ため、第12章のCLIプロジェクトと第20章のWebサーバープロジェクトは必ず手を動かして完走することで実装感覚を補う
  • 本書はRust 1.21/Edition 2015 を対象にしており、Edition 2021 以降の差分(module system の変更・async/await)は公式オンラインドキュメントで別途確認するとよい
出版社による内容紹介

「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サーバーを構築する

この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。

質問に答えるだけで、
あなたに合う専門書が見つかる

IT・デザイン・士業・医療・経理・教育・研究 ほか、あらゆる分野の専門書と 「読む順序」(学習ロードマップ)を収録。何を選べばいいか分からなくても、 いくつかの質問に答えるだけでたどり着けます。