Open6
Macで選択範囲のSQLをシュッとフォーマットする方法(Alfred Workflow)
やりたいこと
SQLをフォーマットしたいことが往々にしてある。例えば予約後の小文字->大文字変換。
例
- select *
+ SELECT *
RedashやMetabaseなどのBIツールにはSQLフォーマッタがついていることが多いが、インデントを直してくれても、予約語を小文字->大文字にしてくれなかったりする。
VSCodeなどのエディタで、拡張機能や矩形選択を駆使してフォーマットする方法もある。が、いちいちエディタやツールを開いたりしたくない。
理想的なのは、どこでも、どのような状況でも、選択した範囲をワンコマンドで変更できること。そうすればBIツールやエディタのみならず、SlackやGitHubのコメントでSQLを貼り付ける際にもストレスなく使うことができる。
やらないこと
- エディタやツールを開いたりしない。
- 反応速度重視。
- そのためSQLFormatter APIといったネットワークが挟まって欲しくない
- LLMの速度も現段階では及第点ではない
- 機密情報も扱うため、ローカルで完結したい
どうするか
sqlparse + Alfred Workflow自作で実現する。
sqlparse
sqlのパーサーやフォーマッターが入っている。コマンドラインもある。pythonが必要だがまあいいだろう。
Alfred Workflow
言わずと知れたmacのランチャーアプリ。
以下のようなフローのAlfred workflowを自作する。まことに簡単。
- 範囲を選択
- キーボードショートカット
- sqlparseのsqlformatコマンドを実行
- クリップボードに貼り付け
全体像
Run Scriptの中身
結果
選択した範囲がシュッとフォーマットされる。便利。
まとめ
Alfred Workflow、コマンドラインツールをクリップボードなどを経由することでより便利なインターフェースに楽に組み込めるので便利。