一挙紹介!動画アプリで使ったCocoaPods

もはやiOS開発に欠かせない存在になったCocoaPods。先日弊社からリリースしたアプリでも、複雑なUIやありがちな機能を簡単に実装するものから実装を少しラクにするようなものまで、いろいろなものを使っています。

スポーツ動画アプリ全10種類 | 株式会社CFlatスポーツ動画アプリ全10種類 | 株式会社CFlat

iPhoneで気軽にスポーツ動画を楽しめるアプリケーションをリリースしました。AppStoreにて配信中です。

このアプリではスポーツのハイライトや試合結果、最新ニュースなどの動画を検索することなく閲覧することができます。スポーツが好きな方、スキマ時間を有効に使いたい方に最適な動画アプリです。


UI/コントロール

MNMBottomPullToRefresh

MNMBottomPullToRefresh for iOS - Cocoa Controls

「上に引っ張ったら更新する」機能を実現するものです。

iOS標準では下に引っ張って更新を実現する方法は用意されていないので自分でやるためには色々頑張る必要がありますが、MNMBottomPullToRefresh利用することで簡単に実現できました。

MMDrawerController

Search results for mmdrawer - Cocoa Controls

メインコンテンツの左右にサイドバーを配置するためのコントロールです。一昔前のFacebookiPhone版がこんな感じのインターフェースでしたね。

安易にサイドバーを配置することの賛否はあるとは思いますが、サイドバーを置くとなったらとても使いやすいライブラリでした。

XCDYouTubeVideoPlayerViewController

XCDYouTubeVideoPlayerViewController for iOS - Cocoa Controls

標準のMPMediaPlayerControllerでは動画のリソースを特定する必要があるため、YouTubeの動画IDだけでは再生できません。

XCDYouTubeVideoPlayerViewControllerは、MPMediaPlayerControllerを継承しているクラスです。YouTubeの動画IDから動画自体のURIを解析してくれる機能をもっているため、動画IDから動画を再生するまでがすごく楽でした。

FontAwesome-iOS

alexdrone/ios-fontawesome

Webでよく使われているFontAwesomeをiOSでも使えるようにするライブラリです。ちょっとしたアイコンなら画像なしで表現できるようになるのでとても楽です。

iRate

iRate for iOS - Cocoa Controls

iRateはアプリ起動時に「アプリを評価してね〜」のダイアログを出すための拡張です。この機能はユーザーに負荷をかけることになるのでいい感じのタイミングで出さないと評価を下げることになってしまうのですが、iRateは起動回数や経過日数などから使ってくれているユーザーに対してのみダイアログを出してくれるという仕組みになっています。

ユーザービリティを多少損なうことにはなりますが、レビューへの導線も大切なので入れておきたいところです。

SVProgressHUD

Search results for svprogress - Cocoa Controls

SVProgressHUDを使うと標準のActivityIndicatorよりもちょっとかっこ良くて使いやすいインジケータが使えるようになります。

ライブラリ/拡張

MWFeedParser

MWFeedParser for iOS - Cocoa Controls

RSSフィードを解析するライブラリの中では一番使われている(気がする)ライブラリです。RSSのパースは自分では絶対に書きたくない処理(DRY!)なのでこれを使うのが今のところ一番いいのかなと思います。

NSDate+TimeAgo

kevinlawler/NSDate-TimeAgo

Objective-CNSDateクラスのカテゴリで、相対日時の文字列を返してくれるインターフェースが提供されます。

// githubより転載
NSDate *date = [[NSDate alloc] initWithTimeIntervalSince1970:0];
NSString *ago = [date timeAgo];
NSLog(@"Output is: \"%@\"", ago);
2011-11-12 17:19:25.608 Proj[0:0] Output is: "41 years ago"

LinqToObjectiveC

ColinEberhardt/LinqToObjectiveC

Objective-CNSArrayNSDictionaryのカテゴリで、Linqのようなインターフェースが使えるようになるライブラリです。

内部ではforループを回しているだけなのですが、場合によってはより読みやすいコードにすることができるので使用しました。

// githubより転載
LINQSelector surnameSelector = ^id(id person){
    return [person name];
};

LINQAccumulator csvAccumulator = ^id(id item, id aggregate) {
    return [NSString stringWithFormat:@"%@, %@", aggregate, item];
};

NSArray* surnamesList = [[[[people linq_select:surnameSelector]
                                   linq_sort]
                                   linq_distinct]
                                   linq_aggregate:csvAccumulator];

上の例のNSArray* surnamesList = ...のところがすごく簡潔に書けていると思います。

  1. peopleが入っているArrayを
  2. nameプロパティのArrayにして(linq_select
  3. ソートして(linq_sort
  4. 重複を取り除いて(linq_distinct
  5. カンマ区切りの文字列にまとめる(linq_aggregate