版元ドットコム

探せる、使える、本の情報

文芸 新書 社会一般 資格・試験 ビジネス スポーツ・健康 趣味・実用 ゲーム 芸能・タレント テレビ・映画化 芸術 哲学・宗教 歴史・地理 社会科学 教育 自然科学 医学 工業・工学 コンピュータ 語学・辞事典 学参 児童図書 ヤングアダルト 全集 文庫 コミック文庫 コミックス(欠番扱) コミックス(雑誌扱) コミックス(書籍) コミックス(廉価版) ムック 雑誌 増刊 別冊 ラノベ
プログラミング言語Rust入門~実行スピードとメモリの安全性を同時に満たすシステム開発言語~ 増田 智明(著/文) - 日経BP
..

プログラミング言語Rust入門~実行スピードとメモリの安全性を同時に満たすシステム開発言語~

発行:日経BP
B5変型判
360ページ
定価 3,600円+税
ISBN
9784822296858
Cコード
C3004
専門 単行本 情報科学
出版社在庫情報
不明
書店発売日
登録日
2020年3月24日
最終更新日
2020年3月25日
このエントリーをはてなブックマークに追加

紹介

 Rustは、Firefoxの開発元であるMozillaが支援するオープンソースのプログラミング言語です。2017年末に公開されたFirefox のレンダリングエンジンの記述に使用され、その実行速度を2倍にしたことで有名になりました。オブジェクト指向と関数型の言語特徴を持ち、JavaやC#のようにVM(Virtual Machine)上の動作ではないため、既存のC言語のライブラリを直接扱える利点を持っています。またRustは、CやC++で発生しうる不正メモリアクセスに関する問題を,ある程度回避できるように設計されています。
 Rustはまだ新しい言語なので、本書の前半は実務に必要な詳しい文法を解説しています。文法や具体例などは、簡単なRustのコードを動かして確認しながら説明を進めています。後半は、具体的な利用法(Web API呼び出し、データベースアクセスなど)を中心に説明し、すでに他の言語(C++やC#、Javaなど)で同様にプログラミングをしたことのある読者を対象としています。

目次

はじめに

第1章 Rustの特徴
 1.1 なぜRustなのか
 1.2 高いパフォーマンス
 1.3 型安全性
 1.4 ビルドシステム
 1.5 モダンな文法
第2章 環境構築
 2.1 Rustのインストール
  2.1.1 Linux とmacOSへのインストール
  2.1.2 Windowsへのインストール
  2.1.3 Windows for Linuxへのインストール
  2.1.4 Visual Studio Codeの利用
  2.1.5 rustupの利用
 2.2 Hello Worldプログラム
  2.2.1 cargo new
  2.2.2 cargo の構造
  2.2.3 cargo build
  2.2.4 cargo run
  2.2.5 rustc の利用
第3章 基本的な型、変数の扱い、束縛
 3.1 型の宣言
  3.1.1 数値の型
  3.1.2 数値の型
  3.1.3 リテラル
  3.1.4 浮動小数点数
  3.1.5 論理値型
  3.1.6 文字型
  3.1.7 文字列
 3.2 複合型
  3.2.1 タプル型
  3.2.2 配列型
 3.3 参照と借用
  3.3.1 所有権の移動
  3.3.2 借用
 3.4 束縛
  3.4.1 束縛と可変変数
  3.4.2 シャドーイング
 3.5 スコープ
  3.5.1 ブロック単位
  3.5.2 関数単位
  3.5.3 構造体単位
  3.5.4 クロージャ単位
第4章 文字列
 4.1 文字
  4.1.1 文字を扱う
  4.1.2 特殊文字
  4.1.3 u8型へのキャスト
 4.2 文字列
  4.2.1 文字列の扱い
  4.2.2 アルファベットの操作
  4.2.3 日本語の扱い
  4.2.4 日本語を正しく扱う
 4.3 文字列スライス
  4.3.1 先頭を切り出すスライス
  4.3.2 途中の文字列を切り出すスライス
  4.3.3 最後までを切り出すスライス
  4.3.4 全体を切り出すスライス
第5章 文と式と関数
 5.1 文と式
  5.1.1 文
  5.1.2 式
 5.2 演算子
  5.2.1 四則演算子
  5.2.2 代入演算子
  5.2.3 ビット演算子
  5.2.4 シフト演算子
  5.2.5 論理演算子
  5.2.6 単項演算子
 5.3 関数
  5.3.1 引数のない関数
  5.3.2 引数のある関数
  5.3.3 戻り値のある関数
  5.3.4 文字列を受け取る関数
  5.3.5 文字列を戻す関数
  5.3.6 ベクターを受け取る関数
  5.3.7 ベクターを戻す関数
  5.3.8 ベクターの中身を変更する関数
第6章 制御文とパターンマッチ
 6.1 分岐
  6.1.1 条件にマッチしたときに実行
  6.1.2 条件にマッチしないときに実行
  6.1.3 複数のif文を重ねる
  6.1.4 if文に論理和/ 積を使う
  6.1.5 関数の戻り値を直接参照
  6.1.6 if文で値を返す
 6.2 繰り返し
  6.2.1 for文で全ての要素に繰り返す
  6.2.2 for文でイテレーターを利用する
  6.2.3 for文をインデックス付きで繰り返す
  6.2.4 for文で繰り返し数を指定する
  6.2.5 繰り返しを途中で止める
  6.2.6 繰り返しの途中で先頭に戻る
  6.2.7 while文で継続条件を指定する
  6.2.8 loop文で無限に繰り返す
 6.3 パターンマッチ
  6.3.1 enumで列挙型を定義する
  6.3.2 列挙型をmatchで使う
  6.3.3 オプション型をmatchで扱う
  6.3.4 matchを「if let」で置き換える
  6.3.5 enum以外でmatchを使う
第7章 配列とベクター
 7.1 配列
  7.1.1 固定配列を定義
  7.1.2 文字列の配列を定義
  7.1.3 配列の型を指定する
  7.1.4 配列を初期化、変更する
  7.1.5 配列を数値型に強制キャストする
 7.2 ベクター
  7.2.1 ベクターを定義する
  7.2.2 ベクターの要素を増減させる
  7.2.3 ベクターの要素を参照する
  7.2.4 ベクターの要素を削除する
  7.2.5 指定位置に要素を追加する
  7.2.6 複数のベクターを連結する
  7.2.7 連結文字を指定してベクターを連結する
  7.2.8 分割文字を指定しベクターを作成する
  7.2.9  ベクターを辞書順にソートする
 7.3 イテレーター
  7.3.1 for文でイテレーターを使う
  7.3.2 iterメソッドとnextメソッドを使う
  7.3.3 loop文とwhile文でイテレーターを扱う
  7.3.4 イテレーターとmapを活用する
第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.1.8 構造体のサイズを調べる
 8.2 メソッド
  8.2.1 引数のないメソッドを定義
  8.2.2 引数のあるメソッドを定義
  8.2.3 戻り値のあるメソッドを定義
  8.2.4 フィールドを変更するメソッド
  8.2.5 newメソッドを定義する
 8.3 Result型
  8.3.1 Result型の定義
  8.3.2 str::parseの戻り値を探る
  8.3.3 Result型を返す関数を作る
  8.3.4 Result型のエイリアスを作る
  8.3.5 コンピネーターでmatch文を減らす
  8.3.6 エラー委譲でmatch 文を減らす
  8.3.7 独自のResult 型を返す
  8.3.8 exceptメソッドを使う
  8.3.9 main関数でResult 型を返す
第9章 ジェネリクスとトレイト
 9.1 ジェネリクス
  9.1.1  ベクターはジェネリクスである
  9.1.2 ジェネリックを使わないで関数を作る
  9.1.3 ジェネリックを使って関数を作る
 9.2 トレイト
  9.2.1 構造体の動作をルール化する
  9.2.2 メソッド名を統一する
  9.2.3 デフォルトメソッドを追加する
  9.2.4 既存の構造体を拡張する
第10章 所有権
 10.1 所有権の概念
  10.1.1 所有権という概念
  10.1.2 構造体のインスタンスを借用する
  10.1.3 構造体のインスタンスを移動する
  10.1.4 変数を借用する
  10.1.5 変数を移動する
  10.1.6 可変変数を関数に参照で渡す
  10.1.7 可変変数を扱うときの注意
  10.1.8 数値とタプルの場合
  10.1.9 ベクターと文字列の場合
  10.1.10 複数の変数で所有権を奪い合う例
 10.2 所有権の利点
  10.2.1 有効範囲を明確にする
  10.2.2 関数でインスタンスを返す
  10.2.3 可変変数のアクセス制限
第11章 パッケージの作成
 11.1 公開ライブラリを利用する
  11.1.1 crates.io
  11.1.2 randクレートのドキュメント
  11.1.3 randクレートを利用する
 11.2 公開バイナリを利用する
  11.2.1 バイナリのインストール
  11.2.2 バイナリの実行
 11.3 パッケージを作成する
  11.3.1 ライブラリのプロジェクトを作成
  11.3.2 ライブラリを動作させる
  11.3.3 ライブラリの出力場所
第12章 ファイル入出力
 12.1 ファイル読み込み
  12.1.1 スコープの指定
  12.1.2 ファイルを全て読み込む
  12.1.3 ファイルの読み込みエラーに備える
  12.1.4 ファイルをオープンして読み込む
  12.1.5 ファイルアクセス時のResultをチェックする
  12.1.6 バイト単位で読み込む
  12.1.7 行単位で読み込む
  12.1.8 main関数でファイルを読み込む
 12.2 ファイル書き出し
  12.2.1 write!マクロで書き出す
  12.2.2 writeメソッドで書き出す
  12.2.3 バイト配列で書き出す
  12.2.4 バイト単位で書き出す
  12.2.5 main 関数でファイルに書き出す
 12.3 標準入出力の利用
  12.3.1 標準入力と標準出力
  12.3.2 標準入出力の準備
  12.3.3 ファイルから読み込み
  12.3.4 標準入力から読み込み
  12.3.5 標準出力へ書き出し
第13章 マクロ
 13.1 println!マクロ
  13.1.1 関数とマクロの区別
  13.1.2 println!マクロのプレースホルダー
  13.1.3 複数のプレースホルダー
  13.1.4 整数の進数表現
  13.1.5 整数の0埋め
  13.1.6 実数の指数表現と有効桁数
  13.1.7 数値や文字列の配置指定
 13.2 dbg!マクロ
  13.2.1 配列の内容を表示する
  13.2.2 構造体にDebugトレイトを適用する
  13.2.3 dbg!マクロのフォーマッタを実装する
 13.3 panic!マクロ
  13.3.1 main 関数でpanic!マクロを使う
  13.3.2 panic!マクロの利用例
  13.3.3 panic!マクロのトレースの利用
第14章 Web API呼び出し
 14.1 HTTPプロトコル
  14.1.1 reqwestクレート利用の準備
  14.1.2 URLアドレスの呼び出し
  14.1.3 URLクエリ文字列で呼び出し
  14.1.4 目的のページが見つからない場合
  14.1.5 指定したWebサーバーが見つからない場合
 14.2 GETとPOSTメソッド
  14.2.1 HTTPプロトコルのヘッダー部
  14.2.2 GETメソッドの詳細
  14.2.3 POSTメソッドの詳細
 14.3 JSON形式
  14.3.1 serde_jsonクレート利用の準備
  14.3.2 JSON型式データをテキストとして受信する
  14.3.3 JSON型式データから値を取り出す
第15章 データベースアクセス
 15.1 SQLiteの読み込み
  15.1.1 データベースの使い方
  15.1.2 rusqliteクレートの準備
  15.1.3 インメモリデータベースの利用
  15.1.4 複数のSQL文を実行する
  15.1.5 設定する値をパラメーターで渡す
  15.1.6 SELECT文でデータを取得する
  15.1.7 SELECT文でデータをquery_mapで取得する
  15.1.8 SELECT文で検索条件を指定する
 15.2 データの保存
  15.2.1 データベースファイルを作成する
  15.2.2 テーブルを作成する
  15.2.3 データを挿入する
  15.2.4 データを検索する
 15.3 複雑なSQL
  15.3.1 サンプルとなるテーブル例
  15.3.2 chronoクレートの準備
  15.3.3 テーブルを結合して表示する
  15.3.4 データをソートして表示する
  15.3.5 データを集計して表示する
 15.4 ORMの利用
  15.4.1 dieselクレートの準備
  15.4.2 マッピングする構造体の定義
  15.4.3 ORMでデータを取得する
第16章 C言語ライブラリの呼び出し
 16.1 既存のC言語ライブラリとの連携
  16.1.1 C言語ライブラリとの相互運用
  16.1.2 C言語ライブラリの準備
  16.1.3 C言語のソースコード
  16.1.4 C言語のコードをビルド
  16.1.5 C言語ライブラリの呼び出し
  16.1.6 ビルドして実行
 16.2 C 言語からRustの関数を呼び出す
  16.2.1 Rustライブラリの準備
  16.2.2 Rustライブラリのコード
  16.2.3 Rustを呼び出すC 言語のコード
  16.2.4 ビルドして実行
 16.3 既存ライブラリで文字列の受け渡し
  16.3.1 文字列を渡す関数の宣言
  16.3.2 NULL終端の文字列
  16.3.3 ビルドして実行
第17章 クロージャ
 17.1 クロージャの利用
  17.1.1 イテレーター処理
  17.1.2 mapとクロージャ
  17.1.3 filterとクロージャ
  17.1.4 findとクロージャ
  17.1.5 maxとmin
  17.1.6 2 つの配列を合わせる
 17.2 クロージャの定義
  17.2.1 クロージャの引数
  17.2.2 クロージャの戻り値
  17.2.3 クロージャとmap
 17.3 クロージャの受け渡し
  17.3.1 数値とクロージャを受け取る関数
  17.3.2 ベクターとクロージャを受け取る関数
第18章 並列化
 18.1 スレッドの活用
  18.1.1 プロセスとスレッドの違い
  18.1.2 単純なスレッドの実行
  18.1.3 スレッドの終了を待つ
  18.1.4 複数のスレッドの終了を待つ
  18.1.5 スレッド処理のクロージャを別定義する
  18.1.6 スレッド処理を関数定義する
 18.2 async/awaitの活用
  18.2.1 スレッドを順番に実行する
  18.2.2 async/awaitで順番に実行する
  18.2.3 tokio クレートを利用する
 18.3 スレッドと所有権
  18.3.1 スレッドプールの利用
  18.3.2 所有権の移動
  18.3.3 moveの利用
  18.3.4 moveした変数を変更する
第19章 テストコード
 19.1 単体テスト
  19.1.1 テストプロジェクトを作る
  19.1.2 関数をテストする
  19.1.3 テストメソッドを増やす
  19.1.4 関数とテストメソッドを増やす
 19.2 テストコードの記述
  19.2.1 値を比較する
  19.2.2 値が異なる
  19.2.3 構造体を比較する
  19.2.4 真偽をチェックする
 19.3 テストコードの実行
  19.3.1 変数チェックの埋め込み
  19.3.2 テストコードの埋め込み
付録A Rustのメモリ配置を調べる
 A.1 変数のポインタを扱う
 A.2 変数の移動(move)をポインタで確認する
 A.3 変数の借用(borrow)をポインタで確認する
 A.4 数値の変数はコピーされる
付録B Rustの型を調べる
 B.1 コンパイルエラーを利用する
 B.2 std::any::type_name を利用する
 B.3 いろいろな型を調べる

索引
b_

上記内容は本書刊行時のものです。