Skip to content

テスト駆動開発から始める Rust 入門

概要

FizzBuzz 問題を題材に、テスト駆動開発(TDD)の基本サイクルから、開発環境の整備、オブジェクト指向設計、関数型プログラミングの活用まで、Rust の特徴を活かしながら段階的に学びます。

対象読者

  • Rust の基本文法を理解しているプログラミング学習者
  • TDD を体験してみたい開発者
  • 所有権システムやトレイトベースの設計に興味がある方

前提条件

  • Rust 1.70 以降がインストールされていること
  • Clippy、rustfmt が利用可能であること(Nix 環境推奨: nix develop .#rust

Rust の特徴

特徴 説明
所有権と借用 メモリ安全性をコンパイル時に保証、GC 不要
静的型付け + 型推論 強力な型システムと let による型推論
トレイト インターフェースの明示的実装、ポリモーフィズムの基盤
enum + パターンマッチ 代数的データ型と網羅的なパターンマッチング
Result / Option null や例外に頼らない安全なエラーハンドリング
ゼロコスト抽象化 高レベルな抽象化がランタイムコストを伴わない

開発ツール

ツール 用途
cargo test 標準テストランナー
Cargo パッケージ管理・ビルドシステム
Clippy Linter(コード品質チェック)
rustfmt 標準フォーマッター
just タスクランナー

目次

第 1 部: TDD の基本サイクル

  1. 第 1 章: TODO リストと最初のテスト
  2. 第 2 章: 仮実装と三角測量
  3. 第 3 章: 明白な実装とリファクタリング

第 2 部: 開発環境と自動化

  1. 第 4 章: バージョン管理と Conventional Commits
  2. 第 5 章: パッケージ管理と静的解析
  3. 第 6 章: タスクランナーと CI/CD

第 3 部: オブジェクト指向設計

  1. 第 7 章: カプセル化とポリモーフィズム
  2. 第 8 章: デザインパターンの適用
  3. 第 9 章: SOLID 原則とモジュール設計

第 4 部: 関数型プログラミングへの展開

  1. 第 10 章: 高階関数と関数合成
  2. 第 11 章: 不変データとパイプライン処理
  3. 第 12 章: エラーハンドリングと型安全性

実装コード

本記事のすべてのコード例は apps/rust/ に実装されています。

# 開発環境に入る
nix develop .#rust

# テスト実行
cd apps/rust
cargo test

参考文献

  • Kent Beck 著『テスト駆動開発』
  • Martin Fowler 著『リファクタリング: 既存のコードを安全に改善する』
  • Robert C. Martin 著『Clean Code: アジャイルソフトウェア達人の技』
  • Steve Klabnik, Carol Nichols 著『The Rust Programming Language』