スマートスピーカー対応アプリを開発する際の基本事項まとめ

2017.12.19

ハイスキルなエンジニアのプレミアム転職サービス Findyフリーランス・副業エンジニア向け 単価保証型の案件紹介サービス Findy Freelanceを運営する Findy の@hikaruya8です。

最近になってAmazon Echo や Google Home、 Clova WAVEなど日本でもスマートスピーカーが発売され話題になっていますね。ただ僕もAmazon EchoとGoogle Home Miniを持ってますが、まだまだ答えてくれることは少ないです。

となれば、「便利なアプリを作りたい!拡張したい!」と思うのがエンジニア心ですよね。幸いスマートスピーカーの日本発売に合わせて対応アプリの開発環境も日本語でのアプリ開発に対応するようになりました。エンジニアの方々はスマートスピーカーに対応したアプリを開発しようかと考えている方や、すでに開発を始めている方も多いのではないでしょうか。

そこで代表的なスマートスピーカーの個人での開発についてまとめてみました。

Amazon Echo – Alexa

まずAmazon Echo用のアプリは「スキル」と呼びます。
そのスキルにおいてサードパーティや個人の開発者による独自拡張ができるのですが、その拡張には大きく分けて2つの仕組みがあります。

  1. Alexaスキル
    Alexaで使える独自機能の追加
  2. Alexa Voice Service (以下AVS)
    独自デバイスによるAlexa連携

おそらくですが、独自デバイスを個人で作成するのは困難だと思うので、ここからは1のAlexaスキルを中心に話を進めていきますね。
Alexaスキルには主に3つの機能があります。

  1. カスタムスキル
    一般的なスキル
  2. スマートホームスキル
    家電製品などを制御するためのスキル
  3. フラッシュブリーフィングスキル
    ニュースなどを読み上げるスキル

ではここからはAlexaスキルの中でも1のカスタムスキルに関して書いていきます。
前述通り、カスタムスキルはAlexaの中でも一般的なスキルを表します。
一般的なスキルとは発声内容に応じた返答を返す汎用のスキルを指し、例えば「今日の天気は?」という質問に対して「今日の〇〇区の天気は晴れ、気温は◯度です」と答えてくれるもの等ですね。

コード実行環境

AWS Lambda

開発言語

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での開発の記事を書いてくれている方もいます。

参考:
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は

の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 Freelance

中途転職を希望の方:
ハイスキルなエンジニアのプレミアム転職サービス Findy

Findyでは副業・社会人インターン採用も積極的に行なっています。興味を持っていただいた方はぜひこちらからご応募どうぞ!

Findy Engineer Labを購読してみませんか?
エンジニアの働き方やFindyの技術的な話などをお送りします!
フリーランス・副業エンジニア向け
単価保証型案件紹介サービス

エンジニアにとって魅力的な案件をあなたの希望単価でご紹介サポートします。

担当より:
7月後半から一気に面白い案件が増えてきました!
CTO の佐藤も「これはやってみたい!」と気になるくらい魅力的な案件が数多くなってきましたので、気になる方はお早めにどうぞ!

https://freelance.findy-code.io/
  • Category

  • About

  • Service

    フリーランス・副業向け
    単価保証型案件紹介サービス

    ハイスキルなフリーランス・副業エンジニア向けに案件紹介

    https://freelance.findy-code.io/
    ハイスキルなエンジニアの
    プレミアム転職サービス

    スキル偏差値が高いエンジニアに、人気のテック企業からオファーが届く

    https://findy-code.io/
    リアルタイムAI求人票採点サービス

    AIを使ってリアルタイムに求人票を採点

    https://findy.us/