タブとスペースを相互変換。インデント幅指定可能
テキスト内のタブ文字とスペースを相互変換する無料ツールです。チームのコーディング規約に合わせてインデントを統一する場面で活躍します。
インデントにタブを使うかスペースを使うかは、プログラミングの世界で長年議論されているテーマです。PythonはPEP8でスペース4つを推奨、GoはタブがデフォルトなどI言語によって慣習が異なります。このツールでは2スペース、4スペース、8スペースとタブの相互変換に対応しています。
コード全体のインデントを一括で変換できるため、他の開発者から受け取ったコードのインデントを自分のエディタ設定に合わせる際に便利です。
ソースコードの行頭をどれだけ字下げするか(インデント)を表現する方法には、タブ文字(Tab)を使う流儀とスペース(空白文字)を使う流儀があります。タブは1文字でひとつの階層を表し、表示幅はエディタの設定で2・4・8文字などに変えられます。一方スペースは「半角空白を何個並べるか」で字下げを表すため、どの環境でも同じ見た目になりやすいのが特徴です。この違いはコードの動作には影響しませんが、見た目やファイルサイズ、差分(diff)の出方に関わるため、どちらかに統一するのが一般的です。
変換が必要になる場面は大きく2つあります。ひとつはチームでコーディング規約を統一するときです。ある人はタブ、ある人はスペースでコミットしてしまうと、見た目の階層がずれたりGitの差分が無意味に大きくなったりします。もうひとつは、Webサイトやドキュメントからコードを貼り付けたときのインデントのズレ修正です。コピー元がタブ、貼り付け先がスペース前提だと階層が崩れて見えるため、本ツールでまとめて変換すると整います。
このツールでは、Tab→Spaceでタブ文字を指定したスペース数(2・4・8から選択、初期値は4)に置き換え、Space→Tabで指定数ぶんの連続したスペースをタブ文字に戻します。コード全体を貼り付けて一括で変換でき、処理はすべてお使いのブラウザ内で完結します。入力したコードがサーバーへ送信されることはないため、社内コードなど機密性の高いソースのインデント変換も安心して行えます。
インデントにタブとスペースのどちらを使い、幅をいくつにするかは、言語ごとに広く知られた慣習があります。代表的なものを下表にまとめました。プロジェクトに既存のコードがある場合は、まずそのスタイルやエディタ設定(.editorconfigなど)に合わせるのが基本です。
| 言語 | 一般的なインデント | 本ツールでの設定例 |
|---|---|---|
| Python | スペース4 | Tab→Space/スペース数4(PEP8準拠) |
| JavaScript | スペース2が主流 | Tab→Space/スペース数2 |
| Go | タブ | Space→Tab(gofmtはタブ) |
| Ruby | スペース2 | Tab→Space/スペース数2 |
| HTML / CSS | スペース2 | Tab→Space/スペース数2 |
| Java | スペース4 | Tab→Space/スペース数4 |
上記はあくまで広く使われている慣習であり、絶対のルールではありません。最終的にはチームの規約や各言語のフォーマッタ(PythonのBlack、Goのgofmt、JavaScriptのPrettierなど)の出力に合わせるのが、無用な差分や混在を避けるうえで確実です。