C#によるAlexaスキル実装の基礎特集:はじめてのAlexaスキル開発(1/3 ページ)

AlexaのスキルをVSとC#を使って実装してみよう。これを助けてくれる拡張機能とNuGetパッケージもあるので、とてもカンタンだ。

» 2018年03月06日 05時00分 公開
[かわさきしんじInsider.NET編集部]
「特集:はじめてのAlexaスキル開発」のインデックス

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

 前回は、Alexaのスキルを開発するための基礎知識を取り上げた。今回はスキルから呼び出されて、実際に何らかの処理を行うAWS Lambda関数(以下、Lambda関数)のコードをVisual Studio 2017(以下、VS 2017)を使って実装してみよう。

 今回のポイントとなるのは次のような事項だ。

  • VS 2017でLambda関数のコードを記述するにはAWS Toolkit for Visual Studioが必要
  • Lambda関数内でAlexaスキルからのリクエストを処理するためにAlexa.NETというパッケージを(本稿では)使用する
  • Lambda関数のシグネチャに注意
  • Lambda関数の内部ではリクエストの種類、さらにインテントの名前によって処理を切り分けていく

 それでは上から順に見ていこう。

AWS Toolkit for Visual Studio

 VS 2017を使用して、Alexaのスキルから呼び出されるLambda関数を実装するには、AWS Toolkit for Visual Studio(以下、AWS Toolkit)が必要だ。また、本稿ではNuGetで配布されているAlexa.NETパッケージを使用する。

AWS Toolkitのセットアップ

 まずは、AWS Toolkitの設定から行おう。これはVS用の拡張機能として提供されている。

AWS Toolkitのインストール画面 AWS Toolkitのインストール画面

 インストールが完了すると、VS内に次のようなタブが表示される。

VSからAWSにアクセスするのに必要なクレデンシャルを設定する VSからAWSにアクセスするのに必要なクレデンシャルを設定する

 このタブでは、VSからAWSにアクセスするために必要な認証情報を入力する必要がある。必要になるのはアクセスキーとシークレットキーの2つ。これらを得るには、AWSのマネジメントコンソールにアクセスして、IAM管理画面からLambda関数をデプロイ/実行するユーザーアカウントの情報を表示して[認証情報]タブで[アクセスキーの作成]ボタンをクリックする*1

[認証情報]タブでアクセスキーを作成する [認証情報]タブでアクセスキーを作成する

*1 IAMとは「AWS Identity and Access Management」のことで、AWS上に作成した各種リソースへのアクセスを制御するためのサービス。AWSに登録したアカウントには全てのリソースへの無制限なアクセスが認められているが、通常はそのようなアカウントを使用せずに、プロジェクトやタスクに合わせた「IAMアカウント」と呼ばれるアカウントを作成して、それを日常の作業に使用することが推奨されている。今回はAWS Lambdaへのアクセスのみを許可されたユーザーを作成して、そのアカウントを利用している。


 作成したアクセスキーとシークレットキーを、VS内に表示されたタブの[Access Key]欄と[Secret Key]欄に入力する。

 以上で、AWS Toolkitのセットアップが完了だ。次に、新規にLambda関数プロジェクトを作成して、C#でコードを記述してみよう。ただしその前に、C#を使ってAlexaのスキルに対応したLambda関数のコードをより簡単に記述できるように、NuGetで提供されているパッケージもインストールしておこう。

Lambda関数プロジェクトの作成とAlexa.NETパッケージのインストール

 AWS Toolkitをインストールすると、VSの[新しいプロジェクト]ダイアログにLambda関数プロジェクトを作成するためのプロジェクトテンプレートが追加される。

[新しいプロジェクト]ダイアログに表示されたLambda関数プロジェクトテンプレート [新しいプロジェクト]ダイアログに表示されたLambda関数プロジェクトテンプレート

 ここでは[AWS Lambda Project (.NET Core)]を選択して、プロジェクトを新規に作成してみよう。テンプレートを選択して、必要事項を記入し(ここではプロジェクト名を「InsiderNetAlexaSkillFunc」とした)、[OK]ボタンをクリックすると、続いて次のような画面が表示される。

Lambda関数のテンプレートコードの選択画面 Lambda関数のテンプレートコードの選択画面

 この画面ではLambda関数のテンプレートコード(Blueprint)を選択できる。ただし、本稿執筆時点(2018年3月5日)では、Alexaのスキルに対応したものがないので、左上にある[Empty Function]を選択して、[Finish]ボタンをクリックする。

 VSでAlexaからのリクエストを処理するLambda関数をC#で実装するには、NuGetパッケージで提供されているパッケージを利用するとよい。そうしたパッケージは幾つか存在しているが、本稿ではその中でAlexa.NETパッケージを使用する。

Alexa.NETパッケージ Alexa.NETパッケージ

 このパッケージは、C#で書かれたLambda関数とAlexaとの間でやりとりされるリクエスト/レスポンスをラップしたものだ。GitHubで提供されているC#用のサンプルコード(「Build An Alexa Fact Skill in C#」など)のソースコードには「AlexaAPI」フォルダの下にC#のLamdba関数コードとAlexaがやりとりするためのインタフェースがソースコードの形で存在しているが、これと同等なものをNuGetパッケージ化したものと考えてもよいだろう(実際には、AlexaAPIフォルダをそのままパッケージ化したというものではないので、Alexa.NETパッケージをインストールしたプロジェクトで、前述のサンプルをそのままビルドできるというわけではない)。

 NuGetを利用して、このパッケージをインストールすれば、Lambda関数を実装する準備は完了だ。

       1|2|3 次のページへ

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

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

メールマガジン登録

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