失敗しない設計ルール集(完全実務版)
① 全体設計ルール(最重要)
1. 目的を「出力テーブル」で定義する
理由
途中処理を考え始めると破綻する
ルール
- 最終的に出したい「列名・型・粒度」を先に決める
NG
- 取込 → 加工を場当たり的に追加
2. 「1クエリ1役割」に分割する
理由
修正時に影響範囲が限定できる
ルール
- 取込
- クレンジング
- 結合
- 出力
を別クエリにする
NG
- 1クエリに全処理を詰め込む
3. 中間クエリは「参照」にする
理由
重複処理・更新遅延を防ぐ
ルール
- コピー禁止
- 必ず「参照」を使用
NG
- 同じ処理を複製して使い回す
4. 自動生成ステップを信用しない
理由
環境差・データ差で壊れる
ルール
- 型変換ステップは見直す
- 不要なら削除
NG
- 生成されたまま放置
5. 列名・型は必ず明示する
理由
後工程での破綻防止
ルール
- 出力前に列名・型を固定
NG
- 自動推測任せ
② 取込・接続設計ルール
6. フォルダ取込は「関数化」前提
理由
修正が1箇所で済む
ルール
- 1ファイル処理を関数化
- フォルダは適用のみ
NG
- フォルダクエリに直接処理を書く
7. ファイル名・更新日時は必ず残す
理由
障害調査・差分確認に必須
ルール
- FileName
- ModifiedDate
を列追加
NG
- データだけ取り込む
8. ヘッダー昇格は必ず確認
理由
列ズレ事故の原因No.1
ルール
- 昇格後、列数を必ず確認
NG
- 無条件で昇格
9. 取込直後に行削除しない
理由
仕様変更時に検証不可
ルール
- まず「Raw」クエリを残す
NG
- 取込と同時に削除
③ クレンジング設計ルール
10. クレンジングは「順番」が命
正しい順
- NULL/空白統一
- 文字正規化
- 型変換
- チェック
NG
- 型変換後に文字修正
11. エラーは潰さず分離する
理由
原因追跡不可になる
ルール
- 正常データ
- エラーデータ
を別クエリ
NG
- エラーをNULLに置換
12. 主キーは必ず検証する
理由
結合事故の防止
ルール
- 重複チェッククエリを作る
NG
- 信頼して結合
13. IFの多段ネストは禁止
理由
可読性・保守性が壊滅
ルール
- 条件テーブル化
- 段階列分割
NG
- IF(IF(IF()))
④ 結合・集計設計ルール
14. 結合前後で必ず件数チェック
理由
データ欠損を即検知
ルール
- 結合前行数
- 結合後行数
を確認
NG
- 結果だけ見る
15. 多対多は設計ミスと疑う
理由
重複爆発の原因
ルール
- 粒度を揃える
- 中間テーブル作成
NG
- 強引に結合
16. 集計前に型を固定
理由
集計エラー回避
ルール
- 数値
- 日付
を明示指定
NG
- 文字列のまま集計
17. ピボットは最終工程
理由
再利用性が落ちる
ルール
- 正規化 → 出力専用ピボット
NG
- 途中でピボット
⑤ パフォーマンス設計ルール
18. 不要列は早めに削除
理由
メモリ・速度改善
ルール
- 使わない列は即削除
NG
- 最後まで残す
19. 行削除は後段に寄せる
理由
フィルタ破綻防止
ルール
- 検証後に削除
NG
- 早期に削除
20. ステップ数は気にしない
理由
可読性優先
ルール
- 意味単位で分ける
NG
- ステップ削減至上主義
⑥ 運用・保守ルール
21. クエリ命名規則を決める
例
- 00_Raw
- 10_Clean
- 20_Merge
- 90_Output
NG
- Query1, Query2
22. コメントは必ず残す
理由
引き継ぎ不能防止
ルール
- 何をしているか1行説明
23. 出力クエリだけ読み込む
理由
Excel肥大化防止
ルール
- 中間は「接続のみ」
NG
- 全部読み込み
24. VBAとは役割分担
ルール
- パワークエリ:前処理
- VBA:操作・制御
NG
- どちらかに寄せる
25. 壊れる前提で作る
理由
実務では必ず壊れる
ルール
- ログ
- チェック
- 逃げ道
を用意
⑦ 最終チェックリスト(実務用)
- 出力仕様が明確
- 役割分割できている
- 参照クエリのみ使用
- 主キー検証あり
- 件数チェックあり
- エラー分離済
- 命名規則統一
- 中間クエリ非表示
- 更新ボタン1発

