Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 26 additions & 44 deletions docs/roadmap.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,42 +4,27 @@ PHP 版 NENE2 との機能同等性を達成し、さらに Python 固有の強

---

## 現状(v0.1.0 — 2026-05-19
## 現状(v1.8.67 — 2026-05-22

### 実装済み ✅
| 領域 | Python 実装 | PHP 対応 |
### 実装済み ✅(全機能)
| 領域 | Python 実装 | 状態 |
|---|---|---|
| HTTP コア | `nene2.http` (pagination, problem_details) | `Http/` |
| ミドルウェア | `ErrorHandlerMiddleware` のみ | `Error/ErrorHandlerMiddleware` |
| バリデーション | `ValidationException`, `ValidationError` | `Validation/` |
| 設定 | `AppSettings` (pydantic-settings) | `Config/` |
| Note: 一覧・取得・作成 | UseCase + InMemory repository + Handler | `Example/Note/` 一部 |
| ポリシー | CLAUDE.md, ADR 0001-0004 | 多数 |

### 未実装 ❌(PHP 版比較)

**コア:**
- Database 抽象化層(Interface + SQLite 実装)
- `DomainExceptionHandlerInterface` パターン
- `HealthCheckInterface`
- 構造化ロギング(Monolog → structlog 相当)
- ミドルウェア: SecurityHeaders, RequestId, RequestLogging, RequestSizeLimit
- ミドルウェア: CORS(FastAPI 組み込みを設定), Rate Limiting
- 認証: `TokenVerifierInterface`, `BearerTokenMiddleware`, `ApiKeyAuthMiddleware`
- MCP: `LocalMcpServer`, `LocalMcpToolCatalog`

**Example:**
- Note: Update, Delete(UseCase + Handler)
- Note: `NoteNotFoundException` + `DomainExceptionHandler`
- Note: UseCase インターフェース (Protocol)
- Note: SQLite repository
- Tag: 全て(フル CRUD + 4 UseCase + 4 Handler + Entity + Exception + Repository)

**Infra:**
- GitHub Actions CI
- Alembic マイグレーション
- `.env.example`
- OpenAPI spec(静的 YAML)
| HTTP コア | `nene2.http` (pagination, problem_details) | ✅ |
| ミドルウェア全種 | ErrorHandler / Security / RequestId / Logging / SizeLimit / Throttle | ✅ |
| バリデーション | `ValidationException`, `ValidationError` | ✅ |
| 設定 | `AppSettings` (pydantic-settings) | ✅ |
| データベース | `SqlAlchemyQueryExecutor` / `SqlAlchemyTransactionManager` | ✅ |
| 認証 | `BearerTokenMiddleware` / `ApiKeyAuthMiddleware` | ✅ |
| MCP | `LocalMcpServer` / `HttpxMcpClient` | ✅ |
| Example: Note / Tag / Comment | フル CRUD + UseCase + Handler + SQLite Repository | ✅ |
| CI | GitHub Actions (pytest / mypy / ruff / pip-audit) | ✅ |
| ドキュメント | Diátaxis 構造 (tutorial / howto / explanation / reference) | ✅ |
| フィールドトライアル | FT1〜FT195(195 件)— stdlib 全カバレッジループ継続中 | 🔄 |

### 残課題
- PyPI 公開フロー未検証(Field Trial 7 相当)
- PostgreSQL / MySQL 実 DB 統合テスト(CI Docker service)
- WebSocket サポート(検討中)

---

Expand Down Expand Up @@ -119,24 +104,21 @@ PHP 版 NENE2 との機能同等性を達成し、さらに Python 固有の強

---

### v1.x — 同等性完成 & Beyond ✅ DONE
### v1.x — 同等性完成 & Beyond ✅ DONE(コア完了)

PHP 版追跡・Python 固有の強化:

