新しいApple TV向けの設計、開発方法の概要、tvOSのUIコンポーネント、フレームワーク、iOSとの違い、既存のアプリケーションを移植する方法を説明します。
tvOS
Jobsが光入ってから2015年ようやく製品に出荷されました。
テレビの未来はバグ
というのは嘘です
テレビの未来
tvOS と iOS は似ているところが多いです。何があって何がないでしょうか。 右側がアップルTVのみのものです
真ん中に共通フレームワークがあってUIKitがあります。
アドレスブックがかけているのは理にかなっていますが重要なものがない
フル機能のTwitterクライアントは作れませんね?URLが開けない。あと認証でOAuthが利用できない。
デバイス間ローカル通信が出来ない。iPhoneアプリと連携したいのに。認証にも使えそうですよね。でもいまはLowレベルAPIでしか出来ません。
もう一つ大きな違いとしてローカルストレージがありません。
500KBのUserDefaultか、クラウド。 オンデマンドリソースは、使っていなかったら端末から消されてしまいます。500KBのUserDefault以外はどこかのタイミングで消えうる。
既存アプリをテレビに移行する
なんのへんこうがなくてもPodSpecにtvOSを追加する必要がある。一次利用ならこれが使える パックマンゲームを作ってみました。新たなターゲットを作るだけで出来た。
アラート周りが変わっていて、UISliderもないしバックグラウンドオーディオもなかった。さまざまなC++コンパイラ関係でコード変更がたくさんあった。そしてNIBが使われていた
iOSのNIBはTVでは全く使えない。そこでちょっとしたツールを作りました。XMLの変換を行います。このツールで変換します。配列を直すぐらいは手動でする非必要はありましたが、スタートポイントとしては十分なものが出来ました。
実際にどうやってTVアプリを動かすのでしょうか。SiriRemoteというリモコンがあります。タッチパッドとマイクがついています。
ここに新しいフォーカスという概念があります。一度にフォーカスできるエレメントは一つだけです。どのViewがフォーカスされているか確認できて、ユーザーはタッチパッドでフォーカスを動かすことが出来る
Demo
単純なストーリーボードで2つボタンが有り、ラベルがあります。これを実行します。リモートを使ってフォーカスを動かします。どれがフォーカスされているか分かりますね?カスタムビヘイビアで色を変えています。ラベルはデフォルトではフォーカスできません。
デバッグでは _whyIsThisViewNotFucusable
というプライベートメソッドでなぜフォーカスできないかが分かる。
デフォルトのフォーカスエンジンのビヘイビアに対してUIGestureRecognizerを利用することが出来ます。iOSと似たアプローチになります。
UIPressというLowレベルのAPIも利用できます。
TextInput
以前は最悪でした。キーボードが1行だったからです。ではマイクがないのか?あるけどAPIはない。HandOffがなくてiPhone側から制御出来ない。
テキスト認証の際にはVoucherを利用することをオススメします。
そうすることで煩雑な部分を排除できます。
GameController
ゲームコントローラフレームワークを用いる。iOSと比較して良いのはSiriRemoteがゲームコントローラとして扱える。Siriモードをカスタムゲームコントローラに合わせて実装すれば1度で済む。
ゲームコントローラが接続されたことを認識する
ValueChangedHanderはXY座標のスワイプに応じて画面上でキャラクターを動かせる
せっかくボタンが使えるが、SiriRemoteが使えないとAppleの審査で許可されないので、実装するには不向き。。
SpriteKit Demo
Storyboardのようなもので設定をするとコードを書いていないのに動きます
TVML
XMLやJavaScriptでtvOS向けのUIが作れる。iTunesなどはこれで実装されている。早く開発したければこれは一つの選択肢
まとめ
Apple Watch と比べると完成度が高い。ユーザー入力はなるべく割愛すべし。
是非フィードバックをお願いします。
tvOSはUIKitを知っていたらはじめやすいだろう。#tryswiftconf
— ひとのみち (@hitonomichi) 2016年3月2日
.@NeoNacho さんいわく、tvOSでアプリはwatchOSよりも開発しやすい。いいメソッドが揃ってる。特にsiri remoteとやりやすくなってる。でも、入力はすごくやりにくいので気をつけること。 #tryswiftconf
— すてィーろ (@stilo) 2016年3月2日
「テレビの未来を作るには 新Apple TVのためのtvOS開発のリアルな現状と希望 #tryswiftconf」をトゥギャりました。 https://t.co/sxWy68wQfw
— トゥギャッター開発まとめ (@tg__dev) 2016年3月2日
次回Tokyo iOS meetupでボリスさんがswift package managerについて話されるそうです。cocoapods開発者の方によるSPMの話はとても貴重&勉強になるのでぜひ! #tryswiftconf https://t.co/y4IMPfGLue
— Tsutsumi Shuichi (@shu223) 2016年3月2日
【気に入った記事は はてなブックマーク】
はてなブックマークアプリiOS開発チームから来ました! はてなブックマークにはSwift特集があります! 良い記事を見逃さないように、ご利用ください! http://b.hatena.ne.jp/hotentry/it/Swift
そして良いまとめ記事があったらはてなブックマークでブックマークしましょう! try! Swift の記事で盛り上がると嬉しいです!