【2021年】Rust「人気の本と高評価・おすすめの参考書」

Rustは低レベルな操作も可能ながら、メモリ安全性にも考慮された、ハイパフォーマンスな実装が可能な言語。

組み込みやサーバー処理など、リソースに対して処理性能を高める分野で今後需要が高まっていく人気の言語といえるでしょう。

そんな将来性も高いプログラミング言語「Rust」の参考書を人気・評判とともに紹介していきまっす。

 

発売したての新書をピックアップ
技術書は情報の鮮度も重要、人気ランキングの前に新しい書籍もチェックしておきましょう。




 

 

 

Kindle Unlimited 1ヶ月無料

kindle_unlimited_sale
 
  • 1ヶ月無料で読み放題
  • 1ヶ月以内でも解約可能
  • 解約後も1ヶ月まで利用可


 

Rust本「人気ランキング」

Rustの今売れ筋本を人気ランキングで一覧したのが以下。

ランキングは日々更新されていますので、最新の人気が反映されています。

 

(2021/10/25 12:05 更新)
Rank製品価格
1
並行プログラミング入門 ―Rust、C、アセンブリによる実装からのアプローチ...
発売日 2021/08/24
高野 祐輝 (オライリージャパン)
総合評価
3,520円
3,520円
3,520円
2
実践Rustプログラミング入門
発売日 2020/08/22
初田 直也, 山口 聖弘, 吉川 哲史, 豊田 優貴 (秀和システム)
総合評価
3,960円
3,208円
3,564円
3,960円
3
プログラミングRust
発売日 2018/08/10
Jim Blandy, Jason Orendorff (オライリージャパン)
総合評価
5,280円
5,280円
5,280円
4
プログラミング言語Rust入門
発売日 2020/04/20
増田 智明 (日経BP)
総合評価
3,960円
3,564円
3,960円
3,960円
5
基礎から学ぶ 組込みRust
発売日 2021/04/21
中林智之, 井田健太 (シーアンドアール研究所)
総合評価
4,202円
3,782円
3,782円
4,202円
6
実践Rust入門 [言語仕様から開発手法まで]
発売日 2019/04/26
κeen, 河野 達也, 小松 礼人 (技術評論社)
総合評価
4,378円
4,159円
4,378円
4,378円
7
プログラミング言語Rust 公式ガイド (アスキードワンゴ)
発売日 2019/07/05
Steve Klabnik, Carol Nichols, 尾崎 亮太 (ドワンゴ)
総合評価
4,180円
3,762円
4,180円
2,475円
8
Rustプログラミング入門
発売日 2019/10/18
酒井和哉 (オーム社)
総合評価
3,740円
3,553円
3,740円
1,925円
9
やさしいRust入門
発売日 2020/12/01
日向 俊二 (カットシステム)
3,080円
3,080円
3,080円

 

以降でおすすめ・注目の本をピックアップしていきまっす。

ちなみに、Kindle版のある本ならサンプル送信で試し読み可能。大概目次まで見れるので、内容の概要もつかめるので、サンプル試読おすすめです。

 

人気・高評価のおすすめ参考書3冊

以下がRustの本の中でもいま人気で評価も高いおすすめ本です。

「実践Rustプログラミング入門」

実践Rustプログラミング入門
(著)初田 直也, 山口 聖弘, 吉川 哲史, 豊田 優貴
発売日 2020/08/22
総合評価
(2021/10/25 12:05時点)
---
C/C++の代わりとなるべき最新言語
その独特な仕様をわかりやすく解説。
これから Rust をはじめるすべての人へ

●いますぐ使いはじめるべきRustの5つ魅力
・とにかく実行速度が速い
・モダンな言語機能が一通り入っている
・OS から Web アプリケーションまで幅広く実装できる
・ツール群がとても充実している
・「安全性」が強力に担保されている

●Rustならではの言語仕様を完全理解
・Google、Microsoft、Amazonが いま注目する最新言語。その先進的考え方を体験する。
・バグを出させないための仕組みを知り、Rustの深淵に踏み込む。
・本書に載っているいろんな領域のサンプルで、組み込み開発からWebアプリケーションまで幅広く使われるRustを学ぶ。
・特徴的なRustの概念を完全理解する。
「ゼロコスト抽象化」「ムーブセマンティクス」「クレート」
「スレッド安全性」「パニック」「unsafe」「エディション」
「所有権」「借用」「ライフタイム」「トレイト」……

"安心安全の 爆速言語 Rust入門"

■Chapter1 プログラミング言語 Rust
■Chapter2 環境構築
■Chapter3 Rustの基本
■Chapter4 プログラムを作成する
■Chapter5 Webアプリケーションの開発
■Chapter6 WebAssembly
■Chapter7 GUIアプリケーション
■Chapter8 組み込みシステム
■Chapter9 開発ツール
■Chapter10 プロダクトをリリースする
■Chapter11 いろいろなRustの発展的Tips

↓全て表示↑少なく表示
 
内容サンプル

(引用元楽天Books)

 
目次
■Part 1 入門
■Chapter1 プログラミング言語 Rust
●1-1 Rust の魅力
●1-2 とにかく実行速度が速い
Rust は機械語に直接コンパイルされる
ガベージコレクションをもたない
「ゼロコスト抽象化」を追求している
●1-3 モダンな言語機能が一通り入っている
不変・可変を明示的に制御できる
filter, map などを使ってコレクションを操作できる
代数的データ型とパターンマッチング
強力な型推論
トレイト
●1-4 OS から Web アプリケーションまで幅広く実装できる
●1-5 ツール群がとても充実している
Cargo
エディタサポート
標準フォーマッタ rustfmt、標準リンター clippy
●1-6 「安全性」が強力に担保されている
●1-7 エディションという考え方によって互換性を担保している
●1-8 Rust の利用事例
■Chapter2 環境構築
●2-1 Webサイトで試せるRust - The Rust Playground
●2-2 開発環境を構築する
rustupをインストール
動作確認
cc
エディタ
Rust Language Server(rls)
rust-analyzer
cargo-edit
リリーストレインモデル:nightly, beta, stable
●2-3 まとめ
■Chapter3 Rustの基本
●3-1 基本的な文法
基本的な型
変数宣言
制御構文
関数
マクロ
●3-2 Rustを支える言語機能
ゼロコスト抽象化
所有権と借用
スレッド安全性
非同期処理
●3-3 クレートとモジュール
入門 クレート
入門 モジュール
●3-4 Cargo - ビルドシステム・パッケージマネージャ
サブコマンド
Cargo.toml
●3-5 テスト
assertマクロ
パニックを発生させるテスト
普段は無視するテスト
testsモジュール
testsディレクトリ
ドキュメントのテスト
■Part 2 実践
■Chapter4 プログラムを作成する
●4-1 プロジェクトの準備
アプリケーションの仕様
プロジェクトの作成
コマンドライン引数の処理
●4-2 計算ロジックを追加する
アプリケーションの枠組みの作成
逆ポーランド記法の計算ロジックの作成
●4-3 テストを書く
●4-4 エラーハンドリングを追加する
エラーをハンドリングしない実装
Resultでエラーを受け取る
独自のエラーを定義する
エラー処理クレートを使う
逆ポーランド記法計算機へのanyhowの適用
●4-5 ファイルパスの表現について
●4-6 実行パスへのインストール
●4-7 まとめ
■Chapter5 Webアプリケーションの開発
●5-1 Webフレームワークのセットアップ
Hello world!
エラーハンドリングの定義
●5-2 テンプレートエンジン
Web アプリの設計
HTML テンプレート
HTML の表示
●5-3 データベース
テーブルの設計
SQLite に Rust でアクセスする
サーバーアプリケーションでアクセスする
●5-4 Todo アプリを仕上げる
POST リクエストを受け取る
●5-5 Docker イメージの作成
Dockerfile の作成
イメージビルドの高速化
イメージサイズの削減
●5-6 まとめ
■Chapter6 WebAssembly
●6-1 WebAssemblyとは
●6-2 開発の準備
npm
cargo-generate
wasm-pack
●6-3 サンプルプログラム:マンデルブロ集合を描く
マンデルブロ集合とは
マンデルブロ集合を計算するプログラム
wasmを呼び出すJavaScriptの実装
JavaScriptから呼び出せるようにする
JavaScriptとの速度比較
●6-4 サンプルプログラム:ナンバープレースを解く
ナンバープレースとは
ナンバープレースを解くプログラム
Rustの実装
JavaScript側の実装
●6-5 まとめ
■Chapter7 GUIアプリケーション
●7-1 RustにおけるGUIの現状
GUIクレートの紹介
IcedによるGUIの実装
●7-2 ウィンドウ
プロジェクトディレクトリの準備
アプリケーション基盤の作成
main関数からの実行
●7-3 ウィジェット
ウィジェットの配置
フォントの使用
ウィンドウのサイズ変更
●7-4 メッセージ
メッセージと状態変数の定義
メッセージの送信
メッセージの受信
●7-5 サブスクリプション
レシピの作成
サブスクリプションの作成
メッセージの受信
時間の表示
完成
■Chapter8 組み込みシステム
●8-1 環境構築
ターゲットとするプラットフォームについて
クロスコンパイルの環境構築
QEMU
●8-2 Hello, world!
●8-3 Lチカ
LEDの操作方法
Peripheralsの取得
Peripheralsの有効化
GPIOの取得
LEDの操作
ウェイトを入れる
Lチカのプログラム
●8-4 embedded-hal
単一のPeripherals
クロックの凍結
型制約されたピン設定
その他のデバイス
●8-5 組み込み向けクレート
alloc
heapless
パニックハンドラ
cortex-m-rtic
●8-6 参考資料
■Chapter9 開発ツール
●9-1 実践Cargo
プロジェクトのディレクトリ構成
フィーチャ
依存クレートの修正
ワークスペース
サブコマンド
●9-2 フォーマッタ・リンター
rustfmt
clippy
●9-3 コードカバレッジ
cargo-tarpaulin
●9-4 ベンチマーク・プロファイラ
cargo bench
criterion
cargo-profiler
flamegraph
hyperfine
●9-5 CI
Travis CI
GitHub Actions
■Chapter10 プロダクトをリリースする
●10-1 シングルバイナリ
●10-2 ビルドの再現性
Cargo.lock
rust-toolchain
●10-3 バイナリサイズの最適化
最適化のオプション
サイズ比較
●10-4 Profile-Guided Optimization
実行方法
●10-5 クレートの信頼性
rustsec.org
cargo-audit
cargo-crev
●10-6 ファジング
cargo-fuzz
●10-7 プライベートなクレート
cargo publishを禁止する
代替レジストリ
■Part 3 Tips
■Chapter11 いろいろなRustの発展的Tips
●11-1 マクロ
宣言的マクロ
手続きマクロ
関数的マクロ
deriveマクロ
アトリビュートマクロ
●11-2 FFIによる他言語との連携
サンプル:RustからC言語の関数を呼ぶ
サンプル:RubyからRustの関数を呼ぶ
FFIを使う上での注意点
その他のバインディングを作るクレート
まとめ
●11-3 パニック
自己診断としてのパニック
パニックとResultの使い分け
パニックが起こるとどうなるか
パニックを捕捉する
巻き戻しが起こらない場合
パニックハンドラを置き換える
パニックとポイズニング
パニックのまとめ
●11-4 unsafe
UB (未定義動作)
安全性と健全性
unsafeアンチパターン
契約で理解するunsafe
unsafeの2つの使い方
妥当性不変条件と即時UB
unsafeをできるだけ安全に使うために
valgrind
デバッガを使う
サニタイザ
参考資料
unsafeのまとめ
●11-5 Rust のエディション
エディションとは何か?
エディションの歴史
今後予定されているエディション
エディション間の互換性について
Cargo でのエディションの設定方法
●11-6 Rust製のOSS
ripgrep
Alacritty
Rust製のOSSでよく使われるライセンス
cargo-license
●11-7 Rust のコミュニティ
Rust のコミュニティについて
Rust 商標ポリシーについて
最新情報を得るために
日本のコミュニティの現状
●11-8 Rust と競技プログラミング
●11-9 Rustを仕事で使う
業務で使われている例
自社の業務にRustを取り入れるためのヒント
まとめ
索 引
■Column 目 次
機械語とは何か
ゼロコスト抽象化
関数型プログラミング言語 Rust?
ビルトインマクロ
PartialEqとPartialOrd
2015エディションのモジュールシステム
Rust の文字列型
Rust におけるasync/await と非同期ランタイム
Webフレームワーク
汎用 SQL ライブラリ: diesel
Rust とサーバーレスアプリケーション
Rust と Prometheus
wasm-bindgen
web-sys
Tierについて
xargoとstd Aware Cargo
cross によるクロスコンパイル
svd2rust
RustとOS
バイナリにリビジョンを埋め込む
清潔なマクロ
2015エディションのマクロと名前解決

↓全て表示↑少なく表示
Users Voice
CやC++をよく使いますが、rustの挑戦を感じてみようて読んでみました。面白かったです。きっと何かが得られると思います。が、入門書ですが、初心者向けではないですね。 (参考:YahooShopping)

↓全て表示 ↑少なく表示
2020年度第2回見計らい選定図書
https://opac.dl.itc.u-tokyo.ac.jp/opac/opac_details/?reqCode=fromlist&lang=0&amode=11&bibid=2003540481&opkey=B161535603886157&start=1&totalnum=1&listnum=0&place=&list_disp=20&list_sort=6&cmode=0&chk_st=0&check=0 (参考:honto)

↓全て表示 ↑少なく表示
図書館から借りた本のため、かなり流し読みです。
Rust文法の部分やコンソールアプリだけでなく、WebアプリやIoTデバイス周りのユースケースもあるため、色々と参考になりそうです。 (参考:honto)

↓全て表示 ↑少なく表示
内容サンプル

(引用元楽天Books)

 
著者略歴

他著:初田 直也
初田 直也
株式会社PEZY ComputingのLSIエンジニア。業務ではHPC向けのプロセッサLSIを開発する傍らRustで業務をサポートするツールを書いている。最近開発したRustプロダクトはSystemVerilog関連ツールや自社プロセッサ向けの命令セットシミュレータなど。

他著:山口 聖弘
山口 聖弘
トレンドマイクロ株式会社のソフトウェアエンジニア。セキュリティコンテストの運営のためにOpenGLの可視化システムを作成したことをきっかけに、RustでもGUIや3D CGのプログラムを作成している。著書に『RustではじめるOpenGL』。

他著:吉川 哲史
吉川 哲史
フェアリーデバイセズ株式会社のソフトウェアエンジニア。自社サービスのバックエンドサーバー開発でのRust導入を皮切りに社内外でRustの普及活動中。自社のサーバーやデバイス向けプログラムをRustで品質向上させることが目下の目標。


↓全て表示↑少なく表示

  

「基礎から学ぶ 組込みRust」

基礎から学ぶ 組込みRust
(著)中林智之, 井田健太
発売日 2021/04/21
総合評価
(2021/10/25 12:07時点)
Rustの組込み開発に必要な知識を身に付けながら、マイコン「Wio Terminal」を動かしてみよう!
組込み開発の概要や開発環境の構築方法はもちろんのこと、Rustの基礎についても解説!
マイコン「Wio Terminal」のデバイスを操作するための豊富な実例を掲載!

【「はじめに」より抜粋】
 RustはC/C++一強の組込みソフトウェア開発に、一石を投じる可能性があるプログラミング言語です。Rustで書かれたプログラムは、C/C++で書かれたプログラムに匹敵する実行速度、メモリ効率で動作します。そのうえ、C/C++で課題となる安全性について、その多くを解決しています。
 私は2018年にRustと出会い、Rustの導入によりもっとも恩恵を受けるのは組込み開発なのではないか、と考えるようになりました。ただ、どれほどプログラミング言語が優れていても、利用人口が増えて、ライブラリが整備されなければ、「可能性があるプログラミング言語」のままです。今回、Rustが組込み開発で有力な選択肢になる未来を期待して、Rustによる組込み開発を取り扱う本書を執筆することとしました。

 組込みRustに関して、すでにコミュニティが素晴らしいドキュメントを公開していますが、Rustの習得が前提となっており、単独で組込みRustを学習できるものではありませんでした。本書では、Rustの基礎から組込みRustでアプリケーションを作るまでを片手で持てる程度の本にまとめています。豊富なデバイスを搭載しているWio Terminalを題材としており、さまざまなデバイスをRustで扱うサンプルを用意しました。本書を読み終わったあと、遊ぶにも困らない代物です。

※この商品は固定レイアウトで作成されており、タブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。

↓全て表示↑少なく表示
 
内容サンプル

(引用元楽天Books)

 
目次
CHAPTER-1 Rustと組込みシステム
CHAPTER-2 開発環境の準備
CHAPTER-3 Rustの基本
CHAPTER-4 Wio Terminal
CHAPTER-5 組込みRustの基礎知識
CHAPTER-6 Wio Terminal搭載のデバイスを使う
CHAPTER-7 LCD表⽰
CHAPTER-8 アプリケーション作成
Users Voice
Good Gggxfggggffffffff (参考:YahooShopping)

↓全て表示 ↑少なく表示
内容サンプル

(引用元楽天Books)

 
  

「実践Rust入門 [言語仕様から開発手法まで]」

実践Rust入門 [言語仕様から開発手法まで]
(著)κeen, 河野 達也, 小松 礼人
発売日 2019/04/26
総合評価
(2021/10/25 12:07時点)
こちらの書籍は 2020/06/24 紙版の4刷に対応するため更新をおこないました。
(概要)
Rustは2015年に安定版がリリースされた新しい言語です。静的型付けと関数型言語などにみられる高度な抽象化のしくみを取り入れており、高品質で再利用性の高いプログラムを開発できます。さらに、ハードウェア資源についてC/C++と同等の効率の良い制御ができますが、決定的に違うのは、安全性をかなり重視しています。つまりRustは開発者の生産性を高めつつ、性能やハードウェア資源の効率を最大限に発揮するという、従来の言語では相反する要件を同時に満たす、数少ないプログラミング言語の1つなのです。本書はこの注目のプログラミング言語Rustの入門書です。この1冊でRustの言語仕様から開発現場で必要となる知識までを丁寧に解説しています。

(こんな方におすすめ)
・Rustをはじめてみたい方

(目次)
第1部基礎編
第1章Rustの特徴
1-1Rustの特徴
1-2最も愛されている言語
1-3Rustの起源
1-4なぜRustなのか?
1-5導入事例

第2章はじめてのRustプログラム
2-1インストール
2-2Hello Worldプログラム
2-3ソースコードエディタの導入
2-4RPN計算機プログラムとデバッガによる実行
2-5ツールチェインの補足情報

第3章クイックツアー
3-1プログラムの概要
3-2並列ソートに適したバイトニックソート
3-3第1段階:初歩的な実装
3-4第2段階:ジェネリクスでさまざまなデータ型に対応させる
3-5第3段階:クロージャでソート順をカスタマイズ
3-6最終形:並列ソートの実現
3-7仕上げ:ベンチマークプログラム

第4章プリミティブ型
4-1型の分類
4-2スカラ型
4-3プリミティブな複合型

第5章ユーザ定義型
5-1スタック領域とヒープ領域
5-2標準ライブラリの主な型
5-3新しい型の定義と型エイリアス
5-4型変換

第6章基本構文
6-1準備
6-2コメント
6-3うるう年と平年
6-4use宣言
6-5関数
6-6束縛とミュータビリティ
6-7演算子
6-8分岐
6-9繰り返し
6-10クロージャ
6-11アトリビュート
6-12モジュールとアイテムの可視性

第7章所有権システム
7-1所有権システムの利点
7-2所有権システムの概要
7-3値の所有者
7-4値のスコープ
7-5ムーブセマンティクス
7-6コピーセマンティクス
7-7借用:所有権を渡さずに値を貸し出す
7-8参照のライフタイムと借用規則
7-9ライフタイムの詳細:簡単なベクタの実装
7-10共同所有者を実現するポインタ:Rc型とArc型
7-11内側のミュータビリティ
7-12クロージャと所有権

第8章トレイトとポリモーフィズム
8-1トレイトの基本
8-2トレイトのジェネリクス
8-3静的ディスパッチと動的ディスパッチ
8-4存在impl Trait
8-5トレイトとアイテム
8-6標準ライブラリのトレイト利用例
8-7演算子のオーバーロード
8-8トレイトのテクニック

第2部実践編
第9章パーサを作る
9-1四則演算の処理系の作成
9-2字句解析
9-3構文解析
9-4抽象構文木の利用

第10章パッケージを作る
10-1コマンドラインツールの作成
10-2ドキュメントを書く
10-3テストの追加
10-4パッケージを公開するために
10-5自動テストを行う
10-6パッケージをリリースする

第11章Webアプリケーション、データベース接続
11-1RustとWebの現状
11-2WebアプリケーションフレームワークActix Web
11-3JSON APIサーバ
11-4Dieselを使ったデータベースの扱い
11-5マルチパート/CSVファイルの扱い
11-6CLIクライアントの作成

第12章FFI
12-1C FFIの基本
12-2Cのデータ型の扱い
12-3C APIの基本

↓全て表示↑少なく表示
 
内容サンプル

