特集
» 2018年03月02日 05時00分 公開

特集:はじめてのAlexaスキル開発:Alexaのスキルとは? その開発に必要な基本概念 (1/3)

Amazon Echoなどで利用可能なスキルを使うと開発者は独自の機能を追加できる。スキル開発に必要な基礎知識を見ていこう。

[かわさきしんじ,Insider.NET編集部]
「特集:はじめてのAlexaスキル開発」のインデックス

「特集:はじめてのAlexaスキル開発」

Amazon Echoとスキル

 Amazon EchoやGoogle Homeなどのスマートスピーカーの最大の魅力は、その場その場で知りたい情報を音声を利用して知ることができる点だ。Amazon Echoであれば「Alexa、ニュースは?」と問い掛けることで、ニュース機能を提供しているさまざまな会社からの最新ニュースが音声で届けられる。朝の忙しい時間に、PCのキーボードをたたいたり、スマートフォンやタブレットの画面をタップしたりすることなく、音声を使うことで「○○しながら情報収集」できるのは便利だ。

 このときに、Amazon Echoとユーザーとの間を取り持つエンジンとなるが「Alexa」(アレクサ)だ。Amazon Echoには標準で「Alexaが搭載されて」いるが、マイクとスピーカーを持ち、インターネットに接続可能なデバイスであれば、それに「Alexaを搭載する」ことも可能だ。

 スマートスピーカーが提供するさまざまな機能のことを、Amazon Echoでは「スキル」と呼んでいる。どんなスキルがあるかは、Amazonの「Alexaスキルガイド」ページから参照できる(ただし、これは2017年11月時点のもので情報としては古い。「Alexa スキル 一覧」などで検索をすれば、もっと新しいスキルリストを表示してくれるサイトも見つかるはずだ)。

Amazonの「Alexaスキルガイド」ページ Amazonの「Alexaスキルガイド」ページ

 開発者がスキルを作成して、公開することも可能だ。ドキュメントによれば、開発言語には「C#」も利用できる。本特集を通して「C#でAlexaスキルを開発」していこう。今回は、そのための基礎知識を取り上げ、Amazonの開発者コンソールを利用して、取りあえず(JavaScriptベースの)簡単なスキルを作ってみよう。

 ここでポイントとなるのは以下の事項だ。

  • Alexaではさまざまな種類のスキルを作成できる
  • Alexaのスキルは、Lambda関数(や他のサービス)と組み合わせて使われる
  • スキルはユーザー入力を解析して、ユーザーがしたいこと(インテント)や呼び出し名などの情報を得る
  • その後、呼び出し名に該当するLambda関数へインテント(と必要な情報)を渡す
  • Lambda関数は受け取ったインテントを基に何らかの処理を行い、結果をAlexaに戻す
  • Alexaはユーザーにその結果を音声またはテキストで返送する
  • AlexaのスキルのARN(Amazon Resource Name)とLambda関数のARNをIDとして、両者の対応付けを行う

 まずはスキルを使って何ができるのか、スキルを開発するのにどんなものが必要になるかを見てみよう。

Alexaのスキルでできること

 Alexaのスキルはおおよそ次の3種類に分けられる。

  • カスタムスキル
  • スマートホームスキル
  • フラッシュブリーフィングスキル

 カスタムスキルとは「ユーザーがしたいこと」(インテント)を、ユーザーとAlexaの対話から割り出して、それに基づいた処理を行うタイプのスキル。ユーザーは「Alexa、○○で××して」という形式で「Alexaに何をしてほしいか」を伝える。このとき、「○○」の部分を「呼び出し名」「wake word」などと呼ぶ。「××」の部分が「インテント」となる。一般的なアプリはこのカテゴリーに分類されることになるだろう。

 ユーザーがAlexaに問い合わせた内容は解析され、「呼び出し名」「インテント」などの情報が抽出され、最終的に開発者が作成したスキルへ送信される。スキルがそれに応じた処理を行い、その結果をAlexaに返送すると、それが音声(またはテキスト)の形でユーザーへと届けられる。

 スマートホームスキルは「スマートホーム端末(照明、テレビなど)を制御する」ためのスキル。ユーザーが「Alexa、照明を消して」などと問い掛けると、その指示に従った処理を行う。詳細については「スマートホームスキルAPIについて」を参照のこと。

 フラッシュブリーフィングスキルは、ユーザーが「Alexa、ニュースを聞かせて」などと問い掛けたときに、(ユーザーが有効化しているフラッシュブリーフィングスキルから)ニュースを音声などで返答してくれるもの。自分たちが発信しているニュースや記事などへユーザーが手軽にアクセスできるようにするものだ。

 これらのスキルを開発するには、Alexa Skills Kit(ASK)を使用する。そこで次にスキル開発に必要となる事項について見ていこう。

スキル開発に必要なもの

 Alexaのスキルを開発するために次の2つのアカウントを取得しておく必要がある。

  • Amazon開発者アカウント:Alexaスキルを開発するのに必要
  • AWSアカウント:AWS Lambda(以下、Lambda)を開発するのに必要

 また、今回は使用しないが、Visual Studio 2017からLambdaのコードをC#で記述するのであれば(これが最終的なゴール)、AWS Toolkit for Visual Studio 2017も必要だ。

 ちなみにスキルを開発してみるだけであれば、Amazon Echo本体は必要ない。スキルの開発コンソールあるいはテストシミュレーターを利用して、動作を確認できるようになっている(実機を用いてβテストをするには、そのカテゴリーや公開する国と地域など、スキルの公開に必要な情報を入力しなければならないので、ちょっと作って試してみようという場合にはなかなかハードルが高い)。

 Amazon開発者アカウントの登録については「Alexa 開発者アカウント作成時のハマりどころ」などページを参照されたい(Amazon開発者アカウントを新規に作成するのではなく、自分が普段使用しているAmazon.co.jpのアカウントでサインインするのがキモのようだ)。また、AWSアカウントの作成については「AWS アカウント作成の流れ」ページを参照されたい。

Hello Alexaアプリを作ってみる

 Alexaのスキルはおおまかにいって次の2つで構成される。

  • 実際に何らかの処理を実行するロジック
  • そのロジックを呼び出すスキル

 ロジックの部分については、AlexaではLambdaを使用するのが一般的だ。そして、Alexaのスキルと、Lambdaをつなぎ合わせることで、ユーザーの入力に応じた何らかの処理を行うことになる。そこでまずはロジックの部分のひな型を作成しておこう。

Lambda関数の作成

 Lambda関数を作成するには、AWS マネジメントコンソールにAWSアカウントを利用してログインする。その後、コンソール画面で「lambda」を検索して、Lambdaに関するページを表示する。

Lambdaページ Lambdaページ

 ここで[関数を作成]ボタンをクリックする。すると、関数の作成画面が表示される。

設計図を基に関数を作成する 設計図を基に関数を作成する

 ここでは中央の[設計図]を選択して、[設計図]検索ボックスに「Alexa」などと入力している。これにより、Alexa用のサンプルコードが幾つか表示されるので、適当に何かを選択しよう。ここでは左上にある「alexa-skill-kit-sdk-factskill」を選択した。[一から作成]を選択した場合、Alexaからのリクエストを処理するために必要なパッケージ群を自前で構成する必要があるので、ここではサンプルコードを利用している。ページ右下の[設定]ボタンをクリックすると、Lambda関数の設定を行う画面が表示される。

関数名と実行時のロールの設定 関数名と実行時のロールの設定

 ここでは関数名と関数実行時の権限(ロール)を指定する。関数名は「HelloAlexaFunc」とし、ロールは[カスタムロールの作成]を指定した。[カスタムロールの作成]を選択すると、別ウィンドウが開くが、取りあえずここでは何も変更せずにそのまま[許可]ボタンをクリックすればよい。

 その下には、設計図を基に作成されたコードがあるが(画像は割愛)、後でこれを修正することにしよう。ページの一番下にある[関数の作成]ボタンをクリックすると、関数作成が行われ、次の画面が表示される。

関数作成が終わったところ 関数作成が終わったところ

 この画面では、[左側のリストからトリガーを追加します]というメッセージに注目しよう。左側のリストには[Alexa Skills Kit]があるので、これを選択する。

ASKと作成した関数の関連付け ASKと作成した関数の関連付け

 といっても、これは「このスキルからリクエストを受け取る」という意味にはなっていない。特定のスキルを指定するには、スキルが(もちろん)必要だ。そこで、次ページ以降ではスキルを作成しよう(なお、この時点では関数の保存ができないので、タブは開いたままにして放置しておくか、一度[スキルID検証]を[無効]にして保存して、後から設定し直すようにする)。

       1|2|3 次のページへ

Copyright© 1999-2018 Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。