Info.plistとは?役割・構造・主要キーをわかりやすく解説

iOSやmacOSのアプリ開発を学び始めると、必ず「Info.plist」というファイルに出会います。
「Xcodeが自動で作るからとりあえず触らない」という人も多いですが、パーミッション設定や審査で引っかかるとき、このファイルの理解が必須になります。
この記事では、Info.plistの意味・役割・XML構造・主要キーの一覧をまとめて解説します。


スポンサーリンク

Info.plistとは

Info.plist(インフォ・ピーリスト)は、iOS・macOS・watchOS・tvOSのアプリに必ず含まれる設定ファイルです。
ファイル名は「Information Property List(情報プロパティリスト)」の略で、.plistという拡張子を持ちます(Apple Developer公式「About Info.plist Keys and Values」より)。

このファイルには、アプリのIDや名前・バージョン・対応デバイスの向き・プライバシー権限など、システムがアプリを動かすために事前に知っておくべき情報が一元管理されています。

アプリがApp Storeに申請されるとき、またはデバイス上で起動するときに、OSはまずInfo.plistを読み込んでアプリの基本情報を把握します。


plistファイルとは

.plistはAppleプラットフォーム全体で使われるデータ保存フォーマットで、「プロパティリスト(Property List)」と呼ばれます。
オブジェクトのプロパティをキーと値のペアで保持することを目的とした形式で、macOSではユーザー設定の保存にも広く使われています(Swiftアプリ開発解説ブログより)。

フォーマットは3種類あり、それぞれ用途が異なります。

形式説明拡張子
XML形式テキストで読み書き可能。開発中はこちら.plist
バイナリ形式読み取りが高速。iOSアプリのリリース版はこちら.plist
JSON形式近年のApple APIで対応が追加された形式.plist

iOSアプリでは、開発中はXML形式で編集しますが、App Storeに配布されるバイナリ(.ipa)に含まれるInfo.plistはバイナリ形式に変換されます(RAD Studio公式ドキュメントより)。


Info.plistの場所

Xcodeプロジェクトにおけるデフォルトの配置場所は次のとおりです。

MyApp/
  ├── MyApp/
  │     ├── Info.plist         ← ここ
  │     ├── AppDelegate.swift
  │     └── ...
  └── MyApp.xcodeproj/

ファイル名の大文字・小文字は区別されます。
info.plist(小文字のi)ではなくInfo.plist(大文字のI)が正しい名前です(Microsoft Learn「情報プロパティ一覧」より)。


Info.plistのXML構造

Info.plistはXML形式のテキストファイルで、次のような構造を持っています。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>CFBundleName</key>
  <string>MyApp</string>

  <key>CFBundleIdentifier</key>
  <string>com.example.myapp</string>

  <key>CFBundleVersion</key>
  <string>1.0.0</string>

  <key>NSCameraUsageDescription</key>
  <string>写真を撮影するためにカメラへのアクセスが必要です。</string>
</dict>
</plist>

最上位は<dict>(ディクショナリ)要素で、<key>と値がペアで並ぶシンプルな構造です。
値の型は用途に応じて使い分けます。

タグデータ型
<string>文字列com.example.myapp
<integer>整数1
<real>小数1.5
<true /> / <false />真偽値(値なし)
<array>配列複数の値のリスト
<dict>辞書ネストしたキーと値

Info.plistの主要キー一覧

バンドル識別・基本情報