(引用元Amazon)

 
目次
第1部 基礎編
第1章 Rustの特徴
1-1 Rustの特徴
1-2 最も愛されている言語
1-3 Rustの起源
コラム 名前の由来
1-4 なぜRustなのか?
1-4-1 トップクラスのパフォーマンス
1-4-2 安全なシステムプログラミング言語
1-4-3 生産性を高めるモダンな機能
1-4-4 シングルバイナリ、クロスコンパイル
1-4-5 他言語との連携が容易
1-5 導入事例
1-5-1 Dropbox - Magic Pocket
1-5-2 ドワンゴ - Frugalos
1-5-3 npmレジストリ
1-5-4 AWS Firecracker
1-5-5 Mozilla Firefox
第2章 はじめてのRustプログラム
2-1 インストール
2-1-1 本書が対象とする環境
2-1-2 ツールチェイン、リンカ、ABI
2-1-3 rustup
2-1-4 Rustツールチェインのインストール
2-1-5 リンカのインストール(Linux)
2-1-6 リンカのインストール(macOS)
2-1-7 リンカのインストール(Windows MSVC)
2-2 Hello Worldプログラム
2-2-1 パッケージの作成
2-2-2 binクレートとlibクレート
2-2-3 Cargo.tomlファイル
2-2-4 src/main.rsファイル
2-2-5 パッケージのビルド
2-2-6 プログラムの実行
2-2-7 プログラムの内容
2-3 ソースコードエディタの導入
2-3-1 Rustをサポートする主なエディタとIDE
2-3-2 Visual Studio Code(VS Code)の特徴
2-3-3 VS Codeのインストール
2-3-4 Rust RLS拡張機能のインストール
2-3-5 基本的な使い方
2-4 RPN計算機プログラムとデバッガによる実行
2-4-1 プログラムの作成
コラム ジェネリクスにおけるトレイト境界について
2-4-2 デバッガのセットアップ(LinuxとmacOS)
2-4-3 CodeLLDB拡張機能のインストール
2-4-4 デバッガのセットアップ(Windows MSVC)
2-4-5 パッケージごとの設定
2-4-6 デバッガでRPN計算機を実行
コラム ターミナルからデバッガを実行する
2-5 ツールチェインの補足情報
2-5-1 プラットフォーム・サポート・ティア
2-5-2 リリースサイクルとリリースチャネル
2-5-3 エディション
2-5-4 rustupのその他の機能
2-5-5 Cargoの主なコマンド
第3章 クイックツアー
3-1 プログラムの概要
3-1-1 実行例
3-2 並列ソートに適したバイトニックソート
3-2-1 アルゴリズム
3-2-2 Pythonによるサンプル実装
3-2-3 Pythonプログラムの実行
3-3 第1段階:初歩的な実装
3-3-1 モジュール構成について
3-3-2 関数の引数を定義する
3-3-3 識別子の命名規則について
3-3-4 コーディング規約について
3-3-5 sort関数の本体を実装する
3-3-6 残りの関数を実装する
3-3-7 単体テストを書く(数値のソート)
3-4 第2段階:ジェネリクスでさまざまなデータ型に対応させる
3-4-1 テストケースを追加する(文字列のソート)
3-4-2 型パラメータを導入してジェネリクス化する
3-4-3 大小比較可能な型に限定する
3-4-4 コンパイラが型に関するバグを防いでくれる
3-4-5 列挙型で使いやすくする
3-4-6 match式による場合分け
3-4-7 エラーを返す
3-5 第3段階:クロージャでソート順をカスタマイズ
3-5-1 テストケースを追加する(学生データのソート)
3-5-2 クロージャの構文について
3-5-3 sort_by関数を実装する
3-5-4 クロージャの型について
3-5-5 既存の関数を修正する
3-5-6 トレイトを自動導出する
3-5-7 乱数で巨大なテストデータを生成する
3-5-8 イテレータチェインでスマートに
3-5-9 ソート結果を確認する
3-6 最終形:並列ソートの実現
3-6-1 標準ライブラリのマルチスレッドAPI
3-6-2 並列データ処理ライブラリRayon
3-6-3 Rayonを導入する
3-6-4 SyncトレイトとSendトレイト
3-6-5 所有権
3-6-6 sub_sort関数の並列化
3-7 仕上げ:ベンチマークプログラム
第4章 プリミティブ型
4-1 型の分類
コラム コードの表記法について
4-2 スカラ型
4-2-1 ユニット
4-2-2 真理値
4-2-3 固定精度の整数
4-2-4 固定精度の浮動小数点数
4-2-5 文字
4-2-6 参照
4-2-7 生ポインタ
4-2-8 関数ポインタ
コラム 関数ポインタとクロージャ
4-3 プリミティブな複合型
4-3-1 タプル
4-3-2 配列
4-3-3 スライス
4-3-4 文字列スライス
第5章 ユーザ定義型
5-1 スタック領域とヒープ領域
5-2 標準ライブラリの主な型
5-2-1 Box(std::boxed::Box
5-2-2 ベクタ(std::vec::Vec
5-2-3 その他のコレクション型
5-2-4 String(std::string::String)
5-2-5 範囲(std::ops::Range)
5-2-6 オプション(std::option::Option
5-2-7 リザルト(std::result::Result
5-3 新しい型の定義と型エイリアス
5-3-1 型エイリアス
5-3-2 構造体(struct)
5-3-3 列挙型(enum)
5-3-4 構造体と列挙型のより詳しい情報
5-4 型変換
5-4-1 型キャスト
5-4-2 複合型の型変換
5-4-3 Transmute(std::mem::transmute)
5-4-4 型強制
第6章 基本構文
6-1 準備
6-1-1 パッケージの作成
6-1-2 パッケージの構造
6-2 コメント
6-3 うるう年と平年
6-4 use宣言
6-5 関数
6-5-1 関数定義
6-5-2 式と文
6-5-3 関数の実行
6-5-4 メソッド
6-5-5 関連関数
6-6 束縛とミュータビリティ
6-6-1 束縛とは
6-6-2 ミュータビリティ
6-6-3 スコープ
6-6-4 シャドウイング
6-6-5 定数とスタティック変数
6-7 演算子
6-8 分岐
6-8-1 if式
6-8-2 match式とパターン
6-8-3 if let式
6-9 繰り返し
6-9-1 loop式
6-9-2 while式
6-9-3 while let式
6-9-4 for式
6-10 クロージャ
6-11 アトリビュート
6-12 モジュールとアイテムの可視性
6-12-1 modキーワードとpubキーワード
6-12-2 モジュールをファイルとして切り出す
第7章 所有権システム
7-1 所有権システムの利点
7-1-1 ガベージコレクタが不要になる
7-1-2 メモリ安全性がコンパイル時に保証される
7-1-3 リソースの自動解放
7-2 所有権システムの概要
7-3 値の所有者
7-4 値のスコープ
コラム 値の破棄の意図的な遅延とリソースリーク
7-5 ムーブセマンティクス
7-6 コピーセマンティクス
7-6-1 Copyトレイトを実装する主な型
7-6-2 CopyトレイトとCloneトレイトの違い
7-7 借用:所有権を渡さずに値を貸し出す
7-8 参照のライフタイムと借用規則
7-8-1 新旧2種類の借用チェッカ
7-9 ライフタイムの詳細:簡単なベクタの実装
7-9-1 構造体の定義
7-9-2 new関連関数とwith_capacity関連関数
7-9-3 lenメソッドとcapacityメソッド
7-9-4 pushメソッドとgetメソッド
7-9-5 参照のライフタイムを確認する
7-9-6 ライフタイムの省略
7-9-7 staticライフタイム
7-9-8 popメソッドと借用からのムーブアウト
コラム 列挙型とnullableポインタ最適化
7-9-9 growメソッド
7-9-10 イテレータと所有権
7-9-11 可変の参照と不正なポインタの回避
7-9-12 構造体や列挙型のライフタイム
7-10 共同所有者を実現するポインタ:Rc型とArc型
7-10-1 循環参照の問題
7-11 内側のミュータビリティ
7-11-1 使用例:TLSとRefCellでスレッド固有の可変の値を持つ
7-11-2 使用例:RwLockで可変の値を複数スレッドで共有する
コラム アリーナ・アロケータ
7-12 クロージャと所有権
第8章 トレイトとポリモーフィズム
8-1 トレイトの基本
8-1-1 基本的な使い方
8-1-2 トレイト境界
コラム ジェネリクスの記法の表現力
8-1-3 トレイトの継承
8-1-4 デフォルト実装
8-1-5 トレイトとスコープ
8-1-6 トレイト実装のルール
8-1-7 自動導出
8-2 トレイトのジェネリクス
8-2-1 ジェネリクスの型パラメータと具体的な型
コラム トレイトとオーバーロードの関係
8-3 静的ディスパッチと動的ディスパッチ
8-3-1 ジェネリクスと静的ディスパッチのしくみ
8-3-2 トレイトオブジェクトと動的ディスパッチのしくみ
8-4 存在impl Trait
コラム 全称と存在
8-5 トレイトとアイテム
8-5-1 関連関数
8-5-2 関連定数
8-5-3 関連型
コラム ジェネリクスか関連型か
8-6 標準ライブラリのトレイト利用例
8-6-1 std::io::Write
8-6-2 std::convert::From
8-6-3 std::iter::Iterator
8-6-4 std::ops::Eq
8-6-5 std::os::unix::fs::FileExt
8-6-6 std::marker::Sized
8-7 演算子のオーバーロード
8-8 トレイトのテクニック
8-8-1 StringとInto
8-8-2 オプショナル引数
8-8-3 パスネーム
8-8-4 &strとstr
8-8-5 Newtypeによるトレイト実装制約の回避
8-8-6 列挙型を使った型の混合
第2部 実践編
第9章 パーサを作る
9-1 四則演算の処理系の作成
9-1-1 パーサを構成する要素
コラム パーサの種類
9-1-2 処理する計算式について
9-1-3 全体の設計
9-2 字句解析
9-2-1 トークン
9-2-2 字句解析器の実装
9-3 構文解析
9-3-1 抽象構文木の実装
9-3-2 構文解析器の実装
9-3-3 エラー処理
9-4 抽象構文木の利用
9-4-1 評価器の作成
9-4-2 コードの生成
第10章 パッケージを作る
10-1 コマンドラインツールの作成
10-1-1 Cargoとプロジェクト、パッケージ、クレート
10-1-2 マニフェストファイルの修正
10-1-3 プログラムの作成
10-1-4 ライブラリとバイナリへの分割
10-2 ドキュメントを書く
10-2-1 ドキュメントの構文
10-2-2 ドキュメントの書式
10-2-3 ドキュメント文章の記載
コラム cargo docの便利なオプション
10-3 テストの追加
10-3-1 簡単なテストを書く
10-3-2 さまざまなテストを書く
10-3-3 テストを書く場所
コラム クレート内テストとクレート外テスト
10-4 パッケージを公開するために
10-4-1 パッケージのビルド
10-4-2 作業のコミット
コラム Cargo.lockはコミットすべき?
10-4-3 リモートリポジトリの追加
10-5 自動テストを行う
コラム CIのアレコレ
10-5-1 Travis CI
10-5-2 AppVeyor
コラム いろいろなCIサービス
10-6 パッケージをリリースする
10-6-1 マニフェストファイルの修正
10-6-2 最終確認
コラム パッケージ名の-と_
10-6-3 crates.io での公開
10-6-4 バイナリのリリース
第11章 Webアプリケーション、データベース接続
11-1 RustとWebの現状
11-1-1 同期と非同期
11-1-2 FuturesとTokio
11-1-3 Rustでの非同期の未来
11-1-4 Webアプリケーションフレームワーク
11-2 WebアプリケーションフレームワークActix Web
11-2-1 Hello, Actix Web
11-2-2 Actix Webとサーバの構成要素
11-2-3 静的ファイルを返す
11-2-4 テンプレートを返す
11-3 JSON APIサーバ
11-3-1 仕様
11-3-2 ワークスペース
11-3-3 ひな型
11-3-4 データ型の定義
11-3-5 APIでの使用
11-4 Dieselを使ったデータベースの扱い
11-4-1 diesel_cliのインストール
11-4-2 スキーマ定義とマイグレーション
11-4-3 モデルの定義
11-4-4 Dieselを用いたクエリ
11-4-5 データベースへのコネクションとHTTPサーバへの統合
コラム Dieselの型とクエリキャッシュ
11-5 マルチパート/CSVファイルの扱い
11-6 CLIクライアントの作成
11-6-1 最初のコード
11-6-2 ReqwestによるHTTP POST
11-6-3 ReqwestによるHTTP GET
11-6-4 完成
第12章 FFI
12-1 C FFIの基本
12-1-1 単純なC FFI
12-1-2 ライブラリとのリンク
12-1-3 グローバル変数
12-1-4 静的リンクライブラリとのリンク
12-1-5 ビルドスクリプトサポート
コラム Rustのリンカ
12-2 Cのデータ型の扱い
12-2-1 プリミティブ型
12-2-2 ポインタ型
12-2-3 libc クレート
12-2-4 文字列型
12-2-5 関数ポインタ
12-2-6 所有権とリソースの解放
コラム ValgrindをRustに使う
12-2-7 Opaqueと空の列挙型
12-2-8 #[repr(C)]
コラム Nullableポインタ最適化
12-3 C APIの基本
12-3-1 プロジェクトの作成
12-3-2 ライブラリの作成
12-4 実践C FFI
12-4-1 Onigmoのインストール
12-4-2 プロジェクト構成とbindgen
12-4-3 アンセーフなサンプルコード
12-4-4 ラッパ

↓全て表示↑少なく表示
Users Voice
第1部を全て読んだ。第2部は必要に応じて読む。
第7章までは構成や文章が素晴らしく、とても分かりやすい。しかし、第8章は文章の質や例題の選定があまり良いとは言えず、誤植もあり、結構理解しづらい。
////////////////////////////////////////
マルチスレッド化はRustの標準ライブラリだけで実現できるが、Rayonクレートを使用すると簡単かつ安全に実装できる。
・標準ライブラリ:spawn(), join()など。
・Rayonクレート:並列データ処理向け
 ・並列イテレータ
  イテレータチェインの並列実行【パイプライン並列?】
 ・joinメソッド
  分割統治法の並列実行
データ競合が起こらないことをコンパイル時に確認するために、SyncトレイトとSendトレイトを提供する。
・Syncトレイト:複数スレッドによる安全な共有参照
・Sendトレイト:スレッド間の安全な受け渡し
////////////////////////////////////////
参照は、所有権システムでは借用とも呼ばれる。
参照型(&T, &mut T)はメモリ安全なポインタ。
生ポインタ型(*const T, *mut T)はメモリ安全でないポインタ。 (参考:honto)

↓全て表示 ↑少なく表示
内容サンプル

(引用元Amazon)

 
著者略歴
keen(KEEN)
Idein Inc.所属のエンジニア。Rustでサーバサイドの開発をしている。学生の頃に趣味でやっていたプログラミング(Lisp)が高じてソフトウェアエンジニアになる。プログラミング言語や言語処理系が好き。初めてさわったRustのバージョンは0.12

河野達也(カワノタツヤ)
クラウディアン株式会社所属のエンジニア。Erlang/OTP、Scala(Akkaフレームワーク)などを使用して自社製分散オブジェクトストア向けの周辺ツールを開発している。2016年にRustに出会い、空き時間を利用してRustを用いた分散キーバリューストアを開発中。Rustがもたらす詳細なメモリ管理とゼロコスト抽象化の効果を日々実感している

小松礼人(コマツヨシト)
コンピュータが好きな京都の弁護士。好きなプログラミング言語はClojureとRust(本データはこの書籍が刊行された当時に掲載されていたものです)

↓全て表示↑少なく表示

  



関連:C++の参考書

Rustはハイパフォーマンスな実装が可能でC++に替わるとも言われていますが、まだまだ現場(ゲーム開発、組み込み等)はC++がメイン。

時代と状況に応じて、C++と使い分け・移行していくのがよいです。以下ではC++の参考書も紹介しています。

関連:最新おすすめのKindle端末

以下では最新のKindle端末について比較、おすすめ紹介しています、合わせてのぞいて見てください。

いじょうでっす。

コメント

タイトルとURLをコピーしました