Skip to content

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

概要

FizzBuzz 問題を題材に、テスト駆動開発(TDD)の基本サイクルから、開発環境の整備、プロトコルとマルチメソッドによるポリモーフィズム、関数型プログラミングの活用まで、Clojure の特徴を活かしながら段階的に学びます。

対象読者

  • Clojure の基本文法を理解しているプログラミング学習者
  • TDD を体験してみたい開発者
  • LISP 系言語の関数型プログラミングと不変データ構造に興味がある方

前提条件

  • Clojure 1.11 以降がインストールされていること
  • Leiningen が利用可能であること(Nix 環境推奨: nix develop .#clojure

Clojure の特徴

特徴 説明
S 式(S-expression) LISP 系のシンプルで統一された構文
不変データ構造 永続データ構造による安全な並行処理
プロトコル defprotocol による型ベースのポリモーフィズム
マルチメソッド defmulti/defmethod による値ベースのディスパッチ
高階関数 map/filter/reduce を中心としたコレクション処理
スレッディングマクロ ->/->> によるパイプライン処理
JVM 上で動作 Java ライブラリとの相互運用が可能

開発ツール

ツール 用途
clojure.test 標準テスティングフレームワーク
Leiningen プロジェクト管理・ビルドツール
Eastwood 静的コード解析(Linter)
Kibit イディオム検査
cljfmt コードフォーマッター
Makefile タスクランナー

目次

第 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 章: 名前空間とモジュール設計

第 4 部: 関数型プログラミング

  1. 第 10 章: 高階関数と関数合成
  2. 第 11 章: 永続データ構造とパイプライン処理
  3. 第 12 章: エラーハンドリングと Spec