の導入は、多くの現場で試みられます。そして多くが、半端に埋まった状態で止まります。
この回は、どこまでやるかの線引きを扱います。結論は、データ屋の道具箱 EP.23 と同じで、生成できるものは生成し、人は生成できないものだけを書くです。
1. なぜ埋まらないのか
失敗の形はほぼ決まっています。全部を埋めようとして、途中で止まる。
- 1カタログを導入し、全テーブルの説明を書こうと決める
- 2最初の数十件は埋まる
- 3日常業務が戻ってきて止まる
- 4半端に埋まった状態が残る
- 5「埋まっていない」ことで信用されず、使われなくなる
5番目が最も損失です。中途半端なカタログは、無いより悪いことがあります。「調べても載っていない」という経験を数回すると、誰も見に行かなくなります。
表が数百あるなら、説明を書くだけで数週間かかります。そして表は増え続けます。追いつかない前提で設計しないと、始めた時点で失敗が決まっています。
2. 機械に任せられるもの
まず、人が書かなくてよいものを分けます。ここを人が書いていると、それだけで力尽きます。
| 情報 | 自動で取れるか | 腐りやすさ |
|---|---|---|
| 列の一覧と型 | 取れる | 手書きだとすぐ腐る |
| 依存関係 | 取れる(定義を解析) | 手書きだと腐る |
| 参照の頻度 | 取れる(実行履歴) | 手書きは不可能 |
| 最終更新日時 | 取れる | 手書きは不可能 |
| 主に使っている人 | 取れる(実行履歴) | 手書きだと腐る |
| なぜこの表があるか | 取れない | 腐らない |
| 扱いの注意点 | 取れない | 腐らない |
上5つは自動で取れます。しかも手で書くと必ず腐ります。ここを人が書く運用にしていると、維持できないうえに正確でもないという最悪の状態になります。
下2つだけが人の仕事です。そしてこれは腐りません。「なぜこの表を作ったか」は、その時点の判断として確定しているためです。
3. 対象を絞る
人が書く対象も、全部ではありません。参照されている表に絞ります。
-- 過去90日で参照された表を、参照者数の多い順に出すWITH refs AS ( SELECT table_name, COUNT(*) AS 参照回数, COUNT(DISTINCT user_id) AS 参照者数 FROM query_access_log WHERE accessed_at >= DATEADD(day, -90, CURRENT_DATE()) GROUP BY table_name)SELECT r.table_name AS テーブル, r.参照者数, r.参照回数, CASE WHEN r.参照者数 >= 5 THEN '説明が必要' WHEN r.参照者数 >= 2 THEN '書けるとよい' ELSE '不要' END AS 優先度FROM refs rORDER BY r.参照者数 DESC, r.参照回数 DESC;参照者数で絞るのが要点です。回数が多くても1人しか使っていない表は、その人が分かっていれば足ります。複数人が使う表こそ、説明の価値が高い。
この基準で絞ると、説明を書くべき表は思ったより少ないはずです。数百の表があっても、複数人が使っているのは数十ということが多い。それなら書けます。
4. 何を書くか
人が書く内容も絞ります。長い説明は書かれないし、読まれません。
| 項目 | 分量 | なぜ必要か |
|---|---|---|
| この表は何か | 1行 | 名前だけでは分からない |
| 何を1行としているか | 1行 | 粒度の誤解を防ぐ |
| 注意点 | 1〜3行 | 知らないと誤る点 |
| 聞く相手 | 1行 | 詳細はここへ |
| 使うべきでない場面 | 1行 | 誤用を防ぐ |
2行目が最も価値があります。「1行が何を表すか」が分からないと、集計を誤ります。「1行 = 1注文」なのか「1行 = 1商品」なのか。これを間違えると件数も金額も狂います。
3行目の注意点は、過去に誰かが誤った経験から書かれるのが理想です。「キャンセル分を含むので、除外が必要」「テストデータが混ざっている」。知らないと誤る点だけで十分です。誰かが1度誤ったなら、他の人も同じところで誤ります。その1行が、同じ失敗を何度も防ぎます。
5行目は見落とされがちですが有効です。「この表は速報値なので、確定値が必要なら別の表を見る」という一文があるだけで、誤用が防げます。何に使えるかより、何に使えないかのほうが、伝わる情報量が多いことがあります。
5. 埋まらない前提で設計する
説明がない表は必ず残ります。それを前提にした見せ方をします。
- 説明の有無で表示を分けない — 未記入も自然に見せる
- 自動で取れる情報は常に表示する — 説明が無くても価値がある
- 「説明がない」ことを責める表示にしない — 書く動機を削ぐ
- 参照者数の多い順に並べる — 重要なものが目立つ
2番目が重要です。説明が無くても、列の一覧・依存関係・参照の頻度が見えれば十分に役立ちます。「誰がよく使っているか」が分かれば、その人に聞ける。これだけでカタログの価値の半分は満たせます。
3番目も実務的です。未記入を赤く表示するような設計にすると、埋めるプレッシャーになり、内容の薄い説明が量産されます。「表の説明」という説明が並ぶ状態は、無いのと同じです。
6. 続ける仕組み
最後に、継続する形です。一斉に埋める運動ではなく、日常に組み込みます。
- 1表を新しく作るときに書く — そのときが最も分かっている
- 2誰かに聞かれたときに書く — 聞かれた内容がそのまま説明になる
- 3誤用が起きたときに注意点を追記する — 再発防止
- 4四半期に一度、参照上位の未記入を確認 — 対象を絞って
2番目が最も効率的です。質問された内容は、他の人も知りたい内容です。答えるついでに1行書けば、次から聞かれません。これは エンジニアの引き継ぎ術 EP.07 で扱った「日常の副産物として溜める」と同じ発想です。
そして ── 誰にも参照されなくなった表 ── は、説明を書く対象ではなく、消す対象です。参照の記録を見て、書くか消すかを判断してください。書くべき対象が減れば、埋まる確率が上がります。
網羅を目指すと必ず止まり、半端なカタログは無いより悪い。列の一覧・依存関係・参照頻度は自動で取れるので、人が書くのはなぜこの表があるか・注意点だけ。対象は参照者数で絞る(1人しか使っていない表は不要)。「1行が何を表すか」と「使うべきでない場面」が特に効く。そして聞かれたときに書くのが、最も続きます。
この記事の感想を教えてください
あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。