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) | 説明 |
|---|---|---|
CFBundleIdentifier | Bundle Identifier | アプリ固有のID。逆ドメイン形式(例:com.example.myapp)で設定する。App Storeでの識別子にもなる |
CFBundleDisplayName | Bundle display name | ホーム画面のアイコン下に表示されるアプリ名 |
CFBundleName | Bundle name | バンドルの短縮名(15文字以内推奨) |
CFBundleVersion | Bundle version | ビルド番号。App Store審査で更新のたびに増やす必要がある |
CFBundleShortVersionString | Bundle versions string, short | ユーザーに見えるバージョン番号(例:1.2.0) |
CFBundleExecutable | Executable file | アプリの実行ファイル名 |
CFBundleDevelopmentRegion | Development region | 開発者の言語設定(例:ja、en) |
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 | カレンダー |
NSBluetoothPeripheralUsageDescription | Bluetooth |
値には日本語での説明文を書くことができます。この文章がユーザーへの許可ダイアログに表示されます。
その他の主要キー
| キー | 説明 |
|---|---|
NSAppTransportSecurity | HTTP通信を許可するかどうかの設定(デフォルトはHTTPS必須) |
UIBackgroundModes | バックグラウンド動作のモード(音楽再生・位置情報取得など) |
LSApplicationQueriesSchemes | canOpenURL:で問い合わせ可能な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の新規プロジェクト作成時に自動生成されますが、権限追加や審査対策でカスタマイズが必要になる場面は多くあります。
キーの意味を理解しておくと、エラーや審査リジェクトの原因特定がスムーズになります。
参考情報源:

コメント