MySQL Workbenchでタブをスペース4つに設定する方法
要約: MySQL Workbenchでタブ入力をスペース4つに変換するIndentation設定の方法をまとめます。すでにタブが入っているSQLファイルをexpandで一括変換する方法や、.editorconfigでチームのルールを固定する方法、diff・blameへの影響についても併せて解説します。

概要
SQLスクリプトを複数人で管理する場合、インデントのルールを揃えることが重要です。タブとスペースが混在すると、コードの整列が崩れ、Gitのdiffで不要な変更が多く発生することがあります。
開発環境では、タブの代わりにスペース4つを使うポリシーがよく採用されます。MySQL Workbenchもバージョン6.2.4以降、タブ入力をスペースに変換する設定を提供しています。
設定
MySQL Workbenchでタブをスペースに変えるには、Preferencesメニューに移動します。
1Edit -> Preferences

PreferencesウィンドウでGeneral Editors項目を選択したあと、Indentation設定を変更します。
1General Editors -> Indentation
2
3Tab key inserts spaces instead of tabs: チェック
4Indent width: 4
5Tab width: 4

設定を保存したあとSQL編集画面でタブキーを入力すると、タブ文字ではなくスペース4つが入力されます。すぐに反映されない場合は、開いている編集画面を閉じて再度開くか、MySQL Workbenchを再起動してください。
プロシージャエディタでは設定が同じように適用されないことがあります。この場合はSQL編集画面で記述したあとプロシージャに反映するか、別のエディタでフォーマットを整えてから貼り付ける方法で対応します。
参考ドキュメント: MySQL Workbench General Editors Preferences
すでにタブが入っているファイルを整理する
この設定は今後入力するタブにのみ適用されます。すでに保存されているSQLファイル内のタブ文字はそのまま残ります。
コマンドラインで一括変換するにはexpandを使用します。
1# ファイル1つを変換
2expand -t 4 old.sql > new.sql
3
4# ディレクトリ全体を変換(実行前にバックアップを推奨)
5find . -name "*.sql" -exec bash -c 'expand -t 4 "$1" > "$1.tmp" && mv "$1.tmp" "$1"' _ {} \;
Windowsで作業する場合は、VS Codeでファイルを開き、コマンドパレットからConvert Indentation to Spacesを実行する方法もあります。
.editorconfigでチームのルールを固定する
WorkbenchのPreferencesはそのPCのみに適用されます。チームメンバーごとに使うエディタが異なる場合は、リポジトリのルートに.editorconfigを置くほうが確実です。
1# .editorconfig
2root = true
3
4[*.sql]
5indent_style = space
6indent_size = 4
7end_of_line = lf
8insert_final_newline = true
9trim_trailing_whitespace = true
VS Code、IntelliJ、Vimなど、ほとんどのエディタがこのファイルを認識します。ただし、MySQL Workbenchは**.editorconfig**を読み込みません。 Workbench側は前述のPreferences設定で別途合わせる必要があります。
インデントがdiffに与える影響
タブとスペースが混在すると、ロジックはそのままなのにインデントだけが変わった行がdiffに大量に含まれてしまいます。レビュー時に実際の変更点が埋もれてしまい、git blameも見当違いのコミットを指すようになります。
すでに混在してしまったファイルを整理する場合は、インデント整理のみを行うコミットを分離するほうが良いです。機能変更と混ざるとレビューが難しくなります。
1git commit -m "chore: SQL 들여쓰기를 공백 4칸으로 통일"
空白の変更を無視して見たい場合は、以下のオプションを使用します。
1# 空白の変更を無視したdiff
2git diff -w
3
4# 空白の変更を無視したblame
5git blame -w