SwiftFormat:Swiftコードのための自動スタイル整形ツール

コードが自ら整形する時代
Imagine: in a team of five developers, everyone writes code their own way. Some add spaces before brackets, some don't. One prefers breaking function parameters across lines, another writes everything on a single line. The result is a patchwork codebase, and code review turns into endless style debates.
SwiftFormatはまさにこの問題を解決するツールです。Swiftコードの自動整形を行い、単なるスペースやインデントの追加だけでなく、コードを統一された標準に導き、何百もの小さな不整合を修正します。
SwiftFormatできること
-
深いスタイル整形:
- インデントとアライメントの修正
- 余分な
selfやかっこの削除 - アクセス修飾子の順序修正
- クロージャ宣言スタイルの統一
-
柔軟な設定:
- 50以上の整形ルール
- 設定ファイル
.swiftformatのサポート - カスタムルールの作成が可能
-
どこでも統合:
- 手動実行用のコマンドライン
- Xcode、VSCode、Sublime Text向けプラグイン
- Gitのpre-commitフック
- GitHub ActionsによるCI/CDサポート
// До форматирования
func processData(data:[String:Any], completion:(Result)->Void){
guard let value=data["key"] else{return}
self.completion(.success(value))
}
// После SwiftFormat
func processData(
data: [String: Any],
completion: (Result) -> Void
) {
guard let value = data["key"] else { return }
completion(.success(value))
}
始め方
Homebrewでのインストール:
brew install swiftformat
基本的な使用方法:
# Форматировать все файлы в текущей директории
swiftformat .
# Только проверить стиль без изменений (линтер)
swiftformat --lint .
プロジェクトでは、XcodeのビルドステップやGitのpre-commitフックにSwiftFormatを追加することをお勧めします。これにより、各コミット前にコードが自動的に整形されます。
設定の柔軟性
SwiftFormatは、すべてのプロジェクトに固有のスタイル要件があることを理解しています。以下のことができます:
--disableで個別のルールを無効化- プロジェクトルートに
.swiftformatファイルを作成 - コメントで特定のファイルの動作を設定
設定例:
# .swiftformat
--indent 4
--disable trailingCommas
--enable isEmpty
--header "Copyright (c) {year} MyCompany"
試す価値がある理由
- 時間の節約 — 手動整形に何時間も費やす必要がなくなります
- 一貫したスタイル — かっこをどこに入れるかでチーム議論することがなくなります
- クリーンなgit履歴 — 「スタイル」コミットが減ります
- ロジックに集中 — 本当に重要なことに集中できます
SwiftFormatは特に次の場合に有効です:
- 開発者2人以上のチーム
- 開発歴史が長いプロジェクト
- コードレビューが頻繁に行われる
- オープンソースプロジェクトの品質維持
内部的动作
このプロジェクトは2016年から активно開発されており、GitHubで8.5k以上のスターを獲得し、すべての現行Swiftバージョンをサポートしています。内部的には、LEGOブロックのように組み合わせ可能な強力なSwiftコードパーサーとルールシステムが動作しています。
# Показать все доступные правила
swiftformat --rules
# Информация о конкретном правиле
swiftformat --rule-info redundantSelf
代替ツール
- SwiftLint:整形よりもコードの問題発見に重点
- 自作スクリプト:メンテナンスが必要で柔軟性に欠けることが多い
SwiftFormatの主な利点は、問題を見つけるだけでなく、即座に修正することです。
SwiftFormatは「単なる別のツール」ではなく、終わりのないスタイル修正に厌倦したチームにとって本当の救世主です。すべてのルーティンな整形作業を肩代わりし、本当の問題解決に集中できるようにします。
ワークフローに追加してみてください。最初の実行後から結果が得られるでしょう。コードがクリーンになり、人生が楽になります。