「3時間読んでも何も分からないコード」に遭遇したことはありませんか?
- 条件がどこで追加されているか分からない
- SQLがどの形で実行されるのか見えない
- 触るのが怖い
そんなスパゲッティコードは、読む対象ではなく分解する対象です。
そして今は、その分解をAIと一緒にやる時代です。
この記事の対象読者
- レガシーコードの調査・改修を任されたエンジニア
- SQLが文字列連結で組まれているコードに苦しんでいる人
- 「コードは読めるが挙動が分からない」と感じている人
想定スキル:
- 基本的なプログラミング知識
- SQLの基礎理解
この記事を読むとできるようになること
- AIを使ってスパゲッティコードを分解・整理できる
- 条件分岐を構造として理解できる
- SQLを再構築して説明できる
- AIの出力を鵜呑みにせず検証できる
Before / After
Before:
- コードを読んでも全体像が見えない
- 条件の抜け漏れが怖い
- 修正の影響範囲が分からない
After:
- 条件一覧で挙動を把握できる
- SQLを再構築して説明できる
- 変更の影響範囲を予測できる
サンプルコード(典型的な地獄)
StringBuilder sql = new StringBuilder();
sql.append("SELECT * FROM sales WHERE 1=1 ");
if (startDate != null && endDate != null) {
sql.append("AND sale_date BETWEEN ? AND ? ");
}
if (customerId != null) {
sql.append("AND customer_id = ? ");
}
if ("A".equals(type)) {
sql.append("AND category = 'A' ");
} else if ("B".equals(type)) {
sql.append("AND category = 'B' ");
}
戦略:AIで「読む」のではなく「分解する」
重要なのはこれです:
👉 AIは読解ツールではなく、分解・整理ツールとして使う
全体フロー(4ステップ)
- 構造を分解する
- 条件を抽出する
- データ構造を整理する
- SQLを再構築する
Step1:構造を分解する(AIの得意領域)
目的
「どこで何をしているか」を把握する
AIへの指示例
このコードからSQL生成に関係する処理だけ抽出して整理して
成果物
- SQL生成箇所の一覧
- 入力パラメータ一覧
ポイント
👉 人間は読むな。AIに切り出させる
Step2:条件を抽出する(最重要)
目的
挙動を決める条件を完全に把握する
AIへの指示例
このコードからWhere句に影響する条件をすべて列挙して
出力イメージ(理想)
| 条件 | 内容 | 発生条件 |
|---|---|---|
| sale_date BETWEEN ? AND ? | 日付範囲 | 日付あり |
| customer_id = ? | 顧客指定 | IDあり |
| category = 'A' | カテゴリA | type=A |
ポイント
👉 コードではなく「条件の集合」に変換する
Step3:データ構造を整理する
目的
どのデータを扱っているかを把握する
AIへの指示例
このSQLで使用されているテーブルとカラムを整理して
成果物
- 使用テーブル一覧
- JOIN構造
- 主要カラム
ポイント
👉 Whereだけでなく「データの出どころ」も見る
Step4:SQLを再構築する
目的
最終的に実行されるSQLを可視化する
AIへの指示例
このコードから最終的に実行されるSQLを再構築して
ポイント
👉 コード → SQL に変換することで理解できる
⚠️ 最重要:AIは間違える
AIを使う上で一番重要な話です。
よくある誤り
- 条件を勝手に補完する
- NULL分岐を落とす
- 実行順序を誤る
必ずやること
- 実行ログと比較する
- DB結果と照合する
- 条件の抜け漏れを確認する
AI活用の原則
👉 AI = 仮説生成装置
- 分解はAIにやらせる
- 判断は人間がやる
- 正しさは実行結果で確認する
まとめ
スパゲッティコードは読むものではありません。
- 分解する
- 可視化する
- 検証する
そしてその分解は、AIと一緒にやると一気に楽になります。