IPAとは何か、ファイル構造と動作原理

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

IPA(iOS App Store Package)は、iOSでアプリケーションを配布するためのアーカイブファイル形式です。App Storeに届くすべてのアプリケーションはIPA形式を経由します。開発者はプロジェクトをビルドし、署名してIPAをApp Store Connectにアップロードします。Apple Developer Documentation、2026によると、IPA形式はZIPベースで、実行可能なMach-Oファイル、リソース、署名メタデータを含みます。

主要ポイント

  • IPAはApp Storeおよびアドホックインストールを通じてiOSアプリを配布するためのアーカイブ形式です。
  • 構造には署名済み実行可能Mach-Oファイル、リソース、Provisioning Profileが含まれます。
  • 署名は必須です:有効な証明書とプロファイルがないとIPAはインストールされません。
  • ビルドはXcodeを通じて行われ、Debug、Release、Ad-hoc、Enterpriseの各スキームをサポートします。
  • アーキテクチャ — 最新のIPAにはarm64バイナリが含まれ、32ビットデバイスはサポートされません。

IPAとは何か、何に使用されるか

IPA(iOS App Store Package)は、Appleプラットフォームでアプリケーションを配布するためのパッケージ形式です。APKと同様に、IPAは技術的にはZIPアーカイブですが、iOSのセキュリティと署名要件によって決定される独自の構造を持っています。

形式の歴史

IPA形式は2008年にiPhone OS 2.0とApp Storeとともに登場しました。macOSの.appバンドル形式をベースに、転送時のサイズを減らすためにZIPでパッケージ化されました。それ以来、IPA構造は大きな変更を受けておらず、署名スキームとメタデータのみが進化してきました。

使用例

App Store — 主要なチャネル。アドホック配布 — 限られた数のデバイス(最大100台)でのテスト用。エンタープライズ配布 — ストアに公開せずに企業アプリを配布するため。開発者はXcodeを介して実際のデバイスでテストするためにもIPAを使用します。

IPAファイルの内部構造

IPAの内部構造は、.appバンドルを含むPayloadフォルダとメタデータを含むZIPアーカイブです。

ファイル/ディレクトリ目的
Payload/.appバンドルを含むルートフォルダ
Payload/App.app/アプリケーションバンドル:実行可能ファイル、リソース、nib/storyboard
Payload/App.app/Info.plistメタデータ:bundle ID、バージョン、権限
Payload/App.app/embedded.mobileprovisionインストール用のProvisioning Profile
iTunesMetadata.plistiTunesメタデータ(オプション)
META-INF/検証用の署名とハッシュ

.appバンドル

Payloadフォルダの中には、.app拡張子を持つアプリケーションバンドルがあります。これはファイルではなく、iOSがアプリケーションとして認識するディレクトリです。内部には、実行可能なMach-Oファイル(名前はバンドル名と一致)、Info.plist、リソース、画像、ローカライズされた文字列が含まれています。

Mach-O実行可能ファイル

SwiftまたはObjective-Cのソースコードは、Mach-O(Mach Object)形式のマシンコードにコンパイルされます。ファイルには__TEXT(コード)、__DATA(データ)、__LINKEDIT(リンカメタデータ)の各セグメントが含まれます。最新のIPAには64ビットのarm64アーキテクチャのみが含まれています。

XcodeによるIPAビルドプロセス

XcodeはIPAビルドを自動化します:ソースコードのコンパイルから、App Store Connectにアップロードする準備ができた署名済みアーカイブの作成まで。

ビルドスキーム

Debug — 開発用、最適化なし。Release — 公開用、コンパイラ最適化あり。各スキームはコンパイルフラグ、コード署名、エンタイトルメントを定義します。XcodeはProduct → Archiveからアーカイブを作成します。

objective-c
// Info.plist — アプリケーションの基本メタデータ
<key>CFBundleName</key>
<string>MyApp</string>
<key>CFBundleIdentifier</key>
<string>com.example.myapp</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>

ビルドアーキテクチャ

Xcodeは各.swiftまたは.mファイルをオブジェクトファイル(.o)にコンパイルし、それらを単一のMach-Oバイナリにリンクします。リソース(画像、XIB、storyboard)は別々に処理されます:ストーリーボードはバイナリの.storyboardc形式にコンパイルされ、画像はAsset Catalog(.car)に最適化されます。

