Google Homeアプリ申請から承認、公開までの流れ（2018年3月）

# はじめに

先日、[弊社](https://qiita.com/organizations/kronos-jp)開発中サービスの機能のひとつとして、Google Homeで利用できるアプリをリリースしました。
:warning: （2018/8/1追記）サービスの正式リリース準備のため、現在配信を停止しています。

![](https://qiita-image-store.s3.amazonaws.com/0/230503/5ffec6fb-2161-a1e8-c118-5dbb82c55f39.png)
DO-YOトーク | Google アシスタント


この記事ではアプリ申請から承認、公開までの時系列を追ってその流れをご紹介します。
アプリ開発に関しての紹介は別の機会とさせていただき、本記事内では触れません。
またワークフローは今後変更される可能性があり、本記事は2018年3月時点の情報であることにご注意ください。

ポイントは次の2点です。

- **:point_right: レビューしやすいアプリであれば、24時間以内に公開可能な場合がある**
- **:point_right: すべてのケースでテキストメッセージを返そう（終了時含め）**

アプリ申請に際しては次の記事も参考とさせていただきました。
アプリ情報を入力するにあたっての注意点などがわかりやすく整理されていますので、ぜひご覧ください。
:paperclip: [Google Homeアプリをリリースしてみた(申請編)](https://qiita.com/miso_develop/items/c56fd334f333160a9130)

## 「DO-YOトーク」ならびに「DO-YO」について
このアプリでは、株式会社クロノスの「DO-YO」（ドーヨ）と連携してユーザーのコンディションを確認できます。
「DO-YO」は、全ての働くヒトが高いパフォーマンスを発揮できる組織造りを支援する、コンディション自動解析ツールです。
メール/チャットなどのコミュニケーションツールから自動でデータを取得・解析することで、分析対象データの準備や定期的なサーベイ（アンケート）を行うことなく、容易にコンディションを把握できます。

**「DO-YO」は現在ベータ版（限定トライアル）での提供となっています。
サービスに関してご興味のある方は下記サイトよりお問い合わせください。**
:paperclip: [DO-YO - コンディション自動解析ツール](https://www.kronos.jp/do-yo/)

# 申請から承認、公開までの流れ

## :alarm_clock: 1日目 20時 - 1回目の申請

[Actions on Google コンソール](https://console.actions.google.com/)からシミュレータでのテストを終えて、アプリ申請を出しました。
参考として申請時のアプリを次のセクションに掲載しています。

このときレビューに4〜5日を見込んでいたため、申請を出した後はのんびりと待ちの気分でいました。
そう、2日目までは…。


## :alarm_clock: 2日目 11時 - リジェクト

アプリ申請の翌朝、早々にレビュー結果が送られてきました。
レビューチームからのメッセージはコンソールでも確認できますが、申請を出したGoogleアカウントのGmail宛にも届きます。
レビュー結果がリジェクトの場合は、次のように日本語で非常に丁寧な説明が添えられています。
NGとなったテストケースもすぐにわかってちょっと感動ものです。:pray:

>・One of your HTTP endpoints was either down or not responding appropriately during review.
>・Note: 開発ご担当者様
>お世話になっております。
>この度はご申請ありがとうございました。
>
>本アプリはActions on Googleポリシーに則り、下記内容をご修正いただく必要がございます。
>
>■App is not healthy
>本アプリをテストしたところ以下の問題を確認しました。
>例1）
>アプリ：「ドーヨへようこそ！ユーザーのコンディションを確認するには、「鈴木さんのコンディションを教えて」のように話しかけてください。「全体」やタググループの名前でも確認できます。終了する場合は「終了」と話しかけてください。」
>ユーザ：「終了」 
>アプリ：「DO-YOトークから応答がありません。後ほどもう一度試してください。」
>
>例2）
>ユーザ：「DO-YOトークで鈴木さんのコンディションを教えて」 
>アプリ：「DO-YOトークから応答がありません。後ほどもう一度試してください。」
>
>→アプリが強制終了してしまいます。ご確認して正しく動作するようにご修正いただけますでしょうか。
>
>上記をご検討ご修正の上で、またのご申請をお待ちしております。
>レビューについてご質問・お問い合わせなどがありましたら、以下URLよりご連絡頂けますと幸いです。
>日本語と英語双方対応致しますので、お気軽にお問い合わせ下さい。
>If you have any questions please feel free to contact us below. We have Japanese and English >support team.
>https://developers.google.com/actions/support/ja/
>
>引き続き何卒よろしくお願いいたします。🙇
>Actions on Google Review Team

## :alarm_clock: 2日目 13時 - 2回目の申請

1回目のNGの原因は恥ずかしながらDialogflow上の単純な設定ミスだったため、すぐに修正ができました。
必要な再テストを行ってから再申請を出しました。

次のような設定で空のテキストが返却された場合、Actions on Google側では異常終了として扱われます。
テキストメッセージの不足がないように注意しましょう。

- "Set this intent as end of conversation"（会話の終了）が設定されているIntentで、Text Responseが空になっている。
- "REQUIRED"（必須）が有効になっているParameterで、Promptsが空になっている。

## :alarm_clock: 2日目 15時 - 承認

再申請の後、数時間で承認のメッセージが届きました。
レビューチームがお祝いしてくれます。（ありがとうございます）
今回は再レビューまでの待ち時間もほとんどなく、これが通常運行とするととても素晴らしいワークフローであると感じました。

なお、メッセージ中にある通り、多言語対応のアプリの場合はそれぞれの言語別にレビューが行われるようです。

>開発ご担当者様
>
>お世話になっております。
>Actions on Google Review Teamです。
>この度はご申請いただきましてありがとうございました。 
>
>おめでとうございます！🎊
>本アプリを審査しましたところ、無事承認されましたことをご報告いたします。🎉
>
>なお、本審査結果は日本語版を対象としております。
>他の言語を同時に申請されていた場合には、すべての言語で承認される必要がございます。
>
>引き続き何卒よろしくお願いいたします。
>Actions on Google Review Team

## :alarm_clock: 2日目 17時 〜 公開

承認されたアプリは自動的に公開されます。開発者側での操作は必要ありません。
現状、スケジュール指定での公開はできないため、公開タイミングのコントロールは難しい面があります。

また、当日17時頃にGoogle Homeなどの実機で確認したところアクセスできない端末もあったため、配信には若干ラグがあるのかもしれません。

# 申請時のアプリ情報

## Actions added from Dialogflow

Dialogflowと連携して開発している場合、変更不要です。

## App information

<img width="800" alt="" src="https://qiita-image-store.s3.amazonaws.com/0/230503/32a32f94-4943-a815-c5d9-76ee32a36d8c.png">

### Assistant app name

アプリの表示名と発音を入力します。
**表示名と発音はイコールである必要はありません。
このアプリでは、認識される発音を事前に調べ「童謡トーク」としました。**

### Details

#### Assistant app introduction

このアプリでできることを入力します。
```このアプリでできること | DO-YOと連携してユーザーのコンディションを確認できます。```

#### Assistant app voice

アプリがテキストを読み上げるときのボイスを選択します。
"Match user's language setting"チェックボックスは多言語を意識しなければ基本的に有効でよさそうです。

#### Short description

アプリの一覧などで表示される短い説明を入力します。
```DO-YOと連携してユーザーのコンディションを確認できます。```

#### Full description

アプリの詳細として表示される説明全文を入力します。

```
このアプリでは、株式会社クロノスの「DO-YO」（ドーヨ）と連携してユーザーのコンディションを確認できます。
ユーザーのコンディションを確認するには「鈴木さんのコンディションを教えて」のように話しかけてください。「全体」やタググループの名前でも確認できます。
「DO-YO」は、全ての働くヒトが高いパフォーマンスを発揮できる組織造りを支援する、コンディション自動解析ツールです。
メール/チャットなどのコミュニケーションツールから自動でデータを取得・解析することで、分析対象データの準備や定期的なサーベイ（アンケート）を行うことなく、容易にコンディションを把握できます。
※「DO-YO」は現在ベータ版での提供となっています。
```

#### Sample invocations

アプリの呼び出し方をユーザに説明するための例を入力します。
**表示される順序はなぜかここでの入力順と一致しません。**
```Ok Google, | DO-YOトークと話す```
```Ok Google, | DO-YOトークにつないで```
```Ok Google, | DO-YOトークで鈴木さんのコンディションを教えて```

### Images

ヘッダー用の大きいサイズの画像（1920 x 1080）と、アイコン用の小さいサイズの画像（192 x 192）を選択します。
サイズが指定に合っていないとアップロード時にNGとなるため注意しましょう。

### Contact details

開発者名（任意）と連絡先メールアドレス（必須）を入力します。
ここで入力した内容はいずれもアプリ情報として公開されます。

### Privacy and consent

プライバシーポリシーページのURL（必須）とサービス利用規約ページのURL（任意）を入力します。

### Additional Information

#### Category

アプリのカテゴリーを選択します。
申請したカテゴリーと実際の機能が一致していないとリジェクトの原因となるため注意しましょう。
このアプリのようにツールとしての機能を提供する場合は```Productivity```となります。

#### For Families

ペアレンタルコントロールの要否を選択します。

#### Testing Instructions 

レビュー時のテストに必要となる情報があれば入力します。
このアプリでは「DO-YO」テストユーザの情報を入力しました。

#### Transactions

予約や購入処理、外部アカウントとの連携といったトランザクション制御が必要な場合に、Transactions APIを有効化します。
:paperclip: [Transactions | Actions on Google | Google Developers](https://developers.google.com/actions/transactions/)

## Location targeting

<img width="600" alt="" src="https://qiita-image-store.s3.amazonaws.com/0/230503/b24e35c2-a54e-6c5c-c5e3-f1d02a76aab1.png">

アプリを配信する地域を選択します。デフォルトは全選択です。
このアプリでは連携先のサービスが国内ターゲットのため、```Japan```のみとしました。

## Surface capabilities

<img width="600" alt="" src="https://qiita-image-store.s3.amazonaws.com/0/230503/66ae7e2a-c2c9-aec5-f7df-0c6095fef852.png">

・オーディオ機能
・画面表示機能
・メディア再生機能
・Webブラウザ機能
の要否を選択することによって、アプリを利用可能な機器が絞り込まれます。

## Action discovery and updates (optional)

<img width="600" alt="" src="https://qiita-image-store.s3.amazonaws.com/0/230503/8769de8f-367d-fc31-23e9-510f20e85463.png">

Action(Dialogflowで作成したIntent)ごとに次の設定を追加できます。

### Action invocation phrases

Actionに「鈴木さんのコンディションを教えて」といった呼び出し句を追加します。
Dialogflowと連携して開発している場合、自動的に値が設定されるため基本的には変更不要です。

### User updates and notifications

Actionに日次の更新チェック機能、およびプッシュ通知機能を追加します。
例えばニュースの配信をする場合などに利用することが考えられます。
:paperclip: [Updates and notifications | Actions on Google | Google Developers](https://developers.google.com/actions/assistant/updates/overview)

## Account linking (optional)

<img width="600" alt="" src="https://qiita-image-store.s3.amazonaws.com/0/230503/df1ac2b0-fe58-42cb-75f7-149b8b682551.png">

外部のアカウントとの連携が必要な場合に、アプリが認可を得るための標準機能の設定です。
サポートされるフローはOAuth 2.0の暗黙的フローと認可コードフローとされています。
この設定については、後日改めて別の記事で触れたいと思います。
:paperclip: [Implementing Account Linking | Actions on Google | Google Developers](https://developers.google.com/actions/identity/account-linking)

# おわりに
以上のようにGoogleの対応も非常に丁寧かつ迅速であることから、現在のGoogle Home（ないしはGoogleアシスタント）は、小さなアイデアをすばやく形にすることができるプラットフォームと言えます。
いちユーザとしてもこれからユーザ人口、アプリ開発者人口が増えていくことに期待しています。

最後になりますが、
**株式会社クロノスは、2018/4/4（水）〜6（金）に開催される[第2回 AI・人工知能EXPO](http://www.ai-expo.jp/)に出展します。**
この記事で取り上げたアプリをGoogle Home実機からお試しいただける展示もご用意していますので、ご来場の際はぜひお立ち寄りください！

<img width="600" alt="" src="https://qiita-image-store.s3.amazonaws.com/0/230503/452fe1ee-fbf1-5104-5c3a-626cf53e223b.jpeg">
※第1回 AI・人工知能EXPO 展示の様子