Skip to content

イテレーション 9 計画

概要

項目 内容
イテレーション 9
期間 Week 17-18(2 週間)
ゴール Clojure の全 12 章の記事執筆と実装を完了し、Phase 3 の最初のイテレーションを成功させる
目標 SP 13

ゴール

イテレーション終了時の達成状態

  1. 記事: Clojure の 12 章すべてが docs/article/clojure/ に執筆完了
  2. 実装: apps/clojure/ に Clojure の TDD 実装が動作する状態
  3. 品質: テスト全パス、cljfmt 違反ゼロ
  4. Phase 3 開始: IT9 が完了し、Phase 3 のテンプレートが確立

成功基準

  • docs/article/clojure/index.md と 12 章の記事ファイルが作成済み
  • apps/clojure/ の lein test がすべてパス(10 テスト、38 アサーション)
  • mkdocs.yml に Clojure セクションが追加され、プレビュー確認済み
  • Eastwood 警告ゼロ
  • 記事内コード例と apps/clojure/ の実コードが同期

ベロシティトレンド分析(8 イテレーション実績)

実績データ

イテレーション 言語 計画 SP 実績 SP 達成率
IT1 Java 10 10 100%
IT2 Python 10 10 100%
IT3 Node(JS/TS) 13 13 100%
IT4 Ruby 13 13 100%
IT5 Go 10 10 100%
IT6 PHP 10 10 100%
IT7 Rust 10 10 100%
IT8 C#/F# 13 13 100%
平均 11.1 11.1 100%