IPA署名とProvisioning Profile

署名はIPAの最も複雑な側面です。Appleは実際のデバイスで実行するすべてのアプリケーションにデジタル署名を要求します。システムは開発者証明書、エンタイトルメント、Provisioning Profileの準拠を検証します。

署名コンポーネント

証明書(DevelopmentまたはDistribution) — 開発者の身元を証明します。Provisioning Profile — 証明書、bundle ID、許可されたデバイスのリスト(アドホック用)を結び付けます。エンタイトルメント — アプリの権限(プッシュ通知、iCloud、App Groups)。

署名プロセス

Xcodeは.appバンドル内の各ライブラリとフレームワークに署名し、次にバンドル自体に署名します。最終的なIPAはZIPアーカイブレベルで署名されます。Appleはインストール時にすべての署名レベルを検証します。iOSは、1つでもコンポーネントの署名が無効な場合、アプリケーションを起動しません。

swift
// Security frameworkによる署名検証
import Security

func checkSignature() -> Bool {
    let url = Bundle.main.bundleURL
    var staticCode: SecStaticCode?

    guard SecStaticCodeCreateWithPath(
        url as CFURL,
        [], &staticCode
    ) == errSecSuccess else {
        return false
    }
    return true
}

App Store ConnectへのIPA公開

App Store Connectは、アプリの公開を管理するAppleのプラットフォームです。IPAのアップロードは、Xcode Organizer、Transporter、またはコマンドラインでxcrun altoolを使用して行われます。

アップロードプロセス

アーカイブを作成した後、XcodeはDistribute Appを提供し、方法を選択します:App Store Connect、Ad-hoc、Enterprise、Development。App Store Connectを選択すると、開発者はチームを指定してアップロードを確認します。Xcodeは署名を検証し、IPAをAppleのサーバーに送信し、処理状況を返します。

コマンドライン

CI/CDにはxcrun altoolまたは新しいnotarytoolが使用されます。AppleはmacOSアプリに公証を要求します。iOSの場合、この手順はオプションですが推奨されます。xcodebuild -exportArchiveはアップロード可能な署名済みIPAを作成します。

Appleは各IPAを悪意のあるコード、プライベートAPI、App Store Review Guidelinesへの準拠についてチェックします。審査プロセスには1時間から2日かかります。

App Thinning:デバイス向けIPA最適化

IPAをApp Store Connectにアップロードする際、AppleはApp Thinningを適用します。これは特定のデバイス向けにバイナリを最適化する技術です。Slicingはサポートされていない解像度とアーキテクチャのリソースを削除します。On-Demand Resourcesは、ユーザーのリクエストに応じてアプリの一部(ゲームレベル、動画)のみをロードできます。Bitcodeは中間表現であり、Appleは開発者の関与なしに新しいアーキテクチャ用に再コンパイルできます。

App Storeはまた、Sandbox要件へのIPA準拠をチェックします:アプリは他のアプリのデータ、そのコンテナ外のファイルシステム、またはユーザーの明示的な許可なしにハードウェア機能にアクセスしてはなりません。

TestFlightによるIPAテスト

TestFlightは、アプリのベータテストのためのAppleの公式サービスです。開発者はIPAをApp Store Connectにアップロードし、メールまたは公開リンクを介してテスターを招待します。

内部テストと外部テスト

Internal Testing — 開発者チームの最大100名まで。Appleのレビューは不要です。External Testing — 最大10,000名のテスターまで、Beta App Reviewに合格する必要があります。TestFlightは自動的にテスターにビルドを配布し、分析情報を収集します。

TestFlightの制限

ビルドはアップロード後90日間テスト可能です。TestFlightは同時に最大100のアクティブビルドをサポートします。各テスターは同時に最大30のアプリをインストールできます。CrashlyticsはTestFlightと統合してクラッシュレポートと非致命的エラーを収集します。

IPAと継続的インテグレーション

