tvOSアプリのプランニング
Apple TV向けソフトウェアを初めて開発する場合は、利用するツールやテクノロジーについてよく理解しておきましょう。Appleでは、開発を始めるために必要なすべてを提供しています。また、tvOSテクノロジーによりアプリで実装したい機能や必要とされるパフォーマンスを実現することができます。
Apple TV向けソフトウェアを初めて開発する場合は、利用するツールやテクノロジーについてよく理解しておきましょう。Appleでは、開発を始めるために必要なすべてを提供しています。また、tvOSテクノロジーによりアプリで実装したい機能や必要とされるパフォーマンスを実現することができます。
ユーザーがソファでくつろぎながら楽しめるコンテンツを提供し、Apple TVによるリビングルーム体験を充実させましょう。エンターテインメント、スポーツ、ニュースなどの最新コンテンツをストリーミング配信したり、優れたゲームや教育コンテンツ、フィットネスアプリのパーソナルトレーニングセッションを提供します。コンテンツを、4Kビデオ、Dolby Vision、Dolby Atmos、HDR10などのハイクオリティなフォーマットで提供することも可能です。アプリのインターフェイスは、Apple TV Remoteを使用して簡単に操作できるようにデザインします。
tvOSには、コンテンツ配信のための複数のアプローチがあり、最初に選択したアプローチがその後の決定に影響を与えます。
標準的な要素からUIを構築する
各リリースにおいてコンテンツに大きな変更がない場合は、tvOSに組み込まれているボタンやテキストラベル、およびその他の標準的なビューやコントロールを利用してUIを構築します。コントロールの外観をカスタマイズしたり、まったく新しいビューを構成して、コンテンツを個性的に演出することも可能です。UIはApple TV上にローカルで保持され、ローカルまたはネットワークから取得したデータがそこに反映されます。
このアプローチを選択する場合は、必要となるその他の機能についても検討してください。いくつかのコアテクノロジー以外にも、特定の機能を実現する上での必要性に合わせて、ほとんどのテクノロジーを採用できます。Appleでは、メディアの管理と再生、データの作成とセキュリティ保護、外部ハードウェアとの接続、Siriなどのシステムサービスとの統合など、多様な用途に対応するテクノロジーを提供しています。
ソフトウェアの開発は、Appleの統合開発環境であるXcodeで始めます。Xcodeには、プロジェクト管理、コードエディタ、UI用のビジュアルエディタ、デバッグツール、各種デバイスのシミュレータ、パフォーマンス評価ツールなど、ソフトウェア開発に必要なすべてのツールが用意されています。またXcodeには、「フレームワーク」と呼ばれる、ソフトウェア開発用のシステムコードモジュールが含まれています。
Xcodeには、iOS、iPadOS、macOS、tvOS、watchOS向けの各SDKが用意されています。
Xcodeで新規プロジェクトを作成するには、「File (ファイル)」>「New (新規)」>「Project (プロジェクト)」を選択して、表示される指示に従います。Xcodeにアプリタイプごとのオプションが表示され、ここで選択するオプションによって、プロジェクトの初期構成(Xcodeから提供されるデフォルトコードを含む)が決まります。またアプリタイプに応じて、アプリのUIを作成するためのアプローチも決まります。たとえば、複数あるグラフィックステクノロジーの1つを使用してアプリのコンテンツを描画するには、「Game (ゲーム)」オプションを選択します。Xcodeの使用方法に関するその他の詳細は、Xcodeのドキュメントで確認してください。
プロジェクトを初期構成する際は、使用するプログラム言語を検討します。構文が簡潔な上、安全性を考慮した設計で、さらにコードの表現力をより豊かにする最新機能を装備していることから、Swiftが推奨されています。またSwiftのコードにより、処理が非常に高速なソフトウェアの作成が可能で、Objective-Cとの相互互換性もあるため、同一プロジェクト内に両言語のソースファイルを追加することもできます。
Swiftプログラミング言語ガイド
Swiftプログラミング言語ブックには、Swiftプログラム言語の概要がすべて網羅されており、Swiftの学習に向けて第一歩を踏み出す上で最適な資料です。
初期段階では、コアインフラストラクチャに使用するアプリ構築用テクノロジーも選択する必要があります。アプリ構築用テクノロジーには、インターフェイスの構築、イベントの処理、システムとの通信を可能にするための、基本的なコードが用意されています。各アプリ構築用テクノロジーは、最低でも1つの開発アプローチに対応しており、複数のアプローチに対応しているテクノロジーもあります。
以下のアプリ構築用テクノロジーから選択します。
SwiftUI
SwiftUIは、プラットフォームに依存しないモダンなアプローチでUIおよびアプリのインフラストラクチャを構築できるため、アプリ構築用テクノロジーとして推奨されています。SwiftUIでは、プログラムによってインターフェイスを指定し、システム上(およびXcodeエディタ内)でそのインターフェイスを動的に表示および更新させることができます。SwiftUIの詳しい使用方法については、「SwiftUIの紹介」チュートリアルをご参照ください。
TVUIKitとUIKit
TVUIKitとUIKitには、アプリのUIとインフラストラクチャを構築するためのオブジェクトのライブラリが用意されています。Storyboardを視覚的に使用するか、コード内で使用するプログラムを通じて、画面上に表示するビューと、各種のビュー間のナビゲーションを構築します。TVUIKitにはtvOS固有のビューが用意されており、UIKitにはボタンやラベル、アプリのその他のインフラストラクチャなどの一般的なビューが用意されています。詳細は、「全画面レイアウトを使用して臨場感のある体験を構築する」をご参照ください。
SwiftUIは、アプリのコアインフラストラクチャおよびUIを構築するためのテクノロジーとして広く使用されています。すべてのアプリで一部の機能に対してSwiftUIとUIKitのいずれかを使用しますが、SwiftUIのモダンなアプローチにより、維持管理が容易なコードの作成が可能になります。また、SwiftUIを使用している場合でもUIKitコードの使用も可能で、SwiftUIビューとUIKitビューを同じビュー階層内に混在させることも簡単です。
SwiftUIとUIKitは、Appleのデータ管理テクノロジーとシームレスに連携し、インターフェイスの構築を支援します。Swift標準ライブラリおよびFoundationフレームワークには、アプリの構築に必要な基本的なデータ型(Array型、Dictionary型)や、文字列、数字、日付、およびその他の一般的なデータ値の型が用意されています。ユーザー定義のカスタム型については、SwiftのCodableサポートを採用してそれらの型をディスク上で永続化します。アプリがより大規模な構造化データを管理する場合は、Core DataまたはCloudKitを使用してそのデータの管理および永続化を行うことを検討してください。
魅力的な体験を提供するアプリには、ユーザーが自然と集まります。全体的に分かりやすいレイアウトで見た目がよく、適切なコンテンツが強調されるUIを構築してください。
Human Interface Guidelines
Appleのヒューマンインターフェイスガイドラインには、Apple TVにおいて、アプリのインターフェイスをデザインする方法、コンテンツを操作する方法、およびインタラクションを管理する方法に関する重要な情報が記載されています。tvOSのエコシステムについて学習する際はこれらのガイドラインを最初に確認することが大切です。該当するAppleのデザインリソースを参考にしながらアプリの開発を行ってください。
tvOSアプリでは、必要不可欠な機能やテクノロジーがいくつかあります。最初のUIを計画する際は、必ず以下の機能に対応することを検討してください。
ダークモード
システム全体を対象としたこの設定により、Apple TVのインターフェイスをライトモードまたはダークモードで表示できます。ライトモードとダークモードのインターフェイススタイルにはそれぞれ異なるカラーパレットと画像アセットを使用しますが、これらのアセットはアセットカタログを利用して管理します。UIのその他の部分については、システムAPIを使用して表示モード(ライトモードとダークモードのいずれかの表示)を変更するタイミングを決めることができます。詳細は、「インターフェイスをダークモードに対応させる」をご参照ください。
Auto Layout
テレビ画面のサイズ、アスペクト比、解像度に合わせてビューの位置を手動で調節するのではなく、アプリ使用時のセーフエリアに応じてシステムが自動調整するようにします。SwiftUIには、UIデザインのアプローチの一部としてAuto Layoutが用意されています。UIKitビューにAuto Layoutを採用する場合は、インターフェイスにAuto Layout制約を追加します。
スケーラブルな画像
アプリにSF Symbolsを取り入れることで、変更に対して柔軟に対応することができます。SF Symbolsアプリには、膨大な数の設定可能なベクターベースの画像が収録されており、これらの画像は外観やサイズの変更に自然に適応します。また、システムフォント「San Francisco」とも調和するため、Appleの各種プラットフォームでの一貫性も維持されます。「UIのシンボル画像を構成および表示する」をご参照ください。
インターフェイスのデザインでは、フォーカスベースのナビゲーションを考慮してください。アプリのほとんどの操作は、Apple TV Remoteを使用して行われます。ユーザーは、Remoteの方向ボタンを使用してUI上のフォーカス対象を移動し、選択ボタンを押してフォーカス対象のアイテムを実行、またはメニューボタンを押して前の画面に戻ります。ナビゲーションは可能な限りシンプルにして、テキスト入力やその他の複雑な操作は最低限に抑えます。
ロックアップは、ナビゲーションをシンプルにするための1つの方法で、UI内の類似アイテムの一貫性を保つことができます。ロックアップとは、関連するビューを、選択可能な1つの要素として組み合わせたグループを指します。たとえば、映画のタイトル、説明、出演者リスト、ポスター画像などを、映画ロックアップにまとめます。ユーザーが映画を選択した場合は、個々のアイテムではなく、このロックアップ全体がフォーカスされます。詳細は、「ロックアップ」をご参照ください。
リビングルームで重要な役割を果たすApple TVは、メディアを多用するアプリにとって理想的な場所となります。オーディオやビデオに関するAppleのテクノロジーにより、さまざまな形式のメディアを利用でき、最高のクオリティで再生するために必要なツールも用意されています。
メディアを再生および管理する
AVKitには、アプリのオーディオコンテンツやビデオコンテンツを再生および管理するために必要なすべての機能が用意されています。標準のシステムインターフェイスを使用してビデオを再生すると内蔵のトランスポートコントロールが表示され、AirPlay、ピクチャ・イン・ピクチャ(PiP)、インタースティシャルコンテンツなどにも対応しています。コンテンツをより詳細にコントロールする場合は、AVFoundationを使用します。
ライブコンテンツや収録済みコンテンツをストリーミング配信する
HTTP Live Streamingを使用し、ストリーミング配信コンテンツを作成してサーバに導入する方法を確認してください。ストリーミング配信されたコンテンツをアプリで再生する場合は、AVFoundationを使用します。
以下のベストプラクティスを実践し、すべてのユーザーにとってベストな体験を提供しましょう。
ユーザーのプライバシーを保護する
プライバシーは重要なため、ユーザーのデータがどのように使用されるかを明確にする必要があります。データを収集する場合は、その情報がどのように使用されるかを説明する、プライバシーに関する声明を表示するようにします。個人データを利用するAppleテクノロジーを採用する場合、データの初回利用時に、データの使用用途に関する説明をシステム上で表示してください。詳細は、「ユーザーのプライバシーを保護する」をご参照ください。
収集および保存したデータを保護する
データを収集する場合は必ず、悪意ある攻撃からそのデータを保護してください。パスワード、財務関連データ、個人識別情報など、非常に機密性の高いデータは、ユーザーの暗号化されたキーチェーンに保存します。その他の個人データは、ディスク上の暗号化テクノロジーやその他のAppleのセキュリティテクノロジーを使用して保存します。ローカルに保存するデータやアプリの外部に送信するデータは、AppleのCryptoKitを使用して暗号化します。
アクセシビリティへの対応を検証する
Appleのテクノロジーにはアクセシビリティへのサポートが組み込まれていますが、画面読み上げ機能やその他のアクセシビリティ機能は、アプリから提供される情報に依存します。SwiftUIおよびUIKitでは各UI要素を定義することはできますが、それらのUI要素がどのように相互に連携するかはデベロッパ次第です。アクセシビリティラベルおよびその他の説明をレビューし、それらが有益な情報を提供すること、およびフォーカスベースのナビゲーションがシンプルで直感的になっていることを確認してください。詳細は、「アクセシビリティ」をご参照ください。
アプリを国際化およびローカライズする
国際的な市場を視野に入れ、アプリをローカライズして異なる地域や言語に対応させましょう。異なる言語や地域に応じた文字列、日付、時刻、通貨、数字のフォーマットをサポートするFoundationフレームワークを使用して、アプリをローカライズします。左から右に書く言語と右から左に書く言語の両方において、UIが適切に表示されるよう対応させてください。アプリのリソースは、ローカライズしてXcodeのプロジェクトに追加します。インターナショナライゼーションとローカリゼーションのプロセスに関する情報は、「ローカリゼーション」をご参照ください。
あらゆるユーザーを考慮したデザイン
コンテンツを作成する際は社会的および文化的な違いを考慮し、特定のユーザーに対してネガティブまたは軽蔑的なニュアンスを持つ画像や用語の使用を避けてください。詳細は、「インクルージョン」をご参照ください。
アプリを徹底的にテストおよびデバッグする
開発サイクルでは、問題が発生すると同時に、組み込まれているXcodeデバッガを使用してデバッグを行います。XCTestを使用して自動テストスイートを作成し、ビルドするたびに毎回テストを実行して、新しいコードが想定通りに機能することを確認します。Xcode Cloudの継続的インテグレーションシステムを使用して、ビルド、テストサイクル、QAチームへのアプリの配信を自動化します。
アプリのパフォーマンスを最適化する
Xcodeに付属するInstrumentsアプリを使用して、コードのボトルネックやパフォーマンスに関するその他の問題を排除します。このアプリでは、実行コードのプロファイル取得、メモリリークの検出、リソース使用状況の分析などが可能です。Instrumentsアプリを使用して測定値を収集する方法については、「アプリのパフォーマンスを向上させる」をご参照ください。
アプリのビジネスモデルを選択する
「無料」、「無料(アプリ内課金あり)」、「有償でダウンロード」などのビジネスモデルを使用して、アプリを全世界に配信しましょう。インターフェイスを構築する際は、統一感のある体験を提供し、選択したビジネスモデルに対応するインターフェイスを心がけてください。詳細は、「ビジネスモデルの選択」をご参照ください。
アプリが機能するようになった後は、その体験を向上させる方法を検討してください。特定機能の追加やコンテンツに対するアプローチの変更など、小さい変更が大きい違いをもたらすこともあります。たとえば、次の内容を検討します。
アプリのログインプロセスをシンプルにする
システムのサインイン用インターフェイスを採用し、同じApple Accountに関連付けられているiPhoneやiPadを使用してtvOSアプリにサインインできるようにします。アプリ固有のユーザープロファイルを選択するプロセスがシンプルになるマルチユーザーサポートを導入し、コンテンツにすばやくアクセスできるようにします。
別のデバイスからの接続を可能にする
ユーザーのiPhone、iPad、Apple WatchからtvOSアプリを操作できるようにします。DeviceDiscoveryUIを使用し、両方のデバイス上で実行されているアプリ間で安全なネットワーク接続を確立して、その接続を通じてデータを交換します。たとえば、iPhoneでのタッチ入力を通じてtvOSアプリをコントロールできるようにすることも可能です。
トップシェルフにコンテンツを表示する
Apple TVのホーム画面で最上段に表示されるアプリについては、そのすぐ上のバナーエリアに追加コンテンツを表示させることができます。そのコンテンツは、アプリに別途追加する実行形式ファイルTop Shelfアプリ機能拡張を使用してシステムに配信します。このExtensionを使用すると、新しいコンテンツやおすすめコンテンツを強調したり、他のユーザーのお気に入り番組を表示したりできます。このExtensionを作成する方法については、「TVサービス」をご参照ください。
SharePlayを使用してユーザーがアクティビティを共有できるようにする
SharePlayでは、FaceTime通話で他のユーザーを招待してアプリのアクティビティを共有できます。これを導入してストリーミングビデオアプリを開発すれば、アプリ内で上映会を開催したり、ゲームを壮大なスポーツのようにプレイできるようになります。共有するアクティビティはGroup Activitiesを使用して定義します。AVFoundationを使用すると、メディア再生を同期することも可能です。
オーディオやビデオをライブでキャプチャして配信する
コンテンツを共有するもう1つの方法は、オーディオやビデオをライブでキャプチャし、収録コンテンツとして保存したり、ライブで配信することです。ユーザーが自分の体験を、Eメール、メッセージ、ソーシャルメディアを通じて共有することを希望されることが想定される場合は、ゲームやその他のアプリをこの共有方法に対応させます。詳細は、「ReplayKit」をご参照ください。
新しい機能に対してランタイム条件チェックを追加する
tvOSの新しいバージョンに対応させるためにアプリをアップデートする際は、新しい機能のコードに対してランタイム条件チェックを追加します。ランタイムチェックにより、アプリの異なるバージョン(新しいtvOS用バージョンと古いtvOS用バージョン)を配信する必要性を排除できます。同じバージョンのアプリを実行するユーザーのうち、新しいtvOSを使用しているユーザーは、追加された新機能を利用できるようになります。ランタイムチェックを追加する方法については、「特定バージョンのプラットフォームやOSでコードを実行する」をご参照ください。
アプリのコンテンツ操作を別の方法で簡単にする
該当するコンテンツを見つけやすくする
ユーザーがアプリを使用する状況を想定して、重要なコンテンツをすぐに表示させる方法を検討します。日付情報を使用して、新しいコンテンツや現在のコンテンツを強調します。また、機械学習を使用し、データを分析してより良い解決策を提案する、インターフェイスを動的に再配置し、使用頻度の高いコンテンツに簡単にアクセスできるようにする、といったことを検討します。
アプリのコンテンツをユニバーサルリンクに対応させる
Webサイトとアプリで同様のコンテンツを提供する場合は、アプリをユニバーサルリンクに対応させます。ユニバーサルリンクを使用すると、アプリのコンテンツを開くためのURLを別途作成する必要がなくなります。1つのURLにより、アプリがインストールされている場合はアプリが起動し、インストールされていない場合はWebサイトが開きます。詳細は、「コンテンツへのリンクをアプリとWebサイトに許可する」をご参照ください。
独自の機能を提供すると同時に、Appleのプラットフォームと緊密に統合する、各種テクノロジーを確認しましょう。これらのテクノロジーにより、iOS、iPadOS、macOS、tvOS、visionOS、watchOSの全プラットフォームを通して、アプリとゲームのシームレスなエコシステムを実現できます。
アプリを配信する準備が整ったら、全世界の数億人のユーザーに向けてApp Storeからアプリを配信することができます。開発したアプリをApp Storeに提出するための準備方法を確認しましょう。