Skip to content

infra(repo): monorepo 構造整理 PR(webapi/ 等 subdir + 資材移動 + CI workflow パス更新) #207

Description

@win2cot

Phase 1 Setup 0-1: monorepo 構造整理 PR

概要

リポルートに散在している既存資材を webapi/ サブディレクトリへ集約し、web/ / keycloak/ / infra/ の配置先を確保する。1 PR で全 path 変更 + CI workflow path 更新 + Gradle multi-project 化を実施する。

詳細仕様は docs/architecture/infrastructure-plan.md v5 §5.1 を参照。

背景

Phase 1 Sprint 0(#121「scaffold ↔ 設計書整合実装」、2026-06-14 開始)着手のクリティカルパス。以下 3 つの新規ディレクトリを後続作業で使うため、リポ構造の整理が前提:

  • web/ — Phase 1 Setup 1 で Frontend skeleton を作成
  • keycloak/ — Phase 1 Setup 2 + Sprint 1 Infra で Custom Image を作成
  • infra/ — Phase 1 Sprint 0 Infra 以降で Terraform IaC を配置

実装内容

A. ディレクトリ移動

[現状]                          [新構造]
src/                            webapi/src/
build.gradle                    webapi/build.gradle
gradlew                         webapi/gradlew (or root に残す)
gradlew.bat                     webapi/gradlew.bat (or root)
gradle/                         webapi/gradle/ (or root)
settings.gradle                 root に維持(multi-project 化)
api/                            webapi/api/ または root の api/ を維持
bin/                            削除 or webapi/bin/
build/                          webapi/build/(`.gitignore`)

docs/ .github/ .claude/ docker-compose.local.yml(将来作成)renovate.json などは root に維持。

B. Gradle multi-project 化

ルート settings.gradle を以下に修正:

rootProject.name = 'tasks-webapi-monorepo'
include 'webapi'
// keycloak は Phase 1 Sprint 1 Infra で追加

webapi/build.gradle は現 build.gradle の内容を移動。./gradlew :webapi:build で動作確認。

C. 新規空ディレクトリの placeholder

web/.gitkeep
keycloak/.gitkeep
infra/.gitkeep

D. CI workflow path 更新

.github/workflows/*.yml 内の path 参照を更新:

  • src/**webapi/src/**
  • build.gradlewebapi/build.gradle
  • ./gradlew check./gradlew :webapi:check

claude-automation の shim workflow も同様に。

E. CLAUDE.md / 各種 docs の path 更新

  • .claude/CLAUDE.mdProject Overview / Commands セクションの path を webapi/ 配下に更新
  • docs/specs/設計規約.md / docs/specs/コーディング規約.md の path 参照確認

受入条件

  • webapi/ web/ keycloak/ infra/ の 4 subdir が存在(.gitkeep 含む)
  • 既存 src/ build.gradle 等が webapi/ 配下に移動済(root の元 path は削除)
  • ルート settings.gradleinclude 'webapi' 設定済
  • ./gradlew :webapi:build が成功(local 動作確認)
  • ./gradlew :webapi:check が成功(Spotless + NullAway + Error Prone + JaCoCo すべて green、80% カバレッジ維持)
  • CI workflow(.github/workflows/ci.yml 等)が新しい path で動作する(PR で CI green)
  • .claude/CLAUDE.md の path 参照が更新済
  • PR 説明に Before/After のディレクトリ構造図を記載

想定影響範囲

領域 影響
Spring Boot アプリ起動 ./gradlew :webapi:bootRun で動作する(env vars は変更なし)
既存テスト カバレッジ 80% 維持、ApplicationModules.verify() も green
Spotless 自動整形 ./gradlew :webapi:spotlessApply で動作
Renovate path 別ラベル分離は Setup0-2 で対応(本 PR では既存 renovate.json のまま)
ADR 構造変更を ADR 化するか別途検討(本 PR には含めない)

リスクと対応

リスク 対応
PR が大きすぎてレビュー困難 claude-automation-review が自動レビューしつつ、人手で最終確認。差分が大きいので意図しない削除に注意
gradlew script の path 解決失敗 webapi/ 配下から実行する場合 vs root から ./gradlew :webapi:... 実行する場合の両方をテスト
CI workflow path 漏れ grep -r "src/" .github/workflows/ で全 path 参照を洗い出す
サンドボックスから見える幻のファイル(.git/packed-refs 等)による混乱 sandbox/Windows host の差を意識、host(WSL)で git 操作を実施

関連

備考

  • task-type: task-type:impl
  • 優先度: priority/p0
  • area: area/infra 相当(なければ area/ci)

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/ci.github/workflows / CI/CD パイプライン変更area/infraAWS インフラ(ECS Fargate / RDS / Keycloak / IAM)変更priority/p0Critical / Blocker。本番影響あり、または他作業がブロックされるtask-type:implコード実装が主体のタスク

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions