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, shared(shared/prompt, shared/constants, shared/context, shared/exitCodes)
infra -> core/models, shared
core -> shared, agents
agents -> infra, shared, core/models, infra/claude
依存ルールとの差分(注意点)
core が shared と agents に依存している(core は外側に依存しない想定)。
agents が infra に依存しているため、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 API(index.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.ts(issue.ts, pr.ts, types.ts の集約)
src/infra/fs/index.ts(session.ts の集約)
src/infra/resources/index.ts(resources 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 API(index.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
テスト
実施手順(推奨順序)
1. core
core/workflow と core/models の Public API を点検し、外部参照を index.ts 経由に統一。
core 内での shared 依存を整理する(ログ/エラー/レポート生成の配置を明確化)。
agents 依存の扱いを決定し、依存方向を破らない構成に合わせて移動計画を確定する。
2. infra
infra/github と infra/fs の index.ts を新設し、deep import を解消する前提の API を定義。
infra/config/index.ts の再エクスポート対象を拡張し、globalConfig・projectConfig・workflowLoader 等を Public API 化。
claude/codex/mock/resources を infra 配下に移動し、参照を更新する。
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 時点の差分観測ベース)
現在のブランチ
進捗(差分ベースの整理)
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
shared
src/shared/utils/index.ts と src/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/models と core/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/cli が features Public API 経由に統一されているか確認する。
app/cli から infra への direct import が残っていないか確認する。
Public API
src/index.ts の再エクスポートが新パスに揃っているか確認する。
infra/shared/features の index.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 の順序を厳守する。