8.

IPA(.ipa)とは — iOS アプリのパッケージ形式

編集
この記事の要点
  • IPA (.ipa) は iOS / iPadOS アプリの配布形式、実体は ZIP
  • 構造: Payload/App.app/(アプリ本体)+ iTunesArtwork(旧)+ iTunesMetadata.plist
  • 配布経路は App Store / TestFlight / Ad Hoc / Enterprise / Development の 5 種、それぞれ Provisioning Profile で許可端末を制限
  • 署名は codesign、エンタイトルメントは .entitlements XML
  • ストアにアップする際は xcrun altool または Transporter.app を使用

要点

  • IPA(iOS App Store Package、.ipa)は、iOS / iPadOS アプリの配布用ファイル形式。
  • 実体は ZIP で、ルートに Payload/ ディレクトリ、その中に .app バンドル(ディレクトリそのものがアプリ本体)が入る。
  • App Store 公開には Provisioning Profile署名が必須で、Apple Developer Program の証明書チェーンで縛られる。
  • TestFlight / Ad Hoc / Enterprise / Development の 4 種の配布チャネルがあり、各々が許可するデバイス・期間が異なる。

概要

IPA は iPhone OS 2.0(2008 年)の App Store 開始時から続く iOS 専用のアプリパッケージ形式である。Mac の .app バンドル文化を引き継ぎつつ、配布用に ZIP 化したものと見るとわかりやすい。

APK と同じく ZIP がベースだが、iOS の閉じた配布モデルにより、署名・プロビジョニング・配布チャネルの設計は大きく異なる。App Store からのダウンロード以外では原則として実行できず、Ad Hoc / Enterprise / Development は限定されたデバイスや組織内に閉じる。

内部構造

IPA を unzip すると、典型的には次のような構造が現れる。

  • Payload/ — 必須トップディレクトリ
  • Payload/MyApp.app/.app バンドルそのもの
  • Payload/MyApp.app/MyApp — Mach-O 実行ファイル
  • Payload/MyApp.app/Info.plist — メタデータ(バンドル ID、バージョン、必須デバイス機能など)
  • Payload/MyApp.app/embedded.mobileprovision — Provisioning Profile
  • Payload/MyApp.app/_CodeSignature/ — 署名情報
  • Payload/MyApp.app/Frameworks/ — 動的フレームワーク(Swift 標準ライブラリ含む)
  • iTunesArtwork / iTunesMetadata.plist — ストア用メタ(最近はサーバ側生成が中心)
  • Symbols/ — クラッシュ解析用シンボル(含めると App Store Connect でクラッシュレポートが復号される)

Info.plist は XML/バイナリ plist 両形式があり、エクスポート時はバイナリ plist になることが多い。plutil -p Info.plist でテキスト化でき、例として次のような項目が並ぶ。

<key>CFBundleIdentifier</key>
<string>com.example.helloworld</string>
<key>CFBundleVersion</key>
<string>42</string>
<key>CFBundleShortVersionString</key>
<string>1.2.0</string>
<key>MinimumOSVersion</key>
<string>15.0</string>

主な用途

  • App Store 配布 — App Store Connect への提出。最終ユーザーへの配布の基本
  • TestFlight — ベータテスト。最大 10,000 名の外部テスター + 100 名の内部
  • Ad Hoc 配布 — UDID 登録済みの限定デバイス向け(最大 100 台 / 年・カテゴリ別)
  • Apple Developer Enterprise Program — 自社従業員向けに App Store を介さず社内配布
  • Development 配布 — Xcode から開発端末へ転送(実機デバッグ用)
  • MDM 配布 — Jamf、Intune、Apple Business Manager 経由

関連形式との比較

  • vs APK — APK は AndroidManifest.xml + classes.dex 構成、IPA は Info.plist + Mach-O。どちらも ZIP 基底だが、署名は IPA が Apple の証明書チェーン、APK が開発者鍵自身。
  • vs .app バンドル — IPA は .app をさらに ZIP したもの。macOS の .app は単体でドラッグ起動できるが、iOS の .app は IPA に包んで配布される。
  • vs DMG — DMG は macOS ソフトウェアの配布ディスクイメージ、IPA は iOS アプリの配布パッケージ。用途・OS とも別物。
  • vs ZIP — 実体は ZIP だが、Apple の署名スキームと Provisioning Profile という制度上の拘束が決定的に違う。

コマンド・ツール

  • Xcode > Archive > Distribute App — 通常の IPA 生成・配布フロー
  • xcodebuild -exportArchive -archivePath foo.xcarchive -exportPath out -exportOptionsPlist export.plist — CI 用のヘッドレス IPA 出力
  • Transporter.app — App Store Connect への IPA アップロード
  • altool --upload-app -f app.ipa -t ios -u APPLE_ID -p APP_PW — CLI からのアップロード(fastlane 内部でも利用)
  • fastlanegym + pilot + deliver)— ビルド・TestFlight・ストア提出を自動化
  • codesign -dvvv Payload/MyApp.app — 署名情報の確認
  • codesign --force --sign "iPhone Distribution: …" Payload/MyApp.app — リサイン
  • security cms -D -i embedded.mobileprovision — Provisioning Profile の中身を XML として表示
  • ideviceinstaller -i app.ipa — libimobiledevice 経由でデバイスへインストール(macOS/Linux)

注意点

  • Provisioning Profile の有効期限に注意。Development は最大 1 年、Distribution は 1 年、Enterprise は 1 年。期限切れの IPA は起動できなくなる。
  • App Store Distribution は Apple Review 通過が必須。技術仕様だけ揃えても、ガイドライン違反(メタデータ、課金規約、ユーザートラッキング開示など)でリジェクトされる。
  • Enterprise 配布の濫用は契約違反。Apple Developer Enterprise Program は社内利用に限定で、一般公開すると Apple に検出されアカウント停止されうる。
  • サイドロードは原則不可(EU の DMA 対応など一部地域で例外あり)。「IPA を Web で配布してインストール」は Ad Hoc / Enterprise の枠内でしか成立しない。
  • Symbols(dSYM)の保存を忘れない。配布後にクラッシュ解析できないと致命的になる。
  • Info.plist のキー名CFBundleIdentifier / CFBundleVersion など決まり物が多い。タイポ一つでビルドが通っても審査ではじかれる。

関連リンク

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. EXE(.exe)
  2. DLL(.dll)
  3. MSI(.msi)
  4. DMG(.dmg)
  5. DEB(.deb)
  6. RPM(.rpm)
  7. APK(.apk)
  8. IPA(.ipa)
  9. AppImage(.appimage)
  10. app(.app)

最近更新/作成されたページ