Info.plistとは何か、必須キーと起動構成

著者: IT Sectr 公開日: 2026-05-31 読了時間: 8 分

Info.plistは、iOSおよびmacOSアプリケーションのXML構成ファイルで、メタデータ、許可、起動設定を含みます。システムはアプリケーションコードの初期化前にこれを処理します。Apple Developer, 2025によると、Info.plistが正しく構成されていなければ、アプリはApp Storeのレビューを通過できません。Info.plistは、バンドルアイデンティファイヤ、ビルドバージョン、リクエスされた許可、およびサポートされる画面向きを定義します。

ポイント

  • Info.plistはplistフォーマットのiOS/macOSアプリケーション構成キーを含むXML辞書です
  • Bundle identifierはシグニングとサービスのためのAppleエコシステムにおける独自のアプリケーション識別子です
  • プライバシーキー (NSCameraUsageDescription)はカメラ、マイク、ジオロケーションへのアクセスに必須です
  • Custom URL schemesはディープリンク用にCFBundleURLTypesキーを通じて構成されます
  • UIRequiredDeviceCapabilitiesはApp Storeインストールのための最低デバイス要件を設定します

Info.plistとは

Info.plistは、ルート要素がdictで、プロパティリストの形式でキーバリューペアを含むXMLフォーマットのファイルです。アプリケーションバンドルの内部に位置し、コード実行前に各起動時にシステムが読み取ります。plistフォーマットは、文字列、数値、配列、辞書、日付、ブール値をサポートし、複雑な構成を記述できます。

AppleはInfo.plistを使用して、アプリケーションの識別、機能、および要件を定義します。いくつかのキーを変更するにはバンドルの再ビルドが必要です。なぜなら、ビルドをアップロードする際にApp Storeがチェックするメタデータに影響を与えるからです。例えば、公閃後にCFBundleVersionまたはCFBundleIdentifierを変更すると、アプリのアップデートプロセスが壊れる可能性があります。なぜなら、App Store Connectはバージョンを識別するためにこれらの値を使用するからです。

Xcodeでプロジェクトを作成すると、基本キーは自動的に生成されますが、多くの設定はアプリの機能拡張に伴って手動で追加されます。Xcodeは、標準キーのドロップダウンリストを備えたグラフィカルのInfo.plistエディタを提供し、タイプミスのリスクを軽減します。ただし、Scene ManifestやBackground Modesなどの複雑な構成の場合は、ラウのXMLを直接編集することをおすすめします。

必須のInfo.plistキー

いくつかのInfo.plistキーは、App Storeで公閃するために必須です。これらがないと、検証ステージでビルドが拒否されます。Appleは、Xcode OrganizerまたはTransporterを通じてアーカイブをアップロードする際に、これらのキーを自動的にチェックします。デベロッパーは、レビューに提出する前に、すべての必須フィールドが正しく設定されていることを確認する必要があります。

バンドル識別子

CFBundleIdentifierキーは、リバースドメイン表記法 (com.company.appname) で独自のアプリケーション識別子を設定します。これは、コードサイン、Push Notifications、CloudKit、App Groups、および他の多くのAppleサービスに使用されます。公閃後に識別子を変更すると、App Storeはこれを新しいアプリとみなし、既存のユーザーはアップデートを受け取れません。したがって、識別子はアプリのライフサイクル終わりまで変更してはなりません。

xml
<key>CFBundleIdentifier</key>
<string>com.itsectr.myapp</string>

アプリケーションバージョン

CFBundleShortVersionString (表示バージョン) およびCFBundleVersion (ビルド番号) のキーは、App Store Connectとシステムがアップデート管理に使用します。バージョンはmajor.minor.patch形式で指定されます。ビルド番号は、アプリのバージョンが変わらなくても、App Store Connectにアップロードする毎に増加する必要があります。AppleはCFBundleVersionを使用して、ビルドが新しいものか、すでにアップロードされたビルドの複製かを判別します。ビルド番号が既にアップロードされたビルドと一致する場合は、ITMS-90161エラーが返されます。

xml
<key>CFBundleShortVersionString</key>
<string>1.2.0</string>
<key>CFBundleVersion</key>
<string>42</string>

サポートされるインターフェイス向き

UISupportedInterfaceOrientationsキーは、iPhoneでサポートされる画面向きを定義します。iPadには、デバイス接尾辞のある独立したキーUISupportedInterfaceOrientations~ipadが使用されます。各向きは文字列で指定されます: UIInterfaceOrientationPortrait, UIInterfaceOrientationLandscapeLeft, UIInterfaceOrientationLandscapeRight, UIInterfaceOrientationPortraitUpsideDown。アプリがポートレイト向きのみをサポートし、iPhone専用でない場合、iPadにポートレイトのみが指定されていると、App Storeはビルドを拒否します。

