AdventCalendar
iOS
tvOS
appleTV
AbemaTV
tvOSDay 25

tvOSライブラリ ピックアップ

tvOS Advent Calendar 2017 25日目担当の @dekatotoroです。
AbemaTVのiOSアプリやtvOSアプリを開発しています。
本日は最終日です!

今日はAbemaTVのtvOSアプリで使っているライブラリの紹介と、tvOS特有のライブラリをピックアップしたいと思います 📺
基本的にtvOS専用のライブラリというのは少なくて、多くのライブラリがiOSとtvOSの両方に対応しています。

AbemaTVで使っているtvOSライブラリ

まずはAbemaTVのtvOSアプリで使っているライブラリを紹介したいと思います。
ほとんどiOSで使っているものと同じになります。

DB

SQLite.swift

Reactive

RxSwift
RxTV
Action
RxDataSources

Network

swift-protobuf
APIKit

UI

ImageOverlay
FocusZPositionMutating
GestureTV
HorizontalStickyHeaderLayout

Cartography
AttributedLabel
SpringIndicator
Cheetah

Image Loader

Kingfisher

Util

KeychainAccess
Reachability
SwiftDate
SwiftyUserDefaults

Fabric

Fabric
Crashlytics

Tool

SwiftLint
SwiftGen
IBAnalyzer
Sourcery

Test

Quick
Nimble
SwiftCheck

tvOSピックアップライブラリ

tvOSに特化したライブラリを探してみました。
iOSで使えるものもありますが、なるべくtvOS特有のものを取り上げたいと思います。

TVOSSlideViewController

左右のドロワーを表示するライブラリで、panGestureで左右のドロワーを制御しています。

side-navigation

こちらもTVOSSlideViewControllerと同様左右のドロワーを表示するライブラリです。

HorizontalStickyHeaderLayout

アドベントカレンダーの6日目で紹介がありますが、フォーカスに合わせて上下に動くStickyなセクションヘッダーのライブラリです。

FocusZPositionMutating

layerのzPositionを、フォーカスに合わせて自動で調整してフォーカスされたViewが一番上にくるようにしてくれます。
こちらはアドベントカレンダーの12日目で紹介されています。

ImageOverlay

tvOS11でUIImageView上にカスタムUIを表示するためにoverlayContentViewが追加されましたが、tvOS9、10の同様の機能を提供してくれるライブラリです。

Re-Lax

アドベントカレンダーの11日目で紹介したフォーカスエフェクトですが、Apple純正のエフェクトを忠実に再現しているライブラリです。

RxTV

tvOS用のRxSwiftのReactive Extension群です。
アドベントカレンダーの15日目で紹介があります。

TVOSPicker

tvOS用の選択用UI部品

TvOSTextViewer

tvOS用の選択用UI部品

TvOSMoreButton

tvOS用のスクロールできるテキスト表示用UI部品

TvLightSegments

tvOS用のスクロールできるテキスト表示用UI部品

TVOSToast

tvOS用のスクロールできるテキスト表示用UI部品

PopcornTimeTV

tvOS用のトーストUI部品

antenna

こちらはライブラリではないですが、USTVnowのAPIを使ったtvOSのライブTVアプリになります。

まとめ

いかがでしょうか。
tvOSアプリを作る場合、多くはiOSアプリからの派生ではないでしょうか。
多くのライブラリはtvOSにも対応していますので、iOSとの共通化や同じ設計ができるのではないかと思います。また、フォーカスまわりの処理はtvOS特有なので、tvOSに特化したUI部品のライブラリもいくつかありました。
tvOS用のライブラリはまだまだ少ないので、今後良いものができたら公開していきたいと思います。

tvOS Advent Calendar 2017 最終日をお送りしました! :santa: