SQLフォーマッターのイメージ

「このクエリ、密すぎて読めない……」

運用中のシステムから吐き出された、一行に固まった巨大な SQL。
あるいは、複雑な JOIN が何層にも重なって迷宮のようになったストアドプロシージャ。
「どこで条件が分岐しているの?」「この括弧、どこで閉じてる?」と、画面を睨みつけたことはありませんか?

コードが汚いと、ミスも増えます。そして何より、開発のモチベーションが削がれてしまいますよね。

魔法のように、SQL に「呼吸」をさせる

そんな溜まったストレスを、一瞬で解消するために。
SQLフォーマッター は、あなたの書いた(あるいはどこかからコピーしてきた)SQL を、誰が見ても美しい構造へと書き換えます。

インデントを整え、予約語を際立たせ、複雑なクエリに「読みやすさ」という命を吹き込みます。
PostgreSQL, MySQL, BigQuery など、主要なデータベースの構文(ダイアレクト)に合わせた最適な整形が可能です。

SQLを整形する手順

ログやDBクライアントからコピーしたSQLは、改行やインデントが崩れていることがよくあります。
まずはそのまま貼り付けて、整形結果を確認しましょう。

  1. 整形したいSQLをコピーする。
  2. SQLフォーマッター に貼り付ける。
  3. PostgreSQL、MySQL、BigQueryなど、利用しているSQL方言を選ぶ。
  4. インデントや大文字小文字のスタイルを確認する。
  5. 整形後のSQLをレビュー、調査、ドキュメントに使う。

たとえば次のような一行SQLがあるとします。

select users.id,users.name,count(orders.id) from users left join orders on users.id=orders.user_id where users.deleted_at is null group by users.id,users.name order by users.id desc;

整形すると、JOIN、WHERE、GROUP BY、ORDER BYの境界が見えやすくなります。

SELECT
  users.id,
  users.name,
  COUNT(orders.id)
FROM users
LEFT JOIN orders ON users.id = orders.user_id
WHERE users.deleted_at IS NULL
GROUP BY
  users.id,
  users.name
ORDER BY users.id DESC;

見た目が整うだけで、条件の抜け、JOINの向き、集計単位の誤りに気づきやすくなります。

SQLレビューで見るべきポイント

SQLを整形したあとは、次の点を確認するとレビューの質が上がります。

  • WHERE 条件が意図通りか
  • JOIN の条件が不足していないか
  • LEFT JOININNER JOIN の使い分けが正しいか
  • GROUP BY の粒度が期待通りか
  • ORDER BYLIMIT が必要な場面で指定されているか
  • サブクエリやCTEの責務が分かりやすいか

とくにログから拾ったSQLは、プレースホルダーが展開済みで長くなりがちです。
整形してから読むだけで、調査時間をかなり減らせます。

「セキュリティ」という、譲れないこだわり

外部の整形サイトを使うとき、一番不安なのは「このクエリ、サーバーに保存されてないかな?」ということではないでしょうか。
顧客データに関わるクエリや、機密性の高いロジックが含まれている場合、それは重大なリスクになります。

DevToolKits のフォーマッターは、「すべての整形をあなたのブラウザの中だけで」 行います。
ネットワーク通信は一切発生しません。クエリの中身が、あなたの PC の外に出ることはありません。プロフェッショナルな現場でも、安心して使い倒してください。

よくある質問

MySQLやPostgreSQLのSQLに対応していますか?

はい。主要なSQL方言に合わせて整形できます。
完全に方言固有の構文が含まれる場合は、整形後に実行前の確認を行ってください。

整形するとSQLの意味は変わりますか?

通常、整形は空白、改行、インデント、大文字小文字を調整する処理です。
ただし、実行前には必ず元のSQLと意図が変わっていないか確認するのが安全です。

機密データを含むSQLを貼っても大丈夫ですか?

DevToolKitsではブラウザ内で整形します。
それでも社内ルールがある場合は、顧客名やトークンなどをマスクしてから使うとより安心です。

まとめ

美しい SQL は、美しいデータベース設計の第一歩です。
「とりあえず動く」から「誰もがひと目で理解できる」へ。
ツールの力で、あなたのクエリをもっと誇れるものに変えていきましょう。デバッグの時間も、きっと半分になるはずです。