Ruby on RailsでAlexaスキルを作る!ハンズオンに参加してきました

rabyonrailsでalexaスキル

5月29日(火)、Fukuoka Growth NextでGMOペパボが開催した「RailsでAlexaスキル開発ハンズオン」に参加してきました。

登壇者の鳴海様(@sunecosuri)にGMOさんのLOLIPOP!マネージドクラウドサービス(https://mc.lolipop.jp/)を通してRuby on RailsでAlexaスキル開発の流れを親切に教えていただきました。

当セミナーでは、Raildsを使った簡単なスキル開発を学ぶために、参加者全員でシンプルな「天気を教えてくれるスキル」を作りました。

初めてRuby on Railsを使用してのAlexaスキルだったため分からないことが多かったですが、今回は教わったことをみなさんに共有したいと思います!

Ruby on Railsで天気予報スキルを作る

Ruby on Railsを使ってAlexaスキルを作成するには下記の図のルートを辿ります。

rabyonrailsでalexaスキル

少し手順が複雑になりますが、このようにそれぞれを連携させて作成していきます。

今回使用したPCはMacだったのでまずは、MacターミナルでRailsそして必要なgemファイルをインストールしました。Gemやコードに関しては鳴海様がGithubでホストしているものを使わせて頂きました。

rabyonrailsでalexaスキル

コードが非公開のためモザイクをかけさせてもらってます。すみません…

5/31追記
鳴海様のご厚意で公開してOKとのことでした!詳しいコードに関しては「Ruby on RailsでAlexa スキルを開発するハンズオンを実施しました」こちらに公開しています。ありがとうございます!

それを「.rbファイル」で保存してGithubへホスティングしておきます。

rabyonrailsでalexaスキル

次は、LOLIPOP!(サーバー)へログインし、プロジェクトURL(そしてEndpoint)を作ります。

rabyonrailsでalexaスキル

続いては、Alexaデベロッパーコンソールにログインし、LOLIPOP!(サーバー)とAmazon Alexaを繋げる手順に入ります。

新規に作ったスキルのインテント項目で、サンプル発話に「{city}の天気は」や「{city}の天気を教えて」などを追加し、インテントスロットにもAMAZON.Cityを選びます。

rabyonrailsでalexaスキル

インテントとインテントスロットができたので、先程のLOLIPOP!側のEndpointのURLをスキルに入れます。

rabyonrailsでalexaスキル

以上の流れで、Ruby on Railsで作成したコードをGithubにホスティングし、LOLIPOP!(サーバー)を介して.rbファイルにアクセスし、{city}{value}のファイルをサーバーに送り、サーバーからAmazon Alexaに応答をしてユーザーに天気を教えるという流れができました。

上記はデフォルトの形にはなりますが、その他にもweatherReportを使って天気を答えたり、インテントを利用して引数を受け取るなどと言った動作もRailsのコード次第では可能に。

やってみた感想ですが、Railsの特徴でもあるシンプルなコードが開発する上では非常に楽ですね。また応用も聞きやすいためサービスを構築する上では活躍しそう。今後のAlexaスキルで言えばゲームや勤怠管理などのサービスなどでRailsを使ったスキルが出てきそうですね。

ただGithubのRubyファイルを使って第三者クラウドサービスを通してからスキルに繋ぐという手間だけが難点かなと感じました(多分自分があまり詳しくないだけ)。

気になった方はぜひRailsを使ったスキル開発を試してみてください!