jarinosuke blog

about software engineering, mostly about iOS

コーディング規約要らずの Objective-Clean

コーディング規約

プログラミングを行う上でコーディング規約は一つの指針になり、

定める事でそれをもとにコードレビューなどの場で指摘などがし易くなります。

Objective-C で、しかも公開されているだけでも、ざっと探してみてこれだけの量があります。

企業

開発者

これだけの量のコーディング規約があることからも分かりますが、

それぞれの中で定められている事柄には、結構なばらつきがあるものも多いです。

そのような環境の中で、以下のような事象が発生してしまうのも事実です。

  • コーディング規約を定めたものの、守れないコードが生まれてしまう
  • コードレビュー内でコーディング規約に沿わないコードを見つけるコストが高い
  • コーディング規約に沿わないだけのコードに対して PR をするのが億劫
  • コーディング規約の陳腐化

今回紹介する Objective-Clean はそのようなコーディング規約のイチ文書化を、

技術的視点から解決してくれるツールです。

Objective-Clean

http://a4.mzstatic.com/us/r30/Purple4/v4/86/e3/4d/86e34d5b-a352-95cd-497e-54647420bd88/Icon.512x512-75.png

Objective-Clean が行ってくれるのは以下の2つです。

  • コーディング規約設定ファイルの生成
  • ビルド時に上記ファイルに反するコードへの警告

これによって、今までとは違い、定義したコーディング規約となるファイルが

毎回のビルド時に反映され、Xcode 内で警告を表示してくれるようになります。

具体的には設定ファイルは plist 形式で生成されるので、それをプロジェクト内に組み込み、

一度インストールすると、Project Settings に Run Script が追加されるので、

恐らくそれが plist の内容を読み取り、Clang の静的解析 を拡張してくるのかなと思っています。

では実際の使い方は以下のページを観て頂くとして、

objClean

面白かったコーディング規約の生成方法をちょっと触れます。

コーディング規約生成方法

Objective-Clean は現時点(2014/01/29 v1.4)で、

コーディング規約の取得に際して3つの方法を提供しています。

f:id:jarinosuke0808:20140127225451p:plain

Custom

Objective-Clean には Survey 機能があり、

一問一答形式で数十個の質問に答えていくと、自分にあったコーディング規約のファイルが生成されます。

少し面倒ですが、普段の自分がどういう意識でコードを書いているかが明確になるような気がするのでオススメです。

Stackoverflow

Objective-Clean は Survey 作成に際して、

Facebook, Twitter, Stackoverflow でのログイン機能を提供しています。

その中でもコーディングに関して著しく親和性の高い Stackoverflow でログインしたユーザの作った

コーディング規約の平均を取ったコーディング規約を使用する事が出来ます。

User Average

上記と似ていますが、こちらは Survey を行ったユーザ全ての平均になります。

おわりに

コンパイラの設定ファイルとして常にビルド時に参照する事で、

コーディング規約にワンランク上のステージが訪れたようにも思います。

まだまだ発展途上のツールですが、最近は Cocoapods 対応など入り盛り上がっているようなので使い続けてみようと思います。

ちなみに現在半額セール中なので、買うなら今ですね!

Objective-Clean | App Store

そして僕のコーディング規約ファイルは以下ですので、

興味がある方はのぞいてみて、あれやこれや言って下さい。

StyleSettings.plist