見えないフォーマットの問題
複数の人がSwiftパッケージにコントリビュートすると、インデントの不一致が忍び込みます。あるコントリビューターは4スペース、別の人はタブ、3人目は2スペースを使用します。プルリクエストが空白のみの変更でノイズだらけになり、コードベースは一貫性のない状態に向かって漂流します。解決策は、追加に30秒で済む1つのファイルです。
.editorconfigの標準
EditorConfigは、プロジェクトごとにコーディングスタイル設定を定義するための広くサポートされた標準です。Xcodeは.editorconfigファイルを尊重するため、コントリビューターがプロジェクトを開くと自動的に正しいインデント設定が適用されます。手動の設定も、読むべきドキュメントも不要です。
すべてのSwiftPMパッケージに推奨する.editorconfigは以下の通りです:
root = true
[*.swift]
indent_style = space
indent_size = 3
[*.{yml,yaml,json}]
indent_style = space
indent_size = 2Swiftの3スペースインデントは意図的な選択です。2スペースや4スペースほど一般的ではありませんが、ちょうど良いポイントにあります:ネストされたクロージャに対して2スペースよりも読みやすく、4スペースよりも水平スペースを無駄にしません。一度試してみると、標準的な選択が窮屈すぎるか広すぎると感じるようになります。
グローバル設定より優れている理由
すべての開発者は独自のXcodeインデント設定をグローバルに設定しています。.editorconfigがなければ、そのグローバル設定が開くすべてのプロジェクトに適用されます。つまり、4スペースタブの設定を持つコントリビューターは、プロジェクトの規約が異なっていても、ファイルを編集するときにサイレントにコードを再整形してしまいます。
リポジトリのルートに.editorconfigがあれば、Xcodeはグローバル設定をプロジェクト固有の設定で上書きします。コントリビューターは何も変更する必要がなく、ただ動作します。
導入
パッケージのルートにこのファイルを置いてコミットするだけです。ビルドステップも依存関係も、ファイル自体以外の設定も不要です。ほとんどのモダンなエディタ(VS Code、Vim、Sublime Text)もEditorConfigをサポートしているため、Xcode以外のコントリビューターにもメリットがあります。
