LoginSignup
1
3

More than 3 years have passed since last update.

日本人のための SwiftFormat【概要編】

Posted at

SwiftFormatとは?

SwiftFormat は MacOS または Linux で Swift コードを再フォーマットするためにコマンドラインツールです。

なぜ使うのか?

プロジェクトをチームで行う際にコーディングスタイルを統一することで、コードの見やすさや・追いやす
さが向上しますが、これらを認識のあっていないチームで行うとコードのフォーマットの違いを指摘・修正
を手動でオペレーションすることにコストがかかります。これらの作業を SwiftFormat で自動化するこ
とで開発者はコードの動作に集中できるようになります。

どうやって使うのか?

現在は下記の4通りの方法があるみたいです。

  1. コマンドラインツールとして手動で実行するか他のツールチェインの一部として使用する

  2. Source Editor Extension として Xcode の [Editor] > [SwiftFormat] メニューから呼び出す

  3. Xcode プロジェクトのビルドフェーズ(Run Script?)として、Cmd-R or Cmd-Bを押すたびに
    実行されるようにする

  4. Git のプリコミットフックとして、チェックインする前に変更したファイルで実行するようにする

【実装編】では 3.の RunScript での実装 + CocoaPods での導入を検討しているのでそれらについて少し触れます。

Xcode ビルドフェーズで導入する

今回はチームで共有する際に最もシンプルで簡単な Xcode ビルドフェーズ で導入したいと思います。もし他の方法で実現したい場合は 公式のレポジトリ を確認してください。

※ このスクリプトを追加すると、作業中のソースファイルが上書きされます。
スクリプトをメインターゲットではなくテストターゲットに追加すると、ユニットテストを実行する時にのみ
呼び出され、アプリをビルドするたびに呼び出されないようにすることができるようになるみたいです。

または、通常のビルドの一部として lintモード
で SwiftFormat を実行し、手動でフォーマットパスを実行するか、頻度の低いビルドターゲット(テストなど)
の一部として実行することを検討した方がいいみたいです。

  • SwiftFormat Lint モード
    • SwiftFormat はリンターではなくフォーマッターとして設計されているため、どこが問題なのかを伝えるのではなくて、コードを実際に修正するように設計されている。実際にコードを変更することが望ましくない状況でコードがフォーマットされていることを確認したい時の場合に lintモードが役立つ
    • SiwftFormat をリンターとして実行する時に、--lint コマンドラインオプションを使用できる

CocoaPods での導入

  1. SwiftFormat CLI を Podfile に追加する

次の行を Podfile に追加して pod install で SwiftFormat のバイナリをプロジェクトディレク
トリに追加する。下記の実行によってビルド済みのコマンドラインアプリのみがインストールされて、SwiftFormat
の Framework のソースコードはインストールされなくなります。

  pod 'SwiftFormat/CLI'
  1. アプリのターゲットにビルドフェーズを追加する

    1. ファイルリストでプロジェクトをクリックし、TARGETSを選択して、Build Phasesタプをクリック する。
    2. 新しい Run Script を作り下記のコードをペーストする。
   "${PODS_ROOT}/SwiftFormat/CommandLineTool/swiftformat" "$SRCROOT"

SwiftFormat の設定

SwiftFormat の設定は下記の2つに分かれています。

  • Options
    • オプションはルールの動作を制御する設定
  • Rules
    • ルールはコードに変更を適用する SwiftFormat ライブラリの関数

Options

SwiftFormat で使用可能なオプションは、--options コマンドライン引数を設定して実行すると確認
することができます。(各オプションのデフォルト値は、ここに表示される)

オプションを追加する方法は下記の2つ。

特定のオプションが複数のルールに影響を与える場合がある。--ruleinfo [rule_name]のようにコマンド
を使用して影響するオプションの詳細を確認するか、Rules.mdを参照して確認する必要もありそうです。

Rules

SwiftFormat には50を超えるルールが含まれていて、新しいルールが随時追加されています。それらの
使用方法については Rules.md
を参照してください。次回はこの一覧に関する記事を書きたいと思います。

参照

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3