命名は「未来の自分へのメッセージ」。

結論

データ基盤で最も大事なのは、SQLでもツールでもなく「命名」。

なぜ命名が大事か

3ヶ月後の自分は「他人」

今日書いたコードを、3ヶ月後に見返す。

「これ何のテーブルだっけ…?」

あなたは今日の自分を覚えていない

AIも命名で判断する

ChatGPTにSQLを書いてもらうとき、テーブル名が手がかりになります。

# 悪い例
SELECT * FROM tbl1

# 良い例
SELECT * FROM fact_sales

AIはfact_salesを見て「売上の事実テーブルだな」と判断できる。

悪い命名の例

❌ data1
❌ test
❌ backup_20240101
❌ 田中用_売上データ
❌ final_final_v2

こういうテーブルが、3ヶ月後に「誰も触れないゴミ」になる。

良い命名規則

基本ルール

{環境}_{レイヤー}_{ドメイン}_{内容}

命名意味
prod_raw_salesforce_accounts本番・生データ・Salesforce・取引先
prod_stg_sales_orders本番・中間層・売上・注文
prod_mart_finance_monthly_revenue本番・データマート・財務・月次売上

レイヤーの定義

レイヤー役割
raw生データ(ソースそのまま)
stgステージング(クレンジング後)
int中間(結合・変換)
martデータマート(分析用)

実装のコツ

コツ1:チームで合意する

命名規則はチームで合意すること。1人で決めても守られない。

コツ2:ドキュメント化する

dbtなら、schema.ymlに定義を書く。

models:
  - name: mart_finance_monthly_revenue
    description: 月次売上のデータマート
    columns:
      - name: month
        description: 対象月(YYYY-MM形式)
      - name: revenue
        description: 売上金額(税抜き、円)

コツ3:新人テストする

新しく来た人に「このテーブル何だと思う?」と聞く。

名前だけで分かれば、良い命名。

まとめ

命名は「未来の自分へのメッセージ」。

3ヶ月後の自分が「これ何?」とならない命名を心がけましょう。