AIネイティブ開発フロー
概要
Asana/Slack/GitHubと連携し、要件定義から実装・PRまでを自動化する開発フローです。
フェーズ一覧
| フェーズ |
コマンド |
概要 |
| A. 要件定義 |
/requirement |
情報収集 → requirement.md 生成 |
| B. 設計 |
/design |
設計書群 + タスク分解 生成 |
| C. 構築 |
/build |
実装 → ルールチェック → PR作成 |
フェーズ A: 要件定義 (/requirement)
実行コマンド
/requirement [Asanaタスク名またはURL]
フロー
A-1: 初期確認
├── 新規機能 or 既存機能の編集を確認
└── Asanaタスク情報の特定
↓
A-2: 並列情報取得
├── Asana MCP: タスク詳細、コメント
├── Slack MCP: 関連スレッド、議論履歴
└── GitHub MCP: 関連コード、既存実装
↓
A-3: ドキュメント生成
└── requirement.md を作成
↓
A-4: 確認ループ
└── エンジニア承認まで修正
出力物
doc_draft/requirement/
└── [Asana依頼名]/
└── requirement.md
requirement.md 構成
- 基本情報(Asanaタスク、種別、依頼者、担当者)
- 背景・目的
- 機能要件 / 非機能要件
- 関連情報(既存コード、Slack議論)
- 制約事項
- 承認欄
フェーズ B: 設計 (/design)
実行コマンド
/design [Asana依頼名]
フロー
B-1: 設計開始
└── requirement.md を読み込み
↓
B-2: 設計書作成
├── 新規機能: テンプレートから新規作成
└── 追加機能: 既存設計書をコピーし差分修正
↓
B-3: 担当エンジニア確認
└── エンジニアがローカルで設計書を確認・修正
↓
B-4: タスク分解
└── 担当割り当て(ai-agent / エンジニア)
↓
B-5: 工数入力(Asana自動連携)
├── タスク分解で算出したエンジニア合計工数を確認
└── Asana MCP で「予定時間」に自動入力
↓
B-6: レビュアー選択
└── 設計書レビューを依頼する上長を選択
↓
B-7: PR作成
├── 設計書のPRをGitHubに作成
└── 選択した上長をレビュアーに指定
↓
B-8: Asana・Slackでレビュー依頼
├── Asanaタスクにコメント(PRリンク付き)
├── Slackに通知(スレッド形式)
└── Asanaセクション移動 → 設計書承認
↓
B-9: 設計レビュー
├── 上長がPR上でレビュー・コメント
├── 修正依頼 → 修正 → 再レビュー
└── 承認 → PRマージ
↓
B-10: 設計書承認(/approve-design)
├── 対象の設計書を特定
├── doc_draft/ → doc/ にファイル移動(git mv)
├── ファイル内の相対パスを更新
├── インデックス(README.md)を更新
├── Asanaセクションを「構築待ち」に移動
├── Asana/Slack通知
└── コミット & プッシュ
B-5: 工数入力(Asana自動連携)
タスク分解で算出したエンジニア合計工数を Asana MCP で「予定時間(Estimated time)」に自動入力:
- フィールドGID:
1203561023086990(単位: 分)
| 工数(時間) |
入力値(分) |
| 0.5h |
30 |
| 1h |
60 |
| 2h |
120 |
| 3h |
180 |
| 4h |
240 |
| 8h |
480 |
B-6: レビュアー選択
設計書レビューを依頼する上長を選択:
| 名前 |
Asana GID |
GitHub |
Slack ID |
| 平井 |
1210193551915917 |
thirai-classlab |
U07B6BQ8Y8Z |
| 古谷圭吾 |
1209044134340755 |
classlab-ltd-fk |
U086CTXGF2R |
| 棟安拓未 |
1207940793230770 |
t-muneyasu-classlab |
U07FNRT78HW |
B-7: PR作成
設計書のPRをGitHubに作成し、選択した上長をレビュアーに指定:
gh pr create --title "[設計書] {Asana依頼名}" \
--body "設計書のレビューをお願いします。" \
--reviewer "{GitHubユーザー名}"
B-8: Asana・Slackでレビュー依頼
| Step |
内容 |
| Step 1 |
Asanaタスクにコメント(PRリンク付き、メンションなし) |
| Step 2 |
AsanaコメントURLを取得 |
| Step 3 |
Slackに通知(親メッセージ + スレッド返信でメンション) |
| Step 4 |
Asanaセクション移動 → 設計書承認 |
Slack通知
- 通知先チャンネル:
C07JMC480EA
- 形式: スレッド形式(親メッセージ + スレッド返信)
親メッセージ:
{Asanaタスク名} の設計書PRを作成しました。
スレッド返信(メンション付き):
@{上長}
{Asanaタスク名} - PRコメント: {AsanaコメントURL}
上記でPRを作成しました。
確認し、承認 or 却下を実施してください。
セクション移動
- 移動先: 設計書承認
- セクションGID:
1212857002747714
B-10: 設計書承認(/approve-design)
PRマージ後、/approve-design コマンドを実行:
| Step |
内容 |
| D-1 |
対象の設計書を特定 |
| D-2 |
移動対象ファイルを確認 |
| D-3 |
doc_draft/ → doc/ にファイル移動(git mv) |
| D-4 |
ファイル内の相対パスを更新 |
| D-5 |
インデックス(README.md)を更新 |
| D-6 |
Asanaセクションを「構築待ち」に移動 |
| D-7 |
Asanaにコメント追加 |
| D-8 |
Slack通知 |
| D-9 |
コミット & プッシュ |
ディレクトリマッピング
| 移動元(doc_draft/) |
移動先(doc/) |
basic-design/[依頼名]/ |
domains/[依頼名]/ |
detailed-design/apex/ |
detailed-design/apex/ |
detailed-design/trigger/ |
detailed-design/trigger/ |
detailed-design/lwc/ |
detailed-design/lwc/ |
detailed-design/flow/ |
detailed-design/flow/ |
注意: doc_draft/requirement/ は移動対象外(参照用として残す)
自動連携まとめ
| 連携先 |
処理内容 |
| Asana |
予定時間入力、コメント追加、セクション移動 |
| Slack |
スレッド形式で通知(メンション付き) |
| GitHub |
PR作成、レビュアー指定 |
出力物
既存のディレクトリ構造(doc_draft/STRUCTURE.md)に準拠:
doc_draft/
├── requirement/
│ └── [Asana依頼名]/
│ └── requirement.md ← /requirement で生成済み
│
├── basic-design/
│ └── [Asana依頼名]/
│ ├── readme.md ← 概要設計書(システム全体像、アーキテクチャ)
│ ├── feature/
│ │ └── 01_[機能名].md ← 機能設計書(機能詳細、画面設計、API設計)
│ └── task-breakdown.md ← タスク分解
│
└── detailed-design/
├── apex/
│ └── [クラス名].md ← Apex クラス詳細設計
├── trigger/
│ └── [トリガー名].md ← トリガー詳細設計
├── lwc/
│ └── [コンポーネント名].md ← LWC 詳細設計
├── flow/
│ └── [フロー名].md ← Flow 詳細設計
└── objects/
└── [オブジェクト名].md ← オブジェクト定義
タスク分解.md フォーマット
| # |
タスク |
担当 |
工数 |
状態 |
| 1 |
API設計 |
ai-agent |
- |
未着手 |
| 2 |
DB設計レビュー |
エンジニア |
2H |
未着手 |
| 3 |
実装: Controller |
ai-agent |
- |
未着手 |
| 4 |
コードレビュー |
エンジニア |
1H |
未着手 |
使用テンプレート
.ai/templates/ 配下:
apex_class.template.md
apex_trigger.template.md
apex_batch.template.md
apex_controller.template.md
lwc.template.md
flow.template.md
- 他
フェーズ C: 構築 (/build)
実行コマンド
/build [Asana依頼名]
フロー
C-1: 構築開始
├── タスク分解.md を読み込み
└── 実装計画を確認
↓
C-2: Asanaサブタスク作成
├── 予定時間を設定
└── 担当者を割り当て
↓
C-3: ai-agent担当タスク実行
├── .ai/rules/ のコーディングルールを読み込み
│ ├── apex-naming.md(命名規則)
│ ├── apex-documentation.md(ドキュメンテーション規則)
│ └── security-checklist.md(セキュリティチェックリスト)
├── 設計書に基づき実装(ルール準拠)
├── テストコード作成(ルール準拠)
└── コミット
↓
C-4: エンジニア担当タスク通知
└── 手動タスクをSlack通知
↓
C-5: コーディングルールチェック
├── /lint-rules 相当のチェック実行
├── 違反があれば自動修正
└── 修正後に再コミット
↓
C-6: PR作成
├── PRをGitHubに作成
└── エンジニアへSlack通知
↓
C-7: コードレビュー
├── 修正依頼 → 修正 → 再レビュー
└── 承認 → マージ
コーディングルールチェック項目(C-5)
| カテゴリ |
チェック内容 |
| 命名規則 |
クラス名(PascalCase)、メソッド名(camelCase)、変数名 |
| ドキュメンテーション |
クラス/メソッドのJavadocコメント、@description、@param、@return |
| セキュリティ |
SOQLインジェクション対策、XSS対策、with sharing、CRUD/FLSチェック |
出力物
force-app/main/default/
├── classes/
│ ├── [実装クラス].cls
│ └── [テストクラス].cls
├── triggers/
│ └── [トリガー].trigger
└── lwc/
└── [コンポーネント]/
GitHub
└── Pull Request
Asana
└── サブタスク(予定時間付き)
コミットメッセージ規約
<type>: <subject>
<body>
Refs: Asana#<task-id>
| type |
用途 |
feat |
新機能 |
fix |
バグ修正 |
refactor |
リファクタリング |
test |
テスト |
docs |
ドキュメント |
実装ガイドライン
Apex
// バルク処理を考慮
// SOQL ループ禁止、コレクション化
// CRUD/FLS/Sharing を明示的に考慮
LWC
// コロケーション(コンポーネントとテストを同一フォルダに配置)
// @wire と imperative 呼び出しを適切に使い分け
// アクセシビリティを考慮
テスト
// テスト名は日本語で明確に
// 正常系・異常系・境界値をカバー
// @isTest アノテーション使用
PRテンプレート
## 概要
<!-- 変更内容の概要 -->
## 関連タスク
- Asana: [タスク名](URL)
- 設計書: `doc_draft/basic-design/[Asana依頼名]/`
## 変更内容
- [ ] 機能1
- [ ] 機能2
## テスト
- [ ] 単体テスト
- [ ] 統合テスト
## レビュー観点
- [ ] ガバナ制限の考慮
- [ ] バルク処理対応
- [ ] CRUD/FLS/Sharing
注意事項
- 実装は必ず設計書に基づく
- テストカバレッジ75%以上を維持
- セキュリティ脆弱性を導入しない
- 既存コードを勝手に変更しない
完了条件
- 全タスクが完了
- PRがマージされる
- Asanaサブタスクが完了
全体フロー図
┌─────────────────────────────────────────────────────────────────┐
│ AIネイティブ開発フロー │
└─────────────────────────────────────────────────────────────────┘
Asanaタスク
│
▼
┌──────────────────┐
│ /requirement │ フェーズA: 要件定義
│ │
│ ・情報収集 │ Asana/Slack/GitHub MCP
│ ・requirement.md │
│ ・エンジニア承認 │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ /design │ フェーズB: 設計
│ │
│ ・概要設計書 │
│ ・機能設計書 │
│ ・詳細設計書 │
│ ・タスク分解 │
│ ・工数承認 │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ /build │ フェーズC: 構築
│ │
│ ・ルール読込 │ .ai/rules/*
│ ・実装(準拠) │
│ ・テスト作成 │
│ ・ルールチェック │ /lint-rules
│ ・PR作成 │
│ ・コードレビュー │
└────────┬─────────┘
│
▼
マージ完了
MCP連携一覧
| MCP |
/requirement |
/design |
/build |
asana |
○ |
○ |
○ |
slack |
○ |
○ |
○ |
github |
○ |
○ |
○ |
salesforce |
- |
- |
○ |
設計書の更新履歴管理
目的
設計書と要件定義書を紐づけて変更追跡を可能にし、「いつ・誰が・なぜ変更したか」を明確にする。
更新履歴セクションのフォーマット
各設計書には「更新履歴(要件定義書との紐づけ)」セクションを含める:
## 改訂履歴
### 更新履歴(要件定義書との紐づけ)
| 日付 | 更新者 | 要件定義書 | 変更内容 |
|------|--------|-----------|----------|
| 2026-01-19 | 山田太郎 | [不備解消業務可視化](../../requirement/不備解消業務可視化/requirement.html) | 初版作成 |
| 2026-02-15 | 鈴木花子 | [エラー通知機能追加](../../requirement/エラー通知機能追加/requirement.html) | エラーハンドリング追加 |
記録項目
| 項目 |
説明 |
| 日付 |
変更日(YYYY-MM-DD形式) |
| 更新者 |
変更した担当者名 |
| 要件定義書 |
変更の根拠となる要件定義書へのリンク |
| 変更内容 |
何を変更したかの概要 |
運用ルール
- 新規作成時: 要件定義書へのリンクを含め「初版作成」を記録
- 変更時: 新しい要件定義書を参照し、変更内容を追記
- リンク形式: 相対パスで要件定義書を参照
メリット
- 変更追跡が可能(いつ・誰が・なぜ)
- 要件と設計の紐づけが明確
- レビュー効率化
- 監査対応
関連ファイル
| パス |
内容 |
.claude/commands/requirement.md |
/requirement コマンド定義 |
.claude/commands/design.md |
/design コマンド定義 |
.claude/commands/approve-design.md |
/approve-design コマンド定義 |
.claude/commands/build.md |
/build コマンド定義 |
.claude/commands/lint-rules.md |
/lint-rules コマンド定義 |
.ai/rules/apex-naming.md |
Apex命名規則 |
.ai/rules/apex-documentation.md |
ドキュメンテーション規則 |
.ai/rules/security-checklist.md |
セキュリティチェックリスト |
.ai/templates/ |
設計書テンプレート群 |
更新履歴
| 日付 |
更新者 |
内容 |
| 2026-01-19 |
- |
初版作成 |
| 2026-01-21 |
- |
B-10: 設計書承認(/approve-design)を追加 |