【Swift】SwiftFormatの導入と使い方!コードを自動で修正する
この記事からわかること
- SwiftのSwiftFormatの導入方法と使い方
- コードを自動で修正するツール
- Homebrew or Cocoa Pods or Swift Package Managerでのインストール
- フォーマットルールのカスタマイズ
- .swift-version/.swiftformatファイルの記述方法
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
SwiftFormatとは?
SwiftFormatはSwiftのコードを自動で修正するためのコマンドラインツールおよびライブラリです。インデントの調整や冗長な余白や括弧の除去、行の長さ、カンマの位置など人の手では直すのが膨大になりがちな細かいところを自動で修正してくれます。
ましてや複数人で開発するような大きな規模のプロジェクトの場合、個人の記法スタイルが顕著に現れ統一するのは困難になってしまいます。そのような問題を取り除くことができるフォーマットツールは開発者にとって欠かせないツールになっています。
自動で修正するような箇所がどれくらいあるかはSwiftLint(静的解析ツール)を使用して簡単に把握することができます。
導入方法
SwiftFormatはコマンドラインツールとライブラリの2つとして提供されており、Homebrew
かCocoa Pods
またはSwift Package Manager
を使用して導入することが可能です。
Homebrewでインストール
おすすめ記事:【Mac】Homebrewインストール方法!
HomebrewはMacOS(及びLinux)のパッケージ管理システムです。ターミナルからSwiftFormatを使用するためにコマンドラインでXcodeが使用できるかを確認しておきます。以下コマンドでバージョンが返ってくるか試しておきます。
$ xcode-select --version
xcode-select version 2396.
問題なければSwiftLintをインストールします。
$ brew install swiftformat
Cocoa Podsでのインストール
おすすめ記事:【Swift UI】CocoaPodsのインストール方法と使い方
Cocoa PodsはObjective-CまたはSwiftのライブラリ管理ツールです。インストール方法は他のライブラリと変わらず以下の文を「PodFile」に書き込んでpod install
を実行するだけです。
pod 'SwiftFormat/CLI', :configurations => ['Debug']
:configurations => ['Debug']
とすることでDebug
状態の時のみライブラリをリンクさせることが可能です。
$ pod install
Swift Package Managerでインストール
おすすめ記事:【Xcode】Swift Package Managerの使い方!パッケージ導入管理ツール
Swift Package ManagerとはApple製でオープンソースなパッケージ管理ツールです。
上部のメニューから「File」>「Add Packages...」をクリックします。
表示された画面の中から使用したいパッケージを選択します。左メニューは「Recently Used(最近使用)」、「Apple Swift Packages」、「GitHub」の3つに分かれており、「GitHub」をクリック後に右上部の入力欄にリポジトリのURLを直接入力またはライブラリ名を入力することで指定可能です。入力欄にhttps://github.com/nicklockwood/SwiftFormat
と入力すれば出てくると思います。
Swift Formatが表示されたらDependency Rule(依存性ルール)とプロジェクト先を指定し「Add Package」をクリックして次の画面に遷移します。
上記のように3つ出てくるので「Library」にチェックを入れて「Add Package」をクリックします。
Swift Package Manager導入時の使い方
使用方法は簡単でアプリのTARGETファイルにカーソルを合わせて右クリック>「SwiftFormatPlugin」をクリックします。実行先を選択して「RUN」をクリックすると以下のように聞かれます。
翻訳:「SwiftFormatPlugin」はプロジェクト内のファイルを変更しようとしています。
「このコマンドはソース ファイルを再フォーマットします」
ファイルの変更を許可する前に、このコマンドが信頼できることを確認してください。
といった意味なので「Agree Command to Change Files」をクリックして実行してください。これで自動でファイル内のコードが修正されます。
Homebrew or Cocoa Pods使用時の使い方
両者を利用して導入した場合は「SwiftFormatPlugin」は出でこないのでターミナルからコマンドを叩いて実行する流れになります。XcodeのRun Scriptという機能を利用してビルド時に自動実行させておくと便利です。
おすすめ記事:【Swift/Xcode】Run Scriptの設定方法!ビルド時に処理を実行する
まずはXcodeから「TARGET」>「Build Phases」>「Run Script」をクリックします。もしなければ上部の「+」をクリックし「New Run Script Phase」で追加してください。
追加できたらコードブロックの中に以下を書き込みます。
「Based on dependency analysis」のチェックは外しておいてください。
Homebrew
if which swiftformat >/dev/null; then
swiftformat .
else
echo "warning: SwiftFormat not installed, download from https://github.com/nicklockwood/SwiftFormat"
fi
Cocoa Pods
if [ $CONFIGURATION = "Debug" ]; then
"${PODS_ROOT}/SwiftFormat/CommandLineTool/swiftformat" .
else
echo "warning: SwiftFormat not installed, download from https://github.com/nicklockwood/SwiftFormat"
fi
あとはプロジェクトをビルド(Cmd + B
)すれば自動でSwiftFormatが自動でコードを修正してくれます。
フォーマットルールの設定:.swiftformat
SwiftFormatのフォーマットルールを変更するにはプロジェクトの直下に.swiftformat
を作成し中に適切なルールを記述します。細かいルールの構築方法は以下の公式サイトを確認してください。
公式リファレンス:SwiftFormat/Default Rules (enabled by default)
disable
をつければその修正処理が実行されなくなります。exclude
を付与することで対象のファイルやディレクトリを自動修正の対象外にすることが可能です。
--disable indent
--disable linebreaks
--disable redundantSelf
--exclude Pods
.swift-version
SwiftFormatのフォーマットルールは基本的にはSwiftのバージョンに依存しないようですが、一部のルールは新しいSwiftバージョンにのみ適用されるようになっており、何も指定がなければdisable
状態になっています。新しいバージョンのルールも適応させたい場合は.swift-version
を作成し、プロジェクト直下へ設置します。
5.4
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。