iPadOSアプリのプランニング

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

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

    広がる可能性

    iPadは、場所を選ばず使用できるデスクトップクラスのアプリを提供する理想的なプラットフォームです。iPad本体の大型スクリーンに加えて外部ディスプレイにも対応しているため、より多くのアプリコンテンツを表示できます。Magic Keyboardおよびステージマネージャによるマルチタスク環境によって作業効率が向上し、Appleシリコンのパワーは生産性を新たなレベルに引き上げます。これらの機能を活用すると、ビジネスや仕事効率化、グラフィックスやクリエイティビティ、メディア、ゲームなどのアプリで素晴らしいクオリティを実現できます。

    iPadアプリを開発する際は、開発初期のアプローチがその後の多くの決定に影響を与えます。そのため、アプリのコンテンツの種類や表示方法に応じてアプローチを決めましょう。

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

    iPadOSに用意されているボタンやテキストラベル、およびその他の標準的なビューやコントロールを利用することによって、アプリを短期間で構築できます。コントロールの外観をカスタマイズしたり、まったく新しいビューを構成して、コンテンツを個性的に演出することも可能です。このアプローチは、ほとんどのアプリで効果的で、開発期間の短縮にもなります。

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

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

    開発のアプローチを決定した後は、必要となる可能性のあるその他のテクノロジーについて検討します。いくつかのコアテクノロジー以外にも、特定の機能を実現する上での必要性に合わせて、ほとんどのテクノロジーを採用できます。iPadOSのテクノロジーにより、基礎レベルの細部なハードウェア機能を設計する必要がなく、その他の部分についてもアプリを構築するための安定的な基盤が提供されます。

    開発を始める場所

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

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

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

    Xcodeで新規プロジェクトを作成するには、「File (ファイル)」>「New (新規)」>「Project (プロジェクト)」を選択して、表示される指示に従い、iOSアプリの開発を開始します。iPadOSはiOSから派生しているため、iOSの新規プロジェクトにはデフォルトで、iPhone向けとiPad向けの両方のリソースが含まれています。また新規プロジェクトには、各アプリタイプに応じて若干異なるデフォルトコードも含まれているため、開発を簡単に開始できます。Xcodeの使用方法に関するその他の詳細は、Xcode のドキュメントで確認してください。

    Swift Playgroundsは、コードや開発テクノロジーを学習および実験したいユーザーを対象とした、インタラクティブなコーディング環境です。詳細は、「Swift Playgrounds」を参照してください。

    Swiftを利用する

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

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

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

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

    初期段階ではさらに、インターフェイスに使用するアプリ構築用テクノロジーを選択する必要があります。Appleのアプリ構築用テクノロジーでは、iPadOSがアプリと通信するために必要となるコアインフラストラクチャが提供されます。また、インターフェイスの構築やイベントの処理などに使用するプログラミングモデルも定義されます。以下のいずれかのテクノロジーを選択しましょう。

    SwiftUI

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

    UIKit

    UIKitでは、コードで記述したプログラムによって、またはStoryboardを使用して視覚的にインターフェイスを構築できます。UIKitには、より従来的なアプリ開発アプローチが用意されており、インターフェイス要素を自由に管理できます。ビューやコントロールを更新するために必要なコードを記述できるほか、各要素の構成を変更したり、変更内容をアプリ内の別の箇所に伝えることができます。UIKitを使用してアプリを開発するための詳しい方法については、「今すぐ始めよう」チュートリアルを参照してください。

    開発に着手する方法が分からない場合は、アプリ構築用テクノロジーとしてSwiftUIを選択しましょう。SwiftUIとUIKitのどちらを選択しても、アプリの開発に必要なすべてが用意されていますが、開発の出発点としてはSwiftUIがおすすめです。また、SwiftUIとUIKitは相互互換性があるため、一方を選択した後でも、同じアプリ内で他方を使用することも可能です。SwiftUIビューとUIKitビューを同じビュー階層内に混在させることも簡単です。

    SwiftUIとUIKitは、Appleのデータ管理テクノロジーとシームレスに連携し、インターフェイスの構築を支援します。Swift標準ライブラリおよびFoundationフレームワークには、Array型やDictionary型などの構造型や、文字列、数字、日付、およびその他の一般的なデータ値に使用する値型が用意されています。ユーザー定義のカスタム型については、SwiftのCodableサポートを採用してそれらの型をディスク上で永続化します。アプリがより大規模な構造化データを管理する場合は、Core DataおよびCloudKitで提供されているオブジェクト指向モデルを使用してデータの管理及び永続化を行えます。

    ユーザー体験を設計する

    魅力的な体験を提供するアプリには、ユーザーが自然と集まります。そのようなユーザー体験を実現するには、分かりやすいレイアウトで、見栄えがよく、適切なコンテンツを強調するUIが必要です。UIの操作方法は、直感的で既存のパターンにマッチすると良いでしょう。何よりも重要なのが、iPad上でインターフェイスを自然に操作できることです。

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

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

    iPadのさまざまなサイズ、向き、外観のカスタマイズに対応できるようにしましょう。iPadのマルチタスク機能では複数のアプリを画面内に配置できるため、あなたのアプリが画面全体を占有できるとは限りません。ユーザーは、システム設定を変更することによって、アプリやシステムの外観をカスタマイズすることもできます。このような環境に対応させるため、必ず以下の機能を採用してください。

    シーン

    シーンとは、アプリのインターフェイスを管理するプログラムレベルのオブジェクトです。アプリのコアインフラストラクチャの一部としてシーンオブジェクトを導入し、重要なタイミングでアプリの動作を調節するために使用します。iPadOSは、インターフェイスのインスタンスを複数実行するために、およびステージマネージャによる優れたマルチタスク体験を実現するために、シーンに依存します。シーンに対応させる方法については、SwiftUIおよびUIKitのドキュメントを参照してください。

    自動レイアウト

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

    外観のバリエーション

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

    Dynamic Type

    ユーザーはシステム設定で、大きなフォントに変更して文字を見やすくしたり、小さいフォントに変更して画面により多くの情報を表示させたりできます。このようなフォントサイズの変更に応じて、アプリのテキストも調整する必要があります。このためには、標準的なタイプスタイルを採用してこの調整を自動的に行うか、またはカスタムフォントを含むテキストに対してシステムAPIを使用して手動で調整するようにします。SwiftUIではビューの環境から、UIKitでは特性コレクション(Trait Collection)から、それぞれ新しいテキストサイズを選択できます。

    スケーラブルな画像

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

    アプリのほとんどの操作はタッチ入力で行いますが、キーボードやApple Pencilを使用した操作にも対応しています。iPad用のMagic Keyboardを使用すると、ポインタベースのインターフェイス操作、ビュー上へのポインタ移動、アプリメニューに対応したキーボードショートカットの実行、オンスクリーンキーボードを使用しない文字入力が可能になります。Apple Pencilを使用すると高精度で低レイテンシな入力が可能で、高さ、傾き、圧力の情報に対応するため、描画アプリでのコンテンツ作成に使用できます。

    iPadOSにおいて、メニューは非常に重要なインタラクション要素です。iPadでは、Magic Keyboard のCommandキーを押すとアプリのメニューが表示され、対応するキーボードショートカットを使用してメニューコマンドを実行できます。Mac Catalystを使用してアプリのMacバージョンを作成する場合、このメニューはmacOSアプリのメニューとなります。詳細は、SwiftUIまたはUIKitのドキュメントを参照してください。

    アプリのインターフェイス使用環境は、起動するたびにその連続性を維持するようにしてください。アプリを起動した際に前回の状態や外観が復元されるようにして、ユーザーが前回アプリを終了した状態から再開できるようにします。この連続性は、システムがバックグラウンドのアプリを終了してメモリとリソースを再利用できるようにするために重要です。詳細は、「アプリの状態をSwiftUIで復元する」(SwiftUI)または「アプリを起動するたびにUIの状態を維持する」(UIKit)を参照してください。

    デスクトップクラスのドキュメント機能を搭載する

    iPadOSには、ドキュメントを作成、編集、管理するためのパワフルなワークフローが用意されています。優れたドキュメント編集環境に対応させることで、効率の向上、ワークフローのカスタマイズ、生産性の向上を実現できるようにユーザーを支援しましょう。

    ツールバー環境をパーソナライズする

    新しいエディタスタイルのナビゲーションバーを使用すると、Macのツールバーのようなコンテンツの密度や柔軟性をiPad上で実現することができます。ユーザーがツールバーのレイアウトをカスタマイズできるようにし、頻繁に選択するオプションに簡単にアクセスできるようにして、特殊な機能はオーバーフローメニューに移動できるようにします。

    スピーディーなテキスト編集とドキュメント管理を可能にする

    一般的なテキスト編集機能に簡単にアクセスできるようにし、強化されたテキスト編集メニューを使用して機能を探す手間を省きます。システムの「検索と置換」機能を、標準テキストビューやカスタムテキストビューに統合することもできます。またタイトルメニューに、移動、複製、名前変更、書き出し、共有、ドラッグ&ドロップなどのドキュメント関連機能を追加します。

    iCloud Driveを使用してデバイス間でファイルを共有する

    ドキュメントやファイルをiCloudに保存するオプションを提供することにより、ユーザーが所有するすべてのデバイスからファイルにアクセスできるようになります。サイズが小さいデータは、iCloud Key-Value Storageを使用して共有します。

    クイックルックのプレビューに対応させる

    クイックルックでは、ファイルを開くことなくその内容を簡単に確認できます。一般的なファイル形式に対して、アプリ内でのクイックルックのプレビューを可能にすることにより、スムーズなドキュメント編集体験が実現し、カスタムデータ形式のプレビュー生成も可能になります。詳細は、「QuickLook」を参照してください。

    詳細は、「デスクトップクラスのiPadアプリを開発する」を参照してください。

    開発にあたってのベストプラクティス

    以下のベストプラクティスを実践し、すべてのユーザーにとってベストな体験を提供しましょう。

    ユーザーのプライバシーを保護する

    プライバシーは重要なため、ユーザーのデータがどのように使用されるかを明確にする必要があります。データを収集する場合は、その情報がどのように使用されるかを説明する、プライバシーに関する声明を表示するようにします。個人データを利用するAppleテクノロジーを採用する場合、データの初回利用時に、データの使用用途に関する説明をシステム上で表示してください。詳細は、「ユーザーのプライバシーを保護する」を参照してください。

    収集および保存したデータを保護する

    データを収集する場合は必ず、悪意ある攻撃からそのデータを保護してください。パスワードに代わるセキュリティ対策としてパスキーを採用します。個人識別情報、金銭に関するデータ、機密性の高いその他のデータは、ユーザーの暗号化されたキーチェーンに保存します。その他の個人データは、ディスク上の暗号化テクノロジーやその他のAppleのセキュリティテクノロジーを使用して保存します。ローカルに保存するデータやアプリの外部に送信するデータは、AppleのCryptoKitを使用して暗号化します。

    アクセシビリティへの対応を検証する

    Appleのテクノロジーにはアクセシビリティへのサポートが組み込まれていますが、画面読み上げ機能やその他のアクセシビリティ機能は、アプリから提供される情報に依存します。SwiftUIおよびUIKitでは各UI要素を定義することはできますが、それらのUI要素がどのように相互に連携するかはデベロッパ次第です。アクセシビリティラベルおよびその他の説明をレビューし、それらが有益な情報を提供すること、およびフォーカスベースのナビゲーションがシンプルで直感的になっていることを確認してください。詳細は、「アクセシビリティ」を参照してください。

    アプリを国際化およびローカライズする

    グローバルな市場を視野に入れ、アプリをローカライズして異なる地域や言語に対応させましょう。アプリをローカライズできるよう、異なる言語や地域向けに文字列、日付、時刻、通貨、数字をフォーマットするためのコードが提供されているFoundationフレームワークを使用します。左から右に書く言語と右から左に書く言語の両方において、UIが適切に表示されるよう対応させてください。アプリのリソースは、ローカライズしてXcodeのプロジェクトに追加します。インターナショナライゼーションとローカリゼーションのプロセスに関する情報は、「ローカリゼーション」を参照してください。

    あらゆるユーザーを考慮して設計する

    コンテンツを作成する際は社会的および文化的な違いを考慮し、特定のユーザーに対してネガティブまたは軽蔑的なニュアンスを持つ画像や用語の使用を避けてください。詳細は、「インクルージョン」を参照してください。

    アプリを徹底的にテストおよびデバッグする

    開発サイクルでは、問題が発生すると同時に、組み込まれているXcodeデバッガを使用してデバッグを行います。XCTestを使用して自動テストスイートを作成し、ビルドするたびに毎回テストを実行して、新しいコードが想定通りに機能することを確認します。Xcode Cloudの継続的インテグレーションシステムを使用して、ビルド、テストサイクル、QAチームへのアプリ配布を自動化します。

    アプリのパフォーマンスを最適化する

    Xcodeに付属するInstrumentsアプリを使用して、コードのボトルネックやパフォーマンスに関するその他の問題を特定します。このアプリでは、実行コードのプロファイル取得、メモリリークの検出、リソース使用状況の分析などが可能です。Instrumentsアプリを使用して測定値を収集する方法については、「アプリのパフォーマンスを向上させる」を参照してください。

    アプリのビジネスモデルを選択する

    「無料」、「無料(アプリ内課金あり)」、「有償でダウンロード」などのビジネスモデルを使用して、アプリを全世界に配信しましょう。インターフェイスを構築する際は、統一感のある体験を提供し、選択したビジネスモデルに対応するインターフェイスを心がけてください。詳細は、ビジネスモデルの選択」を参照してください。

    複数プラットフォームに対応する

    iPadOS向けに開発を開始した場合は、同時にiOSに対応させることも検討してください。iOSとiPadOSには共通する多くのテクノロジーが採用されているため、同じ実行形式ファイルを両方に対応させることも容易です。

    iPadOSに向けて作成したコードを、別のプラットフォームに対応させることも可能です。アプリ構造とデータベースのコードは、Appleの任意プラットフォームに対してほぼすべて再利用できます。またAppleのテクノロジーにより、アプリのUIやその他の部分の再利用も簡単です。

    すべてのAppleプラットフォームでSwiftUIビューとUIを再利用する

    SwiftUIのユニバーサルな仕様は理想的な開発環境となっており、異なるプラットフォームに向けてアプリのカスタムバージョンを作成する時間も短縮できます。

    Mac Catalystを使用して、iPadOSアプリのMacバージョンを短期間で作成する

    Mac Catalystを使用してアプリを再ビルドすると、macOSで実行可能なアプリバージョンを作成できます。これにより、アプリがより自然にMacプラットフォームで機能するよう、チューニングするための時間を確保することができます。詳細は、「Mac Catalyst」を参照してください。

    iOSアプリに変更を加えることなく、Appleシリコン搭載Macで実行する

    詳細は、「iOSアプリをmacOSで実行する」を参照してください。

    さらにその先へ

    アプリをビルドし、実行できることを確認したら、その体験を向上させる方法を検討しましょう。特定機能の追加やコンテンツに対するアプローチの変更など、小さい変更が大きい違いをもたらすこともあります。たとえば、次の内容を検討します。

    ウォレットやApple Payに対応させる

    ウォレットやApple Payに対応させることにより、ユーザーがアプリのサービスを利用する際の利便性が向上します。アプリでポイントカード、搭乗券、チケット、ギフトカード、またはその他のデジタルカードがサポートされている場合、ユーザーはこれらをウォレットに追加して簡単にアクセスできます。また、アプリをApple Payに対応させると、ユーザーは商品やサービスの代金をより簡単に支払えるようになります。

    状況に応じて適切なコンテンツを表示させる

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

    アプリのコンテンツを簡単に検索できるようにする

    アイテムに関する包括的な説明を追加して、Spotlight検索でより簡単に検出できるようにします。用意されているユーザアクティビティオブジェクトを使用し、ユーザーが検索結果を選択した際に、アプリを適切な状態にして結果を表示するようにします。

    異なる入力形式を考慮する

    ユーザーが行うほとんどの操作はタッチ入力、Magic Keyboard、Apple Pencilを使用して行われますが、iPadはその他の入力方法にも対応しており、UIKitのインタラクションオブジェクトによってドラッグ&ドロップ、バンド選択、スクリブル入力などでの複雑なイベントシーケンスが処理されます。Core Motionフレームワークは、内蔵の加速度センサーとジャイロスコープを使用したモーションベースの入力に対応し、AVFoundationフレームワークは、内蔵のカメラとマイクを使用したオーディオとビデオのキャプチャに対応しています。ゲームにGame Controllerフレームワークを採用すると、外付けのゲームコントローラハードウェアに対応させることができます。

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

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

    開発したコンテンツとのインタラクションに対応する手段はアプリだけではありません。以下のテクノロジーを採用することにより、システムのその他のエリアまでアプリの連携範囲を拡大することができます。

    コンテンツを他のシステムサービスと統合する

    一部のシステムサービスは、アプリ固有の情報を統合し、App Extensionを使用してその情報を収集します。たとえばWidget Extensionでは、アプリのコンテンツをホーム画面に表示させることができます。iPadOSは、多くの種類のApp Extensionに対応しており、カスタムキーボード、Siriの統合、通知などに対応させることが可能です。Extensionのリストやその他の詳細については、「App Extension」を参照してください。

    App Clipを追加して、アプリの機能に簡単にアクセスできるようにする

    App Clipはアプリの軽量版で、ユーザーは完全版アプリをダウンロードしてインストールすることなく、その一部の機能を試用することができます。たとえば、自転車レンタルサービス会社がApp Clipを提供して自転車を貸し出す、といったことが考えられます。ユーザーがサービスのApp Clipコードをスキャンすると、システムがそのApp Clipをダウンロードして表示します。詳細は、「App Clip」を参照してください。

    異なるデバイス間での連係に対応する

    Handoffを使用すると、1台のデバイスで開始した作業を、同じApple IDに関連付けられている別のデバイス上の同じアプリで継続できます。たとえば、iPhoneで開始した作業をiPadやMacで継続できます。デベロッパが、デバイス間で連係可能にする作業を決定し、それらの作業が発生するタイミングをシステムで設定します。詳細は、「アプリにHandoffを実装する」を参照してください。

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

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

    その他のリソース

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

    アプリの配信

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

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