サンプルを動かしながら
Rustの基本をしっかり学べる!
【本書の背景】
Rustは、2015年に初期版がリリースされたプログラミング言語です。Rustの特徴として「処理の速度が速い」「安全性が高い」「開発に必要なツールが充実」といったことが挙げられます。現在は、Microsoft、Google、Amazon、MetaといったIT企業やLinuxでも導入が進み、国内でも利用するIT企業が増えてきている人気急上昇の言語です。
【本書の概要】
Rustのプログラミング手法について、サンプルを元に手を動かしながら学ぶ書籍です。主に以下の3つについて丁寧に解説します。
●Rustの概要と開発環境
●Rustの基本的な文法と機能
●Rustによる簡単なアプリ開発
なお本書はエンジニアのための情報共有コミュニティ「Zenn」で公開されている大人気の「Rust 入門」を元にした書籍です。
【対象読者】
Rustに初めて触れるプログラマー
【本書のポイント】
・基本的な文法について丁寧に解説
・Rustの機能を学ぶのに適したサンプルを用意
・学習をもっと深めたい方に向けて「メモ」や「参照」で補足
【目次】
Chapter1 Rust
Chapter2 環境構築
Chapter3 Rustの文法と機能
Chapter4 アプリケーションの開発
【著者プロフィール】
mebiusbox(メビウスボックス)
趣味でフリーソフトウェアを開発。エンジニア向けのコミュニティに記事を投稿することが多い。コンピュータグラフィックスに関する記事を書いて公開している。最近は Rust や Three.js も扱っている。
開発環境の準備や便利なツールの紹介
Windowsでの開発環境を元に解説します。具体的には、PowerShellやターミナルの環境構築、ツールチェインのインストール、rustup、cargo、rustcの概要、VSCodeのインストールとスニペットについて解説します。また、Rustの言語サーバであるrust-analyzer、Rustプログラムを簡単に試せるRust Playground、簡単なRustプログラムを書いてパッケージを作成する方法、開発に便利なさまざまなツールについても解説します。
基本的な文法について丁寧に解説
Rustの基礎的な文法、制御構文、 構造体、列挙型、数列、スライス、ジェネリクスの使い方、パターンマッチングの使い方、エラー処理の方法、所有権について紹介します。また、トレイト、動的ディスパッチ、並列処理と非同期処理、イテレータとコレクションの使い方、パッケージ管理ツール cargo の使い方、モジュールの使い方、開発ツールの使い方も解説します。
アプリケーションの開発方法を体験
単語推理ゲーム(相手が設定した単語を推理するゲーム)や並列処理を利用したプログラム(レイトレーシングでレンダリングするプログラム)を作成します。これらのアプリケーションの作成を通じて、プロジェクトの作成方法、ターミナルからの入出力、コレクションの使い方、イテレータの使い方を学ぶことができます。また、randクレート、rayonクレート(並列処理)、imageクレート(画像の読み書き)、icedクレート(GUI)、minifbクレート(画像の表示)、算術関数、演算子のオーバーロード、並列処理、モジュール、トレイトなどについても学ぶことができます。
Chapter 1 Rust
01 概要
Rustの特徴
Rustの誕生
Rustはどういうプログラミング言語なのかエディション
02 互換性
03 まとめ
Chapter 2 環境構築
01 Rustをインストールする前の準備
PowerShellのバージョンを確認
wingetのインストール
最新のPowerShellをインストール
Windows Terminal
Git
Anaconda(Miniconda)
02 Rustのインストール
rustup
cargo
rustc
03 Visual Studio Code
スニペット
04 rust-analyzer
05 Rust Playground
06 Hello, World!
パッケージの作成
Rustプログラムの実行環境
07 その他のツール
Terminal-Icons
Oh My Posh
winget
PowerShellのエイリアス
bat
lsd(LSDeluxe)
delta
simple-http-server
cargo-make
08 まとめ
本章で学んだこと
Chapter 3 Rustの文法と機能
01 基本
コメント(Comment)
式と文(Expression and statement)
ブロック(Block)
オブジェクト(Object)
組み込みデータ型 (Primitive Type)
型の別名(Alias)
所有権(Ownership)
関数(Function)
print!マクロ
束縛(Binding)
シャドーイング(Shadowing)
定数(Const)
参照(Reference)
可変性(Mutable and immutable)
文字列(String)
スタティック変数
命名規則
参照外し(Dereference)
参照と可変性の関係
借用チェック(Borrow Checker)
02 コピートレイト(Copy Trait)
03 構造体・列挙型
構造体(Struct)
列挙型(Enum)
04 クロージャ(Closure)
Fnとfn
05 制御構文
if式(else、else if)
loop式
while式
for式
06 数列・スライス
数列(Range)
スライス(Slice)
07 ジェネリクス(Generics)
Option型
08 パターンマッチング(Pattern
match式
マッチガード(Match Guard)
パターンによる束縛
if let式
09 エラー処理(Error
panic!マクロ
Result型
unwrapメソッド
expectメソッド
エラー伝搬(Error Propagation)
コンビネータ
10 RAII
Derefトレイト
Dropトレイト
3つのメモリ領域(データ、スタック、ヒープ)
Box型
Rc型
11 ライフタイム(Lifetime)
staticライフタイム
12 トレイト(Trait)
トレイトとは
継承
derive属性
Fromトレイト
マーカートレイト(Marker)
Sizedトレイト
13 動的ディスパッチ
トレイトオブジェクト
dyn Trait型、impl Trait型
14 内部可変性(Interior
Cell型
RefCell型
Weak型
15 並列処理
スレッド
Send・Syncトレイト
Arc型
RwLock型
16 所有権
17 所有型と参照型
18 Cow型(Clone-on-write)
19 イテレータ(Iterator)
アダプタ
20 コレクション(Collection)
Vec型
String型
HashMap型
イテレータからコレクションに変換
イテレータを返すメソッド
21 Cargo
パッケージ、クレート
ターゲット
TOML形式
cargo initコマンド
cargo buildコマンド
cargo cleanコマンド
cargo runコマンド
cargo checkコマンド
cargo treeコマンド
cargo install[uninstall]コマンド
cargo searchコマンド
cargo publishコマンド
デバッグビルド、リリースビルド
外部パッケージ
ワークスペース
Cargo.toml
22 モジュール(Module)
モジュールの定義
パス(Path)
モジュールの利用(use)
モジュールツリー
モジュールの再公開
23 テスト(Unit
cargo testコマンド
assertion
should_panic属性
testsターゲット
24 ドキュメントコメント
ドキュメントコメントの書き方
cargo docコマンド
rustup docコマンド
25 フォーマッタ(rustfmt)
26 リンター(clippy)
27 マクロ(Macro)
宣言的マクロ
手続きマクロ
28 非同期処理
Future型
async/.await
tokioクレート
29 unsafe
30 Tips
Defaultトレイト
分解束縛
デバッグ時やテスト時のみ有効なコード
属性
演算子のオーバーロード
Preludeモジュール
DisplayトレイトとDebugトレイト
特殊なマクロ
Nightly版
cargo-audit、cargo-outdated
31 まとめ
本章で学んだこと
Chapter 4 アプリケーションの開発
01 単語推理ゲーム
サンプルコードについて
プロジェクトの準備
単語辞書の読み込み
ゲーム構造体
推理ロジックの実装
GUIの実装(icedクレート)
02 レイトレーシング
サンプルコードについて
プロジェクトの準備
画像の出力
ベクトル
クォータニオン
基本的な構造体の実装
カメラ
球体の追加
球体の法線
確認用のウィンドウ
モジュール化
複数の物体への対応
アンチエイリアシング
拡散反射
材質
鏡面反射
屈折
大量に表示してみよう
テクスチャ
画像テクスチャ
発光
四角形
コーネルボックス
光学のおはなし
モンテカルロレイトレーシング
03 まとめ
本章で学んだこと
Appendix
01 std::option::Option型
02 std::result::Result型
03 std::vec::Vec型
04 std::string::String型
05 std::collections::HashMap型
06 std::iter::Iteratorトレイト
アダプタ
07 std::f64モジュール
定数
数学関数(std::f64モジュール)
08 Rustをビルドしてみよう
書籍の購入や、商用利用・教育利用を検討されている法人のお客様はこちら
図書館での貸し出しに関するお問い合わせはよくあるお問い合わせをご確認ください。
利用許諾に関するお問い合わせ
本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。
お問い合わせ
内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。
正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。
追加情報はありません。
この商品の「よくある質問」はありません。
現在表示されている正誤表の対象書籍
書籍の種類:紙書籍
書籍の刷数:全刷
※重版をした際に、内容が修正されている場合があります。「刷数の確認方法(例)」の図を参考に、お手元の書籍の刷数をご確認ください。下の「書籍の刷数」の欄で刷数を選択すると、お持ちの書籍の刷数に合わせて、正誤情報を絞り込むことができます。
書籍によっては表記が異なる場合がございます
本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。
対象の書籍は正誤表がありません。
書籍の刷数で正誤情報を絞り込みたい場合は選択してください。
最終更新日:2025年07月10日
| ページ数 |
内容 |
書籍修正刷 |
電子書籍訂正 |
発生刷 |
登録日 |
00v
上から8行目(空行含む) |
| 誤 |
比較的優しい
|
| 正 |
比較的易しい |
備
考 |
※リフローEPUBの場合、巻頭の「本書の対象読者」の2つ目の段落が該当箇所になります。 |
|
未 |
未 |
1刷 |
2024.01.05 |
099
本文上から2行目(リスト除く) |
| 誤 |
スライスは参照の1つで、別のオブジェクト内の連続した要素を指し示すものです。
|
| 正 |
スライスは連続した要素を指し示すものです。 |
備
考 |
※リフローEPUBの場合、リスト3.85の下にある段落が該当箇所になります。 |
|
未 |
未 |
1刷 |
2024.01.05 |
103,104
P.103下から1行目、P.104上から1行目、 |
| 誤 |
このような仕組みを短絡評価またはショートサーキットといいます。
|
| 正 |
<記載を削除>
|
備
考 |
※リフローEPUBの場合、リスト3.93の下にある段落が該当箇所になります。
|
|
未 |
未 |
1刷 |
2024.01.05 |
114
上から6行目 |
| 誤 |
演算子
|
| 正 |
(ドット) |
備
考 |
※リフローEPUBの場合、リスト3.115の上にある段落が該当箇所になります。 |
|
未 |
未 |
1刷 |
2024.01.05 |
117
下から12行目(空行含む) |
| 誤 |
ヒープメモリはプログラム実行中に利用できるメモリで、スタックメモリよりも大きなサイズを利用できます。ただし、利用するにはオーバーヘッドがかかります。また、スタックメモリのサイズはヒープメモリに比べてかなり限られているので、ヒープメモリを積極的に利用することになります。
|
| 正 |
ここもスタックメモリと同様にプログラム実行中に利用できるメモリですが、スタックメモリとは管理する方法が異なり、利用するにはオーバーヘッドがかかります。また、スタックメモリに格納する場合はそのサイズがわかっている必要があります。コンパイル時にサイズが不明だったり、動的にサイズが変わる場合はヒープメモリを利用することになります。
|
備
考 |
※リフローEPUBの場合、リスト3.118の下、「3つのメモリ領域(データ、スタック、ヒープ)」の最初の段落が該当箇所になります。 |
|
未 |
未 |
1刷 |
2024.01.05 |
383
リスト4.196の上から24行目 |
| 誤 |
let light_area = (343.0 - 213.0) * (332.0 - 217.0); |
| 正 |
let light_area = (343.0 - 213.0) * (332.0 - 227.0); |
|
未 |
未 |
1刷 |
2025.07.10 |