3画面パック ② データ — CSV 9 枚の仕様¶
結論(3行)
- 表は 9 枚(+ 列名の辞書が 1 枚)。1 枚の表=1 つのタブ=1 つのテーブル。この 9 枚が唯一の正本(=本物の置き場)です
- 🔴 集計(領域ごとの合計など)は、表にしません。集計は機械の仕事。表にすると同じ事実が 2 か所に載ります
- 列名は英語、中身は日本語。
_dictionary.csvに日本語の対応表を置きます
雛形は data/ に入っています(CSV 10 枚 = 9 表 + 辞書、それに schema.sql)。
中身は ヘッダー行と、差し替え用のサンプル行だけです。🔴 サンプルはそのまま使わず、自分の会社のものに差し替えてください。
(person.csv と invoice.csv だけは、ヘッダー行のみで中身が空です)
1. 9 枚の関係¶
flowchart LR
subgraph M["マスタ(めったに変わらない)"]
AR["area<br>領域"] --> ST["stage<br>工程"]
KD["kind<br>種別 4つ"]
end
subgraph F["フロー(毎日動く)"]
CO["company<br>会社"] --> DE["deal<br>案件"]
CO --> PE["person<br>人"]
DE --> AC["activity<br>やったこと"]
DE --> IV["invoice<br>請求"]
end
subgraph S["ストック(貯まる)"]
SD["standard<br>型"]
end
ST --> SD
KD --> SD
ST --> DE
AR --> DE
DE -.->|回すと型ができる| SD
| 表 | 何を入れるか | 初期の行数 | 画面のどこに出るか |
|---|---|---|---|
area |
領域 | あなたの会社の領域の数 | PM の列、SW の行のまとまり |
stage |
工程 | 領域の中の段の合計 | PM のカードのバッジ、SW の行 |
kind |
型の種別(4 つ固定) | 4 | SW の列 |
company |
会社 | 取引先の数 | PM のカードの会社名 |
person |
人 | 0(器だけ) | どの画面にも出さない |
deal |
案件 | 動いている案件の数 | PM のカードそのもの |
standard |
型 | 工程の数 × 4 | SW の升目そのもの |
activity |
やったこと(追記のみ) | 増える一方 | PM の停滞判定に使う |
invoice |
請求 | 0 から | どの画面にも出さない(後で使う) |
_dictionary |
列名の日本語 | 参考 | 出さない |
person と invoice は、最初は空でかまいません
person は個人情報なので、器だけ用意して中身はあなたが入れます。
invoice は請求が 1 件も無いうちは空のままで、画面も動きます。
ただし ファイル自体(ヘッダー行だけの CSV)は必ず置いてください。生成器は 9 枚そろっていることを確認します。
2. 共通の決めごと¶
| 決めごと | 中身 |
|---|---|
| 文字コード | UTF-8。先頭に BOM(=文字コードの目印)を付けておくと、スプレッドシートに読ませたとき文字化けしません |
| 日付 | 必ず YYYY-MM-DD(例 2026-09-14)。2026/9/14 や 9月14日 は不可 |
| 空欄 | セルを空のままにします。- や なし と書かないでください |
| 金額 | 数字だけ。円・カンマ・¥ を入れない |
| ID | 目で見て意味が分かる形にします(下の表)。後から振り直さない |
| 行を消さない | 使わなくなった行は消さずに status を 終了 や 廃止 にします。消すと他の表からの参照が切れます |
| 列を増減しない・並べ替えない | 生成器と schema.sql が列の順番で読みます |
| セル結合・小計行を入れない | 1 行=1 件を崩さないでください |
ID の形¶
| 表 | 形 | 例 |
|---|---|---|
company |
C + 3 桁 |
C001 |
deal |
D + 3 桁 |
D001 |
area |
1 文字 | A |
stage |
領域 + 連番 | A1 |
kind |
2 文字(固定) | WF RA PR CL |
standard |
SD-<工程>-<種別> |
SD-A1-CL |
activity |
AC + 4 桁 |
AC0001 |
person |
P + 3 桁 |
P001 |
invoice |
IV + 3 桁 |
IV001 |
🔴 会社名で紐づけないでください
社名変更や表記ゆれ(「(株)」と「株式会社」)で、必ず壊れます。ID で紐づけます。
3. 表ごとの仕様¶
以下、各表の列を「意味 / 必須か / 書いてよい値 / 誰が書くか」で書きます。 列名・列の順番は、ここに書いたとおりにしてください。
3-1. area.csv — 領域¶
area_id,name_ja,alias_ja,note,status
| 列 | 意味 | 必須 | 書いてよい値 | 誰が書くか |
|---|---|---|---|---|
area_id |
領域の ID | ✅ | A、B、… 1 文字の英大文字。数は自由(雛形は 2 つ) |
経営者(最初に 1 回) |
name_ja |
領域の名前 | ✅ | 自由。短く(例 受注まで) |
経営者 |
alias_ja |
社内での呼び方 | — | 自由(例 営業) |
経営者 |
note |
この領域が何をする所か | — | 自由。1 文 | 経営者 |
status |
現役か | ✅ | 現役 / 廃止 |
経営者 |
領域は、自分の会社の言葉で決めてください
「引き合いから契約まで」「納品」「お金」のように、いま実際にやっている仕事のまとまりで切ります。
きれいな分類を作ろうとしないでください。雛形に入っている A 受注まで B 納品 は差し替え前提のサンプルです。
3-2. stage.csv — 工程¶
stage_id,area_id,seq,name_ja,start_trigger,done_condition,status
| 列 | 意味 | 必須 | 書いてよい値 | 誰が書くか |
|---|---|---|---|---|
stage_id |
工程の ID | ✅ | 領域 ID + 連番(A1) |
経営者 |
area_id |
どの領域か | ✅ | area.csv にある ID |
経営者 |
seq |
並び順 | ✅ | 数字。途中に足すときは 3.5 のような小数でよい。ID は振り直さない |
経営者 |
name_ja |
工程の名前 | ✅ | 自由。動詞で(例 見積を出す) |
経営者 |
start_trigger |
何が起きたら始まるか | — | 自由。1 文 | 経営者 |
done_condition |
何が起きたら終わりか | — | 自由。1 文。人の主観なしに判定できる形で | 経営者 |
status |
現役か | ✅ | 現役 / 廃止 |
経営者 |
工程は消さずに 廃止 にしてください
工程を消すと、その工程に紐づいた型(standard)が行き場を失って、生成器が止まります。
3-3. kind.csv — 型の種別(4 つ固定)¶
kind_id,name_ja,done_condition
この 4 行は、そのまま使ってください。増やしたり減らしたりしないでください。 SW の升目の列がこの 4 つで、「型が 1 本そろった」の定義そのものだからです。
kind_id |
name_ja |
done_condition(=埋まったと言える条件) |
|---|---|---|
WF |
ワークフロー | 起点と終点が 1 文で言える。前後に誰がいるかが書いてある |
RA |
役割分担 | 人が必ず見る箇所が名指しされている |
PR |
手順書 | 材料が書いてある。本人以外が読んで同じ順番で動ける |
CL |
チェックリスト | 合否を人の主観なしに判定できる。やってはいけないことが 1 行以上ある |
3-4. company.csv — 会社¶
company_id,name,industry,size,location,first_contact,source
| 列 | 意味 | 必須 | 書いてよい値 | 誰が書くか |
|---|---|---|---|---|
company_id |
会社の ID | ✅ | C001 から連番 |
担当者 |
name |
会社名 | ✅ | 自由 | 担当者 |
industry |
業種 | — | 自由 | 担当者 |
size |
規模 | — | 自由(例 20名) |
担当者 |
location |
所在地 | — | 自由 | 担当者 |
first_contact |
最初に接点を持った日 | — | YYYY-MM-DD |
担当者 |
source |
どこから来たか | — | 自由(例 紹介 問い合わせ) |
担当者 |
3-5. person.csv — 人(🔴 個人情報)¶
person_id,company_id,name,title,email,phone,note
| 列 | 意味 | 必須 | 書いてよい値 | 誰が書くか |
|---|---|---|---|---|
person_id |
人の ID | ✅ | P001 から連番 |
担当者 |
company_id |
どの会社の人か | — | company.csv にある ID |
担当者 |
name title email phone note |
氏名・肩書・メール・電話・備考 | — | 自由 | 担当者 |
🔴 この表の中身は、どの画面にも出しません
個人情報なので、器(ヘッダー行だけの CSV)を用意して、中身はあなたの手で入れてください。 エージェントに「この表を埋めて」と頼まないでください。空のままでも 3 画面は動きます。
3-6. deal.csv — 案件(PM のカードそのもの)¶
deal_id,company_id,name,area_id,stage_id,status,started_on,due_on,amount,paid_type,snooze_until,next_action,owner,wiki_url
| 列 | 意味 | 必須 | 書いてよい値 | 誰が書くか |
|---|---|---|---|---|
deal_id |
案件の ID | ✅ | D001 から連番。🔴 始まりから終わりまで変えない |
担当者 |
company_id |
どの会社の案件か | ✅ | company.csv にある ID |
担当者 |
name |
案件名 | ✅ | 自由。カードの見出しになります | 担当者 |
area_id |
いまどの領域にいるか | ✅ | area.csv にある ID。PM の列が決まります |
担当者 |
stage_id |
いまどの工程にいるか | ✅ | stage.csv にある ID。area_id と食い違わないこと |
担当者 |
status |
状態 | ✅ | 進行中 / 停止中 / 終了 |
担当者 |
started_on |
始まった日 | — | YYYY-MM-DD |
担当者 |
due_on |
期限 | — | YYYY-MM-DD |
担当者 |
amount |
金額 | — | 数字だけ。空でよい | 担当者 |
paid_type |
有償か | — | 無償 / 有償 / 未定 |
担当者 |
snooze_until |
🔴 「この日まで意図して放置する」と決めた日 | — | YYYY-MM-DD。空=放置の宣言なし |
担当者 |
next_action |
次の一手(次に自分がやる 1 つの動作) | — | 自由。1 文 | 担当者 |
owner |
担当 | — | 自由 | 担当者 |
wiki_url |
この案件の記録の場所 | — | URL | 担当者 |
snooze_until が、この仕組みでいちばん効く列です
「決めて止めている案件」と「忘れている案件」は別ものです。 この日まで待つと決めた案件は、警告を出しません。決めていない案件だけが警告されます。 → 判定ルールは 02_pm にあります。
area_id は stage_id から導ける、あえて重複させた列です
速く読めるように置いています。2 つがずれたら、生成器が止めます(05_build の検査 3)。
3-7. standard.csv — 型(SW の升目そのもの)¶
standard_id,stage_id,kind_id,status,artifact_url,made_by_deal_id,updated_on
| 列 | 意味 | 必須 | 書いてよい値 | 誰が書くか |
|---|---|---|---|---|
standard_id |
型の ID | ✅ | SD-<工程>-<種別>(SD-A1-CL) |
担当者 |
stage_id |
どの工程の型か | ✅ | stage.csv にある ID |
担当者 |
kind_id |
どの種別か | ✅ | WF / RA / PR / CL |
担当者 |
status |
升目の色 | ✅ | ある / 途中 / 空 の3 つだけ |
担当者 |
artifact_url |
型の本文がある場所 | — | URL。空なら升目はリンクになりません | 担当者 |
made_by_deal_id |
どの案件を回して出来た型か | — | deal.csv にある ID |
担当者 |
updated_on |
最後に触った日 | — | YYYY-MM-DD |
担当者 |
🔴 行数は「工程の数 × 4」ちょうどにします
工程が 10 なら 40 行。同じ組み合わせ(工程 × 種別)が 2 行あってはいけません。
工程を 1 つ足したら、その工程の 4 行(WF/RA/PR/CL)を 空 で追加します。
生成器はこれを数えて、合わなければ止まります。
3-8. activity.csv — やったこと(🔴 追記のみ)¶
activity_id,happened_on,deal_id,kind,note,next_action
| 列 | 意味 | 必須 | 書いてよい値 | 誰が書くか |
|---|---|---|---|---|
activity_id |
ID | ✅ | AC0001 から連番 |
担当者 |
happened_on |
いつ | ✅ | YYYY-MM-DD |
担当者 |
deal_id |
どの案件のことか | — | deal.csv にある ID |
担当者 |
kind |
何をしたか | — | 訪問 / オンライン / メール / 作業 / 連絡 / 設計 / 訂正 |
担当者 |
note |
内容 | — | 自由 | 担当者 |
next_action |
その場で決まった次の一手 | — | 自由 | 担当者 |
この表は追記のみです。後から書き換えないでください
間違えたら、行を直さずに kind が 訂正 の行を足します。
「いつ最後に触ったか」が停滞の判定に使われるので、書き換えると判定が狂います。
3-9. invoice.csv — 請求¶
invoice_id,deal_id,issued_on,due_on,paid_on,amount,tax,status
| 列 | 意味 | 必須 | 書いてよい値 | 誰が書くか |
|---|---|---|---|---|
invoice_id |
ID | ✅ | IV001 から連番 |
担当者 |
deal_id |
どの案件の請求か | ✅ | deal.csv にある ID |
担当者 |
issued_on due_on paid_on |
発行日/支払期限/入金日 | — | YYYY-MM-DD |
担当者 |
amount tax |
金額/税 | — | 数字だけ | 担当者 |
status |
状態 | ✅ | 未発行 / 発行済 / 入金済 |
担当者 |
status は「送った」ではなく「入金された」で進めます
請求書を送った時点は 発行済 です。入金済 にするのは、通帳で確認できたときだけにします。
3-10. _dictionary.csv — 列名の日本語¶
table,column,name_ja,note
英語の列名が読めない人のための対応表です。画面には出ません。 列を足したら、この表にも 1 行足してください。
4. あとで SQLite に移すとき¶
data/schema.sql をそのまま使えます。CSV のヘッダー行と、列名・順序が完全に一致しています。
sqlite3 work.db < schema.sql
🔴 取り込みで必ず踏む穴 — 空欄は NULL に変換する
スプレッドシートの空欄が空文字として入ると、「空文字という ID の行」を探しにいって、取り込みが失敗します。 空欄は NULL に変換してから入れてください。
schema.sql には、集計と検査のための ビュー(=表を作らずに計算だけする仕掛け)が 5 つ入っています。
| ビュー | 何が出るか |
|---|---|
v_matrix_area |
領域 × 種別の充足(SW の「ざっくり版」と同じ) |
v_check_area_mismatch |
deal.area_id と stage のずれ。🔴 0 行が健全 |
v_pipeline |
案件がいまどこに居るか |
v_stage_active |
現役の工程だけ |
v_stalled |
手が止まっている案件(PM の警告と同じ判定) |
次は 02_pm(案件のかんばん) です。