SlideShare a Scribd company logo
1 of 67
Download to read offline
Swift-Clean
http://swiftcleanapp.com/
Swift-Clean
Swift-Cleanとは?
• Swiftのコードフォーマッター
• フォーマットルールを設定することができる
• フォーマットはビルド時に適用される
有料です
Free Trialあり
きっかけ
• 最近、Swiftのソースレビューをしている
• Swiftのフォーマットのレビューの方針がない
• 個人的にはどこにスペースを入れるとか、どこで
改行するとか割とどうでも良い
• でも、やっぱり統一されていた方が気持ち良い
Swift-Cleanの良いところ
• アンケートに答えていくとSwiftStyleSettings.plist
が生成される
• これをもとにSwift-Clean.appが警告を出してくれ
たりする
あなたのフォーマットルールは?
yidev-swiftフォーマットを作ろう
1/39 (AutoFix)
クラス宣言などの : の前後のス
ペーシング
What should the spacing around the colon look like in a class
declaration?
2/39 (AutoFix)
メソッドのreturn オペレータの
スペーシングは
What should the spacing around the return operator look like
in a method signature?
3/39
クラス宣言の { を始める位置
は?
Where should the open curly brace be in relation to a class
declaration?
4/39
メソッド宣言の { を始める位置
は?
Where should the open curly brace be in relation to a method
declaration?
5/39 (AutoFix)
メソッドの ( はスペースを空け
るべきか?
Should there be a space before the opening parentheses in a
method signature?
6/39 (AutoFix)
オペレータ宣言の ( の前にはス
ペースを入れるべきか?
Should there be a space before the opening parentheses in a
operator function signature?
7/39 (AutoFix)
メソッド呼び出しの ( の前には
スペースを入れるべきか?
Should there be a space before the opening parentheses in a
method call?
8/39 (AutoFix)
メソッドの引数の : の周りには
スペースをどう入れるか?
What should the spacing around the colon look like in a
method signature?
9/39 (AutoFix)
変数宣言の : の周りにはスペー
スをどう入れるか?
What should the spacing around the colon look like in a
variable declaration?
10/39
for文の { はどこに置くべきか?
Where should the open curly brace be in relation to a loop
declaration?
11/39
if文の { はどこに置くべきか?
Where should the open curly brace be in relation to an if-
statement declaration?
12/39
switch文の { はどこに置くべき
か?
Where should the open curly brace be in relation to a switch
statement declaration?
13/39
return文の上に空の行を入れる
べきか?
Should there be an empty line above return statements?
14/39 (AutoFix)
四則演算の周りにスペースを入
れるべきか?
What should the spacing around math operators look like?
15/39 (AutoFix)
{ の前にはスペースを入れるべ
きか?
Should there be a space before opening braces?
16/39 (AutoFix)
, のあとにスペースを入れるべ
きか?
Should there be a space after commas?
17/39
メソッド間にどれくらい空行を
入れるべきか?
How many empty lines should there be between (main, non-nested) method bodies?
18/39 (AutoFix)
メソッドのジェネリクス宣言の
周りにスペースを入れるか?
What should the spacing around generic declarations look like
in a method signature?
19/39 (AutoFix)
カスタムプロパティのセッター
の ( の前にスペースを入れる
か?
Should there be a space before the opening parentheses of a
custom property setter?
20/39 (AutoFix)
型指定の前にスペースを入れる
か?
Should there be a space before the type specifier?
21/39 (AutoFix)
論理演算子の周りのスペースは
どうする?
What should the spacing around logical operators look like?
22/39 (AutoFix)
代入時のスペースはどうする?
What should the spacing around the assignment operator look
like?
23/39
// MARK: コメントの上には空
行をどれくらい入れるべきか?
How many empty lines should there be above a // MARK:
declaration?
24/39
// MARK: コメントの下には空
行をどれくらい入れるべきか?
How many empty lines should there be below a // MARK:
declaration?
25/39
モジュールインポートの最後の
行の下にどれくらい空行を入れ
るか?
How many empty lines should there be below the last module
import?
26/39
モジュールインポートの最初の
行の上にどれくらい空行を入れ
るか?
How many empty lines should there be above the first module
import?
27/39 (AutoFix)
Dictionaryの : の周りにどうやっ
てスペースを入れるか?
What should the spacing around the colon look like in a
dictionary?
28/39 (AutoFix)
メソッド呼び出しの際の : の周
りはどうスペーシングするか?
What should the spacing around the colon look like in a
function call?
29/39
Swiftファイルの最後の行にはど
れくらい空行を入れるべきか
How many empty lines should there be at the end of every
Swift file?
30/39
クラス名は1文字目を大文字に
すべきか?
Should class names be capitalized?
31/39
メソッド名は1文字目を大文字
にすべきか?
Should function names be capitalized?
32/39
変数名は1文字目を大文字にす
べきか?
Should variable names be capitalized?
33/39
enum名は1文字目を大文字にす
べきか?
Should enum names be capitalized?
34/39
struct名は1文字目を大文字にす
べきか?
Should struct names be capitalized?
35/39
typealias時の名前は1文字目を
大文字にすべきか?
Should typealias names be capitalized?
36/39
定数名は1文字目を大文字にす
べきか?
Should static variable names be capitalized?
37/39
struct宣言時の { はどうすべき
か?
Where should the open curly brace be in relation to a struct
declaration?
38/39
enum宣言時の { はどうすべき
か?
Where should the open curly brace be in relation to an enum
declaration?
39/39
コーディングルール違反時はビ
ルドエラーにするか?ワーニン
グにするか?
Do you want Swift-Clean to show code violations as build
errors or warnings in Xcode?
設定方法
設定方法
Swift-Cleanアプリを立ち上げる
設定方法
Customでさっきのアンケート画面に
設定方法
StackoverflowアカウントSign-inしたユーザーのアンケート結果
設定方法
アンケートに回答したすべてのユーザーの平均
設定方法
除外ファイルなどの設定
設定方法
プロジェクトファイルを追加
設定方法
AutoFixでさきほどのアンケートでAutoFixと

記載されていた項目を自動で修正してくれる
設定方法
Install Run Scriptをクリック
設定方法
Build PhasesにSwift-Clean Run Scriptが追加される

不要だったら削除すればOK
設定方法
• 先ほど生成したSwiftStyleSettings.plist
を.xcodeprojと同じ階層に保存して、あとはBuildす
ればOK
こんな感じ
• モジュールインポートの最後の行の下は空行1つにしましょう
• メソッド名はキャメルケースにしましょう などなど
注意
ビルドするごとに…
Free Trial版だとビルドするごとに出てくる
うざかったら
Build PhasesにSwift-Clean Run Scriptが追加される

不要だったら削除すればOK
コードフォーマットとか好みでしかないし、

どうでもいい、でも整ってる方が気持ち良い
→ チーム開発時はツールで自動化したい
→ Swift-Cleanは一つの手段
まとめ
• アンケート形式で答えられるので、チーム開発で多
数決とって決めたい場合にちょうど良いかも
• 150ドルのSingle Site Licenseが用意されている
まとめ
• 第21回 yidevで作成したSwiftStyleSettings.plistは
https://github.com/mnat44/yidev-21-swift-style-
settings-for-swift-clean

にアップロードしています
補足
おわり

More Related Content

Similar to About Swift-Clean

ポータブルコンポーネントマネージャの実装
ポータブルコンポーネントマネージャの実装ポータブルコンポーネントマネージャの実装
ポータブルコンポーネントマネージャの実装Yosuke Matsusaka
 
.NET Compiler Platform
.NET Compiler Platform.NET Compiler Platform
.NET Compiler Platform信之 岩永
 
Terraformで始めるInfrastructure as Code
Terraformで始めるInfrastructure as CodeTerraformで始めるInfrastructure as Code
Terraformで始めるInfrastructure as CodeTakahisa Iwamoto
 
技術勉強会(Solr入門編)
技術勉強会(Solr入門編)技術勉強会(Solr入門編)
技術勉強会(Solr入門編)Atsushi Takayasu
 

Similar to About Swift-Clean (6)

solr勉強会資料
solr勉強会資料solr勉強会資料
solr勉強会資料
 
Mac Ports
Mac PortsMac Ports
Mac Ports
 
ポータブルコンポーネントマネージャの実装
ポータブルコンポーネントマネージャの実装ポータブルコンポーネントマネージャの実装
ポータブルコンポーネントマネージャの実装
 
.NET Compiler Platform
.NET Compiler Platform.NET Compiler Platform
.NET Compiler Platform
 
Terraformで始めるInfrastructure as Code
Terraformで始めるInfrastructure as CodeTerraformで始めるInfrastructure as Code
Terraformで始めるInfrastructure as Code
 
技術勉強会(Solr入門編)
技術勉強会(Solr入門編)技術勉強会(Solr入門編)
技術勉強会(Solr入門編)
 

More from Motoki Narita

Type safety WCSession
Type safety WCSessionType safety WCSession
Type safety WCSessionMotoki Narita
 
NullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくする
NullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくするNullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくする
NullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくするMotoki Narita
 
できることから始めるOss活動
できることから始めるOss活動できることから始めるOss活動
できることから始めるOss活動Motoki Narita
 
Swift3.0に向けて enumerateを使い始めよう
Swift3.0に向けて enumerateを使い始めようSwift3.0に向けて enumerateを使い始めよう
Swift3.0に向けて enumerateを使い始めようMotoki Narita
 
Swift bondさわってみた
Swift bondさわってみたSwift bondさわってみた
Swift bondさわってみたMotoki Narita
 
個人で開発したアプリがベスト新着に選ばれた話
個人で開発したアプリがベスト新着に選ばれた話個人で開発したアプリがベスト新着に選ばれた話
個人で開発したアプリがベスト新着に選ばれた話Motoki Narita
 
watchOS1 to watchOS2
watchOS1 to watchOS2watchOS1 to watchOS2
watchOS1 to watchOS2Motoki Narita
 
Optionalの使い方 第1回 Swift勉強会@ネクスト
Optionalの使い方 第1回 Swift勉強会@ネクストOptionalの使い方 第1回 Swift勉強会@ネクスト
Optionalの使い方 第1回 Swift勉強会@ネクストMotoki Narita
 

More from Motoki Narita (13)

Type safety WCSession
Type safety WCSessionType safety WCSession
Type safety WCSession
 
NullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくする
NullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくするNullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくする
NullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくする
 
できることから始めるOss活動
できることから始めるOss活動できることから始めるOss活動
できることから始めるOss活動
 
Enumerate
EnumerateEnumerate
Enumerate
 
Swift3.0に向けて enumerateを使い始めよう
Swift3.0に向けて enumerateを使い始めようSwift3.0に向けて enumerateを使い始めよう
Swift3.0に向けて enumerateを使い始めよう
 
Swift bondさわってみた
Swift bondさわってみたSwift bondさわってみた
Swift bondさわってみた
 
watchOS2 tips
watchOS2 tipswatchOS2 tips
watchOS2 tips
 
個人で開発したアプリがベスト新着に選ばれた話
個人で開発したアプリがベスト新着に選ばれた話個人で開発したアプリがベスト新着に選ばれた話
個人で開発したアプリがベスト新着に選ばれた話
 
Xcode tips
Xcode tipsXcode tips
Xcode tips
 
watchOS1 to watchOS2
watchOS1 to watchOS2watchOS1 to watchOS2
watchOS1 to watchOS2
 
Complication
ComplicationComplication
Complication
 
Watch connectivity
Watch connectivityWatch connectivity
Watch connectivity
 
Optionalの使い方 第1回 Swift勉強会@ネクスト
Optionalの使い方 第1回 Swift勉強会@ネクストOptionalの使い方 第1回 Swift勉強会@ネクスト
Optionalの使い方 第1回 Swift勉強会@ネクスト
 

About Swift-Clean