【Swift】SwiftFormatの導入と使い方!コードを自動で修正する

この記事からわかること

  • SwiftSwiftFormat導入方法使い方
  • コード自動修正するツール
  • Homebrew or Cocoa Pods or Swift Package Managerでのインストール
  • フォーマットルールカスタマイズ
  • .swift-version/.swiftformatファイルの記述方法

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

公式リファレンス:SwiftFormat

SwiftFormatとは?

SwiftFormatはSwiftのコードを自動で修正するためのコマンドラインツールおよびライブラリです。インデントの調整や冗長な余白や括弧の除去、行の長さ、カンマの位置など人の手では直すのが膨大になりがちな細かいところを自動で修正してくれます。

ましてや複数人で開発するような大きな規模のプロジェクトの場合、個人の記法スタイルが顕著に現れ統一するのは困難になってしまいます。そのような問題を取り除くことができるフォーマットツールは開発者にとって欠かせないツールになっています。

自動で修正するような箇所がどれくらいあるかはSwiftLint(静的解析ツール)を使用して簡単に把握することができます。

【Swift】SwiftLint(静的解析ツール)の導入と使い方!アプリの中身をチェック

導入方法

SwiftFormatはコマンドラインツールとライブラリの2つとして提供されており、HomebrewCocoa 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...」をクリックします。

【Xcode】Swift Package Managerの使い方!パッケージ導入管理ツール

表示された画面の中から使用したいパッケージを選択します。左メニューは「Recently Used(最近使用)」、「Apple Swift Packages」、「GitHub」の3つに分かれており、「GitHub」をクリック後に右上部の入力欄にリポジトリのURLを直接入力またはライブラリ名を入力することで指定可能です。入力欄にhttps://github.com/nicklockwood/SwiftFormatと入力すれば出てくると思います。

Swift Formatが表示されたらDependency Rule(依存性ルール)とプロジェクト先を指定し「Add Package」をクリックして次の画面に遷移します。

【Swift】SwiftFormatの導入と使い方!コードを自動で修正する

上記のように3つ出てくるので「Library」にチェックを入れて「Add Package」をクリックします。

【Swift】SwiftFormatの導入と使い方!コードを自動で修正する

Swift Package Manager導入時の使い方

使用方法は簡単でアプリのTARGETファイルにカーソルを合わせて右クリック>「SwiftFormatPlugin」をクリックします。実行先を選択して「RUN」をクリックすると以下のように聞かれます。

【Swift】SwiftFormatの導入と使い方!コードを自動で修正する

翻訳:「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」で追加してください。

【Swift】SwiftLint(静的解析ツール)の導入と使い方!アプリの中身をチェック

追加できたらコードブロックの中に以下を書き込みます。

【Swift】SwiftLint(静的解析ツール)の導入と使い方!アプリの中身をチェック

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

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index