Lattice 🕸️
Lattice は、AIエージェントと人間のための協調タスク管理フレームワークです。複雑なプロジェクトを管理可能な「格子」状の構造に分解し、依存関係を明確にし、進捗を追跡します。
いつ使うか
- 複数人(または複数のAIエージェント)が関わるプロジェクトの計画
- タスク間の複雑な依存関係を管理する必要がある場合
- AIエージェントに明確なコンテキストを与えて自律的に作業させたい場合
- プロジェクトの進捗を可視化し、誰が何をしているかを把握したい場合
コアコンセプト
ラティス構造
プロジェクトは「ラティス」と呼ばれる格子状の構造で表現されます。各ノードはタスクを表し、エッジは依存関係を表します。
マイルストーンとスプリント
- マイルストーン: 大きな目標 (例: "MVPのリリース")
- スプリント: マイルストーンを達成するための短い反復期間 (例: 1週間)
タスクの状態
backlog: 未着手ready: 着手可能 (依存関係が解決済み)in_progress: 作業中in_review: レビュー中done: 完了blocked: ブロック中
役割
owner: タスクの責任者 (人間またはエージェント)reviewer: レビュー担当者contributor: 貢献者
クイックスタート
1. プロジェクトフォルダ構造
project/
├── .lattice/
│ ├── config.yaml # プロジェクト設定
│ ├── skills/ # AIエージェントのスキル定義
│ ├── templates/ # タスクテンプレート
│ └── state/ # 現在の状態
├── sprints/
│ ├── sprint-001.md
│ └── sprint-002.md
├── milestones/
│ ├── mvp.md
│ └── v2.md
└── tasks/
├── TASK-001-setup-infra.md
└── TASK-002-auth-system.md
2. 設定ファイル (.lattice/config.yaml)
name: "MyProject"
version: "1.0.0"
team:
- name: "Alice (Human)"
role: "Product Manager"
- name: "Claude-Codex"
role: "AI Agent - Backend"
- name: "Cursor-Dev"
role: "AI Agent - Frontend"
milestones:
- id: M1
name: "MVP"
deadline: "2024-06-30"
- id: M2
name: "v2 with Analytics"
deadline: "2024-09-30"
3. タスク定義 (TASK-001-setup-infra.md)
---
id: TASK-001
title: インフラストラクチャのセットアップ
description: AWSでECSクラスターとRDSデータベースをプロビジョニングします。
milestone: M1
sprint: 1
status: backlog
owner: Claude-Codex
reviewer: Alice
dependencies:
- TASK-000 (前提: プロジェクトリポジトリ)
acceptance_criteria:
- ECSクラスターが作成され、サービスをデプロイできること
- RDSインスタンスが起動し、接続可能であること
- Terraformスクリプトが `terraform apply` でエラーなく完了すること
tags:
- infrastructure
- terraform
- aws
---
## コンテキスト
このタスクは、プロジェクトの実行環境を整える最初のステップです。
## 指示 (AIエージェント向け)
1. ```terraform/infra/``` ディレクトリにある Terraform スクリプトを確認してください。
2. `terraform init` を実行し、プロバイダーを初期化してください。
3. `terraform plan` で変更内容をレビューしてください。
4. `terraform apply` でインフラをプロビジョニングしてください。
5. 完了後、結果をこのファイルに記録し、ステータスを `done` に更新してください。
## メモ
- AWS_ACCESS_KEY_ID と AWS_SECRET_ACCESS_KEY は環境変数に設定済みです。
- RDSのパスワードは AWS Secrets Manager に保存されます。
4. スプリント計画 (sprints/sprint-001.md)
# Sprint 001: Setup & Core Auth
**期間:** 2024-06-03 〜 2024-06-09
**目標:** インフラをセットアップし、認証システムの基本部分を実装する。
## タスク
| ID | タイトル | 担当者 | 状態 |
|----|----------|--------|------|
| TASK-001 | インフラのセットアップ | Claude-Codex | in_progress |
| TASK-002 | 認証システムの実装 | Claude-Codex | backlog |
| TASK-003 | フロントエンドログインページ | Cursor-Dev | backlog |
| TASK-004 | ユーザーストーリーマッピング | Alice | done |
## 振り返り
(スプリント終了後記入)
エージェントへのベストプラクティス
タスクの開始
statusをin_progressに変更します。- 依存関係がすべて
doneになっていることを確認します。 - タスクファイルの指示に従って実装を開始します。
- ブロッカーが発生した場合、ステータスを
blockedに設定し、理由をnotesセクションに記載します。
タスクの完了
- 受け入れ基準をすべて満たしていることを確認します。
- コードレビューが必要な場合は
in_reviewに設定します。 - レビューが通過したら、
doneに設定します。 - タスクファイルの下部に
## 完了ログセクションを追加し、実行した内容と結果を記録します。
依存関係の管理
- タスクを開始する前に、
dependenciesリストを確認します。 - 依存関係が
blockedまたはin_progressの場合は、そのタスクの完了を待つか、代替手段を検討します。 - 依存関係の変更が必要な場合は、
beforeアクションで調整します。
例: AIエージェントの対話
人間: Latticeを使ってプロジェクトを計画したい。
エージェント: 了解しました。まず `.lattice/config.yaml` を作成しましょう。
プロジェクト名、チームメンバー、マイルストーンを定義してください。
人間: プロジェクト名は MyApp、チームは私と二人のAIエージェント、マイルストーンはMVPとv2。
エージェント: 設定ファイルを作成しました。次に最初のスプリントを計画しましょう。
スプリントの目標は何ですか?
人間: 認証とプロフィールページを実装したい。
エージェント: では、スプリント1にTASK-001 (認証バックエンド) と TASK-002 (プロフィールフロントエンド) を割り当てます。
依存関係を考慮すると、TASK-002はTASK-001に依存しますね。
統合
Lattice は他のフレームワークと組み合わせて使用できます。
- Flyte (データパイプライン): Lattice でタスクを管理し、Flyte でデータ処理パイプラインを実行します。
- Dagster (データオーケストレーション): データエンジニアリングプロジェクトの計画に Lattice を使用し、実行に Dagster を使用します。
- Prefect (ワークフロー管理): 同様に、タスクの依存関係を Lattice で定義し、実行を Prefect に委譲します。
アンチパターン
- 過剰なタスク分割: 1つのタスクが小さすぎると管理が煩雑になります。適切な粒度 (1人日〜1週間) を維持します。
- 依存関係の無視: タスクをランダムに開始せず、必ず依存関係を確認します。
- 状態の更新漏れ: タスクの状態は常に最新に保ちます。古い情報は混乱の元です。
- コンテキストの不足: タスク定義には十分なコンテキストを含め、エージェントが迷わないようにします。
Lattice は、混沌としたプロジェクトに秩序をもたらします。それは、蜘蛛の巣のように繊細で、かつ強靭な構造で、全員が同じ方向に進むことを可能にします。 🕸️