こんにちは。アプリケーションエンジニアのid:sakaharaです。 この記事ははてなエンジニアアドベントカレンダー2014の20日目です。 昨日はid:wtatsuru によるはてなにおけるサーバリソース可視化とMackerelでした。 今日ははてなのiOS開発で利用しているオープンソースのライブラリやサービスも含め、開発をよりスマートにしてくれる様々なものを紹介したいと思います。
パッケージ管理
CocoaPods (MIT License)
まずライブラリ管理をするための管理ツールとして欠かせません。 最近ではSwiftに対応したCarthageも登場していますが、CocoaPodsのSwift対応版の開発も進んでおり そのまま使い続けるのもよいと思います。
ライブラリ
AFNetworking (MIT License)
改めて紹介する必要はないほどの定番のHTTPネットワーク通信用ライブラリです。 Swiftで実装するならAlamofireもよいと思います。 両ライブラリ共にiOS開発で著名なMattt Thompsonさんが開発されています。
Mantle (MIT License)
JSONをObjective-Cのオブジェクトに変換してくれるライブラリです。 オブジェクトをJSONにして出力することもできます。 またNSManagedObjectへの変換にも対応しているので、Core Dataを使う際にも威力を発揮します。
SDWebImage (MIT License)
こちらも定番の画像を非同期でダウンロードしてくれるライブラリです。 特に何もしなくてもキャッシュをうまくコントロールしてくれる点や、アニメーションGIFにも対応しているなど便利な部分が多いです。 AFNetworkingにもUIImageView+AFNetworkingというライブラリがあり、非同期で画像をUIImageViewに表示する機能はありますが、 このSDWebImageをお勧めします。
MBProgressHUD (MIT License)、SVProgressHUD (Creative Commons BY 3.0)
ローディング中のステータスを表示してくれるライブラリです。 細かい調整をしたいならMBProgressHUD、単純にローディング中を表示したいだけならSVProgressHUDがお勧めです。
MCSwipeTableViewCell (MIT License)、MGSwipeTableCell (MIT License)
どちらもUITableViewCellにスワイプメニューを表示する機能を簡単に実装できます。
AAMFeedback (New BSD License)、CTFeedback (MIT License)
ユーザーからのフィードバックをメールで送信する際にアプリ名やバージョンなど付加情報を設定できるライブラリです。 簡易的にメールでユーザーからフィードバックを受けたい場合に実装の手間が省けて便利です。
HMSegmentedControl (MIT License)
UISegmentedControlをタブボタン風にしたUIControlです。 アニメーションや画像、フォントの設定、マージンの調整など細かい部分まで対応しており、タブボタン風のメニューを簡単に実装できます。
AMScrollingNavbar (MIT License)
SafariようにスクロールするとUINavigationBarを非表示にしてくれるライブラリです。 UITableViewやUIScrollViewに数行追加するだけで実現できます。
BBBadgeBarButtonItem (MIT License)
UIBarButtonItemにバッジを表示できるようにするライブラリです。 バッジのフォント、カラー、位置など細かい調整も可能です。
RMUniversalAlert (MIT License)
UIAlertView、UIActionSheet、UIActionControllerをBlocksで記述できます。 UIAlertViewとUIActionContrllerの切り替えはOSのバージョンによって自動で行ってくれます。
OHHTTPStubs (MIT License)
HTTP通信を内部でフックしてスタブ用のレスポンスを返してくれるライブラリです。 通信周りのテストでは欠かせない存在です。
サービス
Crashlytics
クラッシュレポートの解析サービスです。 Twitterに買収されたのでご存知の方も多いかもしれません。 自動でdSYMを送ってくれるので別途アップロードする必要がなく運用が楽だったりします。 はてなでもクラッシュの解析には必須の存在です。
TestFlight
こちらはAppleが買収したことでAppleのデベロッパーツールの一部となりましたが、元々のサービスも継続中です。 アプリリリース前のベータテスト用などにユーザーにアプリを配布することができるサービスです。 Apple買収後も通常通り利用できます。
まとめ
いかがだったでしょうか? 今回は主にUI周りのライブラリを中心に紹介させていただきました。 まだまだ他にもたくさんの便利なライブラリはありますが、今日の紹介はここまでとさせていただきます。 こういったライブラリは利用するだけでなく、ソースコードを読むことで理解を深めていくとより良い開発につながっていくはずです。 更に読むだけではなく是非自分でライブラリを作って公開してみることにチャンレジしてみてはいかがでしょうか?
はてなでは、一緒にサービスを開発する仲間を募集しています。
明日はid:taraoさんです。よろしくお願いします!