Webアプリ開発で学ぶ Rust言語入門 (単行本)
Rustは、CやC++に代わる言語として開発され、Web開発にも幅広く利用されているユニークな言語です。本書は、Web開発経験がある方を対象に、Rustの基礎文法から、Webアプリケーション開発までチュートリアル形式で体験学習できる入門書です。解説するサンプルは、Web開発者ならよく知っているお馴染みの教材なので、より理解が深まります。サンプルコードはGitHubからダウンロードできます。
第1章 RustとWeb開発
1.1 Rustでの開発の準備
本書での筆者の開発環境
ツールのインストール
Hello, world
その他のツール
エディタの準備
第2章 Rust基礎
2.1 変数とデータ型
変数、束縛、代入
定数
データ型
2.2 関数の実装
関数
enum
2つのエラー
コメント
マクロ
2.3 制御構造
if式
パターンマッチ
if let
loop式
while式
for
2.4 所有権による安全性
所有権
借用
値のClone
ライフタイム
所有権とメモリ
2.5 データ構造
構造体
メソッド、関連関数
トレイト
トレイト境界
2.6 async/await
非同期処理とは
2.7 クレートとモジュール
2.8 テスト
単体テスト
ドキュメントテスト
結合テスト
2.9 よく使うライブラリ
Errをより扱いやすくするanyhow/thiserror
JSONを扱うSerde
第3章 axumを使ってhttpリクエストを処理する
3.1 axumとは
TodoアプリとRestful API
axumとは
[参考]insomniaのすすめ
3.2 環境構築
Hello, world
logging
POSTリクエストとJSONレスポンス
3.3 テスト
テスト時のaxumの処理の流れ
テスト対象の分離
structを拡張
root関数のテスト
JSON bodyをテストする
3.4 Todo情報を保存する
Todoアプリで必要になるAPIの機能
CRUDとhttpメソッド
TodoRepositoryを仮実装
ファイル分割
Todoをメモリに保存する
3.5 httpリクエスト
ハンドラー
3.6 バリデーションの追加
validator
CreateTodoのvalidate
バリデーションエラーなリクエストを送ってみる
第4章 sqlxを使ってCRUDを実装する
4.1 データベース基礎
データベース選定
Dockerインストール
DockerでPostgreSQL環境構築
データベース作成とデータの格納
データベースでCRUD
Makefile
4.2 sqlxとは
RustのSQLライブラリ
sqlxとは
sqlxでマイグレーション
4.3 axumとsqlx
sqlxの利用準備
TodoRepositoryの非同期対応
TodoRepositoryForDbの作成
4.4 todoのCRUD
sqlx
Todoの各メソッドの実装
挙動確認
4.5 sqlxのテスト
テスト実装
featureでDBなしのテストケースのみを実行
第5章 Todoアプリの体裁を整える
5.1 フロントエンド開発
フロントエンド開発の基礎
技術選定
要件整理
フロントエンド開発が不安な人は
5.2 React環境構築
Viteを使った開発環境構築
React基礎
ReactDOM.render
React Componentの更新とhooks
5.3 TodoアプリのUI実装
reset.cssの導入
React UI Tools,MUI
Todo アプリの体裁の実装
Todoの表示と切り替え
5.4 外部APIとの通信(1)
TodoをAPI経由で保存する
APIから登録済みのTodoを取得する
5.5 外部APIとの通信(2)
Todoの更新
まとめ
第6章 Todoにラベルをつける
6.1 ラベルのCRUD
repository/handlerの分割
DB設計
LabelRepositoryの作成
handlerの追加
6.2 TodoRepositoryのラベル対応
Todoにlabelsを追加
TodoWithLabelFromRowの畳み込み
TodoRepositoryForDbのCRUD修正
6.3 ラベル機能を画面に追加する
サイドナビゲーション
Formでラベルを選択可能にする
Todo要素にラベル表示
6.4 さらなる機能拡張
1.1 Rustでの開発の準備
本書での筆者の開発環境
ツールのインストール
Hello, world
その他のツール
エディタの準備
第2章 Rust基礎
2.1 変数とデータ型
変数、束縛、代入
定数
データ型
2.2 関数の実装
関数
enum
2つのエラー
コメント
マクロ
2.3 制御構造
if式
パターンマッチ
if let
loop式
while式
for
2.4 所有権による安全性
所有権
借用
値のClone
ライフタイム
所有権とメモリ
2.5 データ構造
構造体
メソッド、関連関数
トレイト
トレイト境界
2.6 async/await
非同期処理とは
2.7 クレートとモジュール
2.8 テスト
単体テスト
ドキュメントテスト
結合テスト
2.9 よく使うライブラリ
Errをより扱いやすくするanyhow/thiserror
JSONを扱うSerde
第3章 axumを使ってhttpリクエストを処理する
3.1 axumとは
TodoアプリとRestful API
axumとは
[参考]insomniaのすすめ
3.2 環境構築
Hello, world
logging
POSTリクエストとJSONレスポンス
3.3 テスト
テスト時のaxumの処理の流れ
テスト対象の分離
structを拡張
root関数のテスト
JSON bodyをテストする
3.4 Todo情報を保存する
Todoアプリで必要になるAPIの機能
CRUDとhttpメソッド
TodoRepositoryを仮実装
ファイル分割
Todoをメモリに保存する
3.5 httpリクエスト
ハンドラー
3.6 バリデーションの追加
validator
CreateTodoのvalidate
バリデーションエラーなリクエストを送ってみる
第4章 sqlxを使ってCRUDを実装する
4.1 データベース基礎
データベース選定
Dockerインストール
DockerでPostgreSQL環境構築
データベース作成とデータの格納
データベースでCRUD
Makefile
4.2 sqlxとは
RustのSQLライブラリ
sqlxとは
sqlxでマイグレーション
4.3 axumとsqlx
sqlxの利用準備
TodoRepositoryの非同期対応
TodoRepositoryForDbの作成
4.4 todoのCRUD
sqlx
Todoの各メソッドの実装
挙動確認
4.5 sqlxのテスト
テスト実装
featureでDBなしのテストケースのみを実行
第5章 Todoアプリの体裁を整える
5.1 フロントエンド開発
フロントエンド開発の基礎
技術選定
要件整理
フロントエンド開発が不安な人は
5.2 React環境構築
Viteを使った開発環境構築
React基礎
ReactDOM.render
React Componentの更新とhooks
5.3 TodoアプリのUI実装
reset.cssの導入
React UI Tools,MUI
Todo アプリの体裁の実装
Todoの表示と切り替え
5.4 外部APIとの通信(1)
TodoをAPI経由で保存する
APIから登録済みのTodoを取得する
5.5 外部APIとの通信(2)
Todoの更新
まとめ
第6章 Todoにラベルをつける
6.1 ラベルのCRUD
repository/handlerの分割
DB設計
LabelRepositoryの作成
handlerの追加
6.2 TodoRepositoryのラベル対応
Todoにlabelsを追加
TodoWithLabelFromRowの畳み込み
TodoRepositoryForDbのCRUD修正
6.3 ラベル機能を画面に追加する
サイドナビゲーション
Formでラベルを選択可能にする
Todo要素にラベル表示
6.4 さらなる機能拡張