- [x] Field Trial: Comment ドメインをゼロから実装してフレームワーク検証 (#41)
- [x] MySQL / PostgreSQL repository 実装 (#40)
- [x] 非同期対応: `AsyncUseCaseProtocol` + `nene2.use_case` パッケージ (#42)
- [x] Diátaxis 構造のドキュメント整備(tutorial / howto / explanation / reference)(#43)
- [x] Field Trial 1: InMemory CRUD + git+ インストール検証 (#67)
- [x] Field Trial 2: SQLite 永続化リポジトリ DX 検証 (#72)
- [x] Field Trial 3: Bearer Token 認証 + MCP stdio DX 検証 (#80)
- [x] Field Trial 4: MCP + SQLite 共有 / ApiKey / CORS 検証 (#89)
- [x] Field Trial 5: transactional() DX 検証(ウォレット送金 API)(#93)
- [x] `py.typed` 追加で PEP 561 対応 (#94)
- [x] `transactional()` + `_in_tx` パターンをドキュメント化 (#95)
- [x] Field Trial 6: AsyncUseCaseProtocol DX 検証(天気ダッシュボード API)(#101)
- [ ] Field Trial 7: 親子リソース / MySQL・PostgreSQL / PyPI 公開フロー(検討中)
- [x] Field Trial 1〜6: InMemory / SQLite / 認証 / MCP / トランザクション / AsyncUseCase 検証完了
- [x] Field Trial 7〜195: stdlib フルカバレッジループ(FT7〜FT195、2026-05-22 時点)
- [ ] Field Trial 継続: FT196〜(196 % 4 = 0 → **次回クラッカーペンテストあり**)
- [ ] PyPI 公開フロー検証(`uv publish` ワークフロー・バージョン管理)
- [ ] PostgreSQL / MySQL 実 DB 統合テスト(CI Docker service ジョブ)
- [ ] WebSocket サポート検討
- [ ] 並行系 how-to ガイド(threading / asyncio / concurrent.futures 比較・選択指針)

---

Expand Down
38 changes: 26 additions & 12 deletions docs/todo/current.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,26 @@
# TODO — current

最終更新: 2026-05-21
現状: **v1.8.66 安定版 / フィールドトライアルループ継続中(FT194 完了)**
最終更新: 2026-05-22
現状: **v1.8.67 安定版 / フィールドトライアルループ継続中(FT195 完了)**

---

## 状態サマリー

v1.8.66 完了済み。FT194(ipaddress — IPv4/IPv6 解析・CIDR 計算・SSRF 防御パターン)を含む FT194 件を実施済み。
フィールドトライアルループは FT195 以降も継続中。
v1.8.67 完了済み。FT195(ssl — SSLContext・暗号スイート・セキュリティ評価 API)まで全 195 件を実施済み。
並行系(FT188〜192)→ ネットワーク系(FT193〜195)の縦断を完了。
リポジトリは main ブランチ 1 本・Issue/PR/ブランチ全ゼロのクリーンな状態。
フィールドトライアルループは FT196 以降も継続中。

---

## オープン PR

なし(現在 main ブランチはクリーン)
なし(main ブランチはクリーン)

---

## オープン Issue(優先度順)
## オープン Issue

なし(すべて解消済み)

Expand All @@ -28,13 +30,14 @@ v1.8.66 完了済み。FT194(ipaddress — IPv4/IPv6 解析・CIDR 計算・SS

| バージョン | 主な内容 |
|---|---|
| v1.8.67 | FT195: ssl — SSLContext・暗号スイート列挙・セキュリティ評価 API(セキュリティ診断、条件付き合格) |
| v1.8.66 | FT194: ipaddress — IPv4/IPv6 解析・CIDR 計算・SSRF 防御パターン |
| v1.8.65 | FT193: socket — TCP/UDP socketpair・DNS 解決・ソケットオプション |
| v1.8.64 | FT192: asyncio — コルーチン・タスク・Lock・Event・Semaphore・Queue・TaskGroup(診断+ペンテスト) |
| v1.8.63 | FT191: concurrent.futures — ThreadPoolExecutor / ProcessPoolExecutor / Future |
| v1.8.62 | FT190: multiprocessing — プロセスベース並行処理・共有状態・プロセスプール |
| v1.8.61 | バックログ Issue 一括解消(CLAUDE.md ルール更新・FT サンドボックス修正・ドキュメント追記) |
| v1.8.60 | FT189: subprocess — 安全なプロセス実行・stdin/stdout 制御・ストリーミング(セキュリティ診断、Issue #524) |
| v1.8.60 | FT189: subprocess — 安全なプロセス実行・stdin/stdout 制御・ストリーミング(セキュリティ診断) |
| v1.8.59 | FT188: threading — Thread・Lock・RLock・Semaphore・Event・ThreadPoolExecutor・Queue・Timer(クラッカーペンテスト) |
| v1.8.58 | FT187: collections — Counter・defaultdict・deque・ChainMap・NamedTuple・OrderedDict |
| v1.8.57 | FT186: functools — キャッシュ・部分適用・デコレーター・比較・ディスパッチ(診断実施) |
Expand All @@ -57,21 +60,32 @@ v1.8.66 完了済み。FT194(ipaddress — IPv4/IPv6 解析・CIDR 計算・SS

## フィールドトライアル進捗

**実施済み**: FT1〜FT194(全 194 件)
**実施済み**: FT1〜FT195(全 195 件)

索引: [`docs/field-trials/INDEX.md`](../field-trials/INDEX.md)

**次のアクション**:
- FT195 以降を継続(FT195 は 195 % 3 = 0 → **セキュリティ診断あり**、195 % 4 = 3 → ペンテストなし)
- FT196 を開始(196 % 3 = 1 → セキュリティ診断なし、196 % 4 = 0 → **クラッカーペンテストあり**)
- テーマ候補: `http.client`(低レベル HTTP クライアント)または `select` / `selectors`(I/O 多重化)

---

## 明日以降の優先タスク

| 優先度 | タスク | 種別 | 備考 |
|---|---|---|---|
| 高 | FT196 実施(クラッカーペンテストあり) | FT | テーマ: `http.client` or `select`/`selectors` |
| 中 | 並行系 how-to ガイド作成 | docs | FT188〜192 の知見(threading / asyncio / concurrent.futures)を 1 本にまとめる |
| 中 | PyPI 公開フロー検証(Field Trial 7) | FT | `uv publish` ワークフロー・バージョン管理・twine 代替 |
| 低 | PostgreSQL / MySQL 実 DB 統合テスト | infra | CI に Docker service ジョブを追加検討 |
| 低 | PyJWT 推移的 CVE(PYSEC-2025-183) | 保留 | mcp 側の修正を待ち。文書化済み |

---

## 改善検討事項

| 課題 | 優先度 | 備考 |
|---|---|---|
| 並行系 how-to(AsyncUseCase / threading / multiprocessing 比較) | 中 | FT188〜192 の知見を 1 本 how-to にまとめる |
| PostgreSQL / MySQL 実 DB 統合テスト | 中〜高 | CI に Docker service ジョブを追加検討 |
| PyJWT 推移的 CVE(PYSEC-2025-183) | 低 | mcp 側の修正を待ち。文書化済み |
| APIRouter パターンを FT テンプレートに反映 | 完了 | #526 で CLAUDE.md に追記済み |
| FT サマリ索引 | 完了 | `docs/field-trials/INDEX.md` 作成済み |
| stdlib 並行系知見 → AsyncUseCase how-to | 中 | FT188〜192 の知見を1本 how-to にまとめる |
Loading