詳解 Rust プログラミング

ショウカイラストシプログラミング

詳解 Rust プログラミングの表紙
ハードウェア
著者:
Tim McNamara / 吉川 邦夫(ティム マクナマラ / ヨシカワ クニオ)
出版社:
翔泳社
出版日:
2021年11月17日頃
ISBN:
9784798160221
在庫:
在庫あり
3.67(4 件 / 楽天ブックス)
中級者向け
Rustシステムプログラミングメモリ管理ネットワークプログラミングファイル I/Oプロセス管理スレッド処理例外処理カーネルプログラミングデータベース操作

なぜ注目されているか

総合167位 ↓ 5 ランクダウン 言及 4 件・うち記事 3 件を掲載
言及数
648位

書籍紹介

さまざまな CUI アプリケーションを通して
システム言語としての Rust を徹底詳解

本書は、
Tim McNamara, "Rust in Action: Systems programming concepts and techniques"

Manning Publications,

の翻訳書です。

【本書の内容】
ダイレクトにメモリを操作し、OS のシステムコールを活用することで高速性を維持しつつ、コンパイラの進化によって安全性も確保した開発言語・Rust。

本書は、ファイル I/O を使った入出力プログラムから、キーバリュー型の DB 操作やメモリ操作、生の TCP を使うネットワークプログラム。そしてプロセスやスレッド、割り込みや例外処理などの低レイヤからカーネルそのものまで扱うためのノウハウを、Rust 固有のテクニカルタームとともに解説します。

著者の Tim McNamara は、15 年以上の時間をかけて、テキストマイニング、自然言語処理、データ工学のエキスパートになりました。彼は Rust Wellington のオーガナイザであり、Rust プログラミングのチュートリアルを、オフラインでも、Twitch と YouTube を介したオンラインでも、定期的に開催しています。

【本書で取り上げるジャンル】

・メモリ操作

・ファイルとストレージ

・ネットワーク

・時間管理

・プロセスとスレッド

・カーネル

・割り込みと例外処理

【読者が得られること】

・Rust によるプログラミング基礎

・Rust 固有のプログラミング手法

・システムプログラミングの勘所

・コンピュータサイエンスの知識

目次

第 1 章: はじめに

第 1 部: Rust 言語の独自機能

第 2 章: 言語の基礎

第 3 章: 複合データ型

第 4 章: ライフタイムと所有権と借用

第 2 部: システムプログラミングの謎を解き明かす

第 5 章: データの詳細

第 6 章: メモリ

第 7 章: ファイルとストレージ

第 8 章: ネットワーク

第 9 章: 時間とタイムキーピング

第 10 章: プロセスとスレッドとコンテナ

第 11 章: カーネル

第 12 章: シグナルと割り込みと例外

技書の森解説

Rust を文法としてだけでなく、メモリやファイル、ネットワーク、カーネルといったシステムの仕組みを扱う道具として身につけたい人に向けた本が『詳解 Rust プログラミング』 (Tim McNamara 著、吉川 邦夫 訳、翔泳社、2021 年 11 月発売) です。原書は Manning Publications の Rust in Action: Systems programming concepts and techniques で、版元の紹介文は、さまざまな CUI アプリケーションを通してシステム言語としての Rust を詳しく解説する本と位置づけています。ファイル I/O を使った入出力プログラムから、キーバリュー型の DB 操作、メモリ操作、生の TCP を使うネットワークプログラム、さらにプロセスやスレッド、割り込みや例外処理、カーネルそのものまでを、Rust に固有の用語とともに扱う構成です。

2 部 12 章の構成、言語の独自機能からシグナルと割り込みまで

目次は、1 章「はじめに」に続く 2 部構成です。第 1 部「Rust 言語の独自機能」は 2 章の言語の基礎、3 章の複合データ型、4 章のライフタイムと所有権と借用の 3 章で、Rust で書くための土台を固めます。第 2 部「システムプログラミングの謎を解き明かす」は 5 章のデータの詳細、6 章のメモリ、7 章のファイルとストレージ、8 章のネットワーク、9 章の時間とタイムキーピング、10 章のプロセスとスレッドとコンテナ、11 章のカーネル、12 章のシグナルと割り込みと例外と続き、コンピューターの下の層へ順に降りていく並びです。版元は読者が得られることとして、Rust によるプログラミングの基礎、Rust に固有のプログラミング手法、システムプログラミングの勘所、コンピューターサイエンスの知識の 4 つを挙げています。

所有権と借用が GC なしでメモリ安全を支える仕組み

Rust の学習で多くの人が苦労するのは、4 章が扱う 所有権と借用の規則 とライフタイムです。C や C++ では、確保したメモリを誰がいつ解放するのかをプログラマーが管理し、解放後の領域への参照や二重解放がそのまま脆弱性につながります。Java や Go のような言語はガベージコレクションでこの問題を避けますが、実行時の負担と停止の予測しにくさを引き受けることになります。Rust は、値ごとに所有者を 1 つに定め、参照には借用の規則と有効期間を課し、それをコンパイル時に検査することで、実行時の回収の仕組みに頼らずにメモリの安全性を保証します。この規則は抽象的な説明だけでは腑に落ちにくく、データがメモリ上でどう表現されるのか、スタックとヒープのどこに置かれるのかを知って初めて、コンパイラーが何を守ろうとしているのかが見えてきます。本書が第 1 部で言語の規則を学んだあと、第 2 部の 5 章と 6 章でデータの表現と メモリ上の配置 を扱う順序をとっているのは、この往復を意図した構成と読めます。

低レイヤーの題材で学ぶ前提、他の言語での経験が近道

第 2 部の題材は、ファイルとストレージ、ネットワーク、時間、プロセスとスレッド、カーネル、割り込みと、OS や通信の仕組みそのものです。第 1 部で言語の基礎から入るため Rust を初めて書く人にも入口はありますが、他の言語でプログラムを書いた経験と、ポインター、OS のシステムコール、TCP/IP といった基本的な概念に触れたことがあると、各章の狙いを追いやすくなります。Rust の言語仕様を網羅的に確かめたい場合は、公式ドキュメントの The Rust Programming Language (通称 The Book) のような言語そのものを主題にした資料と組み合わせると、本書は「その知識を何に使うのか」を示す実践の側を受け持つ形になります。逆に、Web アプリケーションの開発やフレームワークの使い方を学びたい人には、本書の題材は目的から外れます。

C や C++ でシステム寄りの開発をしてきて Rust へ移りたい人、あるいは Python や JavaScript を書いてきた人がコンピューターの下の層を理解し直したいときに、言語とシステムの仕組みを同じ本の中で往復できる点が本書の強みです。低レイヤーを学ぶ本の中での位置づけを確かめたい場合は、OS と低レイヤーの本の選び方 も参考になります。Rust の所有権の規則を「なぜそう決まっているのか」から理解し、メモリやネットワークを自分のコードで扱えるようになりたい人にとって、時間をかけて読み通す価値のある一冊です。

言及した記事 (3 件)

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

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

関連する本

関連記事

関連用語

共有: