モバイルアプリケーションのビルドと公開は、ソースコードをインストール可能なファイル(APK、AAB、IPA)に変換し、アプリストアにアップロードするプロセスです。Google Play Console(2025)によると、Android App Bundle(AAB)は2021年8月からGoogle Playでの公開に必須の形式となっています。この記事では、ビルド形式、コンパイル、コード署名、公開プロセス、ベータテストについて解説します。
重要なポイント
APK(Android Package Kit) — Androidでモバイルアプリケーションをビルドおよび公開するための従来の形式。APKには、アプリケーションのすべてのコード、リソース、マニフェストが含まれます。AAB(Android App Bundle) — 2018年にGoogleが導入し、2021年8月から新しいアプリケーションに必須となった形式。AABは直接インストールされず、Google Playが各デバイスに最適化されたAPKをAABから動的に生成します。
AABの利点:ダウンロードサイズが平均15%小さくなります(必要なリソースのみを配信:正しい画面密度、言語、CPUアーキテクチャ)。AABはモジュラーデリバリーもサポートしており、オンデマンド(Play Feature Delivery)または遅延(Play On-Demand)でモジュールをロードできます。デベロッパーにとってAABは必須ですが、Google Play外での配信(サイドローディング、マーケットプレイス)にはAPKのみが使用されます。
IPA(iOS App Store Package) — iOSインストールファイルで、署名されたアプリケーションを含むZIPアーカイブです。IPAには、Payload/フォルダ内の.appバンドル、Provisioning Profile、署名が含まれます。IPAはmacOSでのみXcodeを介してビルドされ、アーカイブ(.xcarchive)を作成してIPAをエクスポートします。App Storeでの配信にはApple Distribution CertificateでIPAに署名します。Ad HocまたはEnterpriseの場合は対応する証明書で署名します。
| パラメータ | APK | AAB | IPA |
|---|---|---|---|
| プラットフォーム | Android | Android(Google Play) | iOS |
| 形式 | ZIPアーカイブ | ZIPアーカイブ | ZIPアーカイブ |
| 直接インストール | はい | いいえ(Google Play経由) | App Store / MDM経由 |
| 署名 | Keystore(JKS) | Keystore(JKS/PEPK) | Apple Certificate |
| App Thinning | なし | あり(自動) | あり(Slicing、Bitcode) |
JIT(Just-In-Time) — アプリケーション実行中のコードのコンパイルで、ビルドと公開の速度に影響します。Android 5.0(Lollipop)までは、JITコンパイルを備えたDalvik VMが使用されていました。アプリケーション起動のたびに、DEXバイトコードがその場でマシンコードに変換されていました。欠点:初回起動時の速度低下と追加の電力消費。AOT(Ahead-Of-Time) — アプリケーション起動前、インストール時のコードのコンパイル。Android 7.0(Nougat)以降、ART(Android Runtime)がインストール時にアプリケーションを完全にコンパイルします。
ART(Android Runtime) — Android 5.0でDalvikを置き換えたランタイム環境。ARTはハイブリッドアプローチを採用しています:インストール時のAOTコンパイル+頻繁に実行されるメソッドに対するJIT。これにより、AOTの速度(高速起動)とJITの柔軟性(適応的最適化)が組み合わされます。結果:Dalvikと比較してAndroidアプリケーションのパフォーマンスが20〜30%向上しました。デベロッパーにとって、ARTへの移行は透過的であり、コードの変更は不要です。
Bitcode — Appleが異なるプロセッサアーキテクチャ向けにIPAを再コンパイルするために使用する中間表現(IR)。Bitcodeはオプションです。iOSアプリケーションではデフォルトで有効、watchOSおよびtvOSでは必須です。Appleは新しいプロセッサがリリースされた際に、デベロッパーの関与なしでBitcodeを再コンパイルできます。App Thinning — Appleの技術で、Slicing(デバイスに必要なリソースのみを配信)とOn-Demand Resources(必要に応じてリソースをロード)を含みます。App Thinningにより、App Storeからのダウンロードサイズが30〜50%削減されます。
DEX — Android向けのバイトコード形式で、ART/Dalvikによって実行されます。Kotlin/Javaのソースコードはclassファイルにコンパイルされ、次にdxまたはd8(最新でより高速なツール)を介してDEXに変換されます。Multidex — 単一のDEXファイルの65,536メソッドの制限を超えるアプリケーションのためのメカニズム。最新のプロジェクトでは、targetSdkVersion >= 21の場合、multidexが自動的に有効になります。
Keystore — ビルド時にAndroidアプリケーションに署名するための秘密鍵と証明書を含むファイル。Keystoreはkeytool(-genkeyコマンド)またはAndroid Studioを介して作成されます。重要:Keystoreは失くせません。失くすとGoogle Playでアプリケーションを更新できなくなります。署名パラメータ:keyAlias、keyPassword、storePassword、storeFile。形式:JKS(Java KeyStore)またはAABの場合はPEPK(Play Encrypted Private Key)。
App Bundle ID(Android) — パッケージ表記(com.example.app)でのアプリケーションの一意の識別子。Version Code — 内部バージョン番号付けのための整数(新しいビルドごとに増加)。Version Name — ユーザーに表示される文字列(1.2.3)。これらのパラメータはアプリレベルのbuild.gradleで設定されます。
Apple Certificate — デベロッパーの身元を証明するデジタル証明書。種類:Development(デバッグ用)、Distribution(App Store用)、Ad Hoc(限定配信用)。証明書はApple Developer Accountで作成され、Keychainにダウンロードされます。Provisioning Profile — 証明書、App ID(Bundle Identifier)、許可されたデバイスのリストを関連付けるファイル。Provisioning Profileがないと、アプリケーションはデバイスで実行されません。
Bundle ID(iOS) — アプリケーションの一意の識別子(com.example.app)。Build Number — ビルド番号。ビルドごとに増加します。Marketing Version — ユーザーに表示されるバージョン。バージョン管理:iOSの場合、パラメータはInfo.plistとProject Settingsで設定されます。Androidの場合はbuild.gradleで設定されます。IT Sectrでは、Fastlaneを介してバージョン更新を自動化しています。これにより、リリース時の人為的ミスを排除します。
Google Play Console — Androidアプリケーションを公開するためのツール。プロセス:デベロッパーアカウントの登録($25の一度きり)、アプリケーションの作成、メタデータの入力(名前、説明、スクリーンショット、カテゴリ)、AABのアップロード、価格と配信の設定、レビュー。Googleはアプリケーションを自動的(ウイルス、ポリシー準拠)および一部のカテゴリでは手動で確認します。レビューには数時間から2〜3日かかります。
App Store Connect — iOSアプリケーションを公開するためのAppleのプラットフォーム。プロセス:Appleデベロッパーアカウント($99/年)、App Store Connectでのアプリケーションの作成、XcodeでのIPAの準備(Archive → Distribute App → App Store Connect)、TransporterまたはXcodeを介したアップロード、メタデータの入力、レビューへの提出。App Review — Appleの手動レビューには24時間から7日かかることがあります。拒否の一般的な理由:動作しないボタン、不完全なコンテンツ、説明なしの許可要求。
TestFlight — iOSアプリケーションのベータテストのためのAppleの公式ツール。TestFlightはInternal Testing(メールによる最大100人のテスター、レビューなし)とExternal Testing(最大10,000人のテスター、Appleのレビューあり)をサポートしています。ビルドは90日間利用可能で、その後新しいビルドをアップロードする必要があります。TestFlightは新しいビルドがアップロードされると、テスターのアプリケーションを自動的に更新します。
Internal Testing(Android) — 最大100人のテスター、Googleのレビューなし、ビルドは即座に利用可能。Closed Beta — メールまたはGoogle Groupsによる最大1000人のテスター、レビューなし。Open Beta — 公開リンクによる無制限のテスター、Googleのレビューあり。Staged Rollout — アップデートを受け取るユーザーの割合を段階的に増加(5%→20%→50%→100%)。最も安全なリリース方法です。
App Thinning(iOS) — ダウンロードされるIPAサイズの自動削減:Slicing(デバイスに必要なリソースのみ)、Bitcode(プロセッサ最適化)、On-Demand Resources(必要に応じてダウンロード)。IT Sectrでは、iOSのベータテストにTestFlight、AndroidにはInternal Testingを使用しています。これにより、大規模リリース前に問題を発見できます。
よくある質問
APK — 汎用インストールファイルで、どのデバイスでも動作します。AAB — Google Play向けの形式で、各デバイスに最適なAPKを生成します。AABによるダウンロードサイズは15%小さくなります。Google PlayではAABが必須ですが、サイドローディングにはAPKを使用します。
Google Playでアプリケーションを更新できなくなります — 新しいpackage nameで新しいアプリケーションを作成する必要があります。Keystoreは安全な場所(パスワードマネージャー、暗号化されたGit)に保管してください。Google Play App Signing(Googleの鍵の使用)はこのリスクを軽減します。
Google Play — デベロッパーアカウントに$25の一度きり。App Store — $99/年。どちらも無制限のアプリケーションを含みます。iOSにはMac($999から)またはクラウドMacのレンタルも必要です。
Staged Rollout — 段階的なアップデートのロールアウト:最初に5%のユーザー、次に20%、50%、100%。いずれかの段階でクラッシュが検出された場合、ロールアウトは停止されます。Google Play Consoleで利用できます。
Androidの場合 — いいえ、アカウントなしでUSBまたはエミュレーターを介してデバイスにAPKをインストールできます。iOSの場合 — はい、$99/年のアカウントがないと、アプリケーションはシミュレーターでのみ動作し、実機では動作しません。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。