Amazon Echoなどで利用可能なスキルを使うと開発者は独自の機能を追加できる。スキル開発に必要な基礎知識を見ていこう。
Amazon EchoやGoogle Homeなどのスマートスピーカーの最大の魅力は、その場その場で知りたい情報を音声を利用して知ることができる点だ。Amazon Echoであれば「Alexa、ニュースは?」と問い掛けることで、ニュース機能を提供しているさまざまな会社からの最新ニュースが音声で届けられる。朝の忙しい時間に、PCのキーボードをたたいたり、スマートフォンやタブレットの画面をタップしたりすることなく、音声を使うことで「○○しながら情報収集」できるのは便利だ。
このときに、Amazon Echoとユーザーとの間を取り持つエンジンとなるが「Alexa」(アレクサ)だ。Amazon Echoには標準で「Alexaが搭載されて」いるが、マイクとスピーカーを持ち、インターネットに接続可能なデバイスであれば、それに「Alexaを搭載する」ことも可能だ。
スマートスピーカーが提供するさまざまな機能のことを、Amazon Echoでは「スキル」と呼んでいる。どんなスキルがあるかは、Amazonの「Alexaスキルガイド」ページから参照できる(ただし、これは2017年11月時点のもので情報としては古い。「Alexa スキル 一覧」などで検索をすれば、もっと新しいスキルリストを表示してくれるサイトも見つかるはずだ)。
開発者がスキルを作成して、公開することも可能だ。ドキュメントによれば、開発言語には「C#」も利用できる。本特集を通して「C#でAlexaスキルを開発」していこう。今回は、そのための基礎知識を取り上げ、Amazonの開発者コンソールを利用して、取りあえず(JavaScriptベースの)簡単なスキルを作ってみよう。
ここでポイントとなるのは以下の事項だ。
まずはスキルを使って何ができるのか、スキルを開発するのにどんなものが必要になるかを見てみよう。
Alexaのスキルはおおよそ次の3種類に分けられる。
カスタムスキルとは「ユーザーがしたいこと」(インテント)を、ユーザーとAlexaの対話から割り出して、それに基づいた処理を行うタイプのスキル。ユーザーは「Alexa、○○で××して」という形式で「Alexaに何をしてほしいか」を伝える。このとき、「○○」の部分を「呼び出し名」「wake word」などと呼ぶ。「××」の部分が「インテント」となる。一般的なアプリはこのカテゴリーに分類されることになるだろう。
ユーザーがAlexaに問い合わせた内容は解析され、「呼び出し名」「インテント」などの情報が抽出され、最終的に開発者が作成したスキルへ送信される。スキルがそれに応じた処理を行い、その結果をAlexaに返送すると、それが音声(またはテキスト)の形でユーザーへと届けられる。
スマートホームスキルは「スマートホーム端末(照明、テレビなど)を制御する」ためのスキル。ユーザーが「Alexa、照明を消して」などと問い掛けると、その指示に従った処理を行う。詳細については「スマートホームスキルAPIについて」を参照のこと。
フラッシュブリーフィングスキルは、ユーザーが「Alexa、ニュースを聞かせて」などと問い掛けたときに、(ユーザーが有効化しているフラッシュブリーフィングスキルから)ニュースを音声などで返答してくれるもの。自分たちが発信しているニュースや記事などへユーザーが手軽にアクセスできるようにするものだ。
これらのスキルを開発するには、Alexa Skills Kit(ASK)を使用する。そこで次にスキル開発に必要となる事項について見ていこう。
Alexaのスキルを開発するために次の2つのアカウントを取得しておく必要がある。
また、今回は使用しないが、Visual Studio 2017からLambdaのコードをC#で記述するのであれば(これが最終的なゴール)、AWS Toolkit for Visual Studio 2017も必要だ。
ちなみにスキルを開発してみるだけであれば、Amazon Echo本体は必要ない。スキルの開発コンソールあるいはテストシミュレーターを利用して、動作を確認できるようになっている(実機を用いてβテストをするには、そのカテゴリーや公開する国と地域など、スキルの公開に必要な情報を入力しなければならないので、ちょっと作って試してみようという場合にはなかなかハードルが高い)。
Amazon開発者アカウントの登録については「Alexa 開発者アカウント作成時のハマりどころ」などページを参照されたい(Amazon開発者アカウントを新規に作成するのではなく、自分が普段使用しているAmazon.co.jpのアカウントでサインインするのがキモのようだ)。また、AWSアカウントの作成については「AWS アカウント作成の流れ」ページを参照されたい。
Alexaのスキルはおおまかにいって次の2つで構成される。
ロジックの部分については、AlexaではLambdaを使用するのが一般的だ。そして、Alexaのスキルと、Lambdaをつなぎ合わせることで、ユーザーの入力に応じた何らかの処理を行うことになる。そこでまずはロジックの部分のひな型を作成しておこう。
Lambda関数を作成するには、AWS マネジメントコンソールにAWSアカウントを利用してログインする。その後、コンソール画面で「lambda」を検索して、Lambdaに関するページを表示する。
ここで[関数を作成]ボタンをクリックする。すると、関数の作成画面が表示される。
ここでは中央の[設計図]を選択して、[設計図]検索ボックスに「Alexa」などと入力している。これにより、Alexa用のサンプルコードが幾つか表示されるので、適当に何かを選択しよう。ここでは左上にある「alexa-skill-kit-sdk-factskill」を選択した。[一から作成]を選択した場合、Alexaからのリクエストを処理するために必要なパッケージ群を自前で構成する必要があるので、ここではサンプルコードを利用している。ページ右下の[設定]ボタンをクリックすると、Lambda関数の設定を行う画面が表示される。
ここでは関数名と関数実行時の権限(ロール)を指定する。関数名は「HelloAlexaFunc」とし、ロールは[カスタムロールの作成]を指定した。[カスタムロールの作成]を選択すると、別ウィンドウが開くが、取りあえずここでは何も変更せずにそのまま[許可]ボタンをクリックすればよい。
その下には、設計図を基に作成されたコードがあるが(画像は割愛)、後でこれを修正することにしよう。ページの一番下にある[関数の作成]ボタンをクリックすると、関数作成が行われ、次の画面が表示される。
この画面では、[左側のリストからトリガーを追加します]というメッセージに注目しよう。左側のリストには[Alexa Skills Kit]があるので、これを選択する。
といっても、これは「このスキルからリクエストを受け取る」という意味にはなっていない。特定のスキルを指定するには、スキルが(もちろん)必要だ。そこで、次ページ以降ではスキルを作成しよう(なお、この時点では関数の保存ができないので、タブは開いたままにして放置しておくか、一度[スキルID検証]を[無効]にして保存して、後から設定し直すようにする)。
Copyright© Digital Advantage Corp. All Rights Reserved.