スキルの作成はじめにこんにちは。データサイエンスチームのmotchieです。Echoシリーズの日本語対応が発表されてから1ヶ月が経ちました。当チームではまだまだ「招待メールが来ない泣」「来る気配すらない」といった報告が飛び交っていますが、みなさんのお手元にはもう届きましたでしょうか。Kitを使って様々なスキルを簡単に作ることが出来ます。Kitでスキルを作る手順を見ていきましょう。実際に、アレクサと簡単なしりとりが楽しめるスキルを作ってみます。今回は1として、必要なアカウント作成、スキルの作成、対話モデルの設定まで行ってみます。Lambda関数の設定からスキルのテストまでの手順は、こちらの記事をご覧ください。Kitを使うことで、様々なスキルを簡単に作成できます。照明を操作するスマートホームスキルから、クイズゲームが楽しめるスキルまで、自由自在です。スキルの種類は、カスタムスキル、スマートホームスキル、フラッシュブリーフィングスキルの3つに分けられています。ゲームなど汎用スキルはカスタムスキルとして作成します。カスタムスキルでは、カスタム対話モデルを通じて、アレクサとの会話を細かく設定することが出来ます。この記事では、しりとりスキル作りを通じて、カスタムスキル作成の手順を見ていきます。DeveloperアカウントとAWSアカウントの作成が必要です。Developperアカウント作成Amazon開発者コンソールを開き、右上の「サインイン」をクリックします。Alexa日本語版リリースに伴い、Amazon.co.jpのアカウントで開発者アカウントに登録できるようになりました。Echoで使いたいAmazonアカウントでサインインし、開発者登録を行います。Developerアカウントを作成」を選択すると、Amazon.comのアカウントが作成され、開発者アカウントに登録されます。Amazon.co.jpのアカウントとAmazon.comのアカウントは別物なので注意してください。Echoで使うAmazonアカウントとAlexaスキルを開発しているAmazonアカウントが異なる場合、開発者コンソールでテストを有効にしてもスキルが認識されません。AWSアカウント作成AWSアカウント作成の流れのサイトの手順に従い作成します。Kitのページを開き、「スキル開発を始める」をクリックします。Developerアカウントを使ってログインします。スキル情報の設定スキル情報のタブでは以下の値を入力し、ページ下部の「保存」をクリックします。しりとりスキル保存完了すると「次へ」ボタンが現れるので、クリックして対話モデルのタブに移ります。Builderを起動する(ベータ)」をクリックします。アレクサがユーザーに足りない情報を尋ねる必要があるスキルなど、複数回にまたがる会話を設計するためには、スキルビルダーを使ってダイアログモデルを生成していきます。インテント・スロットの設定Intentを追加します。アレクサは、ユーザーの発話内容に対応するインテントを呼び出すことで、ユーザーが意図した処理を実行します。「スキルを止めて」といった内容の発話が入力されると、アレクサはAMAZON.StopIntentを呼び出し、それに紐付いた処理を行うことで、スキルを停止させます。ユーザーから単語を受け取って次の単語を返す、というしりとり処理のインテントを作成しましょう。左側のIntentのタブを開き、ADDをクリックします。Intent」ボタンをクリックしてカスタムインテントを作成します。{SiritoriWord}しりとり処理のインテントを呼び出す発話例を設定しましょう。SiritoriIntentは、ユーザーから与えられるこれらの発話に反応して起動します。Utterancesに上の発話例を一つずつ追加していきます。{}で囲まれた要素はスロットと呼ばれ、インテントによって呼ばれる後続の処理に渡したい値を指定します。「答えはリンゴ」とユーザーが言った場合、アレクサは「リンゴ」という情報が{SiritoriWord}というスロットの値だと認識して値を保持してくれるので、Lambda内で取得して使うことが出来ます。スロットと文字の間({SiritoriWord}の前後)には半角スペースが必要です。半角スペースがない場合、ビルド時にエラーになります。SlotsタブのREQにチェックを入れて、ペンマークをクリックしてダイアログモデルの設定を行います。ダイアログモデルの設定ダイアログモデルは、必要なスロットの値が足りない場合や、認識したスロットの値が正しいものか確認する用途等で使われます。出発地{fromCity}と到着地{toCity}のスロット値が必要なため、値が足りない場合には予約処理に行かずに再度スロット値を尋ねる、といった対話をダイアログモデルで設定することが出来ます。fillingがYESになっていることを確認します。Promptsに何も設定しないとビルドに失敗するため、「次の単語を入力してください」という発話例を追加します。スロットタイプの設定スロットにはスロットタイプを割り当てる必要があります。それにより、スロットが取り得る値をある程度コントロール出来ます。日付(AMAZON.DATE)や人の名前(AMAZON.FirstName)など、あらかじめ用意されたビルトインスロットタイプを使うことも出来ますが、用途に合うスロットタイプがない場合等は、独自にカスタムスロットタイプを作成して使うことになります。今回は、しりとりで使われる単語用のカスタムスロットタイプを作成します。Slotsが右側に表示されています。type」をクリックして設定を開き、スロットタイプ名(SiritoriWordType)を入力し、カスタムスロットタイプを作成します。Typesタブで作成したスロットタイプを選択します。type」に下のスロット値を追加していきます。valueリンゴリススイカカメメダカカラスゴリララッパパイナップルメロンここで追加した値は、アレクサが{SiritoriWord}のスロット値として認識できる主な単語リストになります。英語(US)ではAMAZON.LITERALというスロットタイプを使うことで自由な入力単語を受け取れますが、現状AMAZON.LITERALは英語(US)以外では使えないようです。Valuesにお好みで単語追加していくことで、アレクサが認識できる単語が増えていき、より多くの単語を使ってしりとりを楽しめるようになります。カスタムスロットタイプの設定については、次回以降の記事で詳しく扱う予定です。注意点としては、カスタムスロットタイプへの入力はリストの値に偏重されますが、リストの項目だけに限られるわけではありません。リストにない値でも認識されることがあります。そのため、リストに含まれない値を受け取った場合でも適切に処理できるコードが必要になります。Model」でビルドを行います。ビルドが成功すれば、上のメッセージが現れます。画面上部の「Configuration」をクリックするとスキルとLambdaの設定画面を開くことができます。Kitによるスキル作成のうち、アカウント作成、スキルの作成、対話モデルの設定までを行いました。Lambda関数の設定~スキルのテストについては、こちらの記事をご覧ください。Lambdamotchie2017年4月、NHNテコラスに新卒入社。データサイエンスチームに所属し、AWSを活用したデータ分析サービスの設計開発を担当。注力分野は自然言語処理、好きなAWSサービスはEMR、SageMaker。