@einja/dev-cli 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +179 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +49 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +243 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +2 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +23 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/sync.d.ts +7 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +294 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/sync.test.d.ts +2 -0
- package/dist/commands/sync.test.d.ts.map +1 -0
- package/dist/commands/sync.test.js +593 -0
- package/dist/commands/sync.test.js.map +1 -0
- package/dist/commands/task-loop.d.ts +11 -0
- package/dist/commands/task-loop.d.ts.map +1 -0
- package/dist/commands/task-loop.js +81 -0
- package/dist/commands/task-loop.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/file-system.d.ts +39 -0
- package/dist/lib/file-system.d.ts.map +1 -0
- package/dist/lib/file-system.js +79 -0
- package/dist/lib/file-system.js.map +1 -0
- package/dist/lib/mcp-config.d.ts +43 -0
- package/dist/lib/mcp-config.d.ts.map +1 -0
- package/dist/lib/mcp-config.js +109 -0
- package/dist/lib/mcp-config.js.map +1 -0
- package/dist/lib/mcp-config.test.d.ts +2 -0
- package/dist/lib/mcp-config.test.d.ts.map +1 -0
- package/dist/lib/mcp-config.test.js +285 -0
- package/dist/lib/mcp-config.test.js.map +1 -0
- package/dist/lib/merger.d.ts +41 -0
- package/dist/lib/merger.d.ts.map +1 -0
- package/dist/lib/merger.js +164 -0
- package/dist/lib/merger.js.map +1 -0
- package/dist/lib/preset-update/cli-repo-detector.d.ts +35 -0
- package/dist/lib/preset-update/cli-repo-detector.d.ts.map +1 -0
- package/dist/lib/preset-update/cli-repo-detector.js +83 -0
- package/dist/lib/preset-update/cli-repo-detector.js.map +1 -0
- package/dist/lib/preset-update/cli-repo-detector.test.d.ts +2 -0
- package/dist/lib/preset-update/cli-repo-detector.test.d.ts.map +1 -0
- package/dist/lib/preset-update/cli-repo-detector.test.js +120 -0
- package/dist/lib/preset-update/cli-repo-detector.test.js.map +1 -0
- package/dist/lib/preset-update/file-copier.d.ts +59 -0
- package/dist/lib/preset-update/file-copier.d.ts.map +1 -0
- package/dist/lib/preset-update/file-copier.js +220 -0
- package/dist/lib/preset-update/file-copier.js.map +1 -0
- package/dist/lib/preset-update/file-copier.test.d.ts +2 -0
- package/dist/lib/preset-update/file-copier.test.d.ts.map +1 -0
- package/dist/lib/preset-update/file-copier.test.js +297 -0
- package/dist/lib/preset-update/file-copier.test.js.map +1 -0
- package/dist/lib/preset-update/preset-finder.d.ts +39 -0
- package/dist/lib/preset-update/preset-finder.d.ts.map +1 -0
- package/dist/lib/preset-update/preset-finder.js +92 -0
- package/dist/lib/preset-update/preset-finder.js.map +1 -0
- package/dist/lib/preset-update/preset-finder.test.d.ts +2 -0
- package/dist/lib/preset-update/preset-finder.test.d.ts.map +1 -0
- package/dist/lib/preset-update/preset-finder.test.js +128 -0
- package/dist/lib/preset-update/preset-finder.test.js.map +1 -0
- package/dist/lib/preset.d.ts +14 -0
- package/dist/lib/preset.d.ts.map +1 -0
- package/dist/lib/preset.js +52 -0
- package/dist/lib/preset.js.map +1 -0
- package/dist/lib/sync/backup-manager.d.ts +50 -0
- package/dist/lib/sync/backup-manager.d.ts.map +1 -0
- package/dist/lib/sync/backup-manager.js +117 -0
- package/dist/lib/sync/backup-manager.js.map +1 -0
- package/dist/lib/sync/backup-manager.test.d.ts +2 -0
- package/dist/lib/sync/backup-manager.test.d.ts.map +1 -0
- package/dist/lib/sync/backup-manager.test.js +155 -0
- package/dist/lib/sync/backup-manager.test.js.map +1 -0
- package/dist/lib/sync/batch-processor.d.ts +27 -0
- package/dist/lib/sync/batch-processor.d.ts.map +1 -0
- package/dist/lib/sync/batch-processor.js +46 -0
- package/dist/lib/sync/batch-processor.js.map +1 -0
- package/dist/lib/sync/batch-processor.test.d.ts +2 -0
- package/dist/lib/sync/batch-processor.test.d.ts.map +1 -0
- package/dist/lib/sync/batch-processor.test.js +110 -0
- package/dist/lib/sync/batch-processor.test.js.map +1 -0
- package/dist/lib/sync/category-validator.d.ts +36 -0
- package/dist/lib/sync/category-validator.d.ts.map +1 -0
- package/dist/lib/sync/category-validator.js +46 -0
- package/dist/lib/sync/category-validator.js.map +1 -0
- package/dist/lib/sync/category-validator.test.d.ts +2 -0
- package/dist/lib/sync/category-validator.test.d.ts.map +1 -0
- package/dist/lib/sync/category-validator.test.js +89 -0
- package/dist/lib/sync/category-validator.test.js.map +1 -0
- package/dist/lib/sync/conflict-reporter.d.ts +57 -0
- package/dist/lib/sync/conflict-reporter.d.ts.map +1 -0
- package/dist/lib/sync/conflict-reporter.js +81 -0
- package/dist/lib/sync/conflict-reporter.js.map +1 -0
- package/dist/lib/sync/conflict-reporter.test.d.ts +2 -0
- package/dist/lib/sync/conflict-reporter.test.d.ts.map +1 -0
- package/dist/lib/sync/conflict-reporter.test.js +132 -0
- package/dist/lib/sync/conflict-reporter.test.js.map +1 -0
- package/dist/lib/sync/diff-engine.d.ts +28 -0
- package/dist/lib/sync/diff-engine.d.ts.map +1 -0
- package/dist/lib/sync/diff-engine.js +118 -0
- package/dist/lib/sync/diff-engine.js.map +1 -0
- package/dist/lib/sync/diff-engine.test.d.ts +2 -0
- package/dist/lib/sync/diff-engine.test.d.ts.map +1 -0
- package/dist/lib/sync/diff-engine.test.js +133 -0
- package/dist/lib/sync/diff-engine.test.js.map +1 -0
- package/dist/lib/sync/file-filter.d.ts +40 -0
- package/dist/lib/sync/file-filter.d.ts.map +1 -0
- package/dist/lib/sync/file-filter.js +171 -0
- package/dist/lib/sync/file-filter.js.map +1 -0
- package/dist/lib/sync/file-filter.test.d.ts +2 -0
- package/dist/lib/sync/file-filter.test.d.ts.map +1 -0
- package/dist/lib/sync/file-filter.test.js +179 -0
- package/dist/lib/sync/file-filter.test.js.map +1 -0
- package/dist/lib/sync/hash-cache.d.ts +34 -0
- package/dist/lib/sync/hash-cache.d.ts.map +1 -0
- package/dist/lib/sync/hash-cache.js +51 -0
- package/dist/lib/sync/hash-cache.js.map +1 -0
- package/dist/lib/sync/hash-cache.test.d.ts +2 -0
- package/dist/lib/sync/hash-cache.test.d.ts.map +1 -0
- package/dist/lib/sync/hash-cache.test.js +110 -0
- package/dist/lib/sync/hash-cache.test.js.map +1 -0
- package/dist/lib/sync/integration.test.d.ts +2 -0
- package/dist/lib/sync/integration.test.d.ts.map +1 -0
- package/dist/lib/sync/integration.test.js +317 -0
- package/dist/lib/sync/integration.test.js.map +1 -0
- package/dist/lib/sync/marker-processor.d.ts +54 -0
- package/dist/lib/sync/marker-processor.d.ts.map +1 -0
- package/dist/lib/sync/marker-processor.js +208 -0
- package/dist/lib/sync/marker-processor.js.map +1 -0
- package/dist/lib/sync/marker-processor.test.d.ts +2 -0
- package/dist/lib/sync/marker-processor.test.d.ts.map +1 -0
- package/dist/lib/sync/marker-processor.test.js +245 -0
- package/dist/lib/sync/marker-processor.test.js.map +1 -0
- package/dist/lib/sync/metadata-manager.d.ts +46 -0
- package/dist/lib/sync/metadata-manager.d.ts.map +1 -0
- package/dist/lib/sync/metadata-manager.js +129 -0
- package/dist/lib/sync/metadata-manager.js.map +1 -0
- package/dist/lib/sync/metadata-manager.test.d.ts +2 -0
- package/dist/lib/sync/metadata-manager.test.d.ts.map +1 -0
- package/dist/lib/sync/metadata-manager.test.js +137 -0
- package/dist/lib/sync/metadata-manager.test.js.map +1 -0
- package/dist/lib/sync/performance.test.d.ts +2 -0
- package/dist/lib/sync/performance.test.d.ts.map +1 -0
- package/dist/lib/sync/performance.test.js +126 -0
- package/dist/lib/sync/performance.test.js.map +1 -0
- package/dist/types/index.d.ts +59 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/preset-update.d.ts +106 -0
- package/dist/types/preset-update.d.ts.map +1 -0
- package/dist/types/preset-update.js +5 -0
- package/dist/types/preset-update.js.map +1 -0
- package/dist/types/sync.d.ts +169 -0
- package/dist/types/sync.d.ts.map +1 -0
- package/dist/types/sync.js +19 -0
- package/dist/types/sync.js.map +1 -0
- package/package.json +72 -0
- package/presets/minimal/.claude/agents/einja/docs/docs-updater.md +161 -0
- package/presets/minimal/.claude/agents/einja/frontend/design-engineer.md +685 -0
- package/presets/minimal/.claude/agents/einja/frontend/frontend-architect.md +747 -0
- package/presets/minimal/.claude/agents/einja/frontend/frontend-coder.md +441 -0
- package/presets/minimal/.claude/agents/einja/git/conflict-resolver.md +148 -0
- package/presets/minimal/.claude/agents/einja/specs/spec-design-generator.md +462 -0
- package/presets/minimal/.claude/agents/einja/specs/spec-qa-generator.md +466 -0
- package/presets/minimal/.claude/agents/einja/specs/spec-requirements-generator.md +416 -0
- package/presets/minimal/.claude/agents/einja/specs/spec-tasks-generator.md +608 -0
- package/presets/minimal/.claude/agents/einja/task/task-committer.md +82 -0
- package/presets/minimal/.claude/agents/einja/task/task-executer.md +352 -0
- package/presets/minimal/.claude/agents/einja/task/task-modification-analyzer.md +369 -0
- package/presets/minimal/.claude/agents/einja/task/task-qa.md +74 -0
- package/presets/minimal/.claude/agents/einja/task/task-reviewer.md +169 -0
- package/presets/minimal/.claude/commands/einja/frontend-implement.md +322 -0
- package/presets/minimal/.claude/commands/einja/spec-create.md +254 -0
- package/presets/minimal/.claude/commands/einja/start-dev.md +98 -0
- package/presets/minimal/.claude/commands/einja/sync-cursor-commands.md +203 -0
- package/presets/minimal/.claude/commands/einja/task-exec.md +390 -0
- package/presets/minimal/.claude/commands/einja/update-docs-by-task-specs.md +448 -0
- package/presets/minimal/.claude/hooks/einja/biome-format.sh +49 -0
- package/presets/minimal/.claude/hooks/einja/design-doc-check.sh +61 -0
- package/presets/minimal/.claude/hooks/einja/detect-secrets.sh +62 -0
- package/presets/minimal/.claude/hooks/einja/large-file-warning.sh +42 -0
- package/presets/minimal/.claude/hooks/einja/playwright-resize.sh +36 -0
- package/presets/minimal/.claude/hooks/einja/typecheck.sh +37 -0
- package/presets/minimal/.claude/hooks/einja/unset-volta-recursion.sh +32 -0
- package/presets/minimal/.claude/hooks/einja/validate-git-commit.sh +239 -0
- package/presets/minimal/.claude/hooks/einja/warn-index-ts.sh +34 -0
- package/presets/minimal/.claude/hooks/einja/warn-relative-import.sh +48 -0
- package/presets/minimal/.claude/settings.json +174 -0
- package/presets/minimal/.claude/skills/einja/api-development/SKILL.md +14 -0
- package/presets/minimal/.claude/skills/einja/backend-architecture/SKILL.md +14 -0
- package/presets/minimal/.claude/skills/einja/coding-standards/SKILL.md +120 -0
- package/presets/minimal/.claude/skills/einja/coding-standards/reference/naming-conventions.md +107 -0
- package/presets/minimal/.claude/skills/einja/coding-standards/reference/prohibited-patterns.md +169 -0
- package/presets/minimal/.claude/skills/einja/coding-standards/reference/typescript-rules.md +247 -0
- package/presets/minimal/.claude/skills/einja/component-design/SKILL.md +109 -0
- package/presets/minimal/.claude/skills/einja/component-design/reference/directory-structure.md +117 -0
- package/presets/minimal/.claude/skills/einja/component-design/reference/props-patterns.md +159 -0
- package/presets/minimal/.claude/skills/einja/component-design/reference/styling-guide.md +200 -0
- package/presets/minimal/.claude/skills/einja/conflict-resolver/SKILL.md +190 -0
- package/presets/minimal/.claude/skills/einja/frontend-development/SKILL.md +14 -0
- package/presets/minimal/.claude/skills/einja/general-context-loader/SKILL.md +254 -0
- package/presets/minimal/.claude/skills/einja/output-format/SKILL.md +137 -0
- package/presets/minimal/.claude/skills/einja/spec-context-loader/SKILL.md +177 -0
- package/presets/minimal/.claude/skills/einja/task-commit/SKILL.md +269 -0
- package/presets/minimal/.claude/skills/einja/task-qa/SKILL.md +306 -0
- package/presets/minimal/.claude/skills/einja/task-qa/reference/failure-patterns.md +69 -0
- package/presets/minimal/.claude/skills/einja/task-qa/reference/troubleshooting.md +65 -0
- package/presets/minimal/.claude/skills/einja/task-qa/reference/usage-patterns.md +52 -0
- package/presets/minimal/.claude/skills/einja/task-qa/templates/qa-test-template.md +128 -0
- package/presets/minimal/preset.yaml +111 -0
- package/presets/minimal/symlinks.json +45 -0
- package/scaffolds/.mcp.json +45 -0
- package/scaffolds/CLAUDE.md.template +318 -0
- package/scaffolds/steering/README.md +170 -0
- package/scaffolds/steering/acceptance-criteria-and-qa-guide.md +415 -0
- package/scaffolds/steering/architecture.md +481 -0
- package/scaffolds/steering/branch-strategy.md +362 -0
- package/scaffolds/steering/commit-rules.md +217 -0
- package/scaffolds/steering/db-schema-design.md +609 -0
- package/scaffolds/steering/development/api-development.md +783 -0
- package/scaffolds/steering/development/backend-architecture.md +731 -0
- package/scaffolds/steering/development/frontend-development.md +1537 -0
- package/scaffolds/steering/development/review-guidelines.md +365 -0
- package/scaffolds/steering/development/testing-strategy.md +819 -0
- package/scaffolds/steering/development-workflow.md +429 -0
- package/scaffolds/steering/infrastructure/deployment.md +277 -0
- package/scaffolds/steering/infrastructure/environment-variables.md +298 -0
- package/scaffolds/steering/product.md +540 -0
- package/scaffolds/steering/task-management.md +367 -0
- package/templates/README.md +159 -0
- package/templates/design-simple.md.template +172 -0
- package/templates/design.md.template +327 -0
- package/templates/qa-test.md.template +125 -0
- package/templates/requirements.md.template +254 -0
|
@@ -0,0 +1,540 @@
|
|
|
1
|
+
# 製品ビジョン
|
|
2
|
+
|
|
3
|
+
TODO
|
|
4
|
+
以下はサンプルで、まだDBは未作成です。
|
|
5
|
+
|
|
6
|
+
## 概要
|
|
7
|
+
|
|
8
|
+
このドキュメントでは、Turborepo + Next.jsモノレポプロジェクトの製品ビジョン、ビジネス価値、主要なステークホルダー、成功指標を定義します。
|
|
9
|
+
|
|
10
|
+
このプロジェクトは、エンタープライズグレードのモノレポアーキテクチャを構築し、複数のアプリケーション(Web、Admin、Cron Worker)と共有パッケージ(Server Core)を統合することで、高速なビルドパイプライン、型安全性、優れた開発者体験を実現します。
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## 目次
|
|
15
|
+
|
|
16
|
+
1. [製品の目的](#1-製品の目的)
|
|
17
|
+
2. [主要なステークホルダー](#2-主要なステークホルダー)
|
|
18
|
+
3. [ビジネス価値](#3-ビジネス価値)
|
|
19
|
+
4. [主要機能](#4-主要機能)
|
|
20
|
+
5. [成功指標](#5-成功指標)
|
|
21
|
+
6. [技術的目標](#6-技術的目標)
|
|
22
|
+
7. [開発原則](#7-開発原則)
|
|
23
|
+
8. [ロードマップ](#8-ロードマップ)
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 1. 製品の目的
|
|
28
|
+
|
|
29
|
+
### ビジョン
|
|
30
|
+
|
|
31
|
+
**「開発チームが高速かつ安全に、スケーラブルなWebアプリケーションを構築できるモノレポ基盤を提供する」**
|
|
32
|
+
|
|
33
|
+
### ミッション
|
|
34
|
+
|
|
35
|
+
1. **開発速度の向上**: Turborepoのリモートキャッシュにより、ビルド時間を80%以上削減
|
|
36
|
+
2. **型安全性の保証**: エンドツーエンドの型推論により、ランタイムエラーを設計時点で防止
|
|
37
|
+
3. **保守性の向上**: 4層アーキテクチャとデザインパターンにより、コードの可読性と拡張性を確保
|
|
38
|
+
4. **開発者体験の最適化**: 30分以内の環境セットアップ、統一されたツールチェーン、明確なドキュメント
|
|
39
|
+
|
|
40
|
+
### 解決する課題
|
|
41
|
+
|
|
42
|
+
| 課題 | 現状 | 解決策 |
|
|
43
|
+
|------|------|--------|
|
|
44
|
+
| **コードの重複** | 複数アプリで同じロジックを重複実装 | @repo/server-coreによる共通化 |
|
|
45
|
+
| **ビルド時間の増大** | モノレポ全体のビルドに数分かかる | Turborepo Remote Cacheで80%削減 |
|
|
46
|
+
| **型の不整合** | フロントエンドとバックエンドで型が一致しない | Hono Client + Zodによるエンドツーエンド型推論 |
|
|
47
|
+
| **設定管理の複雑性** | 各アプリで個別に設定を管理 | ルート設定の継承による一元管理 |
|
|
48
|
+
| **デプロイの複雑性** | 複数環境への手動デプロイ | GitHub Actionsによる自動デプロイ |
|
|
49
|
+
| **開発環境構築の時間** | 新規参加者が環境構築に半日以上かかる | 30分以内の環境セットアップ |
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 2. 主要なステークホルダー
|
|
54
|
+
|
|
55
|
+
### 2.1 バックエンド開発者
|
|
56
|
+
|
|
57
|
+
**ニーズ**:
|
|
58
|
+
- 型安全なAPI開発環境
|
|
59
|
+
- データベーススキーマの一元管理
|
|
60
|
+
- エラーハンドリングの統一パターン
|
|
61
|
+
- ビジネスロジックの再利用性
|
|
62
|
+
|
|
63
|
+
**提供価値**:
|
|
64
|
+
- Hono + Result型パターンによる型安全なAPI開発
|
|
65
|
+
- Prismaによる型安全なデータアクセス
|
|
66
|
+
- 4層アーキテクチャによる責務の明確化
|
|
67
|
+
- @repo/server-coreによるコード共有
|
|
68
|
+
|
|
69
|
+
**ユーザーストーリー**:
|
|
70
|
+
> **As a** バックエンド開発者
|
|
71
|
+
> **I want to** Hono + Result型 + Mapperを用いた4層アーキテクチャを構築したい
|
|
72
|
+
> **So that** 型安全で保守性の高いサーバーサイドアプリケーションを開発できる
|
|
73
|
+
|
|
74
|
+
### 2.2 フロントエンド開発者
|
|
75
|
+
|
|
76
|
+
**ニーズ**:
|
|
77
|
+
- バックエンドAPIとの型整合性
|
|
78
|
+
- 効率的なデータフェッチングとキャッシュ管理
|
|
79
|
+
- 型安全なフォーム実装
|
|
80
|
+
- 再利用可能なUIコンポーネント
|
|
81
|
+
|
|
82
|
+
**提供価値**:
|
|
83
|
+
- Hono Clientによるエンドツーエンド型推論
|
|
84
|
+
- Tanstack Queryによる統一的なデータ管理
|
|
85
|
+
- React Hook Form + zodResolverによる型安全なフォーム
|
|
86
|
+
- 共通コンポーネントライブラリ
|
|
87
|
+
|
|
88
|
+
**ユーザーストーリー**:
|
|
89
|
+
> **As a** フロントエンド開発者
|
|
90
|
+
> **I want to** Hono Client + Tanstack Queryを用いた型安全なAPIクライアントを構築したい
|
|
91
|
+
> **So that** エンドツーエンドの型安全性を確保し、効率的なデータ取得・キャッシュ管理ができる
|
|
92
|
+
|
|
93
|
+
### 2.3 システム運用者
|
|
94
|
+
|
|
95
|
+
**ニーズ**:
|
|
96
|
+
- 定期実行タスクの管理
|
|
97
|
+
- バッチ処理の監視
|
|
98
|
+
- ジョブの冪等性保証
|
|
99
|
+
- エラー通知とログ管理
|
|
100
|
+
|
|
101
|
+
**提供価値**:
|
|
102
|
+
- Cron Workerによる定期実行タスク
|
|
103
|
+
- JobCoordinatorによるジョブロック機構
|
|
104
|
+
- Railway Cronによるスケジューリング
|
|
105
|
+
- 統一的なエラーハンドリングとログ
|
|
106
|
+
|
|
107
|
+
**ユーザーストーリー**:
|
|
108
|
+
> **As a** システム運用者
|
|
109
|
+
> **I want to** バックグラウンドジョブをCLIコマンドとして実行できるようにしたい
|
|
110
|
+
> **So that** Railway Cronから定期実行タスクやバッチ処理を実行できる
|
|
111
|
+
|
|
112
|
+
### 2.4 管理者
|
|
113
|
+
|
|
114
|
+
**ニーズ**:
|
|
115
|
+
- 直感的な管理画面UI
|
|
116
|
+
- データの一括操作
|
|
117
|
+
- ユーザー管理機能
|
|
118
|
+
- システム設定の変更
|
|
119
|
+
|
|
120
|
+
**提供価値**:
|
|
121
|
+
- 管理者専用のAdminアプリケーション
|
|
122
|
+
- 統一されたデザインシステム
|
|
123
|
+
- セキュアな認証・認可
|
|
124
|
+
- データ操作の監査ログ
|
|
125
|
+
|
|
126
|
+
**ユーザーストーリー**:
|
|
127
|
+
> **As a** 管理者
|
|
128
|
+
> **I want to** 管理画面アプリケーション(admin)をセットアップしたい
|
|
129
|
+
> **So that** システムの管理機能を開発できる
|
|
130
|
+
|
|
131
|
+
### 2.5 新規参加の開発者
|
|
132
|
+
|
|
133
|
+
**ニーズ**:
|
|
134
|
+
- 明確なセットアップ手順
|
|
135
|
+
- 統一されたコーディング規約
|
|
136
|
+
- 豊富なドキュメント
|
|
137
|
+
- すぐに開発を開始できる環境
|
|
138
|
+
|
|
139
|
+
**提供価値**:
|
|
140
|
+
- 30分以内の環境セットアップ
|
|
141
|
+
- Steering/Feature docsによる包括的なドキュメント
|
|
142
|
+
- Biomeによる統一されたコード規約
|
|
143
|
+
- サンプル実装(Post CRUD)
|
|
144
|
+
|
|
145
|
+
**ユーザーストーリー**:
|
|
146
|
+
> **As a** 新規参加の開発者
|
|
147
|
+
> **I want to** 開発環境のセットアップ手順が明確に記載されたドキュメントを参照したい
|
|
148
|
+
> **So that** 迅速にプロジェクトに参加して開発を開始できる
|
|
149
|
+
|
|
150
|
+
### 2.6 開発チーム全体
|
|
151
|
+
|
|
152
|
+
**ニーズ**:
|
|
153
|
+
- コード品質の自動保証
|
|
154
|
+
- 並行開発での干渉回避
|
|
155
|
+
- ビルド時間の短縮
|
|
156
|
+
- 自動デプロイ
|
|
157
|
+
|
|
158
|
+
**提供価値**:
|
|
159
|
+
- GitHub ActionsによるCI/CD
|
|
160
|
+
- Turborepoによる並列ビルド
|
|
161
|
+
- Remote Cacheによる80%ビルド時間削減
|
|
162
|
+
- ワークスペースの独立性
|
|
163
|
+
|
|
164
|
+
**ユーザーストーリー**:
|
|
165
|
+
> **As a** 開発チーム
|
|
166
|
+
> **I want to** GitHub Actionsで自動テスト・ビルド・デプロイを実行したい
|
|
167
|
+
> **So that** コード品質を保ち、自動的にデプロイできる
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## 3. ビジネス価値
|
|
172
|
+
|
|
173
|
+
### 3.1 開発速度の向上
|
|
174
|
+
|
|
175
|
+
**削減時間**:
|
|
176
|
+
- 環境セットアップ: **数時間 → 30分以内** (90%削減)
|
|
177
|
+
- ビルド時間: **100秒 → 14秒** (86%削減、Remote Cache使用時)
|
|
178
|
+
- 型エラー修正: **事前検出により実装時間50%削減**
|
|
179
|
+
|
|
180
|
+
**ROI(投資対効果)**:
|
|
181
|
+
- チーム5人、月間ビルド回数1,000回と仮定
|
|
182
|
+
- ビルド時間削減: `(100s - 14s) × 1,000 = 86,000秒 = 約24時間/月`
|
|
183
|
+
- **月間24時間の開発時間を創出**
|
|
184
|
+
|
|
185
|
+
### 3.2 コード品質の向上
|
|
186
|
+
|
|
187
|
+
**エラー検出**:
|
|
188
|
+
- 型エラー: **設計時点で100%検出**(TypeScript strict mode)
|
|
189
|
+
- リントエラー: **コミット前に自動検出**(Biome + pre-commit hooks)
|
|
190
|
+
- テストエラー: **CI/CDで自動検出**(Vitest + Playwright)
|
|
191
|
+
|
|
192
|
+
**保守性**:
|
|
193
|
+
- コードの重複: **70%削減**(@repo/server-coreによる共通化)
|
|
194
|
+
- 技術的負債: **4層アーキテクチャによる継続的なリファクタリング可能性**
|
|
195
|
+
|
|
196
|
+
### 3.3 スケーラビリティ
|
|
197
|
+
|
|
198
|
+
**チームのスケール**:
|
|
199
|
+
- ワークスペースの独立性により、**複数チームの並行開発が可能**
|
|
200
|
+
- 設定の継承により、**新しいアプリの追加が容易**
|
|
201
|
+
|
|
202
|
+
**機能のスケール**:
|
|
203
|
+
- モジュール化されたアーキテクチャにより、**機能追加が高速**
|
|
204
|
+
- 共有パッケージにより、**新機能の全アプリへの展開が迅速**
|
|
205
|
+
|
|
206
|
+
### 3.4 運用コストの削減
|
|
207
|
+
|
|
208
|
+
**デプロイコスト**:
|
|
209
|
+
- Vercel: **サーバーレスによる従量課金**(アイドル時コストゼロ)
|
|
210
|
+
- Railway: **Cronジョブのみの実行**(常時稼働不要)
|
|
211
|
+
|
|
212
|
+
**保守コスト**:
|
|
213
|
+
- 自動テスト: **手動テスト工数を80%削減**
|
|
214
|
+
- 統一されたツール: **学習コストの削減**
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## 4. 主要機能
|
|
219
|
+
|
|
220
|
+
### 4.1 アプリケーション
|
|
221
|
+
|
|
222
|
+
| アプリケーション | 用途 | 技術スタック | デプロイ先 |
|
|
223
|
+
|----------------|------|-------------|-----------|
|
|
224
|
+
| **web** | ユーザー向けWebアプリ | Next.js 14 App Router | Vercel |
|
|
225
|
+
| **admin** | 管理画面 | Next.js 14 App Router | Vercel |
|
|
226
|
+
| **cron-worker** | バッチ処理・定期実行 | Node.js CLI (tsx) | Railway |
|
|
227
|
+
|
|
228
|
+
### 4.2 共有パッケージ
|
|
229
|
+
|
|
230
|
+
| パッケージ | 責務 | 主要コンポーネント |
|
|
231
|
+
|-----------|------|-------------------|
|
|
232
|
+
| **@repo/server-core** | サーバーサイド共通ロジック | Prisma Client、Repository、UseCase、Mapper |
|
|
233
|
+
|
|
234
|
+
### 4.3 インフラストラクチャ
|
|
235
|
+
|
|
236
|
+
| カテゴリ | 機能 | 技術 |
|
|
237
|
+
|---------|------|------|
|
|
238
|
+
| **モノレポ管理** | ビルドオーケストレーション | Turborepo |
|
|
239
|
+
| **パッケージ管理** | 依存関係管理 | pnpm workspaces |
|
|
240
|
+
| **CI/CD** | 自動テスト・ビルド・デプロイ | GitHub Actions |
|
|
241
|
+
| **リモートキャッシュ** | ビルド成果物の共有 | Vercel Remote Cache |
|
|
242
|
+
| **データベース** | データ永続化 | PostgreSQL (Prisma) |
|
|
243
|
+
| **認証** | ユーザー認証 | Auth.js (NextAuth) |
|
|
244
|
+
| **メール送信** | トランザクショナルメール | Resend |
|
|
245
|
+
| **ストレージ** | ファイル保存 | S3/Cloudflare R2 |
|
|
246
|
+
|
|
247
|
+
### 4.4 開発ツール
|
|
248
|
+
|
|
249
|
+
| ツール | 用途 | 特徴 |
|
|
250
|
+
|-------|------|------|
|
|
251
|
+
| **TypeScript** | 型安全性 | strict mode、型アサーション禁止 |
|
|
252
|
+
| **Biome** | Linter + Formatter | 高速、統一された規約 |
|
|
253
|
+
| **Vitest** | ユニット・インテグレーションテスト | 高速、TypeScript完全対応 |
|
|
254
|
+
| **Playwright** | E2Eテスト | クロスブラウザ対応 |
|
|
255
|
+
| **Hono** | APIフレームワーク | 型安全、軽量 |
|
|
256
|
+
| **Zod** | バリデーション | スキーマファースト |
|
|
257
|
+
| **Tanstack Query** | データフェッチング | キャッシュ管理、楽観的更新 |
|
|
258
|
+
| **React Hook Form** | フォーム管理 | 型安全、高パフォーマンス |
|
|
259
|
+
|
|
260
|
+
### 4.5 コア機能(サンプル実装)
|
|
261
|
+
|
|
262
|
+
**Post機能(CRUD)**:
|
|
263
|
+
- 投稿一覧表示(ページネーション)
|
|
264
|
+
- 投稿作成(フォームバリデーション)
|
|
265
|
+
- 投稿詳細表示
|
|
266
|
+
- 投稿編集・削除
|
|
267
|
+
- 管理画面での投稿管理
|
|
268
|
+
|
|
269
|
+
**目的**: モノレポ構成での実践的なCRUD機能の実装パターンを提供
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## 5. 成功指標
|
|
274
|
+
|
|
275
|
+
### 5.1 開発効率指標
|
|
276
|
+
|
|
277
|
+
| 指標 | 目標値 | 測定方法 |
|
|
278
|
+
|------|--------|----------|
|
|
279
|
+
| **環境セットアップ時間** | 30分以内 | 新規参加者のフィードバック |
|
|
280
|
+
| **ビルド時間(キャッシュあり)** | 80%以上削減 | CI/CD ログから測定 |
|
|
281
|
+
| **ビルド時間(apps/web)** | 5秒以下 | `turbo run build --summarize` |
|
|
282
|
+
| **型エラー検出率** | 100% | TypeScript strict mode有効化 |
|
|
283
|
+
| **コード重複率** | 30%以下 | SonarQubeなどの静的解析ツール |
|
|
284
|
+
|
|
285
|
+
### 5.2 コード品質指標
|
|
286
|
+
|
|
287
|
+
| 指標 | 目標値 | 測定方法 |
|
|
288
|
+
|------|--------|----------|
|
|
289
|
+
| **テストカバレッジ(server-core)** | 80%以上 | Vitest coverage report |
|
|
290
|
+
| **テストカバレッジ(apps)** | 70%以上 | Vitest coverage report |
|
|
291
|
+
| **型アサーション使用率** | 0% | Biome lint ルール違反数 |
|
|
292
|
+
| **Lint違反数** | 0件 | CI/CDでのBiomeチェック |
|
|
293
|
+
| **CI/CD成功率** | 95%以上 | GitHub Actions実行結果 |
|
|
294
|
+
|
|
295
|
+
### 5.3 運用効率指標
|
|
296
|
+
|
|
297
|
+
| 指標 | 目標値 | 測定方法 |
|
|
298
|
+
|------|--------|----------|
|
|
299
|
+
| **デプロイ頻度** | 1日10回以上 | GitHub Actionsデプロイ履歴 |
|
|
300
|
+
| **デプロイ所要時間** | 5分以内 | CI/CDログ |
|
|
301
|
+
| **平均修復時間(MTTR)** | 1時間以内 | インシデント管理システム |
|
|
302
|
+
| **Cronジョブ成功率** | 99%以上 | Railway Cron実行ログ |
|
|
303
|
+
|
|
304
|
+
### 5.4 開発者体験指標
|
|
305
|
+
|
|
306
|
+
| 指標 | 目標値 | 測定方法 |
|
|
307
|
+
|------|--------|----------|
|
|
308
|
+
| **開発者満足度** | 4.5/5以上 | 四半期ごとのアンケート |
|
|
309
|
+
| **ドキュメント充実度** | 全機能カバー | ドキュメントレビュー |
|
|
310
|
+
| **問い合わせ対応時間** | 24時間以内 | GitHub Issues対応履歴 |
|
|
311
|
+
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
## 6. 技術的目標
|
|
315
|
+
|
|
316
|
+
### 6.1 型安全性
|
|
317
|
+
|
|
318
|
+
**目標**: **エンドツーエンドの型推論により、ランタイムエラーをゼロに近づける**
|
|
319
|
+
|
|
320
|
+
**実現方法**:
|
|
321
|
+
1. TypeScript strict mode有効化
|
|
322
|
+
2. 型アサーション(`as`)の禁止(Biome設定)
|
|
323
|
+
3. Hono Clientによるフロントエンド⇔バックエンド型共有
|
|
324
|
+
4. Zodスキーマによるランタイムバリデーション
|
|
325
|
+
5. Prismaによるデータベース型安全性
|
|
326
|
+
|
|
327
|
+
**測定**: 型エラー検出率100%、型アサーション使用率0%
|
|
328
|
+
|
|
329
|
+
### 6.2 パフォーマンス
|
|
330
|
+
|
|
331
|
+
**目標**: **ビルド時間を80%以上削減し、開発サイクルを高速化**
|
|
332
|
+
|
|
333
|
+
**実現方法**:
|
|
334
|
+
1. Turborepoのインクリメンタルビルド
|
|
335
|
+
2. Vercel Remote Cacheによるチーム間キャッシュ共有
|
|
336
|
+
3. 並列実行による効率化
|
|
337
|
+
4. 依存関係の最適化
|
|
338
|
+
|
|
339
|
+
**測定**: ビルド時間 100秒 → 14秒(86%削減)
|
|
340
|
+
|
|
341
|
+
### 6.3 保守性
|
|
342
|
+
|
|
343
|
+
**目標**: **4層アーキテクチャにより、コードの可読性と拡張性を確保**
|
|
344
|
+
|
|
345
|
+
**実現方法**:
|
|
346
|
+
1. Layered Architecture(Presentation → Application → Domain → Infrastructure)
|
|
347
|
+
2. Repository Patternによる抽象化
|
|
348
|
+
3. Mapper Patternによる変換層の分離
|
|
349
|
+
4. Result型によるエラーハンドリングの統一
|
|
350
|
+
5. index.ts完全不使用方針によるインポート元の明確化
|
|
351
|
+
|
|
352
|
+
**測定**: コード重複率30%以下、技術的負債の継続的削減
|
|
353
|
+
|
|
354
|
+
### 6.4 スケーラビリティ
|
|
355
|
+
|
|
356
|
+
**目標**: **モノレポ構成により、複数チームの並行開発を可能にする**
|
|
357
|
+
|
|
358
|
+
**実現方法**:
|
|
359
|
+
1. ワークスペースの独立性
|
|
360
|
+
2. 共有パッケージによるコード再利用
|
|
361
|
+
3. タスクの並列実行
|
|
362
|
+
4. 環境変数の階層的管理
|
|
363
|
+
|
|
364
|
+
**測定**: チーム数に比例したスループット向上
|
|
365
|
+
|
|
366
|
+
### 6.5 開発者体験
|
|
367
|
+
|
|
368
|
+
**目標**: **30分以内の環境セットアップと、統一されたツールチェーン**
|
|
369
|
+
|
|
370
|
+
**実現方法**:
|
|
371
|
+
1. 明確なREADMEとセットアップガイド
|
|
372
|
+
2. Biomeによる統一されたコード規約
|
|
373
|
+
3. Worktreeサポート(動的ポート割り当て)
|
|
374
|
+
4. 充実したドキュメント(Steering/Feature docs)
|
|
375
|
+
|
|
376
|
+
**測定**: 開発者満足度4.5/5以上、セットアップ時間30分以内
|
|
377
|
+
|
|
378
|
+
---
|
|
379
|
+
|
|
380
|
+
## 7. 開発原則
|
|
381
|
+
|
|
382
|
+
### 7.1 DRY原則(Don't Repeat Yourself)
|
|
383
|
+
|
|
384
|
+
**原則**: **コードの重複を避け、@repo/server-coreで共通化**
|
|
385
|
+
|
|
386
|
+
**実践例**:
|
|
387
|
+
- データベースアクセス: Repositoryパターンで一元化
|
|
388
|
+
- バリデーション: Zodスキーマで統一
|
|
389
|
+
- エラーハンドリング: Result型で標準化
|
|
390
|
+
|
|
391
|
+
### 7.2 型安全ファースト
|
|
392
|
+
|
|
393
|
+
**原則**: **型アサーションを使わず、型推論に依存**
|
|
394
|
+
|
|
395
|
+
**実践例**:
|
|
396
|
+
- Hono Clientによる自動型推論
|
|
397
|
+
- Zodスキーマからの型生成
|
|
398
|
+
- Prismaによる型安全なクエリ
|
|
399
|
+
|
|
400
|
+
### 7.3 設計と実装の分離
|
|
401
|
+
|
|
402
|
+
**原則**: **設計書(docs/specs/)には実装コードを書かない**
|
|
403
|
+
|
|
404
|
+
**実践例**:
|
|
405
|
+
- 設計書: Class名、関数シグネチャ、アーキテクチャ図のみ
|
|
406
|
+
- 実装: src/配下のコードで具体化
|
|
407
|
+
|
|
408
|
+
### 7.4 テスト駆動開発(TDD)
|
|
409
|
+
|
|
410
|
+
**原則**: **Given-When-Then形式でテストを記述**
|
|
411
|
+
|
|
412
|
+
**実践例**:
|
|
413
|
+
```typescript
|
|
414
|
+
describe('UserRepository', () => {
|
|
415
|
+
it('有効なユーザーデータを渡すと、ユーザーが作成される', async () => {
|
|
416
|
+
// Given: 有効なデータ
|
|
417
|
+
const userData = { email: 'test@example.com', name: 'Test User' }
|
|
418
|
+
|
|
419
|
+
// When: createメソッドを呼び出す
|
|
420
|
+
const result = await userRepository.create(userData)
|
|
421
|
+
|
|
422
|
+
// Then: 成功結果が返る
|
|
423
|
+
expect(result.isSuccess).toBe(true)
|
|
424
|
+
})
|
|
425
|
+
})
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
### 7.5 インクリメンタルな改善
|
|
429
|
+
|
|
430
|
+
**原則**: **小さなPRで頻繁にマージし、継続的に改善**
|
|
431
|
+
|
|
432
|
+
**実践例**:
|
|
433
|
+
- 1PR = 1タスクグループ
|
|
434
|
+
- 1日10回以上のデプロイ
|
|
435
|
+
- 継続的なリファクタリング
|
|
436
|
+
|
|
437
|
+
---
|
|
438
|
+
|
|
439
|
+
## 8. ロードマップ
|
|
440
|
+
|
|
441
|
+
### Phase 0: 基盤構築(P0 - 必須)
|
|
442
|
+
|
|
443
|
+
**目標**: Turborepoモノレポの初期化と基本設定
|
|
444
|
+
|
|
445
|
+
**タスク**:
|
|
446
|
+
1. ✅ Turborepoモノレポの初期化
|
|
447
|
+
2. ✅ ルート設定ファイルの構築(TypeScript、Biome)
|
|
448
|
+
3. ✅ Next.jsアプリケーション(web)の構築
|
|
449
|
+
4. ✅ Adminアプリケーション(admin)の構築
|
|
450
|
+
5. ✅ Cron Workerアプリケーション(cron-worker)の構築
|
|
451
|
+
6. ✅ Server Coreパッケージ(@repo/server-core)の構築
|
|
452
|
+
|
|
453
|
+
**成果物**:
|
|
454
|
+
- 動作するモノレポ環境
|
|
455
|
+
- 各アプリケーションの開発サーバー起動
|
|
456
|
+
- Prisma Clientの生成
|
|
457
|
+
|
|
458
|
+
### Phase 1: ビルドパイプライン最適化(P0 - 必須)
|
|
459
|
+
|
|
460
|
+
**目標**: Turborepoビルドパイプラインの最適化
|
|
461
|
+
|
|
462
|
+
**タスク**:
|
|
463
|
+
1. ✅ turbo.jsonのパイプライン定義
|
|
464
|
+
2. ✅ 依存関係の設定
|
|
465
|
+
3. ✅ キャッシュ戦略の設定
|
|
466
|
+
4. ✅ 並列ビルドの有効化
|
|
467
|
+
|
|
468
|
+
**成果物**:
|
|
469
|
+
- 最適化されたビルドパイプライン
|
|
470
|
+
- キャッシュによる高速ビルド
|
|
471
|
+
|
|
472
|
+
### Phase 2: リモートキャッシュとCI/CD(P1 - 重要)
|
|
473
|
+
|
|
474
|
+
**目標**: Vercel Remote CacheとGitHub Actionsの設定
|
|
475
|
+
|
|
476
|
+
**タスク**:
|
|
477
|
+
1. ✅ Vercel Remote Cacheの設定
|
|
478
|
+
2. ✅ GitHub Actions CI/CDパイプライン構築
|
|
479
|
+
3. ✅ 自動デプロイの設定
|
|
480
|
+
|
|
481
|
+
**成果物**:
|
|
482
|
+
- 80%以上のビルド時間削減
|
|
483
|
+
- 自動テスト・ビルド・デプロイ
|
|
484
|
+
|
|
485
|
+
### Phase 3: アーキテクチャ実装(P0 - 必須)
|
|
486
|
+
|
|
487
|
+
**目標**: 4層アーキテクチャとコア機能の実装
|
|
488
|
+
|
|
489
|
+
**タスク**:
|
|
490
|
+
1. ✅ Result型パターンの実装
|
|
491
|
+
2. ✅ Repository + Mapperパターンの実装
|
|
492
|
+
3. ✅ Hono APIアプリケーションの構築
|
|
493
|
+
4. ✅ Hono Client + Tanstack Queryの統合
|
|
494
|
+
5. ✅ React Hook Formの統合
|
|
495
|
+
|
|
496
|
+
**成果物**:
|
|
497
|
+
- 型安全なバックエンドAPI
|
|
498
|
+
- 型安全なフロントエンドクライアント
|
|
499
|
+
|
|
500
|
+
### Phase 4: サンプル実装(P1 - 重要)
|
|
501
|
+
|
|
502
|
+
**目標**: Post CRUD機能の実装
|
|
503
|
+
|
|
504
|
+
**タスク**:
|
|
505
|
+
1. ✅ Post APIエンドポイントの実装
|
|
506
|
+
2. ✅ Web Post一覧・作成・詳細ページ
|
|
507
|
+
3. ✅ Admin Post管理ページ
|
|
508
|
+
4. ✅ Tanstack Queryによるキャッシュ管理
|
|
509
|
+
|
|
510
|
+
**成果物**:
|
|
511
|
+
- 実践的なCRUD機能のサンプル
|
|
512
|
+
|
|
513
|
+
### Phase 5: ドキュメント整備(P1 - 重要)
|
|
514
|
+
|
|
515
|
+
**目標**: 開発環境セットアップドキュメントの作成
|
|
516
|
+
|
|
517
|
+
**タスク**:
|
|
518
|
+
1. ✅ README.mdの作成
|
|
519
|
+
2. ✅ Steering documentationの作成
|
|
520
|
+
3. ✅ Feature documentationの作成
|
|
521
|
+
4. ✅ Worktreeサポートスクリプトの作成
|
|
522
|
+
|
|
523
|
+
**成果物**:
|
|
524
|
+
- 包括的なドキュメント
|
|
525
|
+
- 30分以内の環境セットアップ
|
|
526
|
+
|
|
527
|
+
---
|
|
528
|
+
|
|
529
|
+
## まとめ
|
|
530
|
+
|
|
531
|
+
このプロジェクトは、**開発速度**、**型安全性**、**保守性**、**開発者体験**を最優先し、エンタープライズグレードのモノレポ基盤を構築します。
|
|
532
|
+
|
|
533
|
+
**主要な成功指標**:
|
|
534
|
+
- ✅ 環境セットアップ時間: **30分以内**
|
|
535
|
+
- ✅ ビルド時間削減: **80%以上**
|
|
536
|
+
- ✅ 型エラー検出率: **100%**
|
|
537
|
+
- ✅ テストカバレッジ: **80%以上**(server-core)
|
|
538
|
+
- ✅ 開発者満足度: **4.5/5以上**
|
|
539
|
+
|
|
540
|
+
すべての開発活動は、このビジョンと原則に従って実施してください。
|