UIKitおよびXcodeがiOSまたはtvOS App向けに提供する基本的なサポートについて説明します。
概要
UIKitフレームワークは、iOSおよびtvOS Appの構築に必要な中核オブジェクトを提供します。これらのオブジェクトを使って、コンテンツをスクリーンに表示し、そのコンテンツを操作して、システムとのインタラクションを管理します。Appはその基本的な動作にUIKitを利用します。UIKitには、特定のニーズに合わせてその動作をカスタマイズするためのさまざまな方法が備わっています。
重要
iOSまたはtvOS Appの開発を始めるときは必ず、Appleの統合開発環境であるXcodeでプロジェクトを作成してください。Xcodeが手元にない場合は、App Storeからダウンロードできます。developer.apple.com/jp/から最新バージョンをダウンロードすることもできます。
Xcodeが提供するテンプレートプロジェクトは、あらゆるApp制作の出発点として利用できます。例として、図1に、XcodeでSingle View Appテンプレートを使って作成したAppの構造を示します。このテンプレートプロジェクトでは表示するユーザーインターフェイスを最小限に抑えているため、プロジェクトをすぐに構築および実行して、その結果をデバイスまたはシミュレータで確認できます。
単一ビューのiOS Appの構造

Appのビルドでは、Xcodeがソースファイルをコンパイルし、プロジェクト用のAppバンドルを作成します。Appバンドルは構造化されたディレクトリで、コードとAppに関連付けられたリソースを含んでいます。リソースには、コードをサポートする画像アセット、Storyboardファイル、文字列ファイル、Appのメタデータなどが含まれます。Appバンドルの構造は重要ですが、リソースを配置すべき場所はXcodeが知っているため、ここでは心配する必要はありません。
必須のリソース
すべてのUIKit Appに以下のリソースが必要です。
-
Appアイコン
-
起動画面Storyboard
Appアイコンは、ホーム画面や「設定」などあらゆる場所に表示され、そこでは作成するAppを他のAppと区別する必要があります。アイコンはさまざまな場所およびデバイスで使用されるため、XcodeプロジェクトのAppIcon画像アセットで各々のバージョンのAppアイコンを指定します。Appアイコンは、ユーザーがホーム画面でAppをすぐに識別できるような特徴を持つ必要がありますが、アイコンの細部を変化させて、場所によってそれぞれ異なる画像サイズに対応させることができます。
iOS App用のアイコンの指定

Launch
ファイルはAppの最初のユーザーインターフェイスを構成するもので、スプラッシュ画面または実際のインターフェイスの簡易版のいずれかになります。ユーザーがAppのアイコンをタップすると、起動画面がただちに表示され、Appが現在起動中であることをユーザーに知らせます。また、起動画面は初期化中のAppを隠すカバーの役割も果たします。Appの準備が完了すると、起動画面が非表示になり、Appの実際のインターフェイスが表示されます。
必須のAppメタデータ
システムは、Appの構成と機能に関する情報をAppバンドルの情報プロパティリスト(Info
)ファイルから取得します。Xcodeは、すべての新規プロジェクトテンプレートで事前に設定済みのファイルを提供しますが、多くの場合、何らかの修正が必要になります。たとえば、Appが特定のハードウェアに依存しているか、特定のシステムフレームワークを利用している場合は、これらの機能に関連する情報をこのファイルに追加する必要があります。
Info
ファイルに対する一般的な修正事項の1つに、Appのハードウェアおよびソフトウェア要件の宣言があります。これらの要件を宣言することで、作成するAppの実行に何が必要かをシステムに伝えます。たとえば、ナビゲーションAppは、ターンバイターンの経路案内を行うためにGPSハードウェアが存在していることを要件とします。App Storeでは、Appの要件を満たしていないデバイス上にAppがインストールされないように対策を講じています。
Appのハードウェアおよびソフトウェア要件の宣言

Info
ファイルに含めることができるキーの詳細については、「情報プロパティリストキーのリファレンス(英語)」を参照してください。
UIKit Appのコード構造
UIKitは、Appの中核を成すオブジェクトを多数提供します。これには、システムとのインタラクション、Appのメインイベントループの実行、コンテンツをスクリーンに表示するオブジェクトが含まれます。これらのオブジェクトのほとんどはそのまま使えますが、若干の修正が必要なこともあります。Appの実装にあたっては、どのオブジェクトをいつ修正すべきかを理解しておくことが重要です。
UIKit Appの構造はModel(モデル)-View(ビュー)-Controller(コントローラ)(MVC)設計パターンに基づいており、オブジェクトはその役割別に分離して実装されます。モデルオブジェクトはAppのデータとビジネスロジックを管理し、ビューオブジェクトは、データのビジュアル表現を提供します。コントローラオブジェクトは、モデルオブジェクトとビューオブジェクト間のブリッジとしての役割を果たし、適切な時にそれらのオブジェクト間でデータを移動させます。
図4は、典型的なUIKit Appの構造を示しています。Appのデータ構造を表すモデルオブジェクトは各自で指定します。ビューオブジェクトのほとんどはUIKitから提供されますが、必要に応じて各自のデータのカスタムビューを定義することもできます。データオブジェクトとUIKitビューの間のデータ交換はビューコントローラとAppデリゲートオブジェクトが調整します。
Appの中核を成すオブジェクト

UIKitおよびFoundationフレームワークは、Appのモデルオブジェクトの定義に使う基本型の多くを備えています。UIKitは、ディスクベースのファイルに属するデータ構造を整理するためのUIDocument
(英語)オブジェクトを提供し、Foundationフレームワークは、文字列、数値、配列などのデータ型を表す基本オブジェクトを定義します。Swift標準ライブラリ(英語)には、Foundationフレームワークで提供されているのと同じデータ型の多くが用意されています。
UIKitはAppのコントローラおよびビューレイヤに存在するほとんどのオブジェクトを提供します。具体的には、コンテンツのスクリーン表示をほとんど処理するUIView
(英語)クラスを定義しています(Metalやほかのシステムフレームワークを使ってコンテンツをスクリーンに直接、レンダリングすることもできます)。UIApplication
(英語)オブジェクトはAppのメインイベントループを実行し、Appのライフサイクル全体を管理します。