キー表示名(Xcode)説明
CFBundleIdentifierBundle Identifierアプリ固有のID。逆ドメイン形式(例:com.example.myapp)で設定する。App Storeでの識別子にもなる
CFBundleDisplayNameBundle display nameホーム画面のアイコン下に表示されるアプリ名
CFBundleNameBundle nameバンドルの短縮名(15文字以内推奨)
CFBundleVersionBundle versionビルド番号。App Store審査で更新のたびに増やす必要がある
CFBundleShortVersionStringBundle versions string, shortユーザーに見えるバージョン番号(例:1.2.0
CFBundleExecutableExecutable fileアプリの実行ファイル名
CFBundleDevelopmentRegionDevelopment region開発者の言語設定(例:jaen

Apple Developer公式「Core Foundation Keys」より、CFBundleIdentifierはシステム全体でユニークである必要があり、英数字・ハイフン・ピリオドのみ使用可能です。

UI・デバイス設定

キー説明
UISupportedInterfaceOrientationsアプリが対応する画面の向き(縦向き・横向きなど)
UILaunchStoryboardName起動時に表示するLaunch Storyboardのファイル名
UIMainStoryboardFileメインのStoryboardファイル名
UIStatusBarHiddenステータスバーを非表示にするかどうか(true / false)
UIDeviceFamily対応デバイスの種類(1=iPhone、2=iPad)

プライバシー権限(UsageDescription)

iOSアプリがカメラ・位置情報・マイクなどデバイスのプライバシーに関わる機能を使うとき、Info.plistに「なぜこの機能を使うか」の説明文を登録する義務があります(Apple Developer公式「Cocoa Keys」より)。

このキーが不足していると、AppStoreの審査でリジェクトされるか、実行時にアプリがクラッシュします。

キー対応する機能
NSCameraUsageDescriptionカメラ
NSMicrophoneUsageDescriptionマイク
NSPhotoLibraryUsageDescription写真ライブラリ(読み取り)
NSPhotoLibraryAddUsageDescription写真ライブラリ(書き込み)
NSLocationWhenInUseUsageDescription位置情報(使用中のみ)
NSLocationAlwaysUsageDescription位置情報(常時)
NSContactsUsageDescription連絡先
NSCalendarsUsageDescriptionカレンダー
NSBluetoothPeripheralUsageDescriptionBluetooth

値には日本語での説明文を書くことができます。この文章がユーザーへの許可ダイアログに表示されます。

その他の主要キー

キー説明
NSAppTransportSecurityHTTP通信を許可するかどうかの設定(デフォルトはHTTPS必須)
UIBackgroundModesバックグラウンド動作のモード(音楽再生・位置情報取得など)
LSApplicationQueriesSchemescanOpenURL:で問い合わせ可能なURLスキームの許可リスト
CFBundleURLTypesアプリが受け取れるカスタムURLスキームの定義
MinimumOSVersionサポートする最低iOSバージョン

XcodeでのInfo.plistの編集方法

Xcodeでは、Info.plistをGUIで編集するエディターと、XMLとして直接編集するテキストエディターの2通りで操作できます。

GUIエディターを使う場合は、Xcodeでプロジェクトを開き、左のナビゲーターからInfo.plistファイルを選択します。
キーの追加は行の「+」ボタンから行え、型や値をドロップダウンで設定できます。

XMLとして編集したい場合は、Info.plistファイルを右クリック →「Open As」→「Source Code」を選択します。

注意点: Info.plistは構造が厳密なXMLです。手動編集時にタグのネストや閉じタグを誤ると、Xcodeがファイルを正しく読み込めなくなることがあります(Apple Developer Forums「Missing Info.plist key」より)。


Info.plistに書いてはいけないこと

Info.plistはアプリバンドルに含まれるファイルであるため、ユーザーや第三者がファイルを取り出して内容を確認できます。
そのため、次の情報をInfo.plistに直接記述することは避けるべきです(DEV Community記事より)。

  • APIキーやシークレットキー
  • パスワード
  • 署名・証明書に関する情報

APIキーなどはビルド設定の環境変数経由で取り込む、または別途暗号化された設定ファイルを用いるのが適切な方法です。


まとめ

Info.plistはiOS・macOSアプリの「身分証明書」ともいえるファイルで、システムがアプリを認識・起動するために必要な設定が一元管理されています。

  • ファイル形式はXML(配布時はバイナリ)のキーと値のペア
  • アプリID・名前・バージョン・対応デバイスなど基本情報を管理する
  • カメラ・位置情報などのプライバシー権限説明は必ず記述が必要
  • APIキーなどの機密情報は記述しない

Xcodeの新規プロジェクト作成時に自動生成されますが、権限追加や審査対策でカスタマイズが必要になる場面は多くあります。
キーの意味を理解しておくと、エラーや審査リジェクトの原因特定がスムーズになります。


参考情報源:

コメント

タイトルとURLをコピーしました