# タスク設計書: 配布向けパッケージ整備（Release Readiness）

最終更新: 2026-02-13
- ステータス: 完了(done)
- 作成者: Codex
- レビュー: shogohasegawa
- 対象コンポーネント: docs / infra
- 関連: `pyproject.toml`, `README.md`, `docs/product/progress.md`
- チケット/リンク: 該当なし
- 関連ゴールID: G-04
- 関連マイルストーンID: M-04

## 0. TL;DR
- 配布可能性を高めるため、`LICENSE` と `CHANGELOG.md` を追加し、`pyproject.toml` の公開メタデータを補完する。
- 変更はコード機能ではなく配布メタ情報・ドキュメント整備に限定する。
- ライセンス種別は暫定で `MIT` を前提に作成する（必要なら承認時に変更可能）。
- 品質ゲート（ruff/mypy/pytest）を通し、既存挙動に影響がないことを確認する。

## 1. 背景 / 課題
- 現状の `pyproject.toml` には配布に必要なメタデータ（authors/license/classifiers/urls など）が不足している。
- ルートに `LICENSE` と `CHANGELOG.md` がなく、利用条件と変更履歴の外部公開が難しい。
- プロダクト機能は完了しているため、次段は「使えるライブラリ」から「配布しやすいライブラリ」への移行が妥当。

## 2. ゴール / 非ゴール
### 2.1 ゴール
- ルートに `LICENSE` と `CHANGELOG.md` を追加する。
- `pyproject.toml` に公開配布向けメタデータを追加する。
- 既存品質ゲートを通し、リリース準備変更が安全であることを確認する。

### 2.2 非ゴール
- 自動公開ワークフロー（`publish.yml`）の作成は行わない。
- バージョニング戦略（SemVer運用ルール）の全面設計は行わない。
- 実際の PyPI 公開実行は行わない。

## 3. スコープ / 影響範囲
- 変更対象: `pyproject.toml`, `LICENSE`, `CHANGELOG.md`（必要に応じて `README.md` のリンク追記）。
- 影響範囲: 配布メタ情報、利用者向けライセンス/履歴提示。
- 互換性: 実行コードへの影響なし。
- 依存関係: Python packaging metadata（PEP 621 準拠）と既存の Hatchling 設定。

## 4. 要件
### 4.1 機能要件
- `LICENSE` を新規作成する（暫定: MIT）。
- `CHANGELOG.md` を新規作成し、現時点までの主要変更を記録する。
- `pyproject.toml` に以下を追加する。
  - `authors`
  - `license`
  - `keywords`
  - `classifiers`
  - `project.urls`
- 追加メタデータが `uv` 環境で lint/type/test を阻害しないことを確認する。

### 4.2 非機能要件 / 制約
- 既存依存やスクリプト定義を壊さない。
- 文字コードは UTF-8、表記は既存 README と整合を取る。
- ライセンス種別は承認時点の合意内容を優先する。

## 5. 仕様 / 設計
### 5.1 全体方針
- 配布に必要な最小情報を先に揃える。
- 追加メタデータは汎用的かつ将来拡張しやすい項目に限定する。
- リリース運用自動化（publish workflow）は次タスクへ分離する。

### 5.2 変更点一覧
| 対象 | 変更内容 | 影響 | 備考 |
| --- | --- | --- | --- |
| `LICENSE` | MIT ライセンス文面を追加 | 利用条件を明確化 | 新規 |
| `CHANGELOG.md` | 0.1.0 相当の初期変更履歴を追加 | 変更履歴の外部共有 | 新規 |
| `pyproject.toml` | PEP 621 メタデータを補完 | 配布準備の向上 | 更新 |
| `README.md` | `LICENSE` / `CHANGELOG` 参照導線を必要に応じ追加 | 可読性向上 | 更新（必要時） |

### 5.3 詳細
#### API
- 該当なし。

#### UI
- 該当なし。

#### データモデル / 永続化
- 該当なし。

#### 設定 / 環境変数
- 該当なし。

### 5.4 代替案と不採用理由
- 代替案A: `pyproject.toml` だけ更新し、`LICENSE`/`CHANGELOG` は後回しにする。
  - 不採用理由: 利用条件と履歴の透明性が不足し、配布準備として不十分。
- 代替案B: 先に publish workflow まで含めて一気に整備する。
  - 不採用理由: 変更範囲が広がり、今回の目的（最低限の配布整備）から逸脱する。

## 6. 移行 / ロールアウト
- `LICENSE`/`CHANGELOG` 追加 → `pyproject` 更新 → 品質ゲート実行の順に進める。
- ロールバック条件: 追加メタデータがビルド/品質ゲートを阻害する場合。
- ロールバック手順: 追加項目を段階的に戻し、問題箇所を特定して再調整する。

## 7. テスト計画
- 単体: 該当なし。
- 結合: `uv run pytest -q`。
- 手動: `uv run ruff check .`、`uv run mypy .`。
- LLM/外部依存: 該当なし。
- 合格条件: 既存品質ゲートがすべて通る。

## 8. 受け入れ基準
- ルートに `LICENSE` と `CHANGELOG.md` が存在する。
- `pyproject.toml` に公開用メタデータが追加されている。
- `ruff`/`mypy`/`pytest` が成功する。
- 変更がコード挙動を壊していない。

## 9. リスク / 対策
- リスク: ライセンス種別がユーザー意図と不一致になる。
  - 対策: 本設計では MIT を暫定前提とし、承認時に変更可否を確認する。
- リスク: CHANGELOG の粒度が粗く、履歴として不足する。
  - 対策: 初回は主要マイルストーン単位で記載し、以後コミット単位で運用する。

## 10. オープン事項 / 要確認
- 該当なし。

## 11. 実装タスクリスト
- [x] `LICENSE` を追加する。
- [x] `CHANGELOG.md` を追加する。
- [x] `pyproject.toml` に公開メタデータを追加する。
- [x] 品質ゲート（ruff/mypy/pytest）を実行する。

## 12. ドキュメント更新
- [x] `README.md`（必要に応じてリンク追記）
- [ ] `AGENTS.md`（必要に応じて）
- [x] `docs/`（`docs/task-designs/*.md`）

## 13. 承認ログ
- 承認者: shogohasegawa
- 承認日時: 2026-02-13 23:59
- 承認コメント: 「MITでOK」

## 実装開始条件
- [x] ステータスが `承認済み(approved)` である
- [x] 10. オープン事項が空である
- [x] 受け入れ基準とテスト計画に合意済み