xml
<key>UISupportedInterfaceOrientations</key>
<array>
    <string>UIInterfaceOrientationPortrait</string>
    <string>UIInterfaceOrientationLandscapeLeft</string>
</array>

許可とプライバシーキー

iOS 10以降、AppleはNS接頭辞 (NeXTStep) のキーを通じて、リクエスされる各許可に対して説明を必須としています。プライベートAPIへのアクセスを初めてリクエストする際に、説明がシステムダイアログでユーザーに表示されます。許可が必要なAPIを呼び出す際に対応するNSキーがないと、アプリケーションが例外を発生して即座にクラッシュし、クラッシュログに記録されます。

キー目的
NSCameraUsageDescription写真と動画のためのカメラアクセス
NSPhotoLibraryUsageDescriptionフォトライブラリへのアクセス
NSLocationWhenInUseUsageDescription使用中のジオロケーション
NSMicrophoneUsageDescription音声録音のためのマイクアクセス
NSContactsUsageDescriptionデバイスの連絡先へのアクセス

各プライバシーキーには、リクエストの理由をユーザーが理解できる説明を含める必要があります。「アプリの動作のため」や「アクセスが必要」などの空白またはテンプレートのテキストは、App Storeの拒否になります。説明は具体的な機能を説明する必要があります: 「QRコードをスキャンし、プロフィール写真を作成するには、カメラアクセスが必要です。」サポートされる各言語のInfoPlist.stringsファイルを通じて、説明のローカライズ版を使用することをおすすめします。

個人データにアクセスするAPIを呼び出す際に、必要なNSキーがないと、アプリケーションがクラッシュします。システムは例外でプロセスを終了し、XcodeまたはFirebase Crashlyticsのクラッシュレポートログでのみ確認できます。ユーザーには、何の説明もなく突然アプリが閉じるように見えます。したがって、カメラ、マイク、またはジオロケーションを使用する新しい機能を追加する前に、まずInfo.plistに対応するプライバシーキーを追加し、その後にAPI呼び出しを実装する必要があります。

Custom URL SchemesとApp Links

CFBundleURLTypesキーは、アプリケーションへのディープリンク用のカスタムURLスキームを登録します。これにより、ブラウザ、メール、または他のアプリからmyapp://profile/123などのリンクを通じてアプリを開くことができます。各スキームはアプリを固有に識別します: 二つのアプリが同じスキームを登録している場合、システムはユーザーにどちらを使用するか選択するダイアログを表示します。

xml
<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>com.itsectr.myapp</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>myapp</string>
        </array>
    </dict>
</array>

Universal Linksをサポートするには、Info.plistではなく、Entitlementsファイルにcom.apple.developer.associated-domainsキーが必要です。Universal Linksは、ドメインをアプリに結びつける構成されたapple-app-site-associationファイルがサーバーに存在する場合にのみ動作します。カスタムURLスキームと異なり、Universal Linksは確認ダイアログを表示せず、他のアプリと競合しません。なぜなら、カスタムスキームではなくHTTPSリンクを使用するからです。ただし、有効なSSL証明書を持つドメインが必要です。

カスタムスキームは、標準のiOSスキームと競合する可能性があります。他のアプリとの競合を最小限にするため、少なくとも4文字のスキームを使用することをおすすめします。例えば、スキーム「fb」は短すぎて競合する可能性があります。app://ではなくmyapp://のようにリバース表記法を使用することが得策です。また、アプリが削除されても、他のアプリが同じスキームを登録している場合、ユーザーがリンクをクリックした際に予期せぬ動作が発生する可能性があることに注意してください。

起動構成とバックグラウンドモード

UIBackgroundModesキーは、アプリのバックグラウンド機能を宣言します。各モードにはInfo.plistの対応する説明と、Xcodeプロジェクトの機能での確認が必要です。モードを指定しないと、システムは30秒後、またはリソースが不足している場合に、バックグラウンドタスクを強制終了する可能性があります。

xml
<key>UIBackgroundModes</key>
<array>
    <string>fetch</string>
    <string>remote-notification</string>
    <string>location</string>
    <string>processing</string>
</array>

UIApplicationSupportsMultipleScenesキーは、iPadおよびMac Catalystでのマルチタスクサポートを有効にします。このキーがないと、アプリは複数ウィンドウを管理するためにSwiftUI ScenePhaseやUIKit UISceneDelegateを使用できません。iPadOSでは、ユーザーは同じアプリの複数ウィンドウを開き、その間でコンテンツをドラッグし、Split Viewを使用できます。アプリがマルチウィンドウモードをサポートしていない場合は、このキーをfalseに設定すると、対応する機能が無効になります。