CI環境でのIPAビルドにはmacOSランナーが必要です。GitHub Actions、GitLab CI、BitriseはiOSビルド用のmacOS環境を提供します。Fastlaneのlane `build_app`は、アーカイブ、署名、IPAエクスポート、TestFlightへのアップロードの全サイクルを自動化します。証明書とプロファイルの管理には、暗号化されたGitリポジトリに署名を保存するFastlaneツールのMatchが使用されます。

IPAの一般的な問題

開発者はIPAのビルドと署名時にいくつかの特徴的なエラーに直面します。ほとんどは証明書とプロファイルの誤った設定に関連しています。

署名エラー:No matching provisioning profile found

Xcodeがbundle IDと証明書に一致するProvisioning Profileを見つけられません。解決策 — XcodeのAccounts → Download Manual Profilesで最新プロファイルをダウンロードするか、Automatic Signingを使用します。

ITMS-90125:The binary is invalid

このエラーは無効なアーキテクチャでIPAをアップロードする際に発生します。最新のIPAにはarm64のみを含める必要があります。バイナリにi386やx86_64が含まれていると拒否されます。解決策 — Build Settingsでアーキテクチャを確認し、シミュレータアーキテクチャを除外します。

Invalid Bundle Structure:The bundle is missing the required .app bundle

IPAに正しいPayload/App.app構造が含まれていません。Appleは正確な階層を期待します。解決策 — アーカイブに.appバンドルを含むPayloadフォルダが含まれていることを確認します(フラットなファイルリストではありません)。

App StoreなしでのIPA配布

エンタープライズ配布には、Enterprise Apple Developer Program(年間$299)が使用されます。IPAはEnterprise証明書で署名され、数量制限なしに会社の任意のデバイスにインストールできます。アドホック配布は開発者アカウントごとに100デバイスに制限されています(年間$99)。MDM(モバイルデバイス管理)システム(JamfやMicrosoft Intuneなど)は、Enterprise IPAの一括インストールをサポートしています。

よくある質問

IPAとAPKの違いは何ですか?

IPAはDEXの代わりにMach-O実行可能形式を使用し、インストールにProvisioning Profileが必要で、厳格なApp Storeレビューを受けます。APKはIPAとは異なり、仲介者なしで直接インストールできます(サイドローディング)。

WindowsでIPAをビルドできますか?

いいえ、IPAのビルドにはXcodeとAppleツールが必要であり、これらはmacOSでのみ利用可能です。代替手段:リモートmacOSサーバー(Mac mini、AWS Mac)またはクラウドCIサービス(macOSランナーを使用するGitHub Actions)。

一般的なIPAのサイズはどのくらいですか?

シンプルなアプリ — 5〜30 MB。中程度の複雑さのアプリ — 30〜150 MB。ゲームは4 GBに達する可能性があります。Appleはセルラーネットワークでのダウンロードサイズを200 MBに制限していますが、ユーザーはWi-Fi経由でダウンロードできます。

App StoreなしでIPAをインストールする方法

アドホックインストールにはXcodeまたはApple Configuratorが使用されます。エンタープライズアプリはmanifest.plistを使用して内部サーバーを介して配布されます。一般ユーザーはjailbreakまたはTestFlightなしではIPAをインストールできません。

シンIPAとファットIPAとは何ですか?

Fat IPAにはユニバーサルビルド用に複数のアーキテクチャ(arm64 + x86_64)が含まれています。シンIPAには特定のデバイス用のアーキテクチャが1つだけ含まれています。Appleは公開用にシンIPAのみを受け入れます — fatバイナリは拒否されます。

まとめ

  • IPAはMach-O実行可能ファイルを使用したZIPベースのiOSアプリ配布形式です。
  • 構造にはPayload/.appバンドル、Info.plist、署名、Provisioning Profileが含まれます。
  • ビルドはXcodeを介してSwift/Objective-Cをarm64マシンコードにコンパイルして行われます。
  • 署名は必須です:証明書 + Provisioning Profile + エンタイトルメントはインストール時にiOSによって検証されます。
  • 公開はApp Store Review GuidelinesのチェックとともにApp Store Connectを通じて行われます。
  • TestFlightは最大10,000名のテスターに対応する公式ベータテストツールです。
  • 制限:macOSのみでのビルド、必須の署名、最大4 GBのサイズ。

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

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

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

こちらもお読みください