tvOSアプリのプランニング

Apple TV向けソフトウェアを初めて開発する場合は、利用するツールやテクノロジーについてよく理解しておきましょう。Appleでは、開発を始めるために必要なすべてを用意しており、tvOSテクノロジーにより、アプリで目的とする機能やパフォーマンスを実現することができます。

tvOS向けの新しいアプリのアイデアとテクノロジーに関するStoryboard

    広がる可能性

    ユーザーがソファでくつろぎながら楽しめるコンテンツを提供し、Apple TVによるリビングルーム体験を充実させましょう。エンターテインメント、スポーツ、ニュースなどの最新コンテンツをストリーミング配信したり、優れたゲームや教育コンテンツ、フィットネスアプリのパーソナルトレーニングセッションを提供します。コンテンツを、4Kビデオ、Dolby Vision、Dolby Atmos、HDR10などのハイクオリティなフォーマットで提供することも可能です。アプリのインターフェイスは、Apple TV Remoteを使用して簡単に操作できるように設計します。

    tvOSには、コンテンツ配信のための複数のアプローチがあり、最初に選択したアプローチがその後の決定に影響を与えます。

    標準的な要素からUIを構築する

    各リリースにおいてコンテンツに大きな変更がない場合は、tvOSに用意されているボタンやテキストラベル、およびその他の標準的なビューやコントロールを利用してUIを構築します。コントロールの外観をカスタマイズしたり、まったく新しいビューを構成して、コンテンツを個性的に演出することも可能です。UIはApple TV上にローカルで保持され、ローカルまたはネットワークから取得したデータがそこに反映されます。

    UIとコンテンツをサーバ上に保存する

    XMLテンプレート、JavaScriptコード、およびサーバ上に保存したその他のコンテンツを使用して、動的にUIを構築します。アプリのコンテンツを定期的に更新する場合はこのアプローチを選択します。たとえば、映画ランキングが毎週更新されるメディアアプリなどに適切なアプローチです。この場合は、アプリが実行時にコンテンツをダウンロードしてインターフェイスを構成します。

    画面上のすべての要素を自分で描画する

    アプリの外観を自由に構成し、画面に表示されるすべての要素を自分で描画することができます。2Dや3Dのカスタム環境を活用して、ゲームや臨場感あふれる体験を構築できます。Metalなどのテクノロジーを活用すると、高いフレームレートでコンテンツをレンダリングしてアニメーションさせることが可能です。

    このアプローチを選択する場合は、必要となるその他の機能についても検討してください。いくつかのコアテクノロジー以外にも、特定の機能を実現する上での必要性に合わせて、ほとんどのテクノロジーを採用できます。Appleでは、メディアの管理と再生、データの作成とセキュリティ保護、外部ハードウェアとの接続、Siriなどのシステムサービスとの統合など、多様な用途に対応するテクノロジーを提供しています。

    開発を始める場所

    ソフトウェアの開発は、Appleの統合開発環境であるXcodeで始めます。Xcodeには、プロジェクト管理、コードエディタ、UI用のビジュアルエディタ、デバッグツール、各種デバイスのシミュレータ、パフォーマンス評価ツールなど、ソフトウェア開発に必要なすべてのツールが用意されています。またXcodeには、「フレームワーク」と呼ばれる、ソフトウェア開発用のシステムコードモジュールが含まれています。

    App StoreからXcodeをダウンロード

    Xcodeには、iOS、iPadOS、macOS、tvOS、watchOS向けの各SDKが用意されています。

    Xcodeで新規プロジェクトを作成するには、「File (ファイル)」>「New (新規)」>「Project (プロジェクト)」を選択して、表示される指示に従い、tvOSアプリの開発を開始します。新規プロジェクトにはデフォルトコードも部分的に含まれており、選択したアプリタイプによって開発アプローチが決定されるため、開発を簡単に開始できます。たとえば、アプリのUIを自社のサーバからダウンロードする場合は、TVMLアプリを選択します。Xcodeの使用方法に関するその他の詳細は、Xcodeのドキュメントで確認してください。

    Swiftを利用する

    プロジェクトを初期構成する際は、使用するプログラム言語を検討します。構文が簡潔な上、安全性を考慮した設計のもとコードの表現力をより豊かにする最新機能を装備していることから、Swiftが推奨されています。またSwiftのコードにより、処理が非常に高速なソフトウェアの作成が可能で、Objective-Cとの相互互換性もあるため、同一プロジェクト内に両言語のソースファイルを追加することもできます。

    Swiftプログラミング言語ガイド

    Swiftプログラミング言語ブックには、Swiftプログラム言語の概要がすべて網羅されており、Swiftの学習に向けて第一歩を踏み出す上で最適な資料です。

    アプリ構築用テクノロジーを選択する

    初期段階では、コアインフラストラクチャに使用するアプリ構築用テクノロジーも選択する必要があります。アプリ構築用テクノロジーには、インターフェイスの構築、イベントの処理、システムとの通信を可能にするための、基本的なコードが用意されています。各アプリ構築用テクノロジーは、最低でも1つの開発アプローチに対応しており、複数のアプローチに対応しているテクノロジーもあります。

    以下のアプリ構築用テクノロジーから選択します。

    SwiftUI

    SwiftUIは、プラットフォームに依存しないモダンなアプローチでUIおよびアプリのインフラストラクチャを構築できるため、アプリ構築用テクノロジーとして推奨されています。SwiftUIでは、プログラムによってインターフェイスを指定し、システム上(およびXcodeエディタ内)でそのインターフェイスを動的に表示および更新させることができます。SwiftUIの詳しい使用方法については、「SwiftUIの紹介」チュートリアルを参照してください。

    TVMLとTVMLKit

    TVMLとTVMLKitには、アプリのUIを構築するためのクライアントサーバモデルが用意されています。UIをXMLテンプレートページのセットとして定義する場合は、TV Markup Language (TVML) を使用します。これらのページおよびUIを構築するためのJavaScriptコードをサーバ上に保存し、実行時にアプリにダウンロードします。TVMLKitを使用してこれらのページを画面上でレンダリングし、SwiftUIまたはUIKitを使用してアプリのその他のインフラストラクチャを実装します。「TVMLKitを使用してハイブリッドTVアプリを実装する」には、TVML、TVMLKit、UIKitを使用して、クライアントサーバアプリを作成する例が紹介されています。

    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を構築してください。

    ヒューマンインターフェイスガイドライン

    Appleのヒューマンインターフェイスガイドラインには、Apple TVにおいて、アプリのインターフェイスをデザインする方法、コンテンツを操作する方法、インタラクションを管理する方法に関する重要な情報が記載されています。tvOSのエコシステムについて学習する際はこれらのガイドラインを最初に確認することが大切です。該当するAppleのデザインリソースを参考にしながらアプリの開発を行ってください。

    tvOSアプリでは、必要不可欠な機能やテクノロジーがいくつかあります。最初のUIを計画する際は、必ず以下の機能に対応することを検討してください。

    ダークモード

    システム全体を対象とするこの設定により、ユーザーは、Apple TVのインターフェイスをライトモードまたはダークモードで表示できます。ライトモードとダークモードのインターフェイススタイルにはそれぞれ異なるカラーパレットと画像アセットを使用しますが、これらのアセットはアセットカタログを利用して管理します。UIのその他の部分については、システムAPIを使用して表示モード(ライトモードとダークモードのいずれかの表示)を変更するタイミングを決めることができます。詳細は、「インターフェイスをダークモードに対応させる」を参照してください。

    シーン

    シーンは、アプリのインターフェイスを管理するために重要なインフラストラクチャの一部で、UIと、アプリのそれ以外の部分との間の相互処理を調整します。また、UIに影響を与える通知(フォアグラウンド実行とバックグラウンド実行との間の移行など)にも対応します。すべてのアプリが、必ずシーンに対応するようにしてください。詳細は、「SwiftUI」および「UIKit」を参照してください。

    自動レイアウト

    テレビ画面のサイズ、アスペクト比、解像度に合わせてビューの位置を手動で調節するのではなく、アプリ使用時のセーフエリアに応じてシステムが自動調整するようにします。SwiftUIとTVMLには、UI設計アプローチの一部として自動レイアウトが用意されています。UIKitビューに自動レイアウトを採用する場合は、インターフェイスに自動レイアウト制約を追加します。

    スケーラブルな画像

    アプリにSF Symbolsを取り入れることで、変更に対して柔軟に対応することができます。SF Symbolsアプリには、膨大な数の設定可能なベクターベースの画像が収録されており、これらの画像は外観やサイズの変更に自然に適応します。また、システムフォント「San Francisco」とも調和するため、Appleの各種プラットフォームでの一貫性も維持されます。「UIのシンボル画像を構成および表示する」を参照してください。

    インターフェイスは、フォーカスベースのナビゲーションを考慮して設計してください。アプリのほとんどの操作はApple TV Remoteを使用して行われます。ユーザーは、Remoteの方向ボタンを使用してUI上のフォーカス対象を移動し、選択ボタンを押してフォーカス対象のアイテムを実行、またはメニューボタンを押して前の画面に戻ります。ナビゲーションは可能な限りシンプルにして、テキスト入力やその他の複雑な操作は最低限に抑えます。

    ロックアップは、ナビゲーションをシンプルにするための1つの方法で、UI内の類似アイテムの一貫性を保つことができます。ロックアップとは、関連するビューを、選択可能な1つの要素として組み合わせたグループを指します。たとえば、映画のタイトル、説明、出演者リスト、ポスター画像などを、映画ロックアップにまとめます。ユーザーが映画を選択した場合は、個々のアイテムではなく、このロックアップ全体がフォーカスされます。詳細は、「ロックアップ」を参照してください。

    ハイクオリティなメディアの再生に対応する

    リビングルームにおいて重要な役割を果たすApple TVは、メディアを多用するアプリにとって理想的な場所となります。オーディオやビデオに関するAppleのテクノロジーにより、さまざまな形式のメディアを利用でき、最高のクオリティで再生するために必要なツールも用意されています。

    メディアを再生および管理する

    AVKitには、アプリのオーディオコンテンツやビデオコンテンツを再生および管理するために必要なすべての機能が用意されています。標準のシステムインターフェイスを使用してビデオを再生すると内蔵のトランスポートコントロールが表示され、AirPlay、ピクチャ・イン・ピクチャ(PiP)、インタースティシャルコンテンツなどにも対応しています。コンテンツをより詳細にコントロールする場合は、AVFoundationを使用します。

    ハイクオリティな空間オーディオを再生する

    AVFoundationフレームワークのオーディオ固有の型を含むAVFAudioを使用すると、究極の音楽プレーヤーの開発が可能になります。ゲームやアプリで複雑かつダイナミックなオーディオ体験の構築を可能にするPHASEを使用すると、オーディオを別次元にまで進化させることができます。

    ライブコンテンツや収録済みコンテンツをストリーミング配信する

    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 IDに関連付けられているiPhoneやiPadを使用してtvOSアプリにサインインできるようにします。アプリ固有のユーザープロファイルを選択するプロセスがシンプルになるマルチユーザーサポートを導入し、コンテンツにすばやくアクセスできるようにします。

    別のデバイスからの接続を可能にする

    ユーザーのiPhone、iPad、Apple WatchからtvOSアプリを操作できるようにします。DeviceDiscoveryUIを使用し、両方のデバイス上で実行されているアプリ間で安全なネットワーク接続を確立して、その接続を通じてデータを交換します。たとえば、iPhoneでのタッチ入力を通じてtvOSアプリをコントロールできるようにすることも可能です。

    トップシェルフにコンテンツを表示する

    Apple TVのホーム画面で最上段に表示されるアプリについては、そのすぐ上のバナーエリアに追加コンテンツを表示させることができます。そのコンテンツは、アプリに別途追加する実行形式ファイルTop Shelf App Extensionを使用してシステムに配信します。このExtensionを使用すると、新しいコンテンツやおすすめコンテンツを強調したり、他のユーザーのお気に入り番組を表示したりできます。このExtensionを作成する方法については、「TVサービス」を参照してください。

    SharePlayを使用してユーザーがアクティビティを共有できるようにする

    SharePlayでは、FaceTime通話で他のユーザーを招待してアプリのアクティビティを共有できます。これを導入してストリーミングビデオアプリを開発すれば、アプリ内で上映会を開催したり、ゲームを壮大なスポーツのようにプレイできるようになります。共有するアクティビティはGroup Activitiesを使用して定義します。AVFoundationを使用すると、メディア再生を同期することも可能です。

    オーディオやビデオをライブでキャプチャして配信する

    コンテンツを共有するもう1つの方法は、オーディオやビデオをライブでキャプチャし、収録コンテンツとして保存したり、ライブで配信することです。ユーザーが自分の体験を、Eメール、メッセージ、ソーシャルメディアを通じて共有することを希望されることが想定される場合は、ゲームやその他のアプリをこの共有方法に対応させます。詳細は、「ReplayKit」を参照してください。

    新しい機能に対してランタイム条件チェックを追加する

    tvOSの新しいバージョンに対応させるためにアプリをアップデートする際は、新しい機能のコードに対してランタイム条件チェックを追加します。ランタイムチェックにより、アプリの異なるバージョン(新しいtvOS用バージョンと古いtvOS用バージョン)を配信する必要性を排除できます。同じバージョンのアプリを実行するユーザーのうち、新しいtvOSを使用しているユーザーは、追加された新機能を利用できるようになります。ランタイムチェックを追加する方法については、「特定バージョンのプラットフォームやOSでコードを実行する」を参照してください。

    アプリのコンテンツ操作を別の方法で簡単にする

    該当するコンテンツを見つけやすくする

    ユーザーがアプリを使用する状況を想定して、重要なコンテンツをすぐに表示させる方法を検討します。日付情報を使用して、新しいコンテンツや現在のコンテンツを強調します。また、機械学習を使用し、データを分析してより良い解決策を提案する、インターフェイスを動的に再配置し、使用頻度の高いコンテンツに簡単にアクセスできるようにする、といったことを検討します。

    アプリコンテンツをユニバーサルリンクに対応させる

    Webサイトとアプリで同様のコンテンツを提供する場合は、アプリをユニバーサルリンクに対応させます。ユニバーサルリンクを使用すると、アプリのコンテンツを開くためのURLを別途作成する必要がなくなります。1つのURLにより、アプリがインストールされている場合はアプリが起動し、インストールされていない場合はWebサイトが開きます。詳細は、「コンテンツへのリンクをアプリとWebサイトに許可する」を参照してください。

    その他のリソース

    独自の機能を提供すると同時に、Appleのプラットフォームと緊密に統合する各種テクノロジーを確認しましょう。これらのテクノロジーにより、iOSiPadOSmacOS、tvOS、visionOSwatchOSの全プラットフォームを通してシームレスなアプリとゲームのエコシステムを実現できます。

    アプリの配信

    アプリを配信する準備が整ったら、全世界の数億人のユーザーに向けてApp Storeからアプリを配信することができます。開発したアプリをApp Storeに提出するための準備方法を確認しましょう。

    アプリの提出について詳しく