Garmin Connectから自分のデータを取得する~ランサムウェアへの超個人的抵抗~(その4)

本記事は、株式会社ピー・アール・オーアドベントカレンダーの11日目です。

# Chromeストアへの公開
[前回](https://qiita.com/pro_matuzaki/items/c31f32ffccc20cf9ecba)までに、当初欲しかった機能（Garmin Connectからのアクティビティデータ・毎日のデータ）のダウンロード機能が最低限揃いました。
いくつか細かいところの手直しもしたので、いよいよChromeストアで公開してみようと思います。
ずーっと引っ張ってきたこのシリーズもひとまずこれでおしまいです。

なお、公開に当たっては[Chrome Extension を作って公開する](https://qiita.com/sqrtxx/items/19fd2114430e9e1fb57f)を参考にさせていただきつつ、[本家](https://developer.chrome.com/docs/webstore/publish/)の手順に沿った形でやってみます。

大まかなステップとしては以下とのこと。ふむふむ。

1. Create your item’s zip file
2. Create a developer account
3. Upload your item
4. Add assets for your listing
5. Submit your item for publishing

## 1.公開アプリをzipに固める
アプリのソースコードを含むフォルダをzipに固めます。フォルダ内にはmanifest.jsonが必要で、最低限以下の項目が必要。
"name": — Displayed in the Chrome Web Store and in the Chrome browser
"version": — The version of the metadata, incremented
"icons": — An array specifying the icons your item uses
本家のtipsには以下のようなことも書いてありますね。

- 初期のversionは0.0.0.1など低い値を設定しておいた方がいい（更新するときはバージョン上げないと受け付けてくれないから）
- [NativeClient](https://developer.chrome.com/docs/native-client/)を利用している場合はパッケージサイズ縮小化のためファイル構成の最適化が行える

筆者はバカなので、versionを1のままうっかり上げてしまいました。まあ仕方ない。
あとzipファイルをupするにあたり、個人用アカウントではなく開発用専用アカウントの利用をお勧めされてます。正直その意図はよくわかりませんでしたがここでは従っておきました。

あ、あとはzip圧縮するにあたりgitの管理ファイルなどは省いた方がいいですかね。今回は[github](https://github.com/jimuguri/garmin-connnect-downloader)にあらかじめソースをpushしてありましたので、そこからzipダウンロードしたものを利用することにしました。

## 2.Chromeウェブストアデベロッパー登録
[ここ](https://chrome.google.com/u/4/webstore/devconsole/register)から登録を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221091/fb4dc028-832b-7869-8567-3d14fc0db1d4.png)

規約とプライバシーポリシー同意したら$5の投げ銭をしましょう。
![5ドル.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221091/979efeb7-1d5a-c3cd-e127-102a87fbc1b7.png)

完了するとこんな表示になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221091/31592379-d29f-3cdf-f2ed-172b9dae191e.png)

ダッシュボードなるものを表示してみるとこんな感じ。通知で覆いつくされている・・・。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221091/6796abea-5833-0460-04e6-ec4fb559c8cf.png)

## 3.アプリのアップロード
「+ 新しいアイテム」からやりましょう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221091/741a6fb5-039c-7ed0-e222-c16fedf49c0a.png)
ここにドラッグ＆ドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221091/7ecb3aa0-dd03-35f0-789c-5cc82f4ddee5.png)

アップロードするとこんな画面になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221091/83a50b15-68b6-cd7c-22fc-7d3e2362957e.png)

結構いろいろ記載しないといけないようです。
記載内容は次にて

## 4.必要事項の入力
「ストアの掲載情報」、「プライバシー」、「価格と販売/配布地域」の各タブに入力が必要です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221091/c48d55fb-350e-cdce-c586-64783a7f94de.png)


### ストアの掲載情報

| 項目名 | 説明 | 必須 |
|:--|:--|:-:|
| 説明  | アイテムの紹介と、インストールした場合のメリットを説明してください  | 〇 |
| カテゴリ  | 以下カテゴリから選択 <br> ショッピング <br> スポーツ <br> ソーシャル＆コミュニケーション <br> デベロッパーツール <br> ニュース＆天気 <br> フォト <br> ブログ <br> ユーザー補助機能 <br> 検索ツール <br> 娯楽 <br> 仕事効率化  | 〇  |
| 言語  | アイテムの言語を指定すると、ユーザーはアイテムを見つけやすくなります。複数の言語に対応している場合は、アイテムを国際化する必要があります。  | 〇  |
| ショップアイコン  | 128x128  | 〇  |
|全言語向けプロモーション動画| youtubeのURL| - |
|プロモーションタイル（小）|440×280 キャンバス<br>JPEG または 24 ビット PNG（アルファなし）|-|
|プロモーションタイル（大）|960×680 キャンバス<br>JPEG または 24 ビット PNG（アルファなし）|-|
|マーキープロモーションタイル|1400×560 キャンバス<br>JPEG または 24 ビット PNG（アルファなし）|-|
|公式URL|所有しているウェブサイトの 1 つがアイテムと関連している場合は、そのウェブサイトをリストから選択してください。Google Search Console を使ってサイトの所有者として登録することができます。|-|
|ホームページURL|アイテムのウェブサイトへのリンク|-|
|サポートURL|説明ページとサポートページの URL を提供すると、ユーザー エクスペリエンスが向上し、アイテムに適切な評価とコメントが集まるようになります。|-|
|成人向けコンテンツ|デフォルト:off<br>成人向けコンテンツの例としては、性的なコンテンツ、性的なものを暗示するコンテンツ、過激な言葉、暴力を含むコンテンツ、アルコール、タバコ、薬物の摂取または販売をメインにしたコンテンツなどがあります。|-|
|GoogleアナリティクスID|Google アナリティクスを使ってアイテムをトラッキングする場合は、Google アナリティクス ID を指定してください|-|

### プライバシー

| 項目名 | 説明 | 必須 |
|:--|:--|:-:|
|単一用途|拡張機能の用途は、単一で範囲の限られたわかりやすいものである必要があります(1000文字以内）。|〇|
|権限が必要な理由|manifest.jsonにおけるpermissionsに関して、なぜその権限が必要なのか？を1000文字内で説明していきます。|〇|
|リモートコードを使用しているか？|リモートコードは、拡張機能のパッケージに含まれていない JS、Wasm、または CSS です。script タグ内の外部ファイルへの参照、外部ファイルを指すモジュール、eval() による文字列の検証などもこれに該当します|〇|
|リモートコードを利用している理由||※利用している場合は必須|
|データ使用|ユーザーから収集するデータの種類についてチェックを入れます。|-|

### 価格と提供内容

| 項目名 | 説明 | 必須 |
|:--|:--|:-:|
|公開設定|公開、限定公開、非公開の３種|〇|
|販売地域|「すべての地域」選択すると全地域が選ばれる|〇|

## 5.申請
必要事項に入力し、さあ申請・・・と思ったら審査ボタンが有効になりません。なぜ？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221091/13f06edb-0814-20e5-56ba-65d5722e9e1e.png)
どうやらアカウントに追加情報が必要な模様
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221091/fc5789f7-aeb6-5ea6-e122-2e30c30921cb.png)
これですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221091/df3c5784-8c07-150d-7b76-5814e38c3714.png)
ここで一つ注意が。このメアドは、拡張機能とともに公開されるようです。普段使いのアドレスなどを不用意に設定しない方がいいかもしれませんね。（なので冒頭別のアカウントの利用が促されたのか？と思ったんですが、わざわざ入力させるってことは別にそういう意図じゃないんでしょうかね・・・。謎です）

メールアドレス入力したらボタンが有効になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221091/4f0fe09b-d789-5457-0545-e98ff7ae0d1b.png)

利用しているpermissionによっては審査に時間がかかるようです。私の拡張機能はドメイン指定しているのが問題になるかもしれません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221091/c41684dc-b16d-9f5b-c647-59be7ace342b.png)

無事申請できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221091/d9ac58da-426c-2559-7cda-7db516bb4c3d.png)

申請すると、アイテム一覧のステータスが「審査待ち」となるようです。あとはこのステータスが変更されるのを待てばいいわけですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221091/f7d9b4b0-82f8-5a7b-accf-0b614588da42.png)

すんなり公開されなさそうですが、経過はこちらの記事にて報告いたします。