メインコンテンツまでスキップ
ウォーターフォール・スウォーム

ブロックに分ける

ウォーターフォール・スウォームでは、設計図をブロックに分けてから作ります。分ける軸は「どのデータの持ち主か」です。1 つのデータの持ち主は、1 つのブロックだけです。

分け方の決まり​

  1. データの持ち主で分ける:1 つのデータの持ち主は 1 つのブロックだけです。ほかのブロックは約束の型(型のファイル)で使い、相手のコードは使いません。
  2. B01 はいつも土台と結合:殻・窓・設定・ログイン・共通の部品・動き・コア(DB・出来事の記録・旗・言葉・約束の型の道具)と、品質と結合の役(T9)を持ちます。横断のスレッドも B01 のプロジェクトに置きます。
  3. 開発のスレッドは縦に持つ:画面からコアとデータまでを 1 本で持ちます。独立した作業は、サブエージェントで同時に進めます。
  4. 共有のファイルに全員が 1 行ずつ書く形にしない:登録は「置けば集まる」形にします(下の表)。
  5. これ以上は分けない所で止める:もっと細かくすると、1 つのデータを 2 つのブロックで持つことになり、「持ち主は 1 つ」が崩れます。画面が少ないブロックでも、データの持ち主が別なら分けたままにします。

約束の型​

ブロックの間で渡すデータの型を、約束の型と呼びます。

  • 型は足すだけです。変える時は、新しい名前の型にします。
  • 持ち主は 1 つです。持ち主の無い型は作りません。
  • 型は、持ち主のブロックの Rust の contract.rs に書き、そこから画面の TypeScript の型を作ります。型が変わっていないかは、ファイルごとのハッシュで確かめます。
  • ほかのブロックは型を読むだけです。書き換えたい時は、持ち主のブロックに依頼の札で頼みます。

BeesBuild 自身の型の例は、階層とデータの型にあります。

置けば集まるコードの置き場​

ブロックごとの物は、決まった置き場に置けば、土台(B01)が自動で集めます。共有のファイルに 1 行ずつ足す必要はありません。

