Edited at

声に出して読みたいObjective-Cのライブラリ8種(2014.7)

More than 5 years have passed since last update.

Swiftに浮かれているiOS開発者のみなさんこんにちは。Objective-Cの記事を書きます。


手になじんでるものから、良さそうなので使ってみたいものまで、

個人的に筋がいいと思っているObjective-Cのライブラリを紹介します。


YLMoment

https://github.com/YannickL/YLMoment

日付や時間と文字列を扱いやすくしてくれるライブラリ。

タイムラインでよくある"19 hours ago"みたいな文字列をNSDateから作ったり。

日本語対応。


MTDates

https://github.com/mysterioustrousers/MTDates

NSDateの便利カテゴリ。

何日から何日までのNSDateの配列を取得したり、その日・週・月の頭のNSDate、先週の頭のNSDateなど。

欲しいと思った機能はだいたいあります。


JLRoutes

https://github.com/joeldev/JLRoutes

開発の初期にはURLSchemeから自前で処理を振り分けたりしますが、当然のように辛くなるのでJLRoutes。

sinatraっぽく書けます。sinatra使ったことないけど。


Bolts

https://github.com/BoltsFramework/Bolts-iOS

FaceBookとFaceBookに買収されたParse.comが公開しているBolts。Boltsに含まれるBFTaskの使い勝手がよい。

JavaScriptのPromisesと同じで、今はないが将来値が返されるというような状態をオブジェクトとして表現できるので、APIクライアントやローカルのDBにアクセスする場合なんかに使うと、呼び出し側の非同期処理を簡潔に記述できます。

PromiseKitなんてのもあるみたいですが、黒魔術っぽかったり、カテゴリにprefixがなかったりで、Bolts使ってます。

http://promisekit.org


BugshotKit

https://github.com/marcoarment/BugshotKit

関係者に向けた開発版で、サーバーの切り替えや、ログの表示送信をアプリ内で行えるようにしている会社がけっこうあるみたいです。

ログの送信だけでも手軽にできるとdogfoodingが捗るので、BugshotKitよさそうだなと。


ReactiveCocoa

https://github.com/ReactiveCocoa/ReactiveCocoa

もう1年近く検討していて、いつも実戦では難しいなという結論に達するReactiveCocoa。

Swiftなんかより新しい世界が待っています。

振る舞いを宣言的に書けるので、変化する値を上手く扱うことができて、

今、Objective-C&MVVMで書こうと思ったら必須じゃないでしょうか。

問題はアニメーションとの相性の悪さ、UITableViewとの相性の悪さ。

特にUITableViewは再利用の問題があってセルとエンティティが1:1ではないので、辛いものがある。

原理的に難しいんじゃないかという気がしなくもないです。

とはいえ、新しいパラダイムを触ってみるのはよいことです。

定期的にReactiveCocoaを触っていて、その度にKVOを使う機会が増えるという現象がおきています。


MTMigration

https://github.com/mysterioustrousers/MTMigration

バージョンを上げたタイミングで一度だけ行う処理を定義できる。以上。


KeepLayout

https://github.com/iMartinKiss/KeepLayout

AutoLayoutをいい感じのAPIで(比較的)簡潔に実装することができるKeepLayout

IBを使っているコードと使っていないコードの境界で活躍します。

本当はすべてAutoLayoutに移行できればいいんですが、長く運用しているアプリにはいろいろあるんです。


おまけ

全く関係ないんですが、以下ViewControllerを軽量にするための指針に関する良記事。

http://www.objc.io/issue-1/lighter-view-controllers.html


広告

株式会社グルコースでは本物のObjective-Cエンジニアを募集しています。よろしくお願いします。

https://www.wantedly.com/projects/6619?u=5600011