hz-store-submit について
hz-store-submitは、Meta VRアプリをMeta Horizon Storeに提出する開発者向けのスキルです。APKや掲載素材の確認、アップロード、審査状況の追跡を扱い、CLIでのアップロードとダッシュボードで行う審査提出を区別します。
主な機能
- 01APKの署名とパッケージ要件の確認
- 02ストア準備とVRCチェック
- 03掲載素材の準備と検証
- 04metavr CLIによるビルドのアップロード
- 05審査状況の追跡と却下理由への対応
活用シーン
- 01提出前にVRアプリのビルドを検証
- 02ストア画像とメタデータを準備・確認
- 03ビルドをアップロードして審査の回答を追跡
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ meta-quest/ agentic-tools --skill hz-store-submitインストール後、Claude Code で/hz-store-submitを入力して読み込まれたか確認します。
同梱ファイルreferences/rejection-troubleshooting.mdreferences/submission-checklist.md
詳細
ストア提出スキル
Meta VR アプリを Meta Horizon Store に提出するまでの一連のプロセスをガイドします。このスキルでは、ビルドの検証、ストア公開準備の確認、ストア素材の準備、アップロード、提出状況の追跡を扱います。
このスキルを使用するタイミング
次のような場合に、このスキルを使用してください。
- ストア提出に向けて Meta VR アプリのビルドを準備する
- アップロード前に、APK が Horizon Store の公開要件を満たしていることを検証する
- ストア掲載素材(アイコン、スクリーンショット、動画、説明文)を準備して検証する
- 開発者ダッシュボードで提出ワークフローを進める
- 審査プロセスを通じて提出状況を追跡する
- 提出が却下された際の問題を解決する
提出に進む前に、徹底的なコンプライアンステストを行うため、VRC(Virtual Reality Check)検証をインラインで実行してください(以下の VRC チェックリストを参照)。
提出ワークフローの概要
提出プロセス全体は、次の順序で進みます。
1. Build Validation → Verify APK is correctly signed, targets ARM64, meets packaging requirements
2. Store Readiness → Run through the readiness checks, fix any violations
3. Asset Preparation → Prepare store listing images, videos, descriptions, metadata
4. Dashboard Setup → Create app on developer.meta.com, configure pricing, age rating
5. Upload → Upload the build to the platform
6. Submission → Submit for review
7. Tracking → Monitor review status, respond to feedback
ステップ 1:ビルドの検証
アップロードする前に、APK が基本的なパッケージ要件を満たしていることを検証してください。
APK 署名
リリース APK は Android キーストアで署名する必要があります。デバッグ署名された APK は却下されます。
# Verify the APK is signed (not debug-signed)
metavr adb shell "pm dump <package> | grep -i signature"
署名キーはアップデート間で一貫している必要があります。署名キーを変更するには、新しいアプリのエントリーが必要です。
マニフェストの確認
# Install the APK on a connected device to test
metavr app install path/to/release.apk
# Verify it launches correctly
metavr app launch <package>
# Check the manifest for required fields
metavr adb shell "dumpsys package <package> | head -50"
必須のマニフェスト要素:
android:targetSdkVersion>= 32android:minSdkVersion>= 29- 対象アーキテクチャ:ARM64 のみ(x86 または ARM32 は不可)
- アプリケーションで
com.oculus.intent.category.VRインテントカテゴリを宣言する必要があります - バージョンコードは、以前にアップロードしたすべてのビルドより大きい必要があります
パフォーマンスの基準
Meta VR デバイスでアプリを実行し、次の点を確認してください。
- 最低 72 Hz のフレームレートを維持する(Quest 3 では 90 Hz を推奨)
- 通常使用の最初の 5 分間に、サーマルスロットリングの警告が表示されない
- 起動から操作可能なコンテンツが表示されるまでの読み込み時間が 15 秒未満である
# Monitor frame rate
metavr adb logcat --tag VrApi | grep FPS
# Check thermal state
metavr device battery
# Watch for thermal warnings
metavr adb logcat --tag ThermalService --level W
ステップ 2:ストア審査の準備状況チェック
詳しい手順については、以下の VRC チェックリストを確認してください。VRC の主なカテゴリは次のとおりです。
- パッケージング — リリース署名済み APK(APK Signature Scheme v2。v1 のみは却下されます)、
targetSdkVersion >= 32(2D パネルアプリ:34 以上)、minSdkVersion >= 29、ARM64 のみ、以前にアップロードしたビルドより厳密に高いバージョンコード、および起動アクティビティで宣言されたcom.oculus.intent.category.VRインテントカテゴリ。 - 機能 — コアフロー(初回起動時のセットアップ、権限ダイアログ、頻繁なシーン遷移、低バッテリー/高温状態)でクラッシュや ANR が発生しないこと。時間のかかるネットワーク、IO、アセット処理はメインスレッド以外で実行してください。
- パフォーマンス — Quest 2 では 72 Hz、Quest 3 および Meta VR Glasses では 90 Hz を持続し、5 分以内にサーマルスロットリングが発生しないこと、起動から 15 秒以内に操作可能になること、長時間のセッションでもメモリーリークが発生しないこと。
- セキュリティ/権限 — アプリが実際に使用する権限のみを宣言してください。許可されていない権限があると、手動審査の前に自動却下されます。電話/SMS/連絡先(
CALL_PHONE、SEND_SMS、READ_CONTACTS)、正確な位置情報(ACCESS_FINE_LOCATION)、および正当な理由のないREAD_EXTERNAL_STORAGEを削除してください。オプションのハードウェアはhasSystemFeature()で確認し、使用しない場合は対応する<uses-permission>を削除してください。aapt dump permissions <app>.apkを使って、サードパーティライブラリも含めた マージ済み マニフェストを監査してください。有料アプリは、起動から 10 秒以内に(インターネット接続がなくても)エンタイトルメントを検証する必要があります。検証しない場合、自動却下されます。禁止されている権限と審査が必要な権限の一覧は、developers.meta.com/horizon/resources/permissions-prohibited/と.../permissions-review-required/をご覧ください。 - アセット — ストア画像がステップ 3のサイズと内容の仕様を満たしていること、スクリーンショットがデバイス上で実際に撮影されたものであること(エディター画面やモックアップは不可)、ヒーロー画像内のテキストが内側 80% のセーフエリアに収まっていること、快適性評価が実際の移動方式と一致していること(快適=静止/テレポート、普通=快適性オプション付きの低速スムーズ移動、強い刺激=高速移動)。
ストアでよく却下される理由:
| 却下理由 | 対処方法 |
|---|---|
| 審査中のクラッシュ | クラッシュを修正してください。metavr adb logcat --buffer crash を実行して調査します。 |
| フレームレートがしきい値未満 | レンダリングを最適化してください。Perfetto または OVR Metrics Tool でプロファイリングします。 |
| ストアアセットの不足 | 必要な画像がすべて正しいサイズでアップロードされていることを確認してください。 |
| 許可されていない権限 | アプリに不要な権限を削除してください(例:CALL_PHONE、SEND_SMS)。 |
| ヒーロー画像の安全でない領域にあるテキスト | ヒーロー画像の内側 80% のセーフエリア内にテキストを収めてください。 |
| アプリが応答しない(ANR) | 時間のかかるネットワーク、IO、アセット処理をメインスレッド以外で実行してください。metavr adb logcat --buffer crash で再現します。 |
| 快適性評価の不一致 | 実際の移動方式に合わせて快適性評価を設定してください(快適/普通/強い刺激)。 |
| 有料アプリのエンタイトルメント検証がない | コンテンツをアンロックする前に、起動から 10 秒以内に(インターネット接続がなくても)エンタイトルメントを検証してください。 |
ステップ 3:アセットの準備
Meta Horizon Store では、ストア掲載情報に特定のアセットが必要です。
必須画像
| アセット | サイズ | 形式 | 備考 |
|---|---|---|---|
| アプリアイコン | 1024 x 1024 px | PNG または JPEG | 正方形、角丸なし(システム側で角丸に処理されます) |
| ヒーロー画像(横向き) | 2560 x 1440 px | PNG または JPEG | ストア掲載情報のメイン画像です。テキストは内側 80% のセーフエリアに収めてください。 |
| スクリーンショット | 2560 x 1440 px | PNG または JPEG | 最低 3 枚必要です。モックアップではなく、アプリから撮影したものを使用してください。 |
| 小型横向き画像(任意) | 1280 x 720 px | PNG または JPEG | 一部のストア掲載枠で使用されます。 |
必須メタデータ
- アプリ名:30 文字以内
- 短い説明:150 文字以内。ストアの閲覧画面に表示されます。
- 長い説明:4000 文字以内。基本的な書式に対応しています。
- カテゴリ:利用可能なストアカテゴリ(ゲーム、エンターテインメント、生産性など)から選択します
- コンテンツレーティング:年齢レーティングのため、IARC の質問票に回答します
- プライバシーポリシー URL:すべてのアプリで必須です
- サポート URL またはメールアドレス:必須です
任意ですが、推奨される項目
- 予告動画:30~60 秒、1920 x 1080 または 2560 x 1440、MP4/MOV
- ローカライズ済みの説明:対象となる言語/地域ごとに用意します
ステップ 4:ダッシュボードの設定
- Developer Dashboard にアクセスしてサインインします
- Create New App をクリックします(または既存のアプリを選択します)
- 必須のメタデータ項目をすべて入力します
- 価格を設定します(無料、または希望小売価格で有料)
- IARC のコンテンツレーティング質問票に回答します
- 段階的なロールアウトを使用する場合は、リリースチャネルを設定します
ステップ 5:アップロード
署名済みのリリース APK を Developer Dashboard または
metavr CLI でアップロードします。CLI はリリースチャネルへのビルド配布を処理しますが、アプリの作成、ストア掲載情報の入力、ポリシーに関する質問票への回答、
アプリの審査申請は行いません。
# Find the app and inspect its release channels.
metavr store dist apps --org <ORGANIZATION_ID>
metavr store dist channels --app-id <APP_ID>
# Uploads are drafts unless --publish is supplied.
metavr store dist upload \
--app-id <APP_ID> \
--channel ALPHA \
--apk path/to/release.apk \
--notes "What changed in this build"
ビルドの検証中は ALPHA、BETA、または RC を使用します。LIVE はストアの
リリースチャネルに対応しますが、そこにアップロードしても掲載情報が
審査に申請されるわけではありません。アップロードしたビルドを選択したチャネルに
ただちに公開する場合に限り、--publish を使用します。
組織 ID とアプリ ID は Developer Dashboard で確認できます。いずれかの
metavr store dist コマンドがゼロ以外の終了コードを返すか、サーバーまたは GraphQL エラーを報告した場合、
内容が不明瞭な Invalid parameter エラーも含め、IDを何度も試さないでください。
代わりに Dashboard からアップロードします。アップロード後、ビルドに正しいバージョンコード、
署名、アーキテクチャが表示されていることを確認します。
ステップ 6:審査に申請
- Developer Dashboard でアプリの Submission タブに移動します
- すべてのセクションに緑色のチェックマークが表示されていることを確認します
- ページ上部に表示されたエラーまたは警告に対処します
- Submit for Review をクリックします
この手順は Dashboard でのみ行えます。CLI によるアップロードが成功すればストアへの申請も完了すると、 開発者に伝えないでください。
審査期間として約 1~2 週間を見込んでください。目標の公開日の少なくとも 2 週間前に申請します。
ステップ 7:状況の追跡
申請後:
- Developer Dashboard でアプリのステータスを確認します
- 審査担当者からのフィードバックや質問には速やかに対応します
- 却下された場合は、却下理由をよく読み、各問題を修正してから再申請します
承認後:
- ただちにリリースするか、リリース日を設定します
- 公開後はクラッシュレポートとユーザーからのフィードバックを確認します
- 早期利用者が発見した問題に対応するため、公開後のアップデートを計画します
注意点
- バージョンコードは必ず増やしてください -- 以前にアップロードしたビルドと同じか、それ以下のバージョンコードのビルドはアップロードできません。初回アップロードの前に、バージョン管理の方針を決めてください。
- 署名キーは恒久的に使用します -- 特定の署名キーでビルドをアップロードすると、以降のすべてのビルドで同じキーを使用する必要があります。キーストアを紛失すると、アプリを更新できなくなり、新しいアプリのエントリーを作成しなければなりません。
- スクリーンショットの要件は厳格です -- スクリーンショットは、マーケティング用のモックアップやエンジンのエディタ画面ではなく、実際のアプリから撮影する必要があります。審査担当者は、スクリーンショットと実際のアプリの使用感を比較します。
- 審査にかかる期間は変動します -- 通常の審査には1~2週間かかりますが、祝日、再提出、申請数の増加により、さらに時間がかかる場合があります。余裕を持たずにリリース日を約束しないでください。
- Meta 管理リリースとセルフサービスリリース -- Meta がリリースを管理する場合、ダッシュボードから独自のリリース日を設定できません。アカウントマネージャーと調整してください。
- 2D アプリには異なる要件があります -- 2D Android アプリ(没入型 VR ではないアプリ)を提出する場合、ストア公開準備の要件は一部に限られます。没入型 VR 向けのチェック項目がすべて 2D アプリにも適用されると思い込まないでください。
- アセットのセーフゾーン -- ヒーローアートとスクリーンショットには、テキスト用の「セーフゾーン」があります。外側の20%にかかるテキストは、ストア内の配置によって切り取られ、却下につながる場合があります。
- プライバシーポリシーは必須です -- ユーザーアカウントのない無料アプリであっても、プライバシーポリシーの URL が必要です。これがないと提出できません。
参考資料
- VRC 準拠 -- 提出前に、上記の詳細な VRC 検証チェックリストを実行してください
- 提出チェックリスト -- 提出前に確認するための簡易チェックリスト
- 却下時のトラブルシューティング -- よくある却下理由と対処法