コンセプトから理解するRustの表紙

コンセプトから理解する Rust(コンセプトカラリカイスルラスト)

ハードウェア
著者:
原 旅人(ハラ タビト)
出版社:
技術評論社
出版日:
2022年02月12日頃
ISBN:
9784297125622
在庫:
在庫あり
4(4 件 / 楽天ブックス)
中級者向け
Rust所有権ライフタイムジェネリクストレイトメモリ安全スレッド安全マルチパラダイムプログラミング言語初学者向け

なぜ注目されているか

総合290 17 ランクダウン 9 件の言及
言及数
425
出版前出版日01220222023202420252026

書籍紹介

Rust はメモリ安全、スレッド安全を保ちつつ、高パフォーマンスなプログラムを開発できるプログラミング言語です。また、手続き型、オブジェクト指向型、関数型でのプログラミングに対応できるマルチパラダイムの言語でもあります。ただ、そういった Rust のポテンシャルを引き出すには、所有権やライフタイム、ジェネリクスやトレイトといった特徴的な仕様の理解が求められ、これらは初学者の壁にもなっています。本書ではそれら難解な仕様をピックアップし、他のプログラミング言語とコードレベルで比較しながら、「なぜそのような仕様になっているか」という言語のコンセプトから Rust の理解を試みます。加えて、 Rust のこまやかなエラーメッセージを読みつつ、 Rust をうまく書くための知識もお伝えします。

技書の森解説

所有権、ライフタイム、ジェネリクス、トレイト。 Rust の学習者が最初にぶつかるこれらの難所を、「なぜそのような仕様になっているか」という言語のコンセプトまで遡って解きほぐす入門書です。著者は原旅人氏、技術評論社から 2022 年 2 月に刊行されました (349 ページ) 。版元の紹介文が掲げる通り、難解な仕様をピックアップし、他のプログラミング言語とコードレベルで比較しながら理解を組み立てるのが本書の柱です。

多言語経験を土台にした対比アプローチ

著者は、スーパーコンピュータで天気予報を計算するソフトウェア (数値予報モデル) の精度改善開発に 14 年従事した後、 Web アプリケーション開発や高速検索用データベースの構築、データ分析基盤などに携わってきたエンジニアです。 C 言語や FORTRAN 、 RubyPython を長年使い、 Rust や Go 、 TypeScriptScala にも広げてきた経歴が版元プロフィールに記されており、この多言語経験がそのまま「他言語との対比で Rust を説明する」という本書のアプローチの土台になっています。

全 9 章の構成

全 9 章構成です。第 1 〜 2 章で Rust の特徴、学習法と公式情報源 (The Rust Programming Language や Rust By Example) 、開発環境の構築、 cargo の使い方、コンパイルエラーメッセージの読み方、クレートとモジュールまでを整えます。第 3 章が本書の核心である所有権とライフタイムで、 C 言語における変数とメモリ、 Python における変数と値の結び付けを先に見せてから、 Rust の束縛・所有権・借用を差分として導入します。第 4 章は型の各論で、 Option や Result によるエラーハンドリング、 match 式、 Rc ・ RefCell といった共有所有の道具まで扱います。第 5 章はジェネリクスとトレイトによる抽象化で、クラスによる抽象化との比較、静的・動的ディスパッチとゼロコスト抽象化まで踏み込みます。後半はファイルやソケットの入出力 (第 6 章) 、関数型プログラミング向けの機能 (第 7 章) 、スレッドによる並列と非同期処理 (第 8 章) 、 C 言語ライブラリの呼び出し (第 9 章) と実践面へ進みます。

所有権が壁になる理由と本書の解き方

所有権がこれほど壁になるのは、既存のどの言語のメンタルモデルとも違うからです。 Python や Java のような GC を備えた言語はメモリ管理をランタイムに任せ、 C/C++ は解放のタイミングをプログラマの責任に委ねます。 Rust はその折衷ではなく第 3 の道で、「値には所有者がいる」「借用はコンパイル時に検査される」という規則を型システムに組み込み、 GC なしでメモリ安全とスレッド安全を静的に保証します。他言語の常識をそのまま持ち込むとコンパイラに弾かれるのは仕様通りの挙動であり、突破に必要なのは規則の暗記ではなく「なぜその規則があるのか」の理解です。変数への値の割り当てを「束縛」という描像から捉え直し、 C や Python での挙動との差分として Rust の規則を示す本書の進め方は、この理解の作り方として理にかなっています。コンパイラの細やかなエラーメッセージを読み解く知識を併せて扱うのも、コンパイラとの対話が学習の実体になる Rust ならではの構成です。

想定読者と類書との使い分け

版元の想定読者は「一歩進んだプログラミングを学びたい、高パフォーマンスなシステムを作りたい IT エンジニア」で、何らかの言語での開発経験を持つ人が対象です。他言語との対比が説明の軸なので、プログラミング自体が初めての人には向きません。逆に、構文中心の入門書や公式チュートリアルで一度挫折した人ほど得るものが大きい作りです。読み終える頃には、コンパイルエラーを試行錯誤ではなく理屈で解消できるようになり、Option/Result 流のエラーハンドリング、トレイトによる抽象化、スレッド・非同期処理 まで、 Rust らしいコードを書くための足場が揃います。

類書との使い分けでは、無料で読める公式ドキュメント The Rust Programming Language が定番の学習資料で、本書自身も第 1 章で情報源として案内しています。オライリー・ジャパンの『プログラミング Rust 第 2 版』は網羅性の高い大部の解説書で、リファレンス的に深掘りする段階で強みを発揮します。本書はそれらの手前、あるいは併読で「なぜ」を埋める位置づけです。所有権の壁を「慣れ」ではなく「理解」で越えたい人、 C 言語資産の呼び出しや非同期処理まで見通しよく学びたい人にとって、学習の急所が 349 ページに凝縮された一冊です。

言及 Qiita 記事 (6 件)

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

この本に関連

関連記事

関連用語

共有:Xはてブ