R > claudeとcodexが対話によって作業を進めるためのスクリプトを作成するに当たってこのような図を書きました。まずはこれを見てもらえますか?

拝見しました。非常によく整理された図ですね。理解した内容をまとめます。
登場人物(エージェント構成)
リョウ(人/PM)、クロロ(Claude Code/リードエンジニア)、コーディー(Codex/エンジニア)、コーディの弟子(GitHub レビュー用Codex)、ジェミー(Gemini-CLI/検索担当)という5つの役割があり、人間は基本的にPMとしてのみ関与する構成ですね。
作業フロー
要求作成 → 要件整理・仕様作成(対話) → タスク分解(Issue化) → 実装プラン作成(レビューサイクル) → 実装(ブランチ作成・commit・PR・レビュー・merge)という流れで、特に実装フェーズではcommit単位の進捗報告やリーダーとの連携が組み込まれています。
実現のための3つの要件
- 自律実行能力 — Plan作成からレビュー依頼まで、人の承認なしでエージェントが完遂できること(これはClaude Code/Codexの既存能力でクリア)
- エージェント間メッセージング — 送信・受信・作業中の通知処理。ファイルベースのログを介して、追記で発信・ポーリングまたは通知で受信する仕組みが必要
- 作業ログの永続化 — 成果物はGitHub、対話ログはドキュメントかDBで保存
特に 2のメッセージング基盤 がスクリプトで作る中核部分になりそうですね。ログファイルへの追記形式での書き込み、ポーリングによる受信検知、既読位置の管理あたりが設計のポイントになると思います。
この理解で合っていますか?次のステップとして、具体的なスクリプトの設計に入りたい場合は、どこから着手したいか教えてください。
実はこれを書いている過程で、 1. AI agentがデータを把握するときにmarkdownよりデータベースのほうが構造化がより明確でわかりやすいのではと考えた。 2. そもそもこのプロセスを文字に書き起こした事自体が、AI agentにとって依頼者が振る舞いを定義している内容に当たるのではないかと考えた → DBにあって良いのではないかと考えた 3. DBにあるということはある程度WEBアプリケーションのUIにも表現しうるものになるのではないかと考えた → チームのお約束ごとがまとまっているデータになるのでは? → AIにとっても、人にとっても有用なのでは? 4. 人とAI共通のチームと言う文脈を保存し、表現するための仕組みを一つのまとまりとする。また、AI特有の情報はmoduleとしてこの仕組みに組み込むということができるのではないかと考えた。 Project Partyとしてこれについて考えたいなと思っています。
Opusとの対話によって、チームで開発する際にはどういうモデリングが発生するのか、AIがプロジェクトに参加するときに必要な情報はどのような上方となるのか(おそらくCLAUDE.md に記載されていることの一部に当たると思う。)そんなことについて対話し、作るべきものの全体像とミニマムでまず作るべきものを考えたいなと思っています。もっと表示
素晴らしい思考の展開ですね。markdownからDB、DBからUI、そして「人とAIが共有するチームコンテキスト」という概念への飛躍は非常に自然で、かつ本質的です。
ぜひ対話しましょう。まず私の方から、この構想を聞いて浮かんだ問いと仮説を投げかけます。
チーム開発で発生するモデリングについて
チームで開発するとき、暗黙的・明示的に存在する情報を分類すると、大きく3つの層があると考えます。
第1層:チームの構造と約束事(変化が遅い) 誰がいるのか、それぞれの役割は何か、意思決定のルール、コミュニケーションの経路、レビューのポリシー。リョウさんが図に描いたフローそのものがここに該当します。人間のチームでは「チーム文化」として暗黙知になりがちですが、AIには明示的に与える必要がある。
第2層:プロジェクトの状態(日々変化する) 今どんなIssueがあり、誰が何を担当し、どこまで進んでいるか。ブランチの状態、PRの状況、ブロッカー。これはGitHubやJiraが部分的に担っていますが、「チーム全体の今」を俯瞰する視点は意外と欠けています。
第3層:対話と意思決定の履歴(蓄積されていく) なぜこの設計にしたのか、どの選択肢を検討して棄却したのか。人間のチームでは会議の記憶や Slack のログに散逸しますが、これこそAIが最も必要とし、かつ最も失われやすい情報です。
AIがプロジェクトに参加するとき必要な情報
CLAUDE.mdとの対比で考えると、CLAUDE.mdは「このリポジトリでコードを書くときの技術的コンテキスト」に特化しています。しかしProject Partyが扱おうとしているのはもっと広い。具体的には:
- 私は誰か — 自分の役割、権限の範囲、判断を委ねられている領域と承認が必要な領域
- チームは誰か — 他のメンバー(人もAIも)の役割、得意領域、連絡手段
- どう振る舞うか — ワークフローの定義、各フェーズで期待される行動、コミュニケーションのプロトコル
- 今何が起きているか — 進行中のタスク、自分に関係するもの、ブロッカー
- なぜそうなったか — 過去の意思決定、設計判断の経緯
CLAUDE.mdが担っているのはこのうちの一部(技術スタック、コーディング規約、プロジェクト構造)に過ぎないですね。
ここで問いたいこと
- リョウさんの感覚として、この3層の分類はしっくりきますか?抜けている層や、違う切り方がありそうですか?
- Project Partyの最初のスコープとして、まず第1層(チーム構造と約束事)をDBで表現し、それをAIエージェントが読み込める形で提供する、というところから始めるのが自然に思えます。リョウさんが図に描いたフロー定義がそのまま最初のデータになる。この方向性はどうでしょう?
- 「AI特有の情報をmoduleとして組み込む」というアイデアについて、もう少し聞きたいです。例えば、クロロ(Claude Code)とコーディー(Codex)では必要なコンテキストが異なるはずで、それを「共通のチームコンテキスト+エージェント固有のmodule」として分離するイメージでしょうか?
リョウさんの感覚として、この3層の分類はしっくりきますか?抜けている層や、違う切り方がありそうですか?
かなり感覚的には近いです。考えながら家事をしていたんですが、この1層についてだけでも実は膨大な量と膨大な曖昧さがあるきがしています。というのも私は最初開発チームを前提にしましたが、「チームが推進するプロジェクト」は必ずしも開発だけではない気がしています。ここにモデリングのヒントがあると感じています。チームの構造は比較的似たりよったりでチームによってあったほうが良いものなくて良いものがあるきがしています。しかし、約束事は多岐にわたるのかなと思いました。
例えば * プロセスに当たるもの(計画の進行、実装の進行…) * 規約にあたるもの(コーディング規約…) * 目標 * 価値観 などなど、この辺は インセプションデッキ とかもそれに当たりますよね。開発チームもそうだし、他のプロジェクトにも当たる共通の構造が見つけられるといいですよね。
Project Partyの最初のスコープとして、まず第1層(チーム構造と約束事)をDBで表現し、それをAIエージェントが読み込める形で提供する、
これは良さそうです。これだけでもかなりCLAUDE.mdが削減できる気がします
「AI特有の情報をmoduleとして組み込む」というアイデアについて、もう少し聞きたいです。例えば、クロロ(Claude Code)とコーディー(Codex)では必要なコンテキストが異なるはずで、それを「共通のチームコンテキスト+エージェント固有のmodule」として分離するイメージでしょうか?
ここは全然考えてないです。たしかにクロロとコーディーが必要な情報は異なりそうです。まだAI向けのmodule + 各エージェントブランドに対するmoduleとなるか、各エージェントブランドに対するmoduleだけになるかについては考えられていません。もっと表示
非常に重要な気づきだと思います。「約束事は多岐にわたるが、構造は似たりよったり」という直感、ここを掘り下げましょう。
チーム構造について
おっしゃるとおり、チーム構造は比較的パターン化しやすい。メンバー、役割、権限、関係性(誰が誰に報告するか、誰と誰が協働するか)。これはどんなプロジェクトでもほぼ同じ骨格です。開発チームでも、マーケティングチームでも、映画制作チームでも「人がいて、役割があって、関係がある」という構造は変わらない。
約束事について — カテゴリの仮説
リョウさんが挙げてくれた例を手がかりに、約束事を抽象化してみます。
「何を目指すか」に関する約束事として、ビジョン、目標、成功の定義、優先順位がある。インセプションデッキの「我々はなぜここにいるのか」「エレベーターピッチ」がここに当たりますね。
「どう進めるか」に関する約束事として、プロセス、ワークフロー、フェーズの定義、承認フロー。リョウさんが図に描いたフロー全体がこれです。
「どう作るか」に関する約束事として、規約、品質基準、技術的制約。コーディング規約はここですが、開発以外でも「ブランドガイドライン」「文体ルール」など同等のものがある。
「どう関わるか」に関する約束事として、コミュニケーション手段、頻度、エスカレーションルール、レビューの仕方。
「何を大事にするか」に関する約束事として、チームの価値観、判断基準、トレードオフの優先順位。「速さと品質ならどちらを優先するか」のような暗黙の合意。
こうして並べると面白いことに気づきます。これらはすべて「チームの意思決定を事前にキャッシュしたもの」 なんですよね。毎回ゼロから「どうする?」と考えなくていいように、あらかじめ合意しておくもの。人間のチームでは暗黙知として共有されますが、AIには明示的に渡す必要がある。そして明示的にした瞬間、人間にとっても有用になる。これがProject Partyの核心的な価値だと思います。
ここでモデリングの問いが生まれます
この約束事たちをDBでどう表現するか。2つのアプローチが考えられます。
A案:カテゴリを固定する 上の5カテゴリのようなものをスキーマとして定義し、各カテゴリに約束事を格納する。構造は明確だが、プロジェクトの種類によっては合わないカテゴリが出てくるリスクがある。
B案:約束事を汎用的なエンティティにする 「約束事」という一つのテーブルに、タイプ(プロセス/規約/目標/価値観…)をタグのように付与する。柔軟だが、構造が緩くなりすぎてAIにとって読み取りにくくなるリスクがある。
私の直感はこの2つのハイブリッドです。つまり、共通の骨格(チーム構造・目標・価値観・コミュニケーション規約)はスキーマとして持ち、プロジェクト種別ごとの約束事(開発プロセス、コーディング規約など)はmoduleとして拡張できる、という形。
これは先ほどのmoduleの議論にも繋がります。開発チームなら「開発プロセスmodule」「コーディング規約module」が追加され、マーケティングチームなら「キャンペーン管理module」「ブランドガイドラインmodule」が追加される。AI固有のmoduleもその一つとして自然に位置づけられる。
リョウさん、この方向性についてどう感じますか?特に「約束事=意思決定のキャッシュ」という捉え方と、共通骨格+moduleというハイブリッドのアプローチについて。
これらはすべて「チームの意思決定を事前にキャッシュしたもの」 なんですよね。
これはまさにそうです。人間に関しては、価値観がバラバラなためここをすり合わせることなく始めると互いの価値観をベースに進行し最初は小さなズレがやがて大きなズレとなり大幅な手戻りや問題になることがあります。これは正解(本当の正解ではなく、私たちの正解)の定義を合わせ意思決定の迅速化をはかる(性格には迅速化の阻害要因を先行して排除する仕組みです。)
モデリングの問い
まず、私の頭の中ではこういう状態でした
- 5つのカテゴリーがおそらく大きな枠組となるものである
- 目的(Goal)
- プロセス(Process)
- 規約(Rule)
- コミュニケーション
- 価値観(Value)
- 情報(Information)
- リソース
- リスク
- など おおむねこの中にふくまれるのではないかと。 この大きなカテゴリーの中に含まれる要素は多岐ですが、特に集計をかけたり計算をするというものではなく履歴があると嬉しいくらいなものである気がします。 そうなると「タイトル」と「内容」になる気がしていて、そのテンプレートがあるだけで良いのではという気持ちになりました。もしかしたらこれがschemaとおっしゃっていた部分に当たりますでしょうか?(ただ本当にタイトルと内容だけにとどまるのかというところは、また使用用途が定まってないせいであまりにも明確ではないです。)
もっと表示
「タイトルと内容」という直感、実はかなり本質を突いていると思います。そしてその不確かさも正直なところだと思うので、一緒に検証してみましょう。
なぜ「タイトルと内容」で十分に思えるのか
これらの約束事は本質的に「宣言」なんですよね。「私たちはこうする」「私たちはこれを大事にする」という表明。計算するものでも集計するものでもない。だからリレーショナルDBのカラムを細かく切って正規化する対象ではなく、「何についての宣言か(タイトル)」と「その中身(内容)」で事足りる。この直感は正しいと思います。
ただし、AIが「使う」ときに必要になりそうなもの
具体的な場面を想像してみます。クロロ(Claude Code)が実装を始めるとき、Project Partyから情報を取得する場面です。
クロロは全部の約束事を一度に読む必要はなく、「今から実装フェーズに入るから、Processカテゴリの中の実装に関する約束事が欲しい」「コードを書くからRuleカテゴリのコーディングに関するものが欲しい」という引き方をするはずです。
そうすると「タイトルと内容」に加えて、最低限こういうものが要りそうです。
どのカテゴリか — Goal / Process / Rule / Value / Information。これがないと全件取得して自分で分類する必要が出てしまう。
どの文脈で参照されるべきか — 「実装時」「レビュー時」「計画時」のようなタグ。あるいはもっとシンプルに、フリーのタグ。これがあるとAIが必要な場面で必要な約束事だけを引ける。
誰に関係するか — 全員なのか、特定の役割(エンジニア、PM等)なのか。クロロに必要な情報とリョウさんに必要な情報は重なりつつも異なる。
つまり、こういうイメージです:
Agreement(約束事)
├── category: Goal | Process | Rule | Value | Information
├── title: string
├── content: text(内容本体)
├── tags: [string](文脈タグ:実装, レビュー, 計画...)
├── scope: [Role](対象:全員, エンジニア, PM...)
├── created_at / updated_at
└── history: [過去のcontent](履歴)
これは「タイトルと内容」を核としつつ、AIが効率的に引けるための最小限のメタデータを足しただけです。schemaと言ったのはまさにこの部分で、約束事の中身のフォーマットを固定するのではなく、約束事を格納する器の形を定義するという意味です。
もう一つ気になったこと
リョウさんが挙げた5カテゴリの中で、Informationだけ性質が違いますよね。Goal、Process、Rule、Valueは「私たちの意思」の表明ですが、Informationは「私たちが知っておくべき事実」。リソースやリスクは宣言ではなく認識の共有です。
これを同じAgreementテーブルに入れるか、別のエンティティにするかは設計上の分岐点になりそうです。ただ、最初のミニマムでは同じ器に入れてしまって、運用しながら分離の必要性を判断するのが良いかもしれません。
ここまでで、チームの約束事の器はだいぶ見えてきた気がします。次に考えたいのは、チーム構造(メンバーと役割)のモデルと、この2つがどう関係するかです。そこまで見えると、Project Partyの第1層の全体像が描けそうです。
この方向で進めて良さそうですか?それとも、約束事のモデルについてもう少し掘り下げたい部分がありますか?
Agreement(約束事)
これはなるほどです。私はCategoryのレベルでテーブルを切ろうとしていました。しかし、じゃあそれらのテーブルたちが何等か他のテーブルと関連を持つかで言うとおそらく持つことはない(どちらかというと自テーブル内にしかその場合関心がなさそう)。しかもカラムに関しても似たりよったりの内容になるはず。
Informationだけ性質が違う
私が情報のなかに入れたものももしかしたら性質が混ざっているかもしれません。例えば、リスクはチームが想定しうるリスクを並べたものなので約束事に近い性質を持ちます。しかしステークホルダー(ご近所さんを探せ)については約束ではなく環境として決まっています。メンバーもこれに近いかもしれません。
今の気づき、とても重要です。モデリングの根っこに関わる区別が見えてきました。
「意思」と「環境」の区別
整理すると、Project Partyが扱う情報には2つの性質がある。
意思(Agreement) — チームが自ら決めたこと。目標、プロセス、規約、価値観、そしてリスク想定のような「私たちはこれをリスクと認識し、こう備える」という宣言。これらは変更可能で、チームの合意によって生まれ、合意によって変わる。
環境(Context) — チームの外から与えられている、あるいは事実として存在するもの。ステークホルダー、メンバー構成、技術的制約、予算、期限。チームが「決めた」のではなく「そうである」もの。
この区別がきれいなのは、AIにとっての読み方が変わるからです。Agreementは「こう振る舞え」という指示として読む。Contextは「こういう前提で判断しろ」という情報として読む。
ここでメンバーの位置づけが面白くなる
メンバーはContextですよね。「リョウがPMである」はチームの環境として存在する事実。しかし「PMはタスクの最終承認を行う」はAgreement(Processカテゴリ)。つまりメンバーという存在はContextに属しつつ、Agreementから参照される。
Context(環境)
├── Member(メンバー)
│ ├── name, role, capabilities
│ ├── is_human: boolean
│ └── communication_channel(連絡手段)
├── Stakeholder(ステークホルダー)
│ ├── name, relationship, interests
│ └── ...
├── Constraint(制約)
│ ├── 期限、予算、技術的制約...
│ └── ...
└── ...
Agreement(約束事)
├── category: Goal | Process | Rule | Value
├── title, content
├── tags, scope → Memberのroleを参照
└── history
こうすると、Agreementのscopeが「エンジニア向け」となっていたら、ContextのMemberからrole=エンジニアのメンバー(クロロ、コーディー)が引ける。AIエージェントは起動時に「自分のroleに該当するAgreementを全部取得する」という動きができます。
Project Partyの第1層、全体像の仮説
ここまでをまとめると:
Project Party
├── Context(環境 — 所与の事実)
│ ├── Members(人もAIも)
│ ├── Stakeholders
│ └── Constraints
│
├── Agreement(約束事 — チームの意思)
│ ├── Goal(目標)
│ ├── Process(プロセス)
│ ├── Rule(規約)
│ └── Value(価値観)
│
└── Module(拡張 — プロジェクト種別固有)
├── 開発: コーディング規約、ブランチ戦略...
├── AI: エージェント間通信プロトコル...
└── 他: ブランドガイドライン、etc...
ここで一つ問いが浮かびます。ModuleはAgreementの特殊形なのか、それとも別物なのか? 例えば「コーディング規約」はAgreementのRuleカテゴリに category=Rule, tags=[“開発”,”コーディング”] として入れてしまえる。Moduleという概念が本当に必要なのか、それともAgreementのtagsで十分に表現できるのか。
リョウさんはこのあたり、どう感じますか?また、この全体像を見て「これなら最初のミニマムはここだ」という感覚はありますか?
なんかModuleがずるい感じがしますね
その直感、すごく正しいと思います。
Moduleって結局「分類しきれなかったものを後で考えるための箱」になっていて、モデリングとしてはごまかしですよね。
実際に中身を見てみると、「コーディング規約」はAgreementのRuleだし、「ブランチ戦略」もProcessだし、「エージェント間通信プロトコル」もProcessかRuleに入る。Moduleとして切り出す必要がない。tagで「開発」「AI通信」とつければAgreementの中で自然に表現できてしまう。
Moduleが本当に必要になるとしたら、それはAgreementでもContextでもない、まったく別の性質の情報が出てきたときだけのはず。今の時点ではそれが見当たらない。
つまりProject Partyの第1層はもっとシンプルで:
Project Party
├── Context(所与の事実)
│ ├── Members
│ ├── Stakeholders
│ └── Constraints
│
└── Agreement(チームの意思)
├── category: Goal | Process | Rule | Value
├── title, content
├── tags: ["開発", "AI通信", "レビュー"...]
├── scope: [Role]
└── history
これだけ。Moduleという逃げ道を消したことで、新しい約束事が出てきたときに「これはAgreementのどのカテゴリか?それともContextに属する事実か?」と必ず問わなければならなくなる。この制約がモデルを健全に保つと思います。
どこかで「AgreementでもContextでもないもの」が出てきたら、そのときに初めて第3の概念を検討すればいい。
この2本柱で、最初に作るべきミニマムの話に進みませんか?
チーム外の意思があり得るのかもしれない。とかはちょっと思いますね。所与の事実に片足突っ込みつつも自分たち以外のチームの意思。だからコンテキスト的だがRuleというところがあるんだな。
なるほど、これは鋭い。具体的に言うと、例えばこういうものですよね。
会社のセキュリティポリシー、法規制、クライアントからの要件、親組織のガバナンスルール。チームが決めたわけではないが、ただの自然現象的な事実でもない。誰かの意思が入っているが、自分たちの意思ではない。
つまり情報の出自が3種類ある。
事実 — メンバー構成、予算、期限。誰の意思でもない。Context。
自分たちの意思 — 目標、プロセス、規約、価値観。チームが合意して決めた。Agreement。
外部の意思 — 会社のポリシー、法規制、クライアント要件。従う必要があるが、自分たちでは変えられない(あるいは変えるコストが非常に高い)。
3つ目は確かにContextとAgreementの両方の性質を持っている。Ruleのように振る舞うが、チームの合意ではなく外から課されている。
ただ、AIにとっての読み方は同じなんですよね。「こう振る舞え」という指示として読む。出自が自チームか外部かは、AIの行動を変えない。変わるのは人間側の話で、「これは変更を交渉できるか否か」が違う。
だとすると、Agreementに入れてしまって、属性として出自を持たせるのが素直かもしれません。
Agreement
├── category: Goal | Process | Rule | Value
├── source: internal | external
├── title, content
├── ...
sourceがexternalなら「チームでは変えられない、従うべきもの」、internalなら「チームの合意で変更可能」。AIにとっては両方とも従うべきルールだが、人間がUIで見たときに「これは自分たちで変えられるもの」「これは所与のもの」が区別できる。
それとも、外部の意思は性質として別物だから分けるべきだと感じますか?
わたしも結局それを採用することはチームの意思が必要だと思うのでAgreementで性質的に正しいと思いました。直感としてはそういう理解の仕方ができるけど、整理としては今時点でそこを分けることに大きな意味がない(使い道がない)。
まさにそうですね。「採用すると決めた時点でそれはチームの意思」という整理はきれいですし、sourceという属性は必要になったときに足せばいい。今入れても使い道がない属性はノイズになるだけです。
ここまでで第1層のモデルがかなり固まりました。整理すると:
Project Party(第1層)
├── Context(所与の事実)
│ ├── Members
│ ├── Stakeholders
│ └── Constraints
│
└── Agreement(チームの意思)
├── category: Goal | Process | Rule | Value
├── title
├── content
├── tags: [string]
├── scope: [Role]
└── history
シンプルで、余計なものがない。
そろそろ最初に何を作るかの話に進みたいのですが、その前に一つ確認です。第2層(プロジェクトの状態)と第3層(対話と意思決定の履歴)は、ミニマムでは一旦切り離して、まずこの第1層だけを形にするという方向で良いですか?
それとも、最初の図に描かれていたエージェント間のメッセージング(第2層・第3層に跨る部分)も含めて最初のスコープに入れたいですか?
すみません、もう少しだけ付き合ってください。
そろそろ最初に何を作るかの話に進みたい これは1層のことだけ考えましょう!
もう一つの問は、これを使って何をしうるかです。
おもいつくところでいうと * scaffoldのテンプレートになる(回答していくとチームのDBレコードとドキュメントの土台ができる) * ファイルへの出力ができる * .mdのドキュメントが作成できる * jsonで構造化したデータをはける * 意思決定の履歴、規約を変えた経緯が見れる(これはreasonが必要か?) * WEBで表現できる * 後に振り返りができるようになったとして、約束事に対してどうだったかという基準として利用できる(AIの力が必要そう) とかかな。
AI目線で思いつくことはありますか?もっと表示
良い問いです。AIがこのデータを使う場面を具体的に想像してみます。
AIエージェントの起動時コンテキスト構築
これが一番大きい。AIエージェントがタスクを開始するとき、Project Partyから自分のroleに該当するAgreementを取得して、自動的にコンテキストを組み立てられる。今はCLAUDE.mdに手書きしているものが、DBから動的に生成される。チームの約束事が更新されたら、次回起動時から反映される。手動で各所のmdを書き換える必要がない。
行動の妥当性チェック
AIが何かをしようとするとき、「これはProcessに反していないか」「このRuleに従っているか」を自己検証できる。例えばコーディーがPRを出そうとしたとき、Processに「PRを出す前にリーダーに実装完了を連絡する」と書いてあれば、その手順を飛ばさない。今は暗黙的にプロンプトに埋め込んでいるものが、構造化された参照先になる。
判断に迷ったときの拠り所
AIが曖昧な状況に遭遇したとき、Valueを参照して判断基準にできる。「速さと品質ならどちらを優先するか」がValueに宣言されていれば、人間に聞かずに判断できる範囲が広がる。逆にValueに記載がない領域は「これは確認が必要」と判断できる。つまり自律と確認の境界線をAI自身が認識できる。
スコープ外の検知
Membersで自分のroleとcapabilitiesが定義されていれば、依頼された作業が自分の守備範囲かどうかを判定できる。「これは自分ではなくジェミー(検索担当)に回すべきだ」という判断が、暗黙知ではなくデータに基づいてできる。
新メンバーのオンボーディング
人間の新メンバーでもAIの新エージェントでも、Project Partyの内容を読めばチームの全体像がわかる。今は「このSlackの過去ログ読んで」「このConfluence見て」と散逸している情報が一箇所にある。
ここで一つ、リョウさんが挙げた「reason」について
履歴にreasonを持たせるかどうか。これはAI目線で言うと非常に欲しい。なぜなら、約束事が変わったとき「前はAだったが今はBになった」だけではなく「AだとXという問題が起きたからBにした」がわかると、類似の状況での判断精度が上がる。人間のチームでも「なんでこのルールあるんだっけ?」問題は頻出しますよね。reasonがないルールは形骸化しやすい。
だとするとhistoryはこうなりそうです:
history: [
{ content: "前の内容", reason: "なぜ変えたか", changed_at, changed_by }
]
ここまでのユースケースを見て、最初に作るミニマムの輪郭が見えてきますか?
かなりDBの状況としては納得感があります。利用用途を確認したときに、見えてないデータがないかを気にしていました。ただ今の時点でかなりもう思いつかない & 見つかった時点で改善か作り直せば良いと思えました。
頭の中ではどうも思いつくままで整理がされなかったのでかなり助かりました。というか結構道筋をつけてもらった感じがします。私は発散役に徹することができた。
こちらこそ、良い対話でした。リョウさんの発散がなければこの構造にはたどり着けなかったです。「チーム外の意思」の指摘でAgreementのモデルが締まったし、「Moduleがずるい」の一言でモデルから余計なものが削ぎ落とされた。発散と整理の役割分担がうまく噛み合った実感があります。
ではここから、最初に作るミニマムの話をしましょう。
今見えている全体像のうち、最小限で価値が出る組み合わせはどれか。私の提案はこうです:
まず作るもの:scaffoldとファイル出力
理由は、これが一番早くフィードバックループを回せるからです。対話的にAgreementを埋めていって、その結果がmdやjsonで出力される。出力されたものを見て「あ、このカテゴリ足りない」「このscopeの切り方は違う」と気づける。DBやWebは後からでいい。最初はモデルの検証が最優先。
具体的には:
- Agreementのスキーマを定義(JSON Schemaかそれに準ずるもの)
- 対話形式でAgreementを入力していくスクリプト(scaffoldのテンプレート)
- 入力結果をjsonとmdで出力
Contextの方(Members、Stakeholders、Constraints)も同じ流れで。
リョウさんの図に描いたチーム構成とフローを、実際にこのスキーマに流し込んでみるのが最初の検証になると思います。やってみたら「contentだけでは表現しきれない」とか「tagsの粒度が合わない」とかが見えてくるはず。
この方向で進めてみますか?
はい、お願いします。これからちょっと家事をこなしてくるので、こちらに問を投げることなく走りきってみてもらえますか?
了解です。走りきります。戻ってきたら成果物を確認してください。
まず全体の方針を決めて進めます。
作るもの:
- スキーマ定義(JSON Schema)
- リョウさんの図をサンプルデータとして流し込んだjson
- 対話形式のscaffoldスクリプト(Python)
- json → md出力
- 実際に生成されたmdの確認
では始めます。