最近Amazon Alexa界隈で起きたこと(7/31〜8/31)

前回の記事から1ヶ月経って、Amazon Alexa界隈で何が起きたでしょうか。

目次


現時点のSkill数(US)

f:id:sparkgene:20170901221250p:plain

今月も約3000個のSkillが追加され、Skillの総数が2万件越えてきました。 昨年の10月からのSkillの増え方をグラフにするとこんな感じです。 去年の10月から5倍と、順調に増えていってますね!

f:id:sparkgene:20170902123809p:plain


AVSでDisplay Cardsを使ってマルチモーダルな体験の作り方

How to Build Multi-Modal Voice Experiences Using Display Cards for AVS : Alexa Blogs

この記事では、AVSを利用したデバイスでどうやってEcho Showで利用されているdisplay templateを使うかを簡単に解説しています。 AVSのサンプルソースでは、すでに受信したdisplay cardsの情報をjsonで吐いてくれるサンプルが含まれているそうなので、Echo Showの様な画面付きのデバイスを開発する際の参考になりそうです。


List Templateの正しい使い方

Designing Skills for Echo Show: Choosing the Right List Template : Alexa Blogs

前回は、Body Templateの使い所を説明していましたが、今回はListの使い方について解説しています。

List Template 1は垂直方向にアイテムを表示してくれるリストです。

  • 発話例の一覧
  • 銀行の取引履歴
  • 食材の一覧
  • 目次
  • タイムテーブル といった情報を表示するに適したレイアウトとなっています。

表示できるテキストは3ヶ所となっているので、食材名、分量、カロリーみたいなレイアウトで表示することが可能です。

List Template 2は水平方向にアイテムを表示してくれるリストです。 このリストでは画像が必須となるので、本、映画、ビデオといった、目で見て理解しやすい物を表示するのに適しています。 画像は正方形、縦長、横長といった種類の画像にも対応しています。

Qiitaの方にサンプルソースを解説しているので、実際にskillを作ってデベロッパーコンソールで表示を確認することができます。

qiita.com


良いスキルを作るデベロッパーはお金が稼げます

Developers Earn Money for Eligible Skills Customers Love : Alexa Blogs

前に、ゲーム、トリビアのカテゴリで評価の高いSkillを開発したデベロッパーには、Amazonからお金をもらえるというプログラムを開始しましたが、 今回のアナウンスで、対象となるカテゴリが増えました。

  • Education & Reference
  • Food & Drink
  • Health & Fitness
  • Lifestyle
  • Music & Audio
  • Productivity

噂によれば、DAU 10万ぐらいのSkillだと、$5,000位もらえるとか。


商用デバイスメーカー向けのAVS SDKの紹介

Introducing the Alexa Voice Service Device SDK for Commercial Device Makers : Alexa Blogs

今まで提供されていたサンプルはJavaベースでしたが、今回のはC++ベースのライブラリを提供してくれるものです。

SDKには、AVS APIを活用して、スピーチ認識や合成、ストリーミングメディア、タイマーとアラーム、通知、天気予報、数千のカスタムスキルなどのその他の機能を含む、Alexaのコア機能を処理するケーパビリティエージェントも含まれています。


Echo Show向けのSkillの審査で失敗しないためのTips

Tips for a Successful Echo Show Alexa Skills Certification : Alexa Blogs

  1. Alexaの喋る音量とSkillが利用する音声データの音量を合わせましょう

text-to-speechでAlexaが喋る音量と、skillで音声データや動画を利用する場合に、音量が極端に違うとユーザーはそのためにボリュームの調整が必要となり、非常にストレスです。 ガイドがあるので、参考にして調整しましょう。 https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/normalizing-the-loudness-of-audio-content

  1. GUIの挙動を正しく組み込みましょう

実際に審査に上がってくるEcho Show向けのSkillで画面をタップしても正しい画面に遷移しなかったりする物があるようです。 正しく実装して、ユーザーが迷わずに操作できるようなUIを心がけましょう。

  1. 画面にはユーザーが読める文字だけ表示しましょう

既存のサービスで利用しているデータをそのまま利用すると、たまにHTMLタグが含まれていたり、記号など読めない文字が含まれていることがあるそうです。そのようなSkillだと、審査に落ちてしまうのでちゃんと確認しましょう。

  1. 著作権に気をつけましょう

Echo Showでは画像や動画など、外部から引っ張ってきて表示することが出来ます。しかし、Amazonではそれが無断で利用された著作物なのか、商標に該当するかまではわかりません。 もし、Skillでそのようなコンテンツを利用する場合は、利用を停止するか、そのコンテンツを利用する権利を持つことをAmazonに示す必要があります。

Amazon.com Help: Trademark Usage Guidelines


バイスメーカーにさらに新しい音楽体験を追加出来るようになりました

AVSに新たなる機能が追加されました。

  • Connected Speaker APIs
  • Multi-Room Music SDK

Connected Speaker APIs

バイスメーカがクラウドベースのサービスをAVSに接続できるようにします。 デバイスメーカーがこれに対応することによって、自分たちのスピーカーシステムをAlexaから操作できるようになります。

Multi-Room Music SDK

先日発表された新しい機能で、複数のEcho端末に対して音楽を再生させるというのが発表されました。

Alexa’s new music feature makes your speakers work like Sonos - CNET

このSDKを利用することで、デバイスメーカーがAlexa対応のスピーカーをグループ化されたAmazon Echoなど一緒に音楽を再生することが可能になります。


子供向けのSkillが開発できるようになりました

Alexa Now Supports Kid Skills : Alexa Blogs

13歳未満の子供に向けたSkillをリリースすることが出来るようになりました。 ユーザーがSkillを利用したい場合は、親による承認プロセスを経る必要があります。


あとがき

今月の後半は、色んなデバイスメーカーからAlexa対応のスマートスピーカが発表されました。

そして、最も興味深い話として、MicrosoftのCortanaとAmazon Alexaが相互に連携できるようになるという発表がありました。

gigazine.net

Google Homeと比べるとAlexaは曖昧なワードでの検索みたいな部分が弱かったですが、Cortanaの無効にあるBingと繋がれるようになれば、苦手だった部分が克服できます。 また、Cortanaからビジネス領域では絶大なるシェアを持つOffice 365と言った、部分にアクセスできるようになるので、toCだけではなくtoBの部分でも利用が考えられます。 もちろん、CortanaはAmazonのECだったりAmazon MusicやVideoと言ったエンターテイメントの部分とも連携できるようになるかもしれないので、どちらにとっても良い提携話だったのではないでしょうか。

こういった感じで、それぞれのプラットフォームの良さをお互いが補完できるように連携できると、ユーザーとしてはどんどん使いやすくなっていくので、大歓迎ですね。

最近Amazon Alexa界隈で起きたこと(6/30〜7/30)

前回の記事から1ヶ月経って、Amazon Alexa界隈で何が起きたでしょうか。

目次


現時点のSkill数(US)

f:id:sparkgene:20170730155703p:plain

今月も3000個以上のSkillが追加され、2万の大台も目前という状態になりました。 先月に引き続き、Dotのキャンペーンが行われているので、すごい勢いで追加されていますね。

審査のスピードも上がっっているように感じます。 先日、AWSのリリースを答えてくれるFlash Briefing Skillを審査に出してみたら、1日で通ったので前よりもかなり速くなったと思います。


[6/31] ドイツで照明操作用のSmart Home Skillが対応された

Understanding the Smart Home Skill API - Amazon Apps & Games Developer Portal

Smart Home Skillによる照明の操作自体は以前から利用可能でしたが、それは照明をON/OFF出来るだけのものでした。今回の対応により、「温かい」や「涼しい感じ」みたいな表現で照明の色を変更することが出来ます。 詳しくは前に解説した記事を参考にしてください。

[6/30] Echo Show向けのSkillの作り方

How to Build Alexa Skills for Echo Show : Alexa Blogs

Echo Showはディスプレイを搭載しているので、音声の返事だけで完結せずに、ディスプレイに表示された一覧をスクロールさせたり、動画を再生したりと、よりリッチな体験ができるようになりました。

Echo Show用に追加されたIntentやTemplateという仕組みについて紹介されています。動画の再生は実機じゃないとダメなので、Template周りについて調べた記事を別で書いたので、詳しく知りたい場合はそちらを見てみてください。

qiita.com

[7/5] Flash Briefing Skillの審査を通すためのTips

Tips for a Successful Alexa Flash Briefing Skill Certification : Alexa Blogs

Flash Briefing Skillの審査がスムーズに済むようにする方法について紹介されています。

  1. 音量を調節しましょう。

Alexaが喋る音量と、Flash Briefing Skillでオーディオファイルを利用してニュースを喋られた時に、音量の差が大きいとユーザーにとって凄くストレスとなるので、ちゃんと調整しましょう。

音量のガイドライン

2.日付を更新しましょう

フィードに含まれている日付が7日以上前の場合、Alexaはそのコンテンツを無視します。また、Skill登録時に更新頻度が7日以上だと登録できないので、日付をちゃんと更新しましょうということです。

3.意図しない発話をしないように

フィードに特殊記号(HTML, XML, SSMLタグなど)など含まれていると正しく喋ってくれないので、フィードの中身をちゃんと確認しておきましょうということ。

Flash Briefing Skillの審査に出す際のチェックリストが公開されているので、これで確認しておくと良いでしょう。

Flash Briefing Skill Certification Checklist - Amazon Apps & Services Developer Portal

[7/6] Alexa Dev Days開催

Introducing Alexa Dev Days – Learn to Create Voice Experiences at Free, Interactive Events from Amazon : Alexa Blogs

来年の2月まで、25の都市でライブデモ、セッション、ワークショップを含むAlexa Dev Daysというイベントを開催するようです。(残念ながら日本での開催はない)

オンラインのウェビナーは毎週開催していましたが、このようなリアルイベントが開催されるのは、いろんな人と会えるのでいいですね。

Twitterでもイベントの雰囲気が紹介されていました。

[7/7] シノニムの設定がSkill Builder Betaで楽になる

先日発表されたシノニムですが、Skill BuilderのGUIで入力できるようになりました! シノニムを利用すると単語の揺れをSlot側で吸収することが出来るので、Skill側のコードがスッキリしますので、Skillを作る時に使えるのならシノニムを導入するといいですね。

[7/12] Echo Showの体験を最大限にするための7つのTips

7 Tips for Creating Great Multimodal Experiences for Echo Show : Alexa Blogs

1.Echo Showの新機能を使いましょう

ディスプレイにはテキスト、画像、動画を表示できるようになりました。適切なサイズと容量を守ることでロード時間を短くすることが出来、ユーザー体験が向上します。 背景に画像を利用する場合は、テキストが見えなくならないように、少しぼかし、透過率70%ぐらいの黒いレイヤーを載せると良いです。

2.すでにリリースされている素晴らしいSkillを参考にしましょう

Allrecipes, Bloomberg, Uber, Jeopardy といったSkillはEcho Showの魅力を最大限に引き出している物なので、実際に試してみるのが良い。

3.Echo Showを遠くからでも使えるようにデザインする

ユーザーが必ず画面を見るとは限りません。ユーザが見ていない、または2メートル離れても使いやすいようなレイアウトを利用しましょう。

4.Templateを利用して一貫性のあるUIを作りましょう

レイアウトが統一されるので、Template機能を使いましょう

5.画面の表示と発話を合わせる

画面に表示していることと違う內容を音声で流すとユーザーが混乱します。まずは音声を優先させた作りを心がけましょう。

6.テキストは簡潔に

テキストと発話を完全に一致させる必要はありません。テキストを表示する時は発話を短くして、読むのを速くするのも良いでしょう。

7.ヒントを利用しましょう

Hintを表示することで、ユーザーにどんなコマンドがあるかを知らせることが出来ます。コマンドを知ることで、ユーザーはSkillで何が出来るのかを知ることが出来ます。

[7/25] Skillにアカウントリンキングを上手に追加する10のTips

10 Tips for Successfully Adding Account Linking to Your Alexa Skill : Alexa Blogs

1.審査に出す時は複数のテストアカウントを用意しよう

審査をする際に、テストアカウントが1つだけだと十分にSkillの魅力を引き出すことが出来ないかもしれません。 例えば注文履歴などを見る機能があるとするなら、新規に追加されたアカウントだけではその機能をテストすることが出来ません。そのような場合は、履歴をいっぱい持っているアカウントも提示して審査に出すと良いでしょう。 このように色んな状態のテストアカウントと操作手順を用意することで、審査がスムーズになります。

2.ログインページでは混乱させないようにしましょう

ログインページが別のサービスを利用している場合は、ユーザーがリンクしようとしたサービスと違うと勘違いしてしまい混乱する可能性があります。ログインページではカスタマーに分かりやすいよう、サービス名やメッセージを伝えましょう。

3.サービスと同等のサインイン・サインアップ機能を提供しよう

既存のサービスがFacebookTwitterGoogleAmazonなどのアカウントを利用してログインできるのであれば、Skillのアカウントリンキングでも同じように選べるようにしておきましょう。そうしないと、一部のユーザーがログインできないと行った問題がでてきてしまいます。 またサインアップに対応しているのであれば、アカウントリンキングでも同じようにサインアップ出来るようにしましょう。

4.アカウントのリカバリーに対応しましょう

アカウントリンキングする時に、ユーザーがパスワードを覚えていない可能性があります。パスワードの再発行をするパターンも想定してテストしておきましょう。 また、ログインに失敗するパターンも想定し、ロックしたりCAPTCHAが表示されたりといった動作も確認しておく必要があります。 エラーや失敗した時にユーザーに分かりやすいメッセージを表示するようにすることも大切です。

5.ログインフォームのバリデーションを正しくしましょう

スマートフォンを利用してログインする場合は、コピペで意図しないスペースが含まれたり、英字が大文字になってしまうことが有ります。このような時は正しく入力をチェックして分かりやすいメッセージを表示しましょう。

6.すべての環境でテストしましょう

多くのアカウントリンキングはスマートフォン上で行われますが、それでもOSの種類やバージョンブラウザの違いが多くあります。PCを利用した場合は更に多くのOSとブラウザの種類があります。これらの環境で正しく行えることを確認しましょう。

7.ナビゲーションの確認

ログインページにリンクがある場合、正しく動作することを確認しましょう。審査でもこれらのリンクをテストします。リンク先から戻ってきた時にその後の処理が正しく動くことも確認しましょう。

8.ヘルプを用意しましょう

アカウントリンキングでログインが出来ずに困るユーザーもいます。そのようなユーザーにはヘルプやカスタマーサポートへ問い合わせる手段を用意しましょう。

9.必要な場合のみ使いましょう

同一セッション内でのユーザーの判別は、アカウントリンキングを利用しなくても出来ます。アカウントリンキングを導入することによって、本来音声だけで操作できるのが、人の手を介す必要が出てきてしまうため、シームレスではなくなります。 住所と言った情報を取得出来るAPIも用意されていますので、本当に必要な時だけ利用するようにしましょう。

10.レスポンスヘッダーのサイズに注意しましょう

HTTPヘッダーサイズには文書化された制限はありませんが、ページローディングの問題を避けるために2,000文字以下に抑えることが良いです。 そうすることで、OAuthアカウントのリンクとは無関係の不要なCookie値を排除する必要が出てくる場合があります。

最後に、

ログインが正常にできたらAmazonのページにリダイレクトするのを忘れないようにしましょう。

最近Amazon Alexa界隈で起きたこと(5/31〜6/29)

前回の記事から1ヶ月経って、Amazon Alexa界隈で何が起きたでしょうか。

目次


現時点のSkill数(US)

f:id:sparkgene:20170629214918p:plain

今月は3000個ぐらいのSkillが追加されました。凄いですね!

理由はおそらく、Skillを公開するとDotが1個もらえるってキャンペーンを開催したからと思います。

f:id:sparkgene:20170629215222p:plain

そんなわけで、総Skill数は1.6万を超えました。

f:id:sparkgene:20170629215333p:plain

このグラフを見て分かるように、Games, Trivia & Accessoriesが大きく増えています。


[5/31] Alexa Skill Metrics DashboardにSmart Home SkillとFlash Briefing Skillのメトリックスが見れるように

Use Alexa Skill Metrics Dashboard to Improve Smart Home and Flash Briefing Skill Engagement : Alexa Blogs

今まではCustom Skillのメトリックスしか見れなかったのですが、Smart HomeやFlash Briefing Skillでも利用状況が見れるようになりました。「Flash Briefing skill usage metrics can take up to 28 hours to appear.」と注意書きがあるので、一日ちょっとしてから数字が反映されそうですね。 一般的なアプリでもそうですが、リアルタイムで利用状況を確認したい場合は、Datdogなど他のサービスを利用して自分で数値を収集するほうが良さそうですね。


[6/5] Amazon AlexaのVUIのデザインガイド登場

Introducing the Amazon Alexa Voice Design Guide : Alexa Blogs

通常のアプリケーションを開発するときにも、ユーザーが何を求めてて、サービスはどんな価値を提供できて、といったことを最初に考ええて、UXの設計をすると思います。 音声のUIでも同じで、Skillがどんな価値を提供でき、ユーザーはどんなシチュエーションでSkillを使い、どのように会話を成り立たせるのがUXとして良いのかを考える必要があります。 この資料では、どういった観点でVUI(Voice User Interface)を考え、実際にユーザーとAlexaの会話の例を書き起こして設計する方法についても説明しています。

Google Assistant SDKでも同じようにVoice Designについて解説してるページがあります。

https://developers.google.com/actions/design/

Googleの方はVoice Designの解説に力を入れててすごく良い資料になっているので、そっちも見ながらAlexa Skillを作ると良いものができそうです。もちろん、Google Assistant SDKを使ってGoogle Home向けのAction(Skill)を作るのも良いと思います。


[6/7] Skillで利用するAudioのボリュームを調整しよう

How Loud Is Too Loud? Tips for Setting Your Alexa Skill's Audio Volume Level : Alexa Blogs

ユーザーは色んなSkillを使います。そのなかで、自分が作成したSkillに含めたオーディオの音レベルが他と極端に違うと、ユーザーにとってはものすごくストレスです。 この記事では、そのようなSkillにならない様に、オーディオのマスターレベル推奨値やフォーマットについて紹介しています。 ユーザーの不満はそのままSkillのレビューに反映されるので、こういった気遣いも大事ですね。


[6/8] AlexaついにVideoを操作できるように

How to Control Your Content with the Video Skill API : Alexa Blogs

Amazon Enables Video Providers to Control Content with the Video Skill API - a New Addition to the Alexa Skills Kit : Alexa Blogs

最新のFire TVではAlexaも使えるようになっています。今回発表されたVideo Skill API では、Fire TVで動画サービスを提供しているアプリケーションをAlexaから操作できるようになるというものです。 例えば、「Alexa, Nexflixで進撃の巨人が見たい」みたいに話しかけると、Nexflixのアプリで再生を始めることができるようになります。 現在提供されている操作は、以下のものです。

  • ChangeChannel
    • チェンネルの選択
    • 発話例「Alexa, change channel to 200 on device」
  • PlaybackController
  • RemoteVideoPlayer
    • 検索して再生(SearchAndPlay)
    • 検索して詳細を表示(SearchAndDisplayResults)
    • 自由な検索(Handling Ambiguous Play Requests)
      • この場合は、実装する側の判断で、再生させるのか、リストを表示するのかを返します
  • SeekController
    • 特定のポジションまでのシーク
    • 発話例「Alexa, skip 30 seconds on device」

音声で操作できるアプリケーションは、Alexa.Discoveryインターフェイスに対応しておく必要があり、そのレスポンスで上に書いたどの操作ができるかを返す必要があります。


[6/21] Slotでシノニムが使えるように

Announcing Alexa Entity Resolution : Alexa Blogs

任意の曲を再生するSkillを作っていたとして、ユーザーが曖昧な表現で言ってきても再生させたいとします。 例えば、ユーザーがマイケル・ジャクソンの曲を流してほしい場合は、以下のように言ってくる可能性があります。

  • Alexa, play Michael Jackson
  • Alexa, play MJ
  • Alexa, play Mike
  • Alexa, play King Of Pop

このような場合は、それぞれのワードをカスタムSlotに登録して、Skill側でどの発話でもマイケル・ジャクソンをリクエストしてきているんだなと判断する必要がありました。 今回の機能によって、事前に以下のようなSlotを定義しておくと、これらの判定はSkill側で行う必要はなくなり、Alexa側で判断して mj と送ってくれるので、Skill側のハンドリングを減らすことが出来ます。もちろん、実際に King Of Pop と発話していたらその情報も送ってきます。

{
  "types": [
    {
      "name": "artist",
      "values": [
        {
          "id": "MJ",
          "name": {
            "value": "mj",
            "synonyms": ["Michael Jackson","MJ","Mike", "King Of Pop"]
          }
        }
      ]
    }
  ]
}

[6/22] Smart Home Skillでカメラが使えるように

Introducing Smart Home Camera Control with Alexa : Alexa Blogs

Echo Showで外部のカメラからの動画を再生できるようになりました。 この動画を見ると「Alexa、show me the front door」と話しかけることで、カメラのリアルタイムな映像がEcho Showに表示されているのがわかります。

www.youtube.com

Echo Showにリアルタイム動画を表示させる要件として以下のことが要求されています。

分類 仕様
Media streaming and transport RTSP controlling media transmission over RTP
Underlying transport protocol Interleaved TCP on port 443 (for both RTP and RTSP)
Feed encryption TCP socket encryption on port 443 with TLS 1.0
RTSP 1.0 Command support implementation DESCRIBE, SETUP, PLAY, and TEARDOWN commands are required although a full RFC compliant implementation of RTSP 1.0 is recommended
Video format H.264
Audio format AAC/G711
Feed authentication HTTP Digest authentication

Alexaから動画の表示を要求された際のレスポンスは以下のフォーマットです。

{
      "header": {
          "namespace":"Alexa.ConnectedHome.Query",
          "name":"RetrieveCameraStreamUriResponse",
          "payloadVersion":"2",
          "messageId":"ABC-123-DEF-456"
      },
      "payload": {
          "uri": {
              "value":"rtsp://link.to.video:443/feed.mp4"
          },
          "imageUri": {
              "value":"https://link.to.image/image.jpg"
          }
      }
}

特定のURIを渡すと、Echoの方から直接カメラ(もしくは中継器)にリクエストが行くみたいですね。 ということは、ラズパイのカメラで撮影したものをEcho Showで表示するみたいなこともできそうです。 これは、実験してみたいですね〜〜、はやくEcho Show日本に来ないかな。


[6/28] Echo Showで使えるVideoとDisplayの仕様が追加されました

Build Skills for Echo Show: New Alexa Skills Kit Features for Display and Video Interfaces : Alexa Blogs

Echo Showが発表されてからずっと気になっていた機能の仕様がでてきました。 Showの画面に表示されるのはCardの拡張かと思っていましたが、Displayという新しいインターフェイスが追加されました。 既存のEcho AppなどにはCardでUIを表示し、Echo Showのようなディスプレイを持ったデバイスにはDisplayとtemplateを使って表示します。

Display Interface Reference - Amazon Apps & Services Developer Portal

Displayでは複数のtemplateが用意されています。

テンプレート 表示できるもの
BodyTemplate1 タイトル、詳細、アイコン、背景画像
BodyTemplate2 タイトル、詳細、アイコン、背景画像、画像(右側)
BodyTemplate3 タイトル、詳細、アイコン、背景画像、画像(左側)
BodyTemplate6 詳細、背景用のフルスクリーン画像
ListTemplate1 タイトル、アイコン、背景画像、テキストのリスト表示(縦)、リストのサムネイル
ListTemplate2 タイトル、アイコン、背景画像、サムネイルのリスト表示(横)、サムネイルの下にテキスト

詳細ではプレーンテキストとリッチテキスト(一部のHTMLタグが利用可能)が利用できます。

VideoApp Interface Reference - Amazon Apps & Services Developer Portal

Echo Showでのビデオ再生はGUIによるビデオ操作と、音声による操作が可能です。 利用できるビデオは、HLSとH.264の2種類。

以下のように再生する動画のURLを指定するので、自分が用意した動画を再生させることも可能です。

"videoItem":
  {
    "source": "https://www.example.com/video/sample-video-1.mp4",
    "metadata": {
      "title": "Title for Sample Video",
      "subtitle": "Secondary Title for Sample Video"             
   }
}

期待していた仕様が満たされているので、実際に使うのが楽しみです。


あとがき

待ちに待った、Show向けの仕様が出揃ってきましたね。数日前からUSでEcho Showの出荷が始まったようなので、それに合わせて出してきたようです。 デバイス側がだんだんリッチになってきており、Skillを開発する際も実機じゃないと動作確認できないので、Echo Show向けのSkillを開発するのも段々大変になってきたように思えます。

今回は新しく追加された機能を中心に紹介したので、あんまりAlexa界隈で起きたことはないですね。 というのも、最近は日本語の記事で海外のAlexaネタが多く出るようになったので、タイムリーなやつはそっちにお願いして、ここはAlexaの技術周りの話に絞っていこうかなと思いました。

Microsoft Azureと戯れてみた

AWSは公私共に使う機会が多く、GCPも最近仕事で触るようになってきました。

しかし、ガートナーのレポートによればクラウドIaaSではMicrosoftが2番と書かれているのだけれども、一度も使ったことがなかったのでどんなものかを試してみることにしました。

AWSにもありますがオンラインのトレーニングがAzureにも有り、「AWS の専門家のための Microsoft Azure」と言う、いかにも私みたいな人に向けた物が用意されていたので、これを試してみることに。

AWS の専門家のための Microsoft Azure | Microsoft Learning

今回始めてAzureのアカウントを作ったのですが、初回登録時に20,500円分のクレジットが付与されたので無料で色々と試す事ができました。

このオンライントレーニングは、以下のような複数の章立て(モジュールと書かれているけど)になっていて、段階的に学ぶことが出来ました。

AWSとAzure」ではAWSとのサービスとAzureのサービスの表があり、どのサービスがAzureで代用できるかが確認できました。 想像していたよりも多くのサービスがAzureでも用意されていて、ちょっとしたサイトどころか大規模なサイトを構築する場合でも、不自由しないで構築できそうなことがわかりました。

MicrosoftだからといってWindowsサーバが必須ってこともなく、Linuxの主なディストリビューションを利用してサーバを構築することも可能です。 そのあたりが詳しく書かれているのが「Azure上のLinux」の章。 普段はAmazon Linuxを使うことが多いので、AzureでもLinux系のOSを利用できるのは良いですね。

仮想マシン」の章では実際にAzureのマネージメントコンソールを利用してLinuxインスタンスを立ち上げるラボと言われるセッションも有り、実際に操作しながらAzureを理解できる作りになってました。

このマネージメントコンソールにダッシュボードって機能があって、自分で表示したい情報を選んでデザインすることが出来、実際に起動しているインスタンスの状態とかを俯瞰して見れるようなダッシュボードが作れます。

blogs.msdn.microsoft.com

これすごくいいな〜と思って、AWSにもこんな機能が欲しい。

マネージメントコンソールでもう一ついいな〜と感じたのは、ブレードと呼ばれるUIで、メニューからアイテムを選ぶと右にドンドン追加されていって、使いやすかったです。 f:id:sparkgene:20170622223617p:plain

とは言え、実際に運用し始めたらGUIで操作して環境作るのはそんなに現実的ではないので、それほど使わないかもしれないけど。。

トレーニングの中ではGUIでの構築だけではなく、CLIを使った構築も学ぶことが出来ます。 資料のCLIバージョンが少し古いせいか、最新をインストールして進めようとしたら、オプションとかが違ってそれを調べながら進めるのはちょっとめんどくさかった。(そのおかげで、理解が深まった感はありますがw)

Resource Managerの章では、AWSで言うCloud Formationみたいなテンプレートの使い方を学ぶことになるのですが、GUIでブレードで操作してインスタンスを立てる際の情報もテンプレートとしてダウンロードしたり、ライブラリとして登録できるので、くり返し同じ作業が必要な時などはこれを使えば、簡単に構築ができそうです。 AWSでも同じような感じでGUIの結果をCloud Formationのデータとしてダウンロードできると便利だなと思いました。

最後の章は「Azure Active Directory」について学ぶのですが、オンプレミスのActive Directoryとの連携とかを詳しく学ぶので、現在のオンプレの資産を活かしつつAzureを使ったパブリッククラウドも利用したい人にはすごくいい内容なのではないでしょうか。

一通りトレーニングを終えると、理解度確認の課題が用意されており、Azureについてどれぐらい理解できたかを確認することが出来ます。

f:id:sparkgene:20170623134023p:plain

52%。。すごく微妙な数字。。。70%がボーダーなので、まだ修行が足りないってことですね。 間違えている問題は確認できるので、そこを再度見直せば良さそうです。

あとがき

今までAzureは使ったことが無かったけど、無料枠を使いながら基本的なことを学べたのは良かったです。 コースの概要では16h〜24hかかるってあったけど、12〜13hぐらいで終わりました(だから52%しかいかないんだよというツッコミ)。 業務ではADを使うことはあまりなかったので、個人的にはAzure Active Directoryのパートは別の内容になってたほうが良かったという印象ですが、AWSの知識はあってゼロからAzureを勉強するにはちょうどいい内容じゃないかと思います。

FunctionsやIoT Hubなど面白そうなサービスもいっぱいあり、これらも別のコースで学ぶことができるので、そのうちやってみたいと思いました。

最近Amazon Alexa界隈で起きたこと(5/1〜5/30)

前回の記事から1ヶ月経って、Amazon Alexa界隈で何が起きたでしょうか。

目次


現時点のSkill数(US)

f:id:sparkgene:20170530231027p:plain 今月も1000ぐらい増えています。 過去のデータをグラフにしてみると、同じぐらいのペースでSkillが増えているのがわかりますね。 f:id:sparkgene:20170530231906p:plain

[5/1] Test Your Smart Home Skill API Responses with Our New Validation Package

Test Your Smart Home Skill API Responses with Our New Validation Package : Alexa Blogs

Smart Home Skillのバリデータをリリースしましたと。 Smart Home Skillの場合、Skillのテスト機能を使うことが出来ないため(Alexa, turn on lightとか、built-inのIntentを利用するので)、Echoの実機もしくはechosimを使う必要があります。しかし、間違ったレスポンスを返したとしても、無言になるだけで何が原因かわかりません。 そこで、このバリデータを利用することで、返すデータをチェックしてエラーがあれば例外が発生して分かるようになっています。 これは、テストのときだけではなく、普段から入れておいて、cloudwatchのアラートを使って検知するようにしておけば、実際のユーザが利用した際に発生した問題もわかりやすくなると思います。

ちなみに、LambdaのpythonでCustom Skillを作成した場合、戻り値はJSON形式ではなくdict型で返す必要があります。過去にそれを忘れてて、何時間もテストツールがうまく動かず、ハマりまくることがありました。Custom Skill向けのバリデータも欲しいですね。

[5/3] Integrate Skills with Alexa Lists–Now Available as Part of the Alexa Skills Kit

Integrate Skills with Alexa Lists–Now Available as Part of the Alexa Skills Kit : Alexa Blogs

Alexaのto-doリストとshoppingリストにアクセスできるようになりました! これによって、今まではこのような機能を実現しようとすると、自分のSkillの中で保持する必要がありましたが、読み書きが可能になったので、ユーザーにとってはAlexa Appをみれば良くなるので利便性が向上することになりました。

[5/4] Conexant 4-Mic Dev Kit Brings Far-Field Voice Recognition Technology to AVS Developers : Alexa Blogs

Alexa Voice Serviceを利用してデバイスを作るメーカーに向けて、マイクを4つ備えたデベロップメントKitを発表しました。 このキットは、以下の機能を持っています

  • Far-field
    • 部屋の向こうからAlexaと話しかけても反応する技術
  • Smart Source Locator
    • ユーザーがどの方向から喋りかけているかを判別する技術。それによりノイズを無視することが出来、より正確に発話を聞きかけることが出来る

商用向けグレードでは、Echoのように音楽を再生していても、「Alexa」に反応出来るAudioSmartにも対応しています。

[5/8] Tips on State Management at Three Different Levels

Tips on State Management at Three Different Levels : Alexa Blogs

[5/9] Introducing the All-New Echo Show

Introducing the All-New Echo Show : Alexa Blogs

ついにスクリーンを搭載したEchoが登場しました!! 例えば、ECサイトのSkillがあったとして、「洗剤が欲しい」と話しかけても、洗剤の種類は大量にあるので、それを一つ一つ読み上げるのは、明らかに使い勝手が悪いです。そこで、このようなスクリーンがあると、その中から目視で選べるようになるので、ユーザーにとっては使いやすくなります。 また、Cardの中で動画の再生が可能となっているようで、youtubeがみれたり、Flash Briefingにも動画が利用できるようになるみたいです。 今後、SkillのTool Kitがリリースされてくるので、実際にどのようなものが作れるか試せるようになります。

[5/15] Cloud-Based Wake Word Verification Improves “Alexa” Wake Word Accuracy on Your AVS Products

Cloud-Based Wake Word Verification Improves “Alexa” Wake Word Accuracy on Your AVS Products : Alexa Blogs

たまにAVSを利用したデバイスは「Alexa」と話しかけていないのに「荒木さん」反応してしまう事もあり、ユーザーの体験を損ねることになってしまいます。 今回追加されたクラウドベースのチェックによって、デバイスでWake Wordを検知したあと、クラウドにその後の発話を送りつつ、再度クラウド側でWake Wordのチェックをすることで、ご検知かどうか判断することが出来るようになりました。 この機能を有効にすることで、ご検知した時は処理を中断させることが出来、ユーザーの体験を損ねないようなプロダクトを作ることが可能となります。

[5/16] Amazon Announces ‘Notifications for Alexa' Feature Is Coming Soon—Sign Up to Stay Tuned

Amazon Announces ‘Notifications for Alexa' Feature Is Coming Soon—Sign Up to Stay Tuned : Alexa Blogs

これも待ち望んでいた機能の一つで、ネイティブアプリで言うプッシュ通知が出来るようになりました! Push通知と言っても音を鳴らして、Echoのリングを光らせるだけなので、どのスキルからのお知らせかどうかは、ユーザーがEchoに聞く必要があります。 Skill毎にPushを許すかのパーミッションを設定することが出来、「Do Not Disturb」モードにすることで一律Pushを無視させることが出来ます。

[5/18] スマートスピーカーの「Google Home」年内に日本上陸へ! Spotifyにも対応です

www.gizmodo.jp

Google Homeが年内に日本へ投入されるとのことです!! Amazon Echoは噂レベルでは年内との話はありますが、Amazonからの正式な発表はまだ無いので、いつ出るかはまだ不明です。 アメリカでは70%のシェアを持っているAmazon Echoシリーズですが、投入のタイミングによっては、国内だとそのシェアは変わってくる可能性があります。 Amazonさん、早くして〜。

[5/19] Advertising and Alexa

Advertising and Alexa : Alexa Blogs

Alexa Skillでは現状ネイティブアプリのようなIn App Purchaseの仕組みを持っていません。 その為、デベロッパーに対して簡単にマネタイズする方法はありませんでした。 そんなこともあり、Skillを公開しているデベロッパーに対してAWS料金の$100クーポンが提供されていて、デベロッパーの負担を少なくする方法が取られてきました。 今回の発表により、Skillの音声データにCMの様な広告を含めることが許可されたので、自分のSkillに広告を含めてマネタイズする手段が1つ出来ました。 ただし、Alexaの声を利用した広告は禁止されているので、テキストデータとして含めることはおそらく出来ず、オーディオデータとして用意しなければなりません。

[5/21] Microsoft初となる「Cortanaで動くスマートスピーカー」がAmazon Echoを揺るがすかもしれない

thebridge.jp

2017年秋にアメリカ国内で販売を開始するとのこと。 今年は音声UIが広がる年であると思っていますが、Google Homeと合わせ大手3社のAIホームアシスタントが今年で揃うことになります。 WWDCもあるので、もしかするとSiriのデバイスも出てくるかもしれないですし、目が離せないですね。

[5/23] Define Your Appliance Category for a Better Customer Experience : Alexa Blogs

Smart Home Skillにカテゴリーを指定できるようになりました。 今までは、シーンもデバイスもすべて同じ一覧に表示されていて分かりづらかったのですが、カテゴリーによって分けることが可能になりました。

Smart Homeのトップがこんな感じになり f:id:sparkgene:20170528164806p:plain

これが、デバイスの一覧で f:id:sparkgene:20170528164640p:plain

こちらがシーンの一覧 f:id:sparkgene:20170528164703p:plain

[5/24] Ikeaのスマート電球はAmazon Alexa, Apple Siri, Google Assistantから操作できるようになる

jp.techcrunch.com

PhilipsのHueはAlexa対応しているけど、LED旧個入った物でも$200と結構高いです。 Ikeaが発表したものはコントローラーが$59.99、Led球が$14.99とかなり安いです。元々、IkeaのLED球を家で利用していますが、明るさ的にも問題は感じていないので、この値段であれば家中の明かりをIkeaのものに変えて、全部Echoから操作できるようにすると便利そうですね。


あとがき

スクリーン付きのEchoが登場したのと、Google Homeが年内に日本語対応をするというのが、今月のビッグニュースですね。 また、TVを操作するためのデバイスがAVS対応したり、IkeaのLed球がAlexa Skillで操作できるようになったりと、Alexaを取り巻くエコシステムも出来上がりつつありますね。 今までとは違った体験が今後の生活スタイルを変えていきそうで、すごく楽しみですね。

ちなみに、Back to the future 2で出てくるこのシーンは、すでに30年前にそんな日常を予見していたのかなと。 (この映画を見た世代が、その影響を受けてテクノロジーの開発をしているのかもしれませんがw)

www.youtube.com

車の傷修理

家の駐車場に止める際に、通路を広く取ろうと壁側に寄せ過ぎたら、嫁さんがぶつけてしまい、更に私もぶつけて傷が目立つようになってしまった。。

f:id:sparkgene:20170507154720j:plain

下地まで見える傷も入ってしまったので、このままにしておくと錆びる可能性もある。しかし、板金屋さんに出したら数万かかってしまうので、少しでも目立たなくなるように修理してみた。

f:id:sparkgene:20170507154722j:plain

傷が入ったところを1500番の紙やすりで削ったあと、純正のタッチペンで塗っていきます。
この時点だと、更に傷口を広めてしまった感が出て、やめればよかったと少し後悔するときですね。

f:id:sparkgene:20170507154725j:plain

1500番の紙やすりである程度段差がなくなるまで全体的に表面を慣らしていきます。
今回はパテとかで凹みの補修をしていないため、下地まで削れた部分はどうしても段差ができてしまいます。

f:id:sparkgene:20170507154726j:plain

ホルツのカンタンキズ消しセットのキズ消しを使って、紙やすりでついたキズを消していきます。
紙やすりでついたキズで、全体的に白っぽくなっていたのがなくなりました。

f:id:sparkgene:20170507154729j:plain

ツヤ出しを使って、更に細かい傷を磨いていきます。これぐらいになると離れたとこから見ても、もうわからなくなります。

f:id:sparkgene:20170507154728j:plain

最後にワックスを塗って表面を保護して完成です。
タッチペンで塗りが薄かった部分が、磨きの段階で一部下塗りが見えてしまいました。もう一度最初からやっても良いのですが、元の塗装が今回の補修で薄くなってそうだし、全体的に下塗りが見えてしまいそうなので今回は諦めます。


f:id:sparkgene:20170507154732j:plain

BMW純正のタッチペンを使ったけど、微妙に色が濃くて少し残念な気持ち。
しかも、クリアが付属しているんだけど、筆でクリア塗って綺麗に仕上げるのはかなり難しい気がする、、なんでこんなセットなんだろう。

ダンボーGoogle Home制作メモ

前回のブログではAlexa Voice Serviceを使ってラズパイZeroで自作Echoを作成しました。

sparkgene.hatenablog.com

今回はGW直前に公開されたGoogle Homeを自作できるGoogle Assistant SDKを利用して、ダンボーHomeを作ってみました。

ラズパイの良いところは、SDカードを変えれば違うものとして動かすことが出来るので、AlexaとGoogle Assistant SDKは別のSDカードにセットアップしておくことで、SDカードを差し替えるだけでAmazon Echoになったり、Google Homeになったりすることが出来ます。

SDカードの抜き差しが簡単にできるように、ダンボーの横顔に穴を開けました。

f:id:sparkgene:20170506210825j:plain

セットアップで参考にしたのはこちらのQiitaの記事。

qiita.com

元になっているのはこちらの英語のドキュメントですので、こちらを見ながらAPIキーの発行などを進めてもセットアップは簡単に進められます。

Overview  |  Google Assistant SDK  |  Google Developers

実際にラズパイにインストールする際に必要なコマンドは、githubにあがっているサンプルに細かく書かれているので、こちらを見ながら進めました。

github.com

ラズパイ上でサンプルを動かす際、Google Assistant SDKに対して以下の情報を提供する権限を与える必要があります。

  • Web & App Activity
  • Location History
  • Device Information
  • Voice & Audio Activity

個人のgoogleアカウントに対してこれらの権限を許可するということは結構な情報を提供することになるので、気になる場合はメインではないアカウントを使うのが良さそうです。 ドキュメントにもデベロッパーアカウントではないgoogleアカウントでもOKと記載されています。

Set activity controls for your account

デモ動画

youtu.be

AVSのサンプルと違って、Google Homeのようにウェイクワードに反応することが出来ないようで、コマンドラインでエンターをすると音声を拾い始めるみたいな動きとなっていました。

MagPiの付録としてついてきているキットでもボタンを押して喋りかける使い方なので、Alexaのときと同じでそのうちウェイクワードにも対応するのかなって気がします。

www.raspberrypi.org

使ってみた感想としては、「おっけー、ぐーぐる」と思っきり日本語英語で発音しても、問題なく拾ってくれたので音声認識の精度はAlexaより高い印象です。 時刻や天気を聞いたら勝手に東京の情報を返してきたので、連携しているアカウントの情報に基づいて、回答を返してくる気がします。 ちなみに、「おっけー、ぐーぐる」と話しかけたあとは、音声入力待ちになるので、次のコマンドを言うことが出来ます。

あとがき

Alexaのサンプルが出てきたときよりもドキュメントがしっかりしていて、セットアップでハマるところはほぼありませんでした。

ハマったのはGoogle Assistant SDKの部分ではなく、ラズパイでオーディオを再生すると音が割れる現象が何故か発生して原因がわからずだいぶハマりました。 ダンボーEchoと同じ2017-04-10-raspbian-jessie-lite を利用したのに、.asoundrcの設定を同じにしてもダメでした。 結局、OSを再インストールしても状況は変わらなかったので、.asoundrcのspeakerの方にレート rate 44100 を指定することで音割れしなくなりました。

pcm.!default {
  type asym
  capture.pcm "mic"
  playback.pcm "speaker"
}
pcm.mic {
  type plug
  slave {
    pcm "hw:2,0"
  }
}
pcm.speaker {
  type plug
  slave {
    pcm "hw:1,0"
    rate 44100
  }
}