IT9 見通し

  • Clojure は 4 エピソード言語(Wiki エピソード 1-4)、第 4 部はネイティブの関数型プログラミングで構成
  • Wiki に 3,436 行の参照資料が揃っている
  • Nix 環境で Clojure + Leiningen + Babashka + clojure-lsp が利用可能(nix develop .#clojure
  • LISP 系言語のため OOP 部分(第 3 部)はプロトコルとマルチメソッドで代替

ユーザーストーリー

対象ストーリー

ID ユーザーストーリー SP 優先度
US-009 Clojure の TDD 入門記事の執筆と実装 13
合計 13

ストーリー詳細

US-009: Clojure の TDD 入門記事の執筆と実装

ストーリー:

プログラミング学習者として、Clojure で TDD を体験する記事を読みたい。なぜなら、LISP 系言語の関数型プログラミングと不変データ構造を TDD で学べるからだ。

受入条件:

  1. 12 章構成の記事が docs/article/clojure/ に存在する
  2. FizzBuzz 問題を題材に TDD サイクル(Red-Green-Refactor)が体験できる
  3. 開発環境の構築手順(Clojure、Leiningen、cljfmt)が記載されている
  4. Clojure のプロトコルとマルチメソッドが段階的に解説されている
  5. Clojure の関数型プログラミング(パイプライン、永続データ構造、高階関数)が段階的に解説されている
  6. 記事内のコード例と apps/clojure/ の実装が一致している

タスク

0. 環境構築(1 SP)

# タスク 見積もり 担当 状態
0.1 apps/clojure/ に Leiningen プロジェクトを作成 0.5h AI [x]
0.2 .gitignore 先行設定(target/, .lein-*, .nrepl-port 除外) 0.5h AI [x]
0.3 テスト構成の確認(lein test) 0.5h AI [x]
0.4 Makefile 作成(check タスク統合) 0.5h AI [x]
0.5 CI ワークフロー(.github/workflows/clojure-ci.yml)の作成 0.5h AI [x]
0.6 docs/article/clojure/index.md を作成 0.5h AI [x]

小計: 3h(理想時間)


1. 第 1 部: TDD の基本サイクル(3 SP)

# タスク 見積もり 担当 状態
1.1 章 1: TODO リストと最初のテスト - 執筆 2h AI [x]
1.2 章 1: TODO リストと最初のテスト - 実装 1h AI [x]
1.3 章 2: 仮実装と三角測量 - 執筆 2h AI [x]
1.4 章 2: 仮実装と三角測量 - 実装 1h AI [x]
1.5 章 3: 明白な実装とリファクタリング - 執筆 2h AI [x]
1.6 章 3: 明白な実装とリファクタリング - 実装 1h AI [x]

参照: tmp/k2works-wiki/WIP/テスト駆動開発から始めるXX入門/テスト駆動開発から始めるClojure入門1.md

2. 第 2 部: 開発環境と自動化(3 SP)

# タスク 見積もり 担当 状態
2.1 章 4: バージョン管理と Conventional Commits - 執筆 2h AI [x]
2.2 章 5: パッケージ管理と静的解析(Leiningen、cljfmt)- 執筆 2h AI [x]
2.3 章 6: タスクランナーと CI/CD(Makefile、GitHub Actions)- 執筆 2h AI [x]

参照: tmp/k2works-wiki/WIP/テスト駆動開発から始めるXX入門/テスト駆動開発から始めるClojure入門2.md

3. 第 3 部: オブジェクト指向設計(3 SP)

Clojure は LISP 系関数型言語のため、OOP 概念をプロトコル・マルチメソッド・レコードで表現する。

# タスク 見積もり 担当 状態
3.1 章 7: プロトコルとレコードによるポリモーフィズム - 執筆・実装 3h AI [x]
3.2 章 8: マルチメソッドとディスパッチ - 執筆・実装 3h AI [x]
3.3 章 9: 名前空間とモジュール設計 - 執筆・実装 3h AI [x]

参照: tmp/k2works-wiki/WIP/テスト駆動開発から始めるXX入門/テスト駆動開発から始めるClojure入門3.md

4. 第 4 部: 関数型プログラミング(3 SP)

# タスク 見積もり 担当 状態
4.1 章 10: 高階関数と関数合成(スレッディングマクロ、部分適用)- 執筆・実装 2h AI [x]
4.2 章 11: 永続データ構造とコレクション処理(map/filter/reduce、シーケンス抽象)- 執筆・実装 2h AI [x]
4.3 章 12: エラーハンドリングと型安全性(ex-info、条件付き再起動、spec)- 執筆・実装 2h AI [x]
4.4 記事と実装の同期確認 1h AI [x]
4.5 mkdocs.yml 更新とプレビュー確認 0.5h AI [x]

参照: tmp/k2works-wiki/WIP/テスト駆動開発から始めるXX入門/テスト駆動開発から始めるClojure入門4.md


タスク合計

カテゴリ SP 状態
環境構築 1 [x]
第 1 部: TDD の基本サイクル 3 [x]
第 2 部: 開発環境と自動化 3 [x]
第 3 部: オブジェクト指向設計 3 [x]
第 4 部: 関数型プログラミング 3 [x]
合計 13

設計メモ

ディレクトリ構成

apps/clojure/
├── project.clj                              (Leiningen プロジェクトファイル)
├── Makefile
├── .gitignore
├── src/
│   └── fizzbuzz/
│       ├── core.clj                         (公開 API)
│       ├── domain/
│       │   ├── model.clj                    (値オブジェクト・コレクション)
│       │   └── type.clj                     (FizzBuzz タイプ — プロトコル・マルチメソッド)
│       └── application/
│           └── command.clj                  (コマンド関数)
└── test/
    └── fizzbuzz/
        └── core_test.clj                    (テスト)

docs/article/
└── clojure/
    ├── index.md                             (Clojure 記事トップ)
    └── chapter01.md  ...  chapter12.md      (12 章)

Clojure 固有の特徴(12 章構成)

機能 内容
S 式・リテラル 1-3 LISP 構文、ベクタ、マップ
def / defn 1-3 不変バインディング、関数定義
clojure.test 1-3 deftest, is, testing マクロ
スレッディングマクロ(->、->>) 3, 10 パイプライン処理
プロトコル(defprotocol) 7, 9 型クラスに類似したポリモーフィズム
レコード(defrecord) 7, 9 構造化データ + プロトコル実装
マルチメソッド(defmulti / defmethod) 8 値ベースのディスパッチ
名前空間(ns) 5, 9 モジュール分割と依存管理
高階関数(map / filter / reduce) 10-11 コレクション処理
部分適用(partial) 10 関数の部分適用
永続データ構造 11 構造共有による不変コレクション
clojure.spec 12 データバリデーションと型安全性
ex-info / ex-data 12 構造化エラーハンドリング

Nix 環境

nix develop .#clojure
パッケージ 用途
clojure Clojure ランタイム(JVM 上)
leiningen プロジェクト管理・ビルドツール
babashka スクリプティング用 Clojure
clojure-lsp Language Server Protocol 実装

IT1-IT8 からの学び(適用事項)

学び IT9 での適用
.gitignore を最初に作成する target/, .lein-*, .nrepl-port を最初に除外設定
Nix 環境を必ず使用する nix develop .#clojure で全操作を実行
部完了時に進捗更新 部完了ごとに進捗ドキュメントを更新する
Codex が利用不可の場合は直接実装に早期切り替え サンドボックス制限が発生した場合の代替フローを事前に定義
テンプレート再利用が効果的 IT1-IT8 の記事テンプレートを LISP/関数型言語向けに適用する
GitHub Issue の同期を忘れない 完了時に Issue #9 をクローズする
LISP 方言固有の概念に注力 S 式、マクロ、永続データ構造の記事説明に注力
Phase 3 テンプレート確立 JVM 言語向けのテンプレートを確立し IT10 以降に活用

リスクと対策

リスク 影響度 対策
LISP 構文に慣れていない読者への説明が複雑 S 式の段階的な導入と図示で理解を補助
OOP 概念のプロトコル/マルチメソッドへの対応づけ 他言語との比較表を記事内に設ける
Leiningen プロジェクト構成の JVM 依存問題 Nix 環境で JVM を含む全依存を管理
cljfmt のフォーマットルール設定 デフォルト設定を使用し、必要に応じてカスタマイズ
target/ の誤コミット 最初に .gitignore 設定(IT7 の学び)

完了条件

Definition of Done

  • 12 章の記事ファイルが docs/article/clojure/ に存在
  • apps/clojure/ の全テストがパス(10 テスト、38 アサーション)
  • Eastwood 警告ゼロ
  • mkdocs.yml に Clojure セクションが追加済み
  • ローカルプレビューで表示確認済み
  • 記事内コード例と apps/clojure/ の実コードが同期
  • GitHub Issue #9 がクローズ済み

更新履歴

日付 更新内容 更新者
2026-03-02 初版作成 AI
2026-03-03 IT9 全タスク完了(環境構築・記事執筆・実装・品質チェック) AI

関連ドキュメント