LSRequiresIPhoneOSキーは、iPadへのアプリインストールを禁止します。これは、iPadインターフェイスをサポートしていないか、大きな画面に適応していないiPhone専用アプリに使用されます。しかし、Appleは必要以上にこのキーを使用することを推奨していません。なぜなら、ユーザーはアプリがiOSおよびiPadOSを実行するすべてのデバイスで動作することを期待しているからです。アプリがまだiPhoneに限定されている場合は、この要件が技術的に正当であり、App Storeの説明に記載されていることを確認してください。

UIViewControllerBasedStatusBarAppearanceキーは、ステータスバーのスタイルを制御します。NOに設定されている場合、ステータスバーのスタイルは、Info.plistキーUIStatusBarStyleを通じてグローバルに設定されます。YES (次につこができます。

UIApplicationExitsOnSuspendキーは、アプリがバックグラウンドに移行する際に、一時停止ではなく完全に終了するようにします。これは、銀行アプリや機密データを扱うアプリなど、高いセキュリティ要件があるアプリだけに使用されるれく使われません。この場合、ユーザーはアプリに迅速に戻る能力を失い、各起動はクリーンな状態から始まります。App Storeはレビュー中に、このキーの使用理由を質問する可能性があります。

NSAppTransportSecurityキーは、アプリのネットワーク接続を管理します。iOS 9以降、App Transport Security (ATS) はデフォルトですべてのHTTP接続をブロックし、HTTPSを必須としています。特定のドメインへのHTTPリクエストを一時的に許可するためには、NSAppTransportSecurity内のNSExceptionDomains辞書が使用されます。開発用には、NSAllowsArbitraryLoads = trueによる完全なATS無効化が許されていますが、Appleは理由を必要とし、正当な理由なくこのようなビルドを許可しません。プロダクションビルドでは、ユーザーデータを扱うすべてのドメインでATSが有効になっている必要があります。

よくある質問

XcodeプロジェクトでInfo.plistはどこにありますか?

Info.plistファイルは、アプリの名前と同じ名前のプロジェクトフォルダにあります。Xcodeでは、Supporting Filesグループ内のプロジェクトナビゲーターに青い本のアイコンで表示されます。プロジェクトのSpotlight検索でも見つけることができます。

Info.plistを手動で編集できますか?

はい、Info.plistはどんなテキストエディタやXcodeのグラフィカルインターフェースでも編集できます。手動編集は内容を完全に制御できますが、XML構文に注意する必要があります: 各開き<key>直句には対応する</key>があり、データ型はAppleが予期するものである必要があります。

SwiftUIプロジェクトでのInfo.plistとは?

SwiftUIプロジェクトでは、Info.plistはUIKitプロジェクトと同様に動作します。また、プロジェクトがシーン管理にAppプロトコルを使用していない場合は、シーン構成にUIApplicationSceneManifestキーが必要になる可能性があります。SwiftUIのAppプロトコルは自動的にシーン構成を生成しますが、カスタマイズには手動でキーを追加する必要があります。

Info.plistにカスタムキーを追加する方法

XcodeでInfo.plistを開き、プラスボタンをクリックし、キー名を入力します。カスタムキーには、Appleシステムのキーとの競合を防ぐため、会社接頭辞を使用します (例: CustomKeyではなくITSCustomKey)。値のタイプ (String, Number, Array, Dictionary) は、予期されるデータ形式に従って選択します。

App StoreがInfo.plistのためにビルドを拒否したのはなぜ?

典型的な原因: リクエスされた許可に対するプライバシーキーの不備、不正なCFBundleIdentifier、Info.plistとApp Store Connectのバージョンの不一致、NSキーの値が空であること。使用されているAPIのすべてのNSキーを確認し、各説明がアプリのローカライズ言語で意味のある説明を含んでいることを確認してください。

まとめ

  • Info.plistは、メタデータ、許可、起動設定を含むiOS/macOSアプリ用のXML構成です
  • CFBundleIdentifierとCFBundleVersionは、識別とApp Store公閃のための必須キーです
  • プライバシーキー (NSCameraUsageDescription) はカメラ、マイク、他のプライベートAPIへのアクセスに必須です
  • Custom URL schemesはCFBundleURLTypesを通じて構成され、Universal LinksはEntitlementsとapple-app-site-associationを通じて構成されます
  • UIBackgroundModesは、バックグラウンドでの正しい動作のためのバックグラウンド機能を宣言します
  • 必須キーの不備はアプリのクラッシュやApp Storeのビルド拒否につながります
  • Info.plistの編集は、XcodeインターフェースまたはXML構文コントロールのあるテキストエディタで利用できます

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください