未パッケージで配布していたChrome拡張をウェブストアへ公開するときは、コードが動くだけでは提出できません。ZIPの構成、権限の説明、データ使用の申告、審査担当が実行できるテスト手順を揃える必要があります。
提出ZIPは中身を検査してから作る
Windowsのtar -a -c -fは、拡張子が.zipでもZIP形式にならない場合があります。PowerShellのCompress-Archiveも、エントリ名の区切りが問題になることがあります。
.NETのZipFileでファイルを1件ずつ追加し、エントリ名を/へ正規化すると、ストア提出用のZIPを安定して作れます。
Add-Type -AssemblyName System.IO.Compression
$zip = [System.IO.Compression.ZipFile]::Open($destination, 'Create')
foreach ($file in Get-ChildItem -LiteralPath $root -Recurse -File) {
$name = $file.FullName.Substring($root.Length + 1).Replace('\', '/')
[void][System.IO.Compression.ZipFileExtensions]::CreateEntryFromFile($zip, $file.FullName, $name, 'Optimal')
}
$zip.Dispose()
ZIPにはmanifest.json、アイコン、srcなど実行に必要なものだけを入れ、調査用コード、原版画像、ビルド用スクリプト、ドキュメントの原本は除外します。作成後は解凍して読み込み、Service Workerが起動するところまで確認します。
提出情報を先に揃える
説明文、スクリーンショット、128pxアイコン、カテゴリ、言語、サポートURLを用意します。スクリーンショットには利用者名や金額が写り込みやすいため、マスクを適用した状態で撮影します。
manifestが参照するservice worker、content script、icons、画面ファイルが実在するかも自動検査します。descriptionの文字数、manifestのversion、秘密鍵にあたるkeyの残存も提出前に確認します。
プライバシー申告は過少にしない
ウェブストアのプライバシー欄では、拡張が送信するデータだけでなく、読み取るデータの種類も実装に合わせて申告します。権限ごとの理由、ホスト権限の用途、プライバシーポリシーのURLを準備します。
データを販売しない、目的外に使わない、信用判断に使わないという表明欄が未チェックだと、送信ボタンが有効にならないことがあります。
連絡先はアカウント設定を確認する
アイテムの設定を埋めても審査へ送信できない場合は、パブリッシャーの連絡先メールアドレスを確認します。メールアドレスの入力欄がアカウント設定のプロフィールにあり、入力後の確認まで必要な場合があります。ストアに公開される情報かどうかも確認します。
ログイン必須機能のテスト手順を書く
審査担当が対象サイトへログインできない拡張では、500文字以内のテスト手順に次を含めます。
- ログイン情報を提供できない理由
- ログイン不要で確認できる操作
- ログインが必要な機能の一覧
- データを端末内だけに保存するかどうか
- 必要なら動画を提供できること
審査担当が実行できる範囲を具体的に書くと、ログイン不可だけを理由に判断されるリスクを下げられます。
公開後も版と権限を管理する
更新のたびに審査があり、同じバージョン番号を再提出することはできません。権限追加を含む更新では、利用者側で承認が必要になり拡張が一時停止することがあります。権限追加は必要なものをまとめ、版上げと変更履歴を同時に行います。
まとめ
ウェブストア公開は、ZIPをアップロードする作業ではありません。提出物の再現性、利用者情報を含まないスクリーンショット、権限とデータ使用の説明、ログイン不可を前提にしたテスト手順、更新時の版管理を一つのチェックリストで確認することが重要です。
