takt/docs/vertical-slice-migration-plan.md
2026-02-02 21:52:40 +09:00

13 KiB
Raw Blame History

Vertical Slice + Core ハイブリッド構成 移行計画(構造移動と import 整理)

目的

  • docs/vertical-slice-migration-map.md に従い、機能追加なしで構造移動と import 整理を行うための作業計画を定義する。
  • 既存の src/ 構成と依存関係を把握し、移行対象・参照元・Public API の整理ポイントを明確化する。

前提

  • 変更対象は src/docs/ の参照更新のみ。
  • 実装は行わず、移行の具体手順と注意点を記載する。

現状の src/ 構成(トップレベル)

  • src/app/cli/*
  • src/features/*
  • src/core/*
  • src/infra/*
  • src/shared/*
  • その他: src/agents/*, src/index.ts

現状の依存関係(観測ベース)

  • app -> features, infra, shared
  • features -> core, infra, sharedshared/prompt, shared/constants, shared/context, shared/exitCodes
  • infra -> core/models, shared
  • core -> shared, agents
  • agents -> infra, shared, core/models, infra/claude

依存ルールとの差分(注意点)

  • coresharedagents に依存している(core は外側に依存しない想定)。
  • agentsinfra に依存しているため、core -> agents -> infra の依存経路が発生している。

移動対象の分類と移動先(確定)

core

現在のパス 移動先 備考
src/core/models/* src/core/models/* 既に配置済み
src/core/workflow/* src/core/workflow/* 既に配置済み

infra

現在のパス 移動先 備考
src/infra/providers/* src/infra/providers/* 既に配置済み
src/infra/github/* src/infra/github/* 既に配置済み
src/infra/config/* src/infra/config/* 既に配置済み
src/infra/task/* src/infra/task/* 既に配置済み
src/infra/fs/session.ts src/infra/fs/session.ts 既に配置済み
src/infra/claude/* src/infra/claude/* 外部API連携のため infra に集約
src/infra/codex/* src/infra/codex/* 外部API連携のため infra に集約
src/infra/mock/* src/infra/mock/* Provider 用 mock のため infra に集約
src/infra/resources/* src/infra/resources/* FS 依存を含むため infra に集約

features

現在のパス 移動先 備考
src/features/tasks/* src/features/tasks/* 既に配置済み
src/features/pipeline/* src/features/pipeline/* 既に配置済み
src/features/config/* src/features/config/* 既に配置済み
src/features/interactive/* src/features/interactive/* 既に配置済み

app

現在のパス 移動先 備考
src/app/cli/* src/app/cli/* 既に配置済み

shared

現在のパス 移動先 備考
src/shared/utils/* src/shared/utils/* 既に配置済み
src/shared/ui/* src/shared/ui/* 既に配置済み
src/shared/prompt/* src/shared/prompt/* 共有UIユーティリティとして集約
src/shared/constants.ts src/shared/constants.ts 共有定数として集約
src/shared/context.ts src/shared/context.ts 共有コンテキストとして集約
src/shared/exitCodes.ts src/shared/exitCodes.ts 共有エラーコードとして集約

移行対象と参照元の洗い出し(現状)

core/models の参照元

  • src/infra/claude/client.ts
  • src/infra/codex/client.ts
  • src/agents/runner.ts
  • src/agents/types.ts
  • src/infra/config/global/globalConfig.ts
  • src/infra/config/global/initialization.ts
  • src/infra/config/loaders/agentLoader.ts
  • src/infra/config/loaders/workflowParser.ts
  • src/infra/config/loaders/workflowResolver.ts
  • src/infra/config/paths.ts
  • src/infra/providers/*
  • src/features/interactive/interactive.ts
  • src/features/tasks/execute/*
  • src/features/pipeline/execute.ts
  • src/shared/utils/debug.ts
  • src/shared/constants.ts
  • src/infra/resources/index.ts
  • src/__tests__/*

core/workflow の参照元

  • src/features/tasks/execute/workflowExecution.ts
  • src/__tests__/engine-*.test.ts
  • src/__tests__/instructionBuilder.test.ts
  • src/__tests__/it-*.test.ts
  • src/__tests__/parallel-logger.test.ts
  • src/__tests__/transitions.test.ts

infra/config の参照元

  • src/app/cli/*
  • src/agents/runner.ts
  • src/features/interactive/interactive.ts
  • src/features/config/*
  • src/features/tasks/execute/*
  • src/features/tasks/add/index.ts
  • src/features/tasks/list/taskActions.ts
  • src/__tests__/*

infra/task の参照元

  • src/features/tasks/*
  • src/features/pipeline/execute.ts
  • src/__tests__/*

infra/github の参照元

  • src/app/cli/routing.ts
  • src/features/pipeline/execute.ts
  • src/features/tasks/execute/selectAndExecute.ts
  • src/features/tasks/add/index.ts
  • src/__tests__/github-*.test.ts

infra/providers の参照元

  • src/agents/runner.ts
  • src/features/interactive/interactive.ts
  • src/features/tasks/add/index.ts
  • src/features/tasks/execute/types.ts
  • src/__tests__/addTask.test.ts
  • src/__tests__/interactive.test.ts
  • src/__tests__/summarize.test.ts

infra/fs の参照元

  • src/features/tasks/execute/workflowExecution.ts
  • src/__tests__/session.test.ts
  • src/__tests__/utils.test.ts

shared/utils の参照元

  • src/app/cli/*
  • src/infra/*
  • src/features/*
  • src/agents/runner.ts
  • src/infra/claude/*
  • src/infra/codex/*
  • src/core/workflow/*
  • src/__tests__/*

shared/ui の参照元

  • src/app/cli/*
  • src/infra/task/display.ts
  • src/features/*
  • src/__tests__/*

shared/prompt の参照元

  • src/features/*
  • src/infra/config/global/initialization.ts
  • src/__tests__/*

shared/constants・shared/context・shared/exitCodes の参照元

  • src/features/*
  • src/infra/config/global/*
  • src/core/models/schemas.ts
  • src/core/workflow/engine/*
  • src/app/cli/routing.ts
  • src/__tests__/*

Public APIindex.ts整理ポイント

既存 Public API

  • src/core/models/index.ts
  • src/core/workflow/index.ts
  • src/features/tasks/index.ts
  • src/features/pipeline/index.ts
  • src/features/config/index.ts
  • src/features/interactive/index.ts
  • src/infra/config/index.ts
  • src/infra/task/index.ts
  • src/infra/providers/index.ts
  • src/shared/utils/index.ts
  • src/shared/ui/index.ts
  • src/index.ts

新設/拡張が必要な Public API

  • src/infra/github/index.tsissue.ts, pr.ts, types.ts の集約)
  • src/infra/fs/index.tssession.ts の集約)
  • src/infra/resources/index.tsresources API の集約)
  • src/infra/config/index.ts の拡張(globalConfig, projectConfig, workflowLoader などの再エクスポート)
  • src/shared/prompt/index.ts(共通プロンプトの入口)
  • src/shared/constants.ts, src/shared/context.ts, src/shared/exitCodes.ts の Public API 反映
  • src/infra/claude/index.ts, src/infra/codex/index.ts, src/infra/mock/index.ts(移動後の入口)

深い import 禁止の置換方針

  • core/*features/* は Public APIindex.ts)からのみ import。
  • features から infra の deep import を廃止し、infra/*/index.ts 経由に置換。
  • app/cli から infra への direct import は必要最小限に限定し、可能なら features Public API に集約。

影響範囲一覧

CLI エントリ

  • src/app/cli/index.ts
  • src/app/cli/program.ts
  • src/app/cli/commands.ts
  • src/app/cli/routing.ts
  • src/app/cli/helpers.ts
  • bin/takt

features 呼び出し

  • src/features/tasks/*
  • src/features/pipeline/*
  • src/features/config/*
  • src/features/interactive/*

docs 参照更新対象

  • docs/data-flow.md
  • docs/data-flow-diagrams.md
  • docs/agents.md
  • docs/workflows.md
  • docs/README.ja.md

テスト

  • src/__tests__/*

実施手順(推奨順序)

1. core

  • core/workflowcore/models の Public API を点検し、外部参照を index.ts 経由に統一。
  • core 内での shared 依存を整理する(ログ/エラー/レポート生成の配置を明確化)。
  • agents 依存の扱いを決定し、依存方向を破らない構成に合わせて移動計画を確定する。

2. infra

  • infra/githubinfra/fsindex.ts を新設し、deep import を解消する前提の API を定義。
  • infra/config/index.ts の再エクスポート対象を拡張し、globalConfigprojectConfigworkflowLoader 等を Public API 化。
  • claude/codex/mock/resourcesinfra 配下に移動し、参照を更新する。

3. features

  • features から infra への deep import を Public API 経由に置換。
  • prompt の移動に合わせ、features 内の import を shared/prompt に変更。
  • constants/context/exitCodes の移動に合わせて参照を更新。

4. app

  • app/cli から features Public API のみを使用する形に整理。
  • app/cli から infra へ直接参照している箇所は、必要に応じて features 経由に寄せる。

5. Public API

  • src/index.ts の再エクスポート対象を新パスに合わせて更新。
  • 新設した index.ts のエクスポート整合を確認する。

6. docs

  • docs/data-flow.md など、src/ 参照を新パスに合わせて更新。
  • 参照パスが index.ts の Public API 方針に沿っているか点検。

判断ポイント

  • src/models/workflow.ts が追加される場合、
    • 廃止するか、
    • core/models/index.ts へ統合するかを決める。

再開指示2026-02-02 時点の差分観測ベース)

現在のブランチ

  • refactoring

進捗(差分ベースの整理)

core

  • src/core/models/*src/core/workflow/* が広範囲に変更されている。

infra

  • 既存: src/infra/config/*, src/infra/providers/*, src/infra/task/*, src/infra/github/*, src/infra/fs/session.ts が更新されている。
  • 追加: src/infra/claude/*, src/infra/codex/*, src/infra/mock/*, src/infra/resources/* が新規追加されている。
  • 追加: src/infra/github/index.ts, src/infra/fs/index.ts が新規追加されている。

features

  • src/features/* が広範囲に変更されている。

app

  • src/app/cli/* が変更されている。

shared

  • src/shared/utils/index.tssrc/shared/ui/StreamDisplay.ts が更新されている。
  • src/shared/prompt/*, src/shared/constants.ts, src/shared/context.ts, src/shared/exitCodes.ts が新規追加されている。

削除された旧パス

  • src/claude/*, src/codex/*, src/mock/*, src/prompt/*, src/resources/index.ts
  • src/constants.ts, src/context.ts, src/exitCodes.ts

tests

  • src/__tests__/* が広範囲に更新されている。

resources

  • resources/global/{en,ja}/* に更新があるため、移行作業とは独立して取り扱う。

docs

  • docs/vertical-slice-migration-plan.md が未追跡ファイルとして存在する。

未完了セクション(要確認事項)

以下は差分観測のみでは断定できないため、再開時に確認する。

core

  • core から外部層(shared / agents)への依存が残っていないか確認する。
  • core/modelscore/workflow の Public API が index.ts 経由に統一されているか点検する。

infra

  • infra/github/index.ts, infra/fs/index.ts, infra/resources/index.ts の再エクスポート範囲を確定する。
  • infra/config/index.ts の再エクスポート対象(globalConfig, projectConfig, workflowLoader 等)が揃っているか確認する。
  • infra/claude, infra/codex, infra/mock の Public API が index.ts に統一されているか確認する。

features

  • features から infra への deep import が残っていないか確認する。
  • shared/prompt, shared/constants, shared/context, shared/exitCodes への参照統一が完了しているか確認する。

app

  • app/clifeatures Public API 経由に統一されているか確認する。
  • app/cli から infra への direct import が残っていないか確認する。

Public API

  • src/index.ts の再エクスポートが新パスに揃っているか確認する。
  • infra/shared/featuresindex.ts 追加分を反映できているか点検する。

docs

  • docs/* の参照パスを新構成Public APIへ更新する。

判断ポイント(再掲)

  • src/models/workflow.ts は直近コミットで削除されているため、
    • 廃止のまま進めるか、
    • core/models/index.ts へ統合して復活させるかを確定する。

参照更新の対象一覧docs

  • docs/data-flow.md
  • docs/data-flow-diagrams.md
  • docs/agents.md
  • docs/workflows.md
  • docs/README.ja.md

付記

  • ここに記載した移動は、既存の機能追加なしで行うこと。
  • 実装時は core -> infra -> features -> app -> Public API -> docs の順序を厳守する。