物置き場集め方
Rustcrates/hb-<鍵>/ワークスペースの crates/* に入る。Tauri への登録は hb-plugin.toml から作る
画面features/<鍵>/routes.tsx殻が import.meta.glob で集める。左のメニューは features/<鍵>/nav.ts から
データcrates/hb-<鍵>/migrations/コアが順に当てる。表の名前の頭は <鍵>_
言葉i18n/<鍵>.json殻が全部を読み込む。一番上のキーは <鍵>
約束の型crates/hb-<鍵>/src/contract.rspackages/contracts/<鍵>/ に TypeScript の型を作る
命令(IPC)hb_<鍵>__<命令>出来事の名前は <鍵>.<名前>
設定の点features/<鍵>/setup.tsクリアマップが集める
データの札features/<鍵>/cards.ts共有のボードの工房が集める。札に無い数はボードに出さない
通しの試験tests/e2e/<鍵>/CI が全部を流す

<鍵> は、ブロックの短い英語の名前です(例:B27 は method)。

共有のファイルと持ち場の表​

全部のブロックが使う物は、共有のファイルとして B01 が持ちます。触る時は、issue で B01 に頼みます。

共有のファイル中身
ルートの Cargo.toml・package.json・ロックファイル依存と版
tauri.conf.json と capabilities/アプリの殻の設定と権限
.github/workflows/CI とデプロイ
packages/ui/共通の部品と見た目の token
crates/hb-core/コア
i18n/common.json共通の言葉
開発ルールの元とスキルの lock全部のスレッドが読む決まり

持ち場の表は、リポジトリの全部の置き場を覆います。表に無い置き場は作りません。要る時は、全体の統括に issue で頼みます。

再利用の地図​

既存のコードがあるなら、ブロックに分ける前に読みます。新しいハイブの最初の段で、読む元のリポジトリ(自分のリポジトリと、つないだ組織のリポジトリ)を指定します。無ければ「ない」を 1 回押して、この段を飛ばします。

再利用の地図は、ブロックごとに使い回せるコードを並べた表です。1 行ごとに、元のリポジトリ・パス・commit・使い方・ライセンス・持ち主・同期の決まり・行き先のブロック・決めた人を持ちます。

使い方中身
依存する元をそのまま部品として使う
写して出どころを書くvendor/<出どころ>/<リポジトリ>/ に写し、PROVENANCE.json(リポジトリ・パス・commit・ライセンス・持ち主・同期の決まり・写した日)を添える。Rust に移した物は、元と同じ答えになるかの互換の試験を tests/compat/ に置く
形だけ学ぶコードは写さず、作りの考え方だけを使う
  • 写す物と、ライセンスの分からない物だけを、決める部屋で人が決めます。
  • 出どころの書かれていない写しは、T9 の点検で落とします。
  • 指示書には「このブロックで使い回す物」を入れます。開発の仕事は、既存のコードを読み終えてから作ります。
  • 新しい関数・型・部品を書く前に、再利用の地図を探す決まりを、全部のスレッドの指示に入れます。

波​

最初から全部のブロックを起こさず、少なく始めて足します。Geniam Time では、4 つのブロックで始め、2 日目に 4 つ足しました。

波中身
1 の波土台と、ほかのブロックが今日から使う物(ハイブ・設計図・段取り・ハーネス・統括・アカウント・エージェント・決める部屋・レビューなど)
2 の波広がり(統合・エコシステム・発信・連携・資源・計算・守り・コントロールセンター・デザインなど)
  • 波は「いつプロジェクトを作るか」だけの話です。指示書には、時間の言葉を書きません。
  • 2 の波のブロックの型を 1 の波が先に使う時は、2 の波のブロックに「型と仮の実装を最初に出す」と指示に書き、1 の波は仮の実装で先に作ります。
  • 2 の波を足す前に、全体の統括が「開いている PR の扱い」(今の形で入れてよく、そこから先は新しいブロックが持つ)を決めて、人に聞きます。

少なく分けたい時​

アカウントやスレッドの数を減らしたい時は、ブロックを合わせます。

案合わせ方
最大データの持ち主ごとに全部分ける
中近いブロックを 2 つずつ合わせる(例:レビューと統合、資源と計算)
小8 ブロック前後にまとめる(Geniam Time や Xroid Dev の大きさ)

合わせる時も、データの持ち主の表(型と持ち主)は変えません。減らすのはプロジェクトの数だけです。一つの元の割り振りを直せば、指示書は作り直せます(指示書を一つの元から作る)。

例:BeesBuild 自身の 27 のブロック​

BeesBuild は、BeesBuild 自身もウォーターフォール・スウォームで作ります。設計の時の分け方は次のとおりです。

ブロック名前波開発のスレッド
B01土台と結合15(T9 を含む)
B02プロジェクトとハイブ14
B03設計図と構想14
B04ウォーターフォール・スウォームの段取り13
B05ハーネスの接続とエンジン15
B06統括とハイブ・バス14
B07アカウント・利用枠・枠の財布・ランニングコスト16
B08BeesAgent と AI の道15
B09決める部屋と人の番13
B10レビューと PR16
B11統合・公開・みんなで作る24
B12エコシステムとお金25
B13発信・分析・再設計の輪23
B14Xroid・Geniam 連携22
B15資源(スキル・ローカルの AI・MCP・プラグイン・つなぐ)26
B16計算と保管26
B17守りと監査25
B18台帳と見張り23
B19コントロールセンターと作業場25
B20デザインの部屋と遊び25
B21開発の速さの計測とレポート17
B22仕上げの管制(最後の詰め)15
B23クリアマップ(AI と話して設定する)24
B24クラウドとドメイン(Cloudflare・AWS・GCP)24
B25ブラウザーと画面の操作25
B26共有のボード25
B27ビーズビルディング24

全部で 157 本(開発 123・統括 27・横断 7)、約束の型は 259 です。持ち主の無い型はありません。

次に読む​