👻

(Xcode用語解説)プロジェクト・ターゲット・スキームについて

2024/06/27に公開

はじめに

アプリ開発初心者の方に向けた記事です。基本的な内容ですが、探してみると解説が見つからず、まとめた次第です。

※記事中のスクリーンショットはXcode 15のものです。

画面の説明

用語を説明する前に、それぞれ対応する画面について説明します。

プロジェクトエディタ(Project Editor)

Project Editorのスクリーンショット

Info、Build Settings、Package Dependenciesが表示されている画面をプロジェクトエディタとよびます。

ターゲットエディタ(Target Editor)

ターゲットエディタのスクリーンショット

General、Signing & Capabilities、Resource、...が表示されている画面をターゲットエディタとよびます。

ご覧のとおりプロジェクトエディタとターゲットエディタどちらも「Info」メニューがあります。紛らわしいので、Xcodeの操作方法を説明したり、されたりする場合は注意しましょう。

スキーム管理(Manage Schemes)

Manage Schemesのスクリーンショット

画面の最上部にあるXcodeのメニュー、Product→Scheme→Manage Schemesを選択するとスキーム管理画面が表示されます。

用語の解説

お待たせしました。ここから用語の解説です。

プロジェクト

プロジェクトはターゲットを管理するための箱だと考えてください。プロジェクトには複数のターゲットを含めることができます。

Xcodeを起動してFile→New→Projectから新規アプリのプロジェクトを作成したとします。この場合は1つのプロジェクトに1つのターゲットが含まれています。

ターゲット

ターゲットはアプリのことだと考えてください。1つのプロジェクトに1つのターゲットを含めるのが基本ですが、複数のターゲットを含めても構いません。

複数ターゲットの例

  • 有料アプリと無料アプリ
  • 日本語版アプリと英語版アプリ
  • デバッグ用の非公開アプリとAppStore公開用のアプリ

ターゲットの分割方法に規則はありません。1つのターゲットに多数のアプリをまとめることも技術的には可能です。

しかし、例えば日本語版アプリと英語版アプリで処理を分岐させるのはSwiftコードの見通しが悪くなります。もし言語・地域別にアプリの内容が大きく変わるのであれば、別々のターゲットとしてアプリ開発を進める方が作業しやすいかもしれません。

(補足)プラットフォームの組み合わせ

プロジェクトに複数のターゲットを含める場合、プラットフォームの組み合わせ方は自由です。

プラットフォームの例

  • iOSアプリとiOSアプリ(言語・地域別アプリなど)
  • iOSアプリとmacOSアプリ
  • iOSアプリとApp Extension

なお、iOSとipadOSはXcode上では「iOS」として1つのターゲットにまとめられています。ipadOSをサポートする予定がなければターゲットエディタのGeneral→Supported DestinationsからipadOSを除去してください。

また、AppStore Connectのサイト上で追加の設定が必要な場合があります。例えば、記事を投稿した2024-06-27現在はデフォルトでiOSアプリがvisionOSアプリとして配信されるそうです。意図したとおりにアプリが配信されない場合、Xcodeの設定に加えてAppStore Connectのサイトも確認してみてください。

スキーム

スキームはどのターゲットをビルドするか設定をまとめたものです。通常はターゲット作成と同時に、アプリと同じ名前のスキームが自動的に作成されます。

スキームの詳細や設定項目については解説の範囲をこえるので、各自で調べてください。

おわりに

内容に間違いがありましたらコメントいただけると助かります。

Discussion