2018年秋に私たちは、様々なタイプのデバイスで多くの機能を声で操作するために、組み合わせて使えるトグル、モード、レンジのビルディングブロックAPIを米国でリリースしました。それ以降デバイスメーカーのみなさまは、より多くの機能をAlexaで簡単にコントロールすることのできる新しいデバイスを作成するために、これらのビルディングブロックAPIを活用されています。ダイソンの空気清浄機能付きファンPure Hot + Cool HP02などが製品例としてあげられます。
本日、これらのビルディングブロックAPIが日本語に対応したことと、関連機能として今年9月25日に発表された操作非対応(読み取り専用)のデバイスステートのサポート、およびセマンティック拡張が併せて日本で利用可能になりましたことを、お伝えいたします。本日から開発者のみなさまは、日本向けスキルでトグル、モード、レンジの値を扱うためのビルディングブロックAPIが利用可能になります。加えて、ユーザーからの状態クエリには対応するが、操作には対応しないようなデバイスステートを定義するためのAPIが利用できます。また、日本語で、ユーザーが「開けて」「閉じて」「上げて」「下げて」と言うコマンドを使って、トグル、モード、レンジ設定をコントロールするためのセマンティック拡張が利用可能になります。これらのアップデートにより、デバイス開発者のみなさまは、スマートデバイスに興味のあるより広いAlexaユーザーに訴求可能となります。すでにデバイスをお持ちのお客様に対しては、製品により満足いただくチャンスを得られます。
日本語でトグル、モード、レンジのビルディングブロックAPIが利用可能に
日本語でもビルディングブロックAPIが利用可能になりました。ユーザーは「アレクサ、風量を最大にして」、「アレクサ、洗濯機をデリケートモードにして」などと話しかけられるようになります。新しい言語や国へ対応する際、開発者がデバイス設定の用語を各言語向けにローカライズしなくても良いよう、私たちはグローバルなAlexaカタログに含まれるアセット名をローカライズしました。開発者のみなさまが、単にfriendlyNameをAlexa.Setting.FanSpeedと宣言するだけで、ユーザーは日本語でこの設定を「風量」と呼ぶ事ができます。ビルディンブロックAPIを利用しているダイソンは、空気洗浄機付きファンヒーター Dyson Pure Hot + Cool が日本語でも使用できるように対応する予定です。
操作非対応デバイスステートを使用することで、ユーザーに状態クエリのみが可能なステートを定義できます
ビルディングブロックAPIでnonControllableプロパティーを使うことにより、ユーザーにとっては問い合わせ可能でも、操作はできないデバイスステートを定義することが可能になりました。例えば、ユーザーからの「アレクサ、台所レンジの表面温度は何?」「アレクサ、洗濯機のサイクルは何?」「アレクサ、芳香剤の香りは何?」のような問い合わせに対応することができます。例えばAlexa対応コーヒーメーカーを作るとします。この製品では、モードと操作非対応ステートを活用することで、コーヒーができてからの大まかな経過時間をユーザーに知らせることができます。下記に引用したコードは、あるデバイスに清掃が必要な状態かどうかを表すステートを、簡単に付け足せることを示しています。このコード例ではコーヒーマシンはCleaningStateという名前の操作非対応モードの状態を報告することができるという定義を示しています。ユーザーは「アレクサ、コーヒーマシンの清掃状態は何?」と問い合わせることができ、Alexaからは「コーヒーマシンの清掃状態はクリーニングが必要です」という応答を受けることができます。もしユーザーが清掃状態を操作しようとした場合、Alexaはその操作はサポートされていないことをお知らせします。開発者側ではこの不必要な操作ディレクティブをハンドルする必要はありません。
{
"interface": "Alexa.ModeController",
"instance": "CoffeeMachine.CleaningState",
"capabilityResources": {
"friendlyNames": [
{
"value": {
"locale": "ja-JP",
"text": "清掃状態"
},
"@type": "text"
}
]
},
"properties": {
"supported": [
{
"name": "Clean to Use"
…
}
], …
"nonControllable": true
}
}
開けて、閉じて、上げて、下げてのセマンティック拡張でより自然な操作が可能に
私たちはこれまで、開発者が様々なデバイス機能を簡単にモデリングするためのビルディングブロックとしてトグル、レンジ、モードをリリースしました。そして今回、開発者がこれらのビルディングブロックAPIを、デバイスの持つ機能によりフィットした音声モデルで使えるようにするため、セマンティック拡張を追加します。今回利用可能になったセマンティック拡張では、「開けて」「閉めて」「上げて」「下げて」という発話を使った「アレクサ、窓を開けて」「アレクサ、プロジェクタースクリーンを下げて」などのコマンドをサポートできるようになります。
これらの新しいセマンティック拡張は、プロジェクタースクリーンや窓、シャワーシステム、引き出し、ガレージドア、門、カーテン、シェード、ブラインド、日よけなどのデバイスを、自然にコントロールするために使用できます。
ラトックシステム は「スマート家電コントローラ用スマートホーム」スキルで赤外線リモコンからの電動カーテン・電動ブラインドの操作を実現するためにセマンティック拡張を採用しました。これにより「アレクサ、カーテンを開けて」「アレクサ、ブラインドを閉めて」などのフレーズをサポートできるようになりました。
下のサンプルでは、スマートホームスキルAPIを使って、特定のモード設定とセマンティック拡張をどのように結びつけるかの方法を示しています。ユーザーが「アレクサ、ゴミ箱のふたを開けて」と発話することで、手を使わないゴミ捨てを実現させる例です。ゴミ箱のふたは開ける、もしくは閉める操作なので、ここではAlexa.ModeControllerインターフェイスを指定して、モードケイパビリティを使用しています。加えて、セマンティックマッピングをSetModeディレクティブに加えて、Alexa.Actions.OpenとOPENペイロード、Alexa.Actions.CloseをCLOSEペイロードにそれぞれ結びつけます。
{
"interface": "Alexa.ModeController",
"configuration": {
"semantics": {
"actionMappings": [
{
"@type": "ActionsToDirective",
"actions": [
"Alexa.Actions.Open"
],
"directive": {
"name": "SetMode",
"payload": {
"mode": "OPEN"
}
}
},
{
"@type": "ActionsToDirective",
"actions": [
"Alexa.Actions.Close"
],
"directive": {
"name": "SetMode",
"payload": {
"mode": "CLOSE"
}
}
}
]
}
}
}
上記の例ではモードインターフェイスのみを使用してますが、他にも数値やバイナリ値など他の型を使用することもできます。例えば、プロジェクタースクリーンのためにAlexa.Actions.OpenをsetRangeValue=100にマップする事も可能で、「アレクサ、プロジェクタースクリーンを開けて」という発話をサポートできます。またAlexa.Actions.RaiseをAdjustRangeValueにマップすることにより、「アレクサ、スクリーンを上げて」というフレーズをサポートできます。
さらに詳細を知るには
これらのアップデートにより、デバイス開発者のみなさまは、スマートデバイスを求めているより広いAlexaカスタマーに訴求可能となり、既存のお客様にもよりご満足いただけるようになります。ビルディンブロックAPIと操作非対応ステートに対する音声クエリのサポート、およびセマンティック拡張は、すぐに開始頂けます。詳細はモード(技術文書)、レンジ(技術文書)、トグル(技術文書)のビルディングブロックAPIに関するドキュメントをご参照ください。