.NET MAUI 10 アプリストア公開ガイド:iOS App Store・Google Play Console申請から審査通過までの完全手順(2026年版)

iOS App StoreとGoogle Playへ.NET MAUI 10アプリを公開する手順を完全解説。Apple Developer登録、署名、ipa/aab生成、プライバシーマニフェスト、データセーフティ、GitHub Actions+Fastlaneによる自動配信まで、2026年最新ポリシーに準拠。

.NET MAUI 10 App Store公開ガイド(2026年版)

最終更新: 2026年6月5日

.NET MAUI 10アプリをApp StoreおよびGoogle Playに公開するには、(1) Apple Developer Program/Google Play Developerアカウントの取得、(2) Release構成での署名済みビルド(iOSは.ipa、Androidは.aab)生成、(3) App Store Connect/Google Play Consoleへのバイナリアップロード、(4) アプリプライバシー情報・スクリーンショット・データセーフティの登録、(5) 審査リクエストの送信、という5段階のプロセスを踏みます。本ガイドでは2026年現在の最新ポリシーと.NET MAUI 10固有の設定を踏まえ、よくある却下理由とその回避策まで実装レベルで解説します。正直なところ、私自身が最初の申請で4回連続却下を食らった経験があるので、その時に詰まったポイントも各所で共有していきますね。

  • iOS公開にはApple Developer Program(年間99 USD)への登録、Distribution証明書・Provisioning Profileの作成、App Store Connectへの.ipaアップロードが必須です。
  • Android公開にはGoogle Play Developerアカウント(一回限り25 USD)と、署名済みAndroid App Bundle(.aab)形式でのアップロードが2021年8月以降必須化されています。
  • iOSではPrivacyInfo.xcprivacy(プライバシーマニフェスト)が2024年5月以降必須となり、SDK由来のAPI使用理由を申告しないと却下されます。
  • Google Playでは2025年8月から新規アプリのターゲットSDKがAndroid 15(API 35)以上であることが義務化されています。
  • iOSの平均審査時間は約24〜48時間、Android Playは初回審査で最長7日かかるケースもあります。TestFlight・内部テストトラックで事前に検証しましょう。
  • GitHub Actions+Fastlaneによる自動配信パイプラインを構築すれば、リリース工数を週単位から分単位に短縮できます。

公開前に揃えるべき4つの前提条件

.NET MAUIアプリをストアに提出する前に、開発者アカウント・署名アセット・アプリメタデータ・ビルド環境という4つの要素を準備する必要があります。これらが揃っていないと、Visual StudioやCLIから正常にビルドできても、ストアアップロード段階で必ず失敗します。特にiOSは秘密鍵のエクスポート漏れで再生成不能になるケースがあるため(以前これで丸一日溶かしました)、最初のセットアップ段階で.p12形式のバックアップを必ず取得してください。

1. 開発者アカウント

iOSはApple Developer Program(年間99 USD、法人向けEnterprise Programは299 USD)への登録が必要で、登録から承認まで通常24〜48時間かかります。AndroidはGoogle Play Consoleでの登録で、2023年以降は本人確認(D-U-N-Sナンバーまたは身分証明書)が必須になりました。法人アカウントの場合、書類審査に1〜2週間かかることを見越したスケジュールを組みましょう。リリース日が決まっているプロジェクトだと、ここがクリティカルパスになりがちです。

2. 署名アセット

iOSはDistribution証明書とApp Store用Provisioning Profileを、AndroidはJKS/PKCS#12形式のキーストア(Upload Key)を準備します。Google Playでは2021年以降、Play App Signingによりアップロード鍵と署名鍵が分離されたため、開発者はアップロード鍵のみ管理すれば足ります。とはいえ、アップロード鍵を紛失すると面倒な復旧申請が必要になるので、1Passwordなどのシークレット管理ツールに必ず保管しておくのが安心です。

3. アプリメタデータ

App名、サブタイトル、説明文(4000文字以内)、キーワード、サポートURL、プライバシーポリシーURL、年齢制限レーティング、スクリーンショット(iOS:6.7インチ・6.5インチ・5.5インチの3サイズ/Android:携帯電話・7インチ・10インチタブレット)が必要です。スクリーンショット撮影は意外と時間がかかるので、ビルド完成前から並行で進めておくと締切に余裕が生まれます。

4. ビルド環境

iOSビルドにはmacOS+Xcode 16.2以上が必須で、WindowsからのリモートビルドにはMac mini/Mac StudioまたはGitHub Actionsのmacos-15ランナーを利用します。Androidは.NET MAUI workloadがインストールされたWindows/Mac/Linuxいずれでもビルド可能です。

iOS版:Release構成でipaを生成する手順

.NET MAUI 10でiOS向けのApp Store配布バイナリを生成するには、RuntimeIdentifier=ios-arm64CodesignKeyCodesignProvisionプロパティを正しく指定する必要があります。Visual Studio 2022 17.12以降ではIDEからの「アーカイブ」操作がサポートされていますが、CIに乗せる場合はdotnet publishコマンドベースの方が再現性が高くておすすめです。IDE経由のビルドは「自分の手元では通るのに、CIで落ちる」現象を生みやすいんですよね。

csprojの設定

.csprojに以下のプロパティグループを追加し、本番ビルド時のみ署名情報が適用されるようにします。Configuration=ReleaseかつTargetFramework=net10.0-iosの条件下で発火する設計です。

<PropertyGroup Condition="$(TargetFramework.Contains('-ios')) and '$(Configuration)' == 'Release'">
  <RuntimeIdentifier>ios-arm64</RuntimeIdentifier>
  <ArchiveOnBuild>true</ArchiveOnBuild>
  <CodesignKey>Apple Distribution: Your Company Name (TEAMID12345)</CodesignKey>
  <CodesignProvision>MyApp AppStore Profile</CodesignProvision>
  <CodesignEntitlements>Platforms/iOS/Entitlements.plist</CodesignEntitlements>
  <EnableAssemblyILStripping>true</EnableAssemblyILStripping>
  <MtouchLink>SdkOnly</MtouchLink>
</PropertyGroup>

publishコマンドの実行

macOSターミナルで以下を実行すると、bin/Release/net10.0-ios/ios-arm64/publish/配下に.ipaが生成されます。生成された.ipaTransporterアプリまたはxcrun altoolコマンドでApp Store Connectにアップロードします。

dotnet publish -f net10.0-ios \
  -c Release \
  -p:RuntimeIdentifier=ios-arm64 \
  -p:ArchiveOnBuild=true \
  /p:CodesignKey="Apple Distribution: Your Company Name (TEAMID12345)" \
  /p:CodesignProvision="MyApp AppStore Profile"

xcrun altool --upload-app --type ios \
  --file bin/Release/net10.0-ios/ios-arm64/publish/MyApp.ipa \
  --username "[email protected]" \
  --password "@keychain:AC_PASSWORD"

App Store Connectへのアップロードとメタデータ登録

App Store Connectは、ビルドのアップロード、メタデータの管理、TestFlightによるベータ配布、本番審査リクエストを一元管理するAppleの公式ポータルです。アップロード後にビルドが処理されて表示されるまで、通常15〜30分かかります。処理中にエラーが発生した場合は登録メールアドレス宛に詳細が送信されるので、必ず開発者アカウントに紐付くメールアドレスを受信可能な状態にしておきます。

TestFlightで内部テストを必ず実施する

App Store審査前にTestFlightで動作確認しておくと、本番審査での却下率がガクッと下がります。社内テスター(Apple ID登録不要、最大100名)と外部テスター(最大10,000名、ベータ審査が必要)の2モードがあり、社内テスターはアップロード後すぐに利用可能です。クラッシュレポートと操作ログがTestFlightダッシュボードに集約されるため、本番リリース前のリグレッションテスト基盤としても活用しましょう。

必須スクリーンショットとプレビュー動画

2024年以降、6.7インチ(iPhone 15 Pro Maxサイズ:1290×2796)と6.5インチ(iPhone 11 Pro Maxサイズ:1242×2688)の2サイズが最小要件です。iPad対応アプリは12.9インチ(2048×2732)も必要です。プレビュー動画は最大3本、各15〜30秒で、アプリ内画面のみ使用可能(実機撮影は不可)です。.NET MAUIアクセシビリティ実践ガイドで解説したSemanticPropertiesによる対応状況も、レビュー時の評価ポイントになります。

Android版:署名済みAABを生成する手順

Google Playは2021年8月以降、新規アプリでAndroid App Bundle(.aab)形式の提出を必須化しており、APKでは提出できません。.aabはデバイスのアーキテクチャ・画面密度・言語に応じて最適化された.apkをGoogle Play側が動的に生成する仕組みで、平均20〜30%のダウンロードサイズ削減効果があります。.NET MAUIではdotnet publish-f net10.0-androidを指定するだけで.aabが出力されます。

キーストアの作成

Upload Keyとなるキーストアをkeytoolで作成します。一度紛失するとアプリの更新が不可能になる(Play App Signingを使えばGoogle側でリセット申請が可能)ため、複数の安全な場所にバックアップを保存しましょう。

keytool -genkeypair -v \
  -keystore mymauiapp-upload.keystore \
  -alias mymauiapp \
  -keyalg RSA -keysize 2048 \
  -validity 10000 \
  -storetype pkcs12

署名済みAABのビルド

csprojに署名プロパティを追加し、Release構成でpublishを実行します。Play Console側でPlay App Signingが有効な場合、アップロードキーで署名するだけで足ります。Native AOT・r2r(Ready-to-Run)の最適化を併用すると、起動時間が最大40%短縮可能です。詳細は.NET MAUI起動高速化とメモリ最適化のガイドを参照してください。

dotnet publish -f net10.0-android \
  -c Release \
  /p:AndroidPackageFormat=aab \
  /p:AndroidKeyStore=true \
  /p:AndroidSigningKeyStore=mymauiapp-upload.keystore \
  /p:AndroidSigningStorePass=$KEYSTORE_PASSWORD \
  /p:AndroidSigningKeyAlias=mymauiapp \
  /p:AndroidSigningKeyPass=$KEY_PASSWORD

Google Play Consoleでの内部テストと製品版公開

Google Play Consoleでは「内部テスト」「クローズドテスト」「オープンテスト」「製品版」という4段階のリリーストラックが用意されており、それぞれ独立して.aabをアップロードできます。新規アプリの場合、内部テスト→クローズドテスト(20名以上、14日間継続)→製品版審査という流れが2023年以降必須化されており、いきなり製品版申請ができなくなった点に注意してください。これ、私も最初は知らずに「あれ、製品版ボタンが灰色のまま…」と数時間悩みました。

14日間のクローズドテスト要件

2023年11月のポリシー変更により、個人デベロッパーアカウントで作成された新規アプリは、20名以上のテスターでクローズドテストを最低14日間連続で実施する必要があります。「Apply for production access」ボタンは、このテスト期間を満たしたあとに初めて活性化されます。法人アカウントはこの要件の対象外ですが、内部テストでの動作確認は強く推奨されます。

データセーフティセクション

2022年4月以降、データ収集・共有の有無、収集データ種別(位置情報・連絡先・財務情報など14カテゴリ)、暗号化・削除リクエスト対応の可否を申告するデータセーフティセクションの記入が必須です。アプリ内で利用しているSDK(Firebase、AdMob、Crashlyticsなど)が収集するデータも申告対象に含まれます。.NET MAUIセキュアストレージとOAuth実装ガイドで扱った認証情報も「個人ID」カテゴリに該当します。

プライバシーマニフェストとデータセーフティの記入

2024年5月1日以降、iOSアプリはPrivacyInfo.xcprivacy(プライバシーマニフェスト)の提出が必須化されました。これはアプリ本体および同梱SDKがどのデータを収集し、どのAPI(UserDefaultsFileTimestampSystemBootTimeDiskSpaceActiveKeyboardsの5種類)を使用するかをXML形式で宣言するもので、未対応の場合App Store Connectから警告メールが送信され、最終的には審査拒否となります。

.NET MAUIプロジェクトへの追加方法

Platforms/iOS/PrivacyInfo.xcprivacyを作成し、.csprojBundleResourceとして登録します。NSPrivacyTrackingはトラッキング有無、NSPrivacyCollectedDataTypesは収集データ種別、NSPrivacyAccessedAPITypesは必須API使用理由を表します。

<?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>NSPrivacyTracking</key>
  <false/>
  <key>NSPrivacyCollectedDataTypes</key>
  <array/>
  <key>NSPrivacyAccessedAPITypes</key>
  <array>
    <dict>
      <key>NSPrivacyAccessedAPIType</key>
      <string>NSPrivacyAccessedAPICategoryUserDefaults</string>
      <key>NSPrivacyAccessedAPITypeReasons</key>
      <array><string>CA92.1</string></array>
    </dict>
  </array>
</dict>
</plist>

App Store審査でよくある却下理由と対策

Apple公式のApp Reviewガイドラインの運用上、初回申請の約30%が却下されており、その60%以上は事前に回避可能な技術的・規約的問題が原因です。.NET MAUIアプリで特に頻出する却下パターンと対策を、ガイドライン番号別に整理します。私の経験上、2.1と4.0は本当に多いので、まずはこの2つを潰すだけでも通過率が大きく変わります。

ガイドライン却下理由対策
2.1 (Performance)クラッシュ、ログイン不可、機能未実装TestFlightで主要フロー全網羅、Sentry等でクラッシュ収集
2.3.10 (Accurate Metadata)スクリーンショットと実機UIの不一致スクリーンショットは最新ビルドで撮り直す、フレーム加工は最小限
4.0 (Design)Webラッパー、機能の薄さネイティブUI(XAML)を主体に、Hybrid率を50%以下に
5.1.1 (Privacy)プライバシーポリシー未掲載、収集データ不一致HTTPS公開URLを必ず登録、データセーフティと整合
5.1.2 (Data Use)ATTダイアログ未実装でIDFA取得App Tracking Transparency APIで明示同意取得

GitHub ActionsとFastlaneによる自動配信

手動でipa/aabをビルドして毎回ストアアップロードする運用は、ミスとボトルネックの温床になります。GitHub Actionsのmacos-15ランナーとFastlaneを組み合わせれば、git tag v1.2.3のpushをトリガーにTestFlight/Play内部テストへの自動配信が可能です。.NET MAUIテスト自動化とCI/CDガイドで構築したユニットテスト・UIテストをbuildジョブで通過させたあと、deployジョブに進む構成が安全です。

GitHub Actions ワークフロー例

以下はiOS版をTestFlight、Android版をPlay内部テストトラックに同時配信する最小構成例です。シークレットはGitHubリポジトリのSettings → Secretsに登録し、ベースキーストアやp12ファイルはBase64エンコードして格納します。

name: Release Mobile

on:
  push:
    tags: ['v*.*.*']

jobs:
  ios:
    runs-on: macos-15
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-dotnet@v4
        with:
          dotnet-version: '10.0.x'
      - run: dotnet workload install maui
      - name: Decode signing assets
        run: |
          echo "${{ secrets.IOS_P12_BASE64 }}" | base64 -d > dist.p12
          echo "${{ secrets.IOS_PROFILE_BASE64 }}" | base64 -d > appstore.mobileprovision
      - name: Build and publish ipa
        run: dotnet publish -f net10.0-ios -c Release
      - name: Upload to TestFlight via Fastlane
        run: fastlane pilot upload --ipa ./MyApp.ipa
        env:
          APP_STORE_CONNECT_API_KEY_CONTENT: ${{ secrets.ASC_API_KEY }}

  android:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-dotnet@v4
        with:
          dotnet-version: '10.0.x'
      - run: dotnet workload install maui-android
      - name: Build signed aab
        run: dotnet publish -f net10.0-android -c Release \
          /p:AndroidPackageFormat=aab
      - name: Deploy to Play internal track
        uses: r0adkll/upload-google-play@v1
        with:
          serviceAccountJsonPlainText: ${{ secrets.PLAY_SERVICE_ACCOUNT }}
          packageName: com.example.mymauiapp
          releaseFiles: '**/*.aab'
          track: internal

よくある質問

.NET MAUIアプリをApp Storeに公開するにはMacが必要ですか?

はい、最終的なipa生成と署名にはmacOS環境とXcode 16.2以上が必須です。ただし開発・デバッグはWindowsから「Mac経由のペアリング」もしくは「Hot Restart」で実施可能で、CI環境ではGitHub Actionsのmacos-15ランナーやMacStadiumを利用することでMac本体を保有せずにビルドできます。

Google Play Consoleでの審査にはどれくらい時間がかかりますか?

2026年現在、新規アプリの初回審査は3〜7日、更新版は通常24〜48時間です。個人デベロッパーアカウントの場合、製品版申請の前に20名以上で14日間のクローズドテスト実施が必須化されているため、実質的な公開リードタイムは最短でも3週間程度を見込んでください。

TestFlightとは何ですか?無料で使えますか?

TestFlightはAppleが提供する公式ベータテスト基盤で、Apple Developer Programに加入していれば追加料金なしで利用できます。社内テスター最大100名、外部テスター最大10,000名まで配布でき、ビルド有効期限は90日間です。App Store本番審査の前段階として、安定性とレビュー却下リスクを大幅に下げる手段として推奨されています。

プライバシーマニフェスト(PrivacyInfo.xcprivacy)が無いとどうなりますか?

2024年5月1日以降、App Store Connectへのアップロード時に必須API使用理由が未申告だと「ITMS-91053」などの警告が送信されます。当初は警告のみでしたが、2024年後半以降は実際に審査拒否やアップロード失敗の対象となっており、SDK側のマニフェストも含めて整合性を取る必要があります。

App Storeで一度却下された後、再申請の回数制限はありますか?

回数制限はありませんが、同じ理由で繰り返し却下されるとレビュー優先度が下がる傾向があります。Resolution Centerで指摘事項に対し、修正内容と再現手順を具体的に英語で返信し、TestFlightリンクを添付すると審査がスムーズに進むケースが多いです。

Editorial Team
著者について Editorial Team

Our team of expert writers and editors.