フリープロジェクト 第二弾

フリープロジェクト 第二弾

2019年2月22日, コラム 開発部

〜『第二弾』Raspberry PIでAmazon Alexaのスキルを作ってみた 〜

 

1.はじめに

 前回に引き続き、開発メンバーで何かを作るフリープロジェクト企画の第2弾です。

 テーマは前回の応用という感じで、「自分たちでAlexaのスキルを作ってみよう!」と、少しふわふわした状態ではあるものの、開発が始まりました。

 

2.必要なもの

 Alexaスキルの細かい内容はあとで決めることとして、まず構成と必要な道具を決めようということで以下のものを用意しました。

  • Raspberry Pi(Raspbian OSインストール済みのもの)
  • スピーカー
  • マイク
  • Amazon Developerのアカウント
  • スキル用のサーバ

 機材の大半は前回のプロジェクトに利用したものを流用できたのですが、今回新たに考えなければならなかったのはスキルをホストするサーバでした。最も一般的なのがawsを利用する方法ですが、今回はHerokuというサービスを利用しました。

 

3.Raspberry PIのセットアップ

 まず着手したのが入力デバイス(マイク)であるRaspberry Piのセットアップです。OSを新規でインストールし直し、前回同様のamazon voice serviceを利用するためのSDKを導入しなければなりません。前回同様の手順を踏めばすぐ済むと考えていましたが、そうはいきませんでした。利用していたSDKのバージョンが上がり、認証情報の設定方法も変わっていたためです。具体的には、configファイルが.txtから.jsonに変わったこと、そのconfigファイルはSDKの標準では用意されていないことなどが上手くいかなかった理由です。configファイルはAmazon Developer Consoleからダウンロードできるので、それをそのまま利用します。(前回は設定を標準の.txtファイルに転記する必要がありました。)

上記試行錯誤を経てRaspberry PiでAmazon Alexaを利用できるに至りました。

 

4.Herokuアカウントの作成

 alexaがスキルを利用するためにエンドポイントのアドレスを設定しなければなりません。発話を受けたalexaが発話に応じたリクエストをする宛先ですね。そのためにまずスキルをデプロイするサーバを用意しなければなりません。今回はwebクラウドサービスであるHerokuを利用しようということで、まずアカウントを作ります。そして便利そうだったので開発者の各端末にHerokuのCLIを導入することにしました。インストーラ、コマンドラインと両方あるようですね。(なお、あまり複雑な構成でもないので活躍はしませんでしたが)

 

5. スキルの作成

 次にスキルの実体であるアプリケーションを作成します。

 Githubにプロジェクトを作成し開発を行います。この時留意すべきはアプリケーションはHerokuのリモートリポジトリにpushしなければならないことです。気づくのが遅れGithub、Herokuでコンフリクトを起こしてしまいました。ですので、GitHubのリポジトリにプッシュしたらHerokuで自動的にデプロイするよう連携の設定をしました。

 スキル開発で必要なのがIntentと呼ばれる実行単位です。Alexaのコンソールでスキルに対するリクエストの発話パターンを定義し、スキルにそれに対応するレスポンスを用意する。といった具合にです。コンテンツが決まらないと作りようがないということで、ユーザが百人一首の上の句を読んだらスキルが下の句を返すアプリにきまったのもこの頃です。

 また通常、スキルを公開する際には必ず定義しなければならないIntentが存在します。スキルのlaunch、cancel、helpなどがそれにあたります。(今回は公開しないので定義はしませんでした)

 

6.スキルの登録

  「スキルの作成」で作ったアプリをHerokuに登録した時点でアドレスが発行されるので、このアドレスをAmazon Developer Consoleにスキルのエンドポイントとして設定します。

 これで、Alexaとスキルの連携ができました。

 

7.実行

 準備が整ったので、スキルを実行します。

 計画通り、上の句を読んだら、下の句を返しました。

 ですが、問題もいくつかあります。人によって反応をしたりしなかったり、上の句に対して異なる下の句を返す場合もありました。とはいえ、まずは目標を達成できたのでよしとします。

 

 ここまで読んでくださりありがとうございました。

 

By開発部

エンケラドス・テクノロジーズ開発部です。 開発に関する情報をお届けします。