プログラミング Rust 第 2 版

プログラミングラストダイニハン

プログラミング Rust 第 2 版の表紙
プログラミング
著者:
Jim Blandy / Jason Orendorff / Leonora F. S. Tindall / 中田秀基(ジム ブランディ / ジェイソン オレンドルフ / レオノーラ エフ エス ティンダル / ナカダ ヒデモト)
出版社:
オライリー・ジャパン
出版日:
2022年01月19日頃
ISBN:
9784873119786
在庫:
在庫あり
5(2 件 / 楽天ブックス)
中級者向け
プログラミングC・C++・C#Rust安全性高速性並行性非同期処理メモリ管理スレッド安全システムプログラミングソフトウェア開発

なぜ注目されているか

総合283位 ↓ 1 ランクダウン 言及 9 件・うち記事 8 件を掲載
言及数
330位
出版日01220222023202420252026

書籍紹介

安全性、高速性、並行性に優れた言語 Rust の決定版の改訂!
次世代ブラウザ開発用に Mozilla によって開発された Rust は、C/C++ 並みのパフォーマンスと低レベルの制御能力に加え、メモリとスレッドの安全性を担保し、さらに並行性にも優れるといった特徴を持つ、優れた言語です。本書は Mozilla で実際に Rust を使って Firefox を開発している著者による、言語の概要と、用途について書かれた書籍で、Rust のほとんどの機能を詳細にカバーします。Rust のメジャーバージョンアップにより非同期処理が可能となったことに対応し、第 2 版では新たに非同期の章を設け、この機能を詳細に解説しています。

技書の森解説

Rust は、C や C++ と同等の実行速度と低レベルの制御を保ちながら、メモリとスレッドの安全性をコンパイル時に保証することを狙った言語です。『プログラミング Rust 第 2 版』 (Jim Blandy / Jason Orendorff / Leonora F. S. Tindall 著、中田秀基 訳、オライリー・ジャパン、2022 年 1 月刊) は、その Rust を基本的な型から unsafe なコードや外部言語関数まで、版元の言葉で「Rust のほとんどの機能を詳細にカバー」する解説書です。原書は Programming Rust, 2nd Edition で、著者は Mozilla で実際に Rust を使って Firefox を開発している人たちだと版元は紹介しています。第 2 版は Rust 2021 に対応し、Rust のメジャーバージョンアップにより非同期処理が可能となったことに対応して非同期処理の章を新たに設けた改訂です。

全 23 章の構成、所有権と参照から unsafe と外部言語関数まで

本文は全 23 章です。1 章「システムプログラマにもっといいものを」で言語の狙いを述べ、2 章「Rust ツアー」では rustup と Cargo、ユニットテスト、コマンドライン引数の処理、Web ページの公開、マンデルブロ集合の並列描画、ファイルの検索と置換ツールを一気に書いて言語の手触りをつかみます。3 章から 7 章が基本的な型、所有権と移動、参照、式、エラー処理という土台で、8 章から 13 章はクレートとモジュール、構造体、列挙型とパターン、トレイトとジェネリクス、演算子オーバーロード、ユーティリティトレイトと、型システムを使いこなす部分に進みます。14 章から 18 章はクロージャ、イテレータ、コレクション、文字列とテキスト、入出力という標準ライブラリの実務領域、19 章から 23 章は並列性、非同期プログラミング、マクロ、unsafe なコード、外部言語関数という上級主題です。巻頭に訳者まえがきとまえがき、巻末に索引があり、サンプルコードは版元ページから入手できます。

GC なしでメモリ安全を保証する、所有権と借用の理屈

Rust の学習で壁になるのは、値の所有者が常に一つに決まる所有権と、他の場所から一時的に値を使わせる借用の規則です。C や C++ では解放後のメモリへのアクセスや二重解放、複数スレッドからの同時書き換えといった不具合をプログラマが自力で避ける必要があり、ガベージコレクション を持つ言語はその負担をランタイムに移す代わりに実行時のコストと停止時間を受け入れます。Rust はどちらでもなく、所有権と借用 の規則をコンパイラが静的に検査することで、実行時コストなしにこれらの不具合を型検査の段階で拒否します。本書は 4 章「所有権と移動」で移動と制御フロー、コピー型、Rc と Arc による所有権の共有を扱い、5 章「参照」では「Rust の参照 vs C++ の参照」という節を置いて C++ との差を明示しながら、参照の安全性と生存期間パラメータ (一般にライフタイムと呼ばれる概念) の省略規則まで進みます。コンパイラが拒否する理由を規則として理解できるため、エラーメッセージを試行錯誤で回避する段階から、設計として所有権を組み立てる段階へ移れるのが、この 2 章を厚く読む効き目です。

第 2 版で新設された非同期処理の章と、並列性 / トレイトの読みどころ

19 章「並列性」はフォーク・ジョイン並列、チャネル、可変状態の共有という三つの節で並列化の型を扱い、続く 20 章「非同期プログラミング」が第 2 版で新設された章です。Rust の 非同期プログラミング は、他の言語と違ってランタイムを言語が抱え込まない設計のため、Future がどう駆動されるかを理解しないと使いこなせません。この章がそこを詳細に解説する点は、非同期の Web サービスやネットワーククライアントを Rust で書きたい人にとって第 2 版を選ぶ直接の理由になります。11 章「トレイトとジェネリクス」には「どちらを使うべきか」「制約のリバースエンジニアリング」「関連型: イテレータはどう動く」といった節があり、トレイト オブジェクトとジェネリックの使い分けを設計判断として教えます。15 章「イテレータ」はアダプタと消費メソッドを個別に解説し、22 章「unsafe なコード」と 23 章「外部言語関数」は libgit2 に対する安全なインターフェイスの構築を通して、安全でないコードを安全な API で包む作法を示します。

前提知識は他言語でのプログラミング経験、初めての一冊には重い

版元は対象読者を明示していませんが、1 章の題が「システムプログラマにもっといいものを」であること、5 章が C++ の参照との比較を含むことから、何らかの言語でプログラミングを経験した読者を前提とした書き方です。プログラミング自体が初めての人や、まず短い時間で Rust の雰囲気を知りたい人には、Web で公開されている公式ブック The Rust Programming Language から入るほうが負担が軽く、本書はその後に規則の理由と標準ライブラリの細部を確かめる本として位置づくのが自然です。逆に C や C++ の経験者は、所有権や参照の章に置かれた C++ との対比を通じて、既に知っている問題が Rust ではどう扱われるかという差分で読み進められます。厚い本なので通読よりも、書いているコードで詰まった主題の章を引く辞書的な使い方に向いています。

元が取れるのは、公式ブックを終えて実際にコードを書き始めたところで、借用チェッカのエラーやトレイト境界の書き方、非同期ランタイムの挙動で立ち止まっている人です。業務で Rust を採用する前に言語の全体像と根拠を一冊で押さえたいチームの共有本としても、1 章から 23 章までの網羅性が生きます。コンパイラの要求を理屈で納得できるようになりたい人にとって、長く手元に置く価値のある一冊です。

言及した記事 (8 件)

この本は技書デッキのカードです (攻撃 8) 図鑑でこの本を見る

この本に興味がある方におすすめ

関連する本

関連記事

関連用語

共有: