ハイスキルなエンジニアのプレミアム転職サービス Findyとフリーランス・副業エンジニア向け 単価保証型の案件紹介サービス Findy Freelanceを運営する Findy の@hikaruya8です。
最近になってAmazon Echo や Google Home、 Clova WAVEなど日本でもスマートスピーカーが発売され話題になっていますね。ただ僕もAmazon EchoとGoogle Home Miniを持ってますが、まだまだ答えてくれることは少ないです。
となれば、「便利なアプリを作りたい!拡張したい!」と思うのがエンジニア心ですよね。幸いスマートスピーカーの日本発売に合わせて対応アプリの開発環境も日本語でのアプリ開発に対応するようになりました。エンジニアの方々はスマートスピーカーに対応したアプリを開発しようかと考えている方や、すでに開発を始めている方も多いのではないでしょうか。
そこで代表的なスマートスピーカーの個人での開発についてまとめてみました。
目次
Amazon Echo – Alexa
まずAmazon Echo用のアプリは「スキル」と呼びます。
そのスキルにおいてサードパーティや個人の開発者による独自拡張ができるのですが、その拡張には大きく分けて2つの仕組みがあります。
- Alexaスキル
Alexaで使える独自機能の追加 - Alexa Voice Service (以下AVS)
独自デバイスによるAlexa連携
おそらくですが、独自デバイスを個人で作成するのは困難だと思うので、ここからは1のAlexaスキルを中心に話を進めていきますね。
Alexaスキルには主に3つの機能があります。
- カスタムスキル
一般的なスキル - スマートホームスキル
家電製品などを制御するためのスキル - フラッシュブリーフィングスキル
ニュースなどを読み上げるスキル
ではここからはAlexaスキルの中でも1のカスタムスキルに関して書いていきます。
前述通り、カスタムスキルはAlexaの中でも一般的なスキルを表します。
一般的なスキルとは発声内容に応じた返答を返す汎用のスキルを指し、例えば「今日の天気は?」という質問に対して「今日の〇〇区の天気は晴れ、気温は◯度です」と答えてくれるもの等ですね。
コード実行環境
開発言語
Node.js、Java、C# 、 Python
(12/2017時点でAWS Lambdaがサポートしている言語です。)
Alexaではスキル開発をより簡単に、早くできるようにするためのAlexa Skills Kit(ASK)が用意されています。
これにはセルフサービスAPI、ツール、ドキュメント、コードサンプルが含まれています。
スキル実行の仕組みは下の図のようなものです。
参考:Alexaスキル開発トレーニングシリーズ 第1回 初めてのスキル開発
Google Home-Googleアシスタント
サードパーティディベロッパーはActions on Google というプラットフォーム上でGoogleアシスタントに対応したアプリの開発が可能です。
GoogleアシスタントではJSON形式でリクエスト・レスポンスを行うのですが、一からJSONデータの解析、抽出したユーザーの入力情報を形態素解析、またそれに応じた条件分岐を書くのは非常に大変です。
乱暴に書くとこんな感じです。
(こちらの図が詳しいです。)
なのでGoogleから以下のようなツールを用いた方法が用意されています。
簡単な実装方法
1. テンプレートを使用する。
テンプレートを選択し、アプリを作成する方法。簡単に作成できます。
2. Dialogflow (旧 api.ai) を利用する。
Dialogflowを使用するとサーバーを用意する必要がなく、開発者はGUI上で応対のパターンを登録していくことで簡単な会話形のアプリを作ることができます。
Dialogflow 上だけでは処理できない情報も、その後ろにフォールバックサーバーを設けることで対応ができます。
3. Actions SDK を利用する。
Actions SDKはGoogleアシスタントとの直接的な連携や、Dialogflow のフォールバックを作成する際に必要な HTTP での JSON のやり取りを用意にするためのクライアントライブラリです。
Dialogflowを利用する場合でもDialogflow のフォールバック先に Actions SDK を利用することで実装が容易になります。現在Node.js版が提供されています。
お試しとしてはDialogflowを、本格的に開発したい場合はActions SDKを利用しましょう。
Web記事にてActions on Googleでの開発の記事を書いてくれている方もいます。
- Dialogflow(api.ai)
人工知能を無料でコードを書かずに作成できるapi.ai使ってみました【第1回】
つらい時に松岡修造が応援してくれる人工知能をapi.aiで作成してみました【第2回】 - Actions SDK
Actions on Google、Actions SDKのサンプルアプリを実行してみた
参考:
Google アシスタント対応アプリを日本語で開発してみよう
Actions on Google
Clova (LINE)
提携先以外のClovaはサードパーティによる開発に関しては今のところ提供していないようです。
ただしLINE beaconはRaspberry Pi で自作できるようです。
(引用: LINE DEVELOPER DAY 2017参加レポート(WAVEとBeacon)@Developers in KOBE #15)
またClovaはClova Interface Connect (CIC)とClova Extension Kit (CEK)で構成されています。
- CIC・・・クライアントからの音声データをClovaに送信したり、スキルの結果をクライアントに渡したりする
- CEK・・・Clova用のAPI
ClovaのSDK・API提供の開始はまだされてないようですね。
Home Pod (Apple)
Appleのスマートスピーカーです。今のところ発売はされておらず、2018年初頭の予定だそうです。
ただしSiriKit(サードパーティのiOSアプリをSiriに対応させることができる機能)をはすでにあります。SiriKitを使用し拡張機能を組み込むことで、サードパーティのアプリが起動していない場合でも声によってSiriを起動させることができます。
SiriKitがサポートしているカテゴリ(このカテゴリをSiriKitではドメインと呼ぶ)はMessaging、Payments、VoIPcallingなどがあります。
またこれらのドメインはそれぞれIntentというSiri
例えばMessagingドメインは
– メッセージ送信
– メッセージ検索
– メッセージ設定
のIntentを持っています。
SiriKit自体はフレームワークではないのですが、
SiriKitは
- Intents Framework Reference パラメータクラスや、Siriから呼び出されるプロトコルの実装
- Intents UI Framework Reference Siriの会話インタフェース上で表示されるView関連クラスの実装
の2つのフレームワークを持っています。
開発環境
Xcodeで行いましょう。言語はiOS同じようにSwiftです。
僕はSwiftで開発したことないのでおそらくになってしまいますが、iOSアプリを開発したことがある人にとっては開発しやすいのではないでしょうか。
参考:
– SiriKitとはなんぞや
– Siri + アプリケーション
スマートスピーカー(SONY)
SONYのスマートスピーカーはGoogleアシスタント搭載AIスピーカーです。12/9発売のためか、あまり情報が出てこないのですが、基本的にはGoogle Homeに近いと考えて良さそうです。(←間違っている場合はご指摘お願い致します。)
最後に
いかがでしたでしょうか。
今のところスマートスピーカーのアプリを個人で開発できるのはAmazon Echo、Google Homeの2つのようです。
個人的にはAmazon Echoのスキルのほうが開発しやすそうでしたかね。
今作っているアプリが一段落したら僕も挑戦してみようかと思っています。
みなさんが開発する際の一助になれば幸いです。
ちなみにFindyのオフィスにもスマートスピーカーが置いてあります。
実は僕はリモートワークのためFindyのオフィスに行ったことがないんですが・・・w
読んで頂きありがとうございました! 宜しければ、エンジニアの皆様はFindyでご自身のスキル偏差値を測定してみてください。
[正社員の方]
ハイスキルなエンジニアのプレミアム転職サービス Findy
[フリーランスの方]
フリーランス・副業エンジニア向けの単価保証型の案件紹介サービス Findy Freelance
また、Findyでは年齢や勤務形態を問わず、様々な働き方で採用をしています。興味のある方は、こちらからご応募どうぞ!