コンテンツにスキップ

3画面パック ② データ — CSV 9 枚の仕様

結論(3行)

  1. 表は 9 枚(+ 列名の辞書が 1 枚)。1 枚の表=1 つのタブ=1 つのテーブル。この 9 枚が唯一の正本(=本物の置き場)です
  2. 🔴 集計(領域ごとの合計など)は、表にしません。集計は機械の仕事。表にすると同じ事実が 2 か所に載ります
  3. 列名は英語、中身は日本語_dictionary.csv に日本語の対応表を置きます

雛形は data/ に入っています(CSV 10 枚 = 9 表 + 辞書、それに schema.sql)。 中身は ヘッダー行と、差し替え用のサンプル行だけです。🔴 サンプルはそのまま使わず、自分の会社のものに差し替えてください。person.csvinvoice.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 列名の日本語 参考 出さない

personinvoice は、最初は空でかまいません

person個人情報なので、器だけ用意して中身はあなたが入れます。 invoice は請求が 1 件も無いうちは空のままで、画面も動きます。 ただし ファイル自体(ヘッダー行だけの CSV)は必ず置いてください。生成器は 9 枚そろっていることを確認します。


2. 共通の決めごと

決めごと 中身
文字コード UTF-8。先頭に BOM(=文字コードの目印)を付けておくと、スプレッドシートに読ませたとき文字化けしません
日付 必ず YYYY-MM-DD(例 2026-09-14)。2026/9/149月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 AB、… 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_idstage_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_idstage のずれ。🔴 0 行が健全
v_pipeline 案件がいまどこに居るか
v_stage_active 現役の工程だけ
v_stalled 手が止まっている案件(PM の警告と同じ判定)

次は 02_pm(案件のかんばん) です。