本連載の前半は、企画・VUI設計に関する内容でした。今回からはエンジニアが執筆を担当し、機能ごとの実装方法など、技術的な解説をしていきます。今回は、開発する際にポイントとなるAmazon Alexa / Google アシスタントの開発言語と機能面の違い、そしてわたしたちが実際に利用しているJovo Frameworkを用いた開発手法についてお伝えします。
1. 音声アプリケーションの開発言語
これから開発をする方に向けて、各音声PFでどのような言語のSDKが準備されているのかを下表にて簡単にご紹介します。
音声PF名 | Amazon Alexa | Google アシスタント |
---|---|---|
SDK名称 | Alexa Skills Kit SDK for Node.jsなど | Actions on Google Client Libraryなど |
開発言語 | Node.js、Python | Node.js、java、Kotlin |
これらのSDKで現在多く利用されているのは Node.js となっており開発を個々に進めた場合手順書にある通りに準備を行うと、Amazon Web Service (AWS)や Google Cloud Platform(GCP) をそれぞれ準備することになるでしょう。
しかしながら、AWSやGCPの両方を準備するのが手間に感じる方もいると思います。その課題に対する解決策として 「4. Jovo Frameworkを用いた開発」にて詳しく説明します。
2. Amazon Alexa と Google アシスタントの機能面での違い
2019年3月現在の各音声PFの機能面の違いを、下表にまとめました。今後、開発を検討する際にお役に立てば幸いです。
音声PF名 | Amazon Alexa | Google アシスタント |
---|---|---|
アカウントリンク | ○ | ○ |
スキル/アクションの無効化/有効化/リセット | ○ | ○ |
カード表示機能 | ○ | △(*1) |
通知 | ○ | △(*2) |
暗黙的な呼び出し(*3) | × | ○ |
*1. Google Home アプリでは表示されないが、Google アシスタント アプリでは表示される。
*2. Google Home, Google Home Mini に対しての通知機能は公式では存在しないが、Google アシスタントに対しての通知機能はある。
*3. Google アシスタントに発話した際のユーザーの要求に対して役立つアクションを持っている場合、 Googleアシスタントがあなたのアクションをユーザーに推薦する可能性がある機能(詳しくは第9回、暗黙的な呼び出しにて記載)。
3. Amazon Alexaと Google アシスタント両方の同時開発の手法
Amazon Alexa、Google アシスタントの初期開発に必要となる情報は下記をご参考にしていただければと思います。
Yahoo! JAPANのスキルプロジェクトチームで、まずAlexa Skills Kit SDK、Actions on Google Client Library を用いて調査、テスト開発を行いました。最初の簡単な構成図(構成図1)となります。
それぞれのPFが提供しているSDKは非常にスムーズに導入でき、開発自体には苦労する点は特にありませんでした。しかしながら、同じようなコードを同じように書くことに煩わしさを感じました。そのため、何か良いFrameworkなどが存在しないか調査を進めたところ、Jovo Framework(Jovo)を発見し、そのJovoのメリットやデメリットの洗い出しをした上で、利用することにしました。
JovoFrameworkとは
Amazon Alexaと Google アシスタントの両PFに対応しているFrameworkであり、2019年3月現在も日々活発に更新されている音声PF向けFrameworkとなります。
メリット
Amazon Alexaと Google アシスタント両PFに対応
コードの煩雑化の防止
コードが分散しないためビジネスロジック部分の共通化が可能
バックエンドの集約
オープンソースソフトウェアのため改変が可能
デメリット
バグや脆弱性を発見した場合、利用者自身が対応する必要がある
Amazon Alexa, Google アシスタントのすべての機能は網羅されていない
4. Jovo Frameworkを用いた開発
Jovoを用いた場合の簡単な構成図(構成図2)は下記の通りになり、前の構成図(構成図1)と比較してわかるようにシンプルなものになります。
導入という面では、導入手順にて詳しく記載されており、簡単に導入ができるようになっています。テンプレートが充実しており、それぞれ実行してみるとさらに理解が深まります。
また、Jovo Debuggerというテスト実行をLambda、Firebaseを保持していなくてもデバッグ(画像1)をブラウザから実行できる機能があります。
ユニットテスト関しては、公式ドキュメント(*2)を参考にすることでユニットテストの初期導入コストを軽減できます。諸々の機能をすべて利用するには、個別にJovo CLIの操作方法をある程度、理解する必要がありますがデバッグなどの動作方法については、サイトにも明記されてれおりますのでサイトの方を詳しくはご確認ください。
5. Jovo Frameworkを利用する際の留意点
先述の通り、Amazon Alexa, Google アシスタント両PFは非常に活発に日々更新されているSDKのため、Frameworkの方では追従できていない機能などが出てくる事があり、公式SDKを利用していないため、何か起きたとき等は自身で解決策を模索しなければいけないという点もあることを念頭においておくべきです。
そのため、公式SDKにもしっかりと目を通した上で基本の機能がどのようなものがあるのかを把握し、目的にあった形でJovoの利用をすることを推奨します。
まとめ
今回はAmazon Alexa/Google アシスタント両PF横断開発テクニックとして、Jovo Frameworkの導入について紹介しました。 次回は「自社サービスのIDとつなげる(アカウントリンク)」として、アカウントリンクの簡単な解説と導入について要点を説明する予定です。
著者紹介
Yahoo! JAPAN スキルプロジェクトチーム
データ&サイエンスソリューション統括本部のスマートデバイス本部に所属するプロジェクトチーム。スマートデバイス本部は、IoTや今回のテーマである音声アプリケーション開発など、ちょっとだけ未来の技術に挑戦する部署。
今回の執筆者:大塚健太(おおつか けんた)/エンジニア
スキルプロジェクト エンジニア。ヤフーでは、スマートスピーカー向け音声アプリケーションVUI設計、フロントエンド、バックエンド開発などを担当。それ以前の経験としては、DECOPIC(Android、フロントエンド、バックエンド)やmyThings(フロントエンド)を担当。