Google Home(Assistant)について~Alexaを少しだけかじったことある方向け

先日、Google Homeを購入しました。
スマートスピーカーは音声アシスタントが持つデフォルトの機能でも楽しめますが、
3rd partyや個人が公開している機能を利用することができます。

私自身、Alexaスキル開発について勉強中だったこともあり、
Googleとの用語の違い等についてまとめてみました。

||Alexa|Google Home|
| --- | --- | --- |
|主要製品| Amazon Echo|Google Home|
|音声アシスタント|Alexa|Google Assistant|
|機能名称|Skill|Action|
|公開されている機能数(2017年10月時点)|22,000以上|700くらい|
|機能の起動フレーズ|tell, ask, open, startなど|talk to, speak to, ～につないで(日本語の場合)など
|機能の利用方法|Alexa Skills Storeから個別に有効化が必要|個別の有効化は不要|
|外部システムとの連携|Account Linking|LINK ACCOUNT|
|開発者向けポータル|[Amazon Developer](https://developer.amazon.com/)|[Actions on Google](https://developers.google.com/actions/)|
|サービスエンドポイント|AWS Lambda または任意のHTTPSサーバ|Cloud Functions for Firebaseまたは任意のHTTPSサーバ|

#機能の起動方法の違い
用語の違いはあるものの、ほぼ同じような形で利用できるかと思います。
詳細は各ドキュメントを参照ください。

**Alexa**
https://developer.amazon.com/designing-for-voice/what-users-say/
![image.png](https://qiita-image-store.s3.amazonaws.com/0/125105/440c9a39-262a-05b3-f12a-8163ca176c88.png)

**Google Assistant**
https://developers.google.com/actions/discovery/
![image.png](https://qiita-image-store.s3.amazonaws.com/0/125105/cfd2514a-124e-8667-fb80-a1bcc2ecdeff.png)

##機能の有効化について
Alexaの場合、公開された機能を利用するにはSkills Storeから明示的に対象機能を有効化する必要があります。
しかし、Google Assistantの場合はapp nameを指定するだけで対象の機能を呼び出すことができます。
実装したアクションをユーザに利用してもらう方法として、以下の3つがGoogle I/O等の資料で紹介されています。

###in Dialogue
ユーザがアシスタントとの対話の中でアプリを起動する方法です。
明示的な起動と暗黙的な起動の2つに別れます。
**-Ecplict Triggering**
ユーザがapp nameを知っていれば明示的に呼び出すことができます。
ランプの魔人を呼び出す例. talk to Akinator
![image.png](https://qiita-image-store.s3.amazonaws.com/0/125105/a2f9d5f2-3d17-9005-3c01-f19c2beaa560.png)

アクション側でJapaneseに対応していなければ、残念ながら日本語では呼び出せないようです。
日本語対応済の公開アクションはまだ数が少なそうです。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/125105/06dc1aad-8cb7-b4e5-f577-9778d5e032dd.png)

**-Implicit Triggering**
app nameが指定されていない場合、アシスタントはユーザ行いたいことを分析して
このアプリはどうですか？と提案してくれます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/125105/d27e7741-eb7f-16f0-5922-33453e9ff139.png)

###Assistant Directory
Google Homeアプリのメニュ→Exploreまたは
Google AssistantのリンクアイコンからDirectoryにアクセスすることができます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/125105/c185de6b-7dce-636a-bb94-3554ef8690d4.png)![image.png](https://qiita-image-store.s3.amazonaws.com/0/125105/41e4a000-5833-9dc1-7c9a-38aec708b0ac.png)

Alexa Skills Storeのように公開されているアプリがカテゴライズされています。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/125105/3522ee05-abc0-4b75-ab2c-2cb337818ad6.png)

**※注意**
2017年10月時点で端末の言語設定が英語の場合に表示されます。
日本語だとGoogle Homeアプリではexploreが「できること」に変わってしまいDirectoryにアクセスできません
Google Assistantの場合、Directoryのリンクアイコン自体が表示されません
このあたりも早く日本語対応されると良いですね。

###Links that you share
公開されたアクションについては、Actions on Googleのプロジェクト概要ページやAssistant Directoryのshareからリンクを取得できます。
そのリンクをSNSや自身のWebサイト等で公開することができます。
https://developers.google.com/actions/discovery/directory
例. Google Searchのリンク
https://assistant.google.com/services/a/id/40efdd389af21237/ 

## Account Linking（LINK ACCOUNT）
外部サービスと連携するにはAlexa Skill のように Account Linking (Google ActionsではLINK）が必要です。
Google HomeアプリやDirectoryのリンクから対象アクションの詳細ページに飛び、LINK ACCOUNTを行います。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/125105/bdf563be-af8f-ea8c-05fc-d7640ac29212.png)

# Action開発の流れ
編集中

#参考URLなど
https://www.voicebot.ai/2017/10/05/google-assistant-voice-app-totals/
https://www.cnet.com/how-to/how-to-use-third-party-actions-on-google-home/
https://www.slideshare.net/bretmc/google-home-and-google-assistant-workshop-build-your-own-serverless-action-on-google-app