読者です 読者をやめる 読者になる 読者になる

CocoaPods(Objective-Cモジュール)ソムリエになる方法

http://gyazo.com/17982d1faf861c3655acfaa6f0b1a66d.png

ある日あなたはiOSアプリ開発中にJSONフォーマットをパースする必要性が出てきた。とりあえずGoogle検索で"ios json"と打ってみた。

JSON Frameworkが便利
GTMの中に使えるクラスがあるらしい
NSJSONSerializationを使う方法
JSONはSBJSONで
TouchJSONは使うな
JSONKitが最速!

「どの方法が一番いいんだ?」途方に暮れるあなた。ターミナルでpod search json と打ち込んでみるも検索結果からどれを選んだらいいのかわからない。

その時クライアントから電話が

「ああ、あの例のアプリだけどFecebookみたいな横からスイーッと動くメニューを作ってよ」

あなたはGoogle検索に'uikit slide menu'と打ち込んだ――*1

*

CPANソムリエになる方法」「gem ソムリエになる方法」というサードパーティ製のライブラリを選定する時の指南についての有名な文章があって、それのiOS/OS X開発版が欲しいなあと思って考えてみた。

すべてがGithub上に

Objective-Cモジュールは今やCocoaPods に集約されていて、有名・無名とわずおおくのモジュールが登録されている(pod listで確認する限り2300越え)。

このモジュールの9割ぐらいがGithub上にプロジェクト・リポジトリが存在するのでGithub上のデータから効率よくモジュールを探し出す方法さえあれば効率がよくなる。

Google検索オプションの活用

Githubの情報はGithubの検索機能で探せばいいじゃんと思うかもしれないけど。個人的にはGoogleの検索オプションを使った方が探しやすいと思っている。

検索条件としては

を指定する。1年にするのはOS/SDKのメジャーアップデートが頻繁だから1年以上更新や言及がないようなプロジェクトの情報をフィルタする為。必須ではない。

検索クエリは以下のように組合せる

  • iOS
    • ios KEYWORD
    • uikit KEYWORD
  • OS X
    • osx KEYWORD
    • cocoa KEYWORD
    • appkit KEYWORD
  • どっちでも
    • objc KEYWORD
    • cocoa KEYWORD

数値の指標

候補となるGithubプロジェクトページを複数開いたら以下の情報を比べる

  • 最終更新日時
    • これが一番重要だと思う。C言語ライブラリのように枯れて安定してるからもう手を入れる必要がないという状態にはまずならないので、 どのブランチにも何かしらコミットがないということは使われていない、コミッターがいない状況だと思われる。
  • watch/star/fork数
    • forkよりはwatch/starのが増えやすい傾向があるが重みはほぼいっしょ。注目されているプロジェクトや蓄積されたものなので寿命が長いと多くもなる。
  • tagを何回切ってるか
    • リリースを重ねているかの指標になる。多い方がいい
  • commit数
    • 開発スタイルの参考になる。多い方が頻繁に手を入れられてメンテされている、もしくはコミットの粒度が細かい。
  • issueの解決数
  • コミッターの人数
    • 多い方がいいのかと思いきや時々狂ったように一人でうおおって大量に開発してるスーパープログラマもいるのであんまりアテにはならない

コードの指標

  • テストが書いてある
    • テストディレクトリがあっても中身書いてないことがあるので確認
  • Travis CIやCoverallsのバッジが貼ってある
  • 実装を見て自分で変更できそうか
    • リーダブルコード。誰も保守する人がいなそうなら自分でするか、フォークするか再実装するしかない

ライブラリを使わないという選択肢

作者以外誰も使っていないモジュールかつ作者ももう存在を忘れていそうな場合などはライブラリがあるからといって無理に使う必要はないです。

その場合自分で作って提供する側になるチャンスです。

ライブラリを使わないことを選択したが、そのモジュールの実装方法を参考にして生かすことができます(作者のクレジットを入れるべし)。