最近Amazon Alexa界隈で起きたこと(10/15〜10/30)
前回の記事から半月ですが、こんな感じで定期的に上げていこうと思います。
前回の記事
目次
現時点のSkill数(US)
カテゴリ
個数
Business & Finance
63
Connected Car
8
Education & Reference
878
Food & Drink
141
Games, Trivia & Accessories
1151
Health & Fitness
128
Lifestyle
381
Local
96
Movies & TV
80
Music & Audio
47
News
376
Novelty & Humor
306
Productivity
133
Shopping
12
Smart Home
114
Social
50
Sports
118
Travel & Transportation
94
Utilities
74
Weather
319
合計
4250
2週間で200ぐらい増えてました。
特に、Games, Trivia & Accessories
とNews
が増えてます。
注)weatherの数値がおかしいですね、前回の数値が間違えているようです。
[10/20] Amazon Echo Dotの出荷開始
続々と届いたよ!なコメントを見かけるように。羨ましいですね。
オプション($14.99)でカバーを付ける事もできるみたいです。
[10/20] Fire TV Stick with Alexa Voice Remoteの出荷開始
Fire Stick TVの新バージョンはAlexa搭載となりました。
旧バージョンもリモコンに音声認識機能がありましたが、これはAmazon Videoの中からコンテンツを探せるもの。
新型は、動画の操作(早送りとか)、アプリの検索、起動、Skillの呼び出しなど、音声で操作できることが格段に増えている。
Introducing the All-New Fire TV Stick with Alexa Voice Remote - Amazon Mobile App Distribution Blog
[10/21] (個人ネタ)審査に出してたSkillがリジェクトされる
月の暦を教えてくれるSkillを公開していて、UKとドイツ語に対応したものを10/8に審査に出したのだが、長い時を経てリジェクトされる。
リジェクトの理由は、sample utterancesの量が少なすぎるとのこと。初回出した時は1個だけでも審査を通ったけど、厳しくなったのか色んなパターンに対応しないとダメらしい。
何個か追加して再審査に出すも、同じ理由で再度リジェクトされる。。何個あれば良いんだ・・。
[10/22] (個人ネタ)Amazon Music Unlimitedのお試し期間を終了される
Amazon Echo向けに$3.99でAmazon Music Unlimitedが利用可能だったので、フリートライアルを登録したのだが、Amazon.comに登録されている住所が日本だったので、US以外ではこのサービス使えないんだよとメールが来て強制的に解約される。
安いし便利そうだったので使ってたけど、残念である。他の逃げ道としてはSpotifyのプレミアムアカウントを登録すれば使えるが、月額980円なのが悩み。
[10/24] Alexa APIマッシュアップのコンテスト開催
Announcing the Amazon Alexa API Mashup Contest - Amazon Mobile App Distribution Blog
HacksterでAmazon Alexaと一般公開されているAPIのマッシュアップコンテストがアナウンスされました。
[10/26] AmazonはAlexaをグローバル展開したことで更にリードを広げた、というレポート
レポート元によれば、
- 音声UIに対して何らかのプランを持っていないCMO(チーフ・マーケティング・オフィサー)に対して、「音声ベースのインテリジェントエージェントはもう普及し始めている」と警鐘を鳴らしていると。
- 音声はAI(Intelligent Agent)に最も適している
- Amazonはすでに屋内における音声制御の確固たる地位を築きつつあり、2016年内にはアメリカの家庭に600万を超えるEchoデバイスが置かれることを予想しています。(新型のEcho Dotがそれを加速させるだろう)
[10/27] [チュートリアル] カレンダーリーダーSkillを作る方法
カレンダーの情報をicsファイルで取得して、「今日イベントある?」、「12/12に開催されるイベントは?」みたいな感じでAlexaに話しかけると教えてくれるSkillの作り方を紹介。
最近Amazon Alexa界隈で起きたこと(〜10/16)
海外ではAmazon Echoを中心としたAlexa Skills KitやAlexa Voice Services関連の情報が色々出回っているけど、日本語対応されていないことからまだ国内での情報があまりないと思ったので、普段チェックしたことをブログにまとめていこうと思いました。
目次
現時点のSkill数
カテゴリ
個数
Business & Finance
59
Connected Car
8
Education & Reference
884
Food & Drink
130
Games, Trivia & Accessories
1088
Health & Fitness
119
Lifestyle
357
Local
91
Movies & TV
77
Music & Audio
44
News
341
Novelty & Humor
287
Productivity
121
Shopping
11
Smart Home
110
Social
49
Sports
112
Travel & Transportation
89
Utilities
71
Weather
23
合計
4071
いつの間に4000を超えている。
9月
New Alexa Skills Kit Template for Developers: GameHelper
New Alexa Skills Kit Template for Developers: GameHelper - Amazon Mobile App Distribution Blog
Amazon Echo向けに作られているゲームは意外と多い。 このブログではゲームを作る際のゲームガイド(ゲームの遊び方)を作るためのテンプレートについて解説してくれています。 チェスのコマについて聞くとその画像をEcho Appのカードに表示させる方法などにも触れている。
New Video: Using Speech Synthesis Markup Language (SSML) in Alexa Skills
SSMLの使い方のビデオが公開されました。
SSMLは通常のテキストだけでは足りない発話を可能にする構文のことです。
例えば、123
はワンハンドレッド・トゥエンティースリー
と発話されるが、ワン・ツー・スリー
と発話させたい時は<say-as interpret-as="digits">123</say-as>
とSSML返してあげる必要がある。
JAWS-UG IoT専門支部 IoTサロン 2016-09 Alexa meetup! を開催した
JAWS-UG IoT専門支部でAlexaの勉強会を開催しました。 すでにJAWS-UG 神戸支部でAlexa meetup #01を開催した伊東さんも駆けつけてくれて、Alexa Voice Servicesについて詳しい発表してくれました。
Alexa and Amazon Echo Now Available in the UK and Germany
Alexa and Amazon Echo Now Available in the UK and Germany - Amazon Mobile App Distribution Blog
ついにAlexaとEchoがUS以外の国でも販売&利用できるようになりました。 昨年参加したre:Inventでイギリス英語、ドイツ語に対応を始めたって聞いたけど、それから1年ぐらいしてついに出てきました。
Amazon EchoとAmazon Alexaに感じる可能性 - sparkgene’s blog
Amazon Dot 第2世代が公開
発売日は10/20だが、Amazon Dotが新しく&安くなって登場。 6個(1個無料)、12個(2個無料)入りパックも用意され、家の各部屋において使うイメージ。
How to Build a Multi-Language Alexa Skill
How to Build a Multi-Language Alexa Skill - Amazon Mobile App Distribution Blog
リリースされたイギリス、ドイツ向けにSkillを作る際のやり方についての解説。 詳しくはQiitaに書いたのでそちらを見てみてください。
Announcing the Winners of the Internet of Voice Challenge
Announcing the Winners of the Internet of Voice Challenge - Amazon Mobile App Distribution Blog
Alexaを使ったコンテストがいろいろな方面で開催されているが、hackstr.ioで開催されたAlexa Skills KitもしくはAlexa Voice ServicesとRaspberry Piを使った何かを作れというもの。
私もエントリしてみたけど、残念ながら入選できなかった。
New Video Course by A Cloud Guru: Alexa Development for Absolute Beginners
Serverlessの教育では先駆的なサービスであるA CLOUD GUREが、Alexa Skills Kitを使ったSkillの開発を勉強できる講座を公開しました。
Alexa Fund Adds New Company to Portfolio by Taking Lead Investor Role in Nucleus
Alexa Voice Servicesを使った初のスマートホームインターフォンを発売したNucleusが、シリーズAの投資が行われました。その額は$5.6 million(6億ぐらい)。 AlexaやAmazon Echoが登場した時に、Amazonは100億ぐらいのファンドも立ち上げました。 何か面白いものを作ってAmazonの目に止まれば大型の投資をもらえるかもしれないですね。
Alexa Smart Home SkillのHow To記事
Managing Device Discovery for Your Alexa Smart Home Skill - Amazon Mobile App Distribution Blog
Announcing Scenes for Smart Home Skills - Amazon Mobile App Distribution Blog
Amazon Echoがスマートホームデバイスを利用する方法として、現状はPhilipsとWeMoのデバイスは同じネットワーク上に存在すれば、検出して利用することが可能です。 しかし、それ以外のスマートホームデバイスの場合はクラウドに繋がっている必要があり、Smart Home Skillを介して操作されます。 その為、クラウドで管理されている自分のスマートホームデバイスを利用する際にユーザー認証が必須となっており、Custom Skillを作るときと違ってOAuth 2.0を使ったユーザー認証を組み込む必要があります。 この記事では、デバイスの検出とSmart Home Skillの使い方について学べます。
New Alexa Technical Tutorial: Debugging AWS Lambda Code Locally
Alexa Skillのでバッグは実際にAmazon Echoなどから実行したり、テスト画面から実行してLambda側でデバッグする必要がありますが、この記事ではローカルにあるSkillをダミーのリクエストで実行する方法について解説しています。サンプルはNode.jsだけですので、Python版も出てきて欲しいな〜と。
10月
Amazon Enables Developers to Extend Alexa’s Flash Briefing - a New Addition to the Alexa Skills Kit
AlexaにはAlexa Flash Briefing
という機能が備わっており、Alexa Appに事前に登録されている配信元(BBC Newsとか)を有効にしてAlexa, What's new?
と話しかけると、ニュースを喋ってくれます。
今回の発表で、デベロッパーがFlash Briefing Skill APIタイプのSkillを作ることで、Alexa Flash Briefingに自分のRSSフィードなどを簡単に追加することができるようになりました。
通常のSkillを同様に審査をクリアして公開されると、Alexa Appにカードが表示され有効にすることで自分のフィードがAlexa, What's new?
で聞けるようになります。
Alexa Voice Service Introduces API Update that Makes It Easier to Build Hands-Free Products
今までAmazon Echo以外のAlexa Voice Servicesを利用したデバイスはWakeワード方式ではなくボタンを押して間音声認識させる方法が多かったのですが、今回のAPIのアップデートにより、サードパーティー製の音声認識技術を使ってAmazon EchoのようにWakeワードで対話できるようになりました。
サンプルプロジェクトがGithubにあるので、コレをRaspberry Piで動かすとオリジナルのAmazon Echoを作ることが出来ます。
Amazon Music Unlimitedの登場
Amazon.com: Amazon Music Unlimited
Amazon Echo系を持っている人は$3.99/月で使える音楽ストリーミングサービス 支払い情報さえ登録されてれば、Alexaに有効にしてって話しかけるだけで使えてしまう。
少し過去にさかのぼって書いたので結構な量になりましたが、結構活発に動きがありますね。
Alexa Skills KitでSkillを自作する
先日開催されたJAWS-UG IoT専門支部 IoTサロン 2016-09でAlexa Skills Kitについて話してきたので、こちらにもスライドを貼っておきます。
AWS 認定ソリューションアーキテクト – プロフェッショナル
AWS 認定ソリューションアーキテクト – プロフェッショナルの認定試験を受けてきてきました。
関連記事:AWS 認定ソリューションアーキテクト – アソシエイト - sparkgene’s blog
結果は無事合格。
総合スコア: 66%
(65%で合格らしいので、ギリッギリ)
内訳
1.0 High Availability and Business Continuity: 75%
2.0 Costing: 75%
3.0 Deployment Management: 87%
4.0 Network Design: 75%
5.0 Data Storage: 41%
6.0 Security: 62%
7.0 Scalability & Elasticity: 69%
8.0 Cloud Migration & Hybrid Architecture: 57%
感想
試験中もストレージ周りでなんだコレとか悩んだので、Data Storageの41%は納得。試験中の感触としても6〜7割な印象だったので、合格の文字を見たときは嬉しかった。
20分残して全部解いたので、見直すとした問題を10問ほど見直して終了。
それにしても170分はほんとに長い。3時間集中力を持たすのはしんどい。気合を入れるためにRedbull飲んだら、トイレも行きたくなるし。。
さすがに3万超えの試験料なので模擬試験(4000円)も事前に受けたけど、その結果はこちら。
総合スコア: 62%(落ちてるじゃないかw)
トピックレベルのスコア:
1.0 High Availability and Business Continuity: 66%
2.0 Costing: 100%
3.0 Deployment Management: 50%
4.0 Network Design: 50%
5.0 Data Storage: 33%
6.0 Security: 62%
7.0 Scalability & Elasticity: 83%
8.0 Cloud Migration & Hybrid Architecture: 75%
模擬試験は落ちたけど、弱そうな部分を復習し直して本番に挑んだ。点数上がっている部分もあれば、下がっている部分があるので、問題によっては本番も落ちてもおかしくない状況。
ま〜、とりあえず受かったので来年のAWS Summitではお弁当もらえるかなw
畑の監視その後
前にIoTで畑を監視するという内容の記事を別のブログで書いたのですが、バージョンアップしたのでその辺りを個人ブログで紹介しようかと。 tech.recruit-mp.co.jp
全体像
新しくやったこと
- 無停電キットの導入
- カメラによる監視の追加
- アプリのオートアップデート
- 静止画からタイムプラス動画を生成する
最新版のソースはこちら
https://github.com/sparkgene/iot_farm_monitoring
無停電キットの導入
東京デバイセズが出しているソーラーUSB電源システムキット
がソーラーで発電しながら蓄電でき、USBで5vを簡単に取り出せるすぐれものです。
これを使えば、日中に発電して夜間も動作させることが可能です。
カメラによる監視の追加
センサーだけの監視ではなく、肉眼で畑の様子を見れたほうが便利だなと思ったので、カメラをセットアップしました。 ライブ配信だとsoracomの利用料がとんでもないことになりそうなので、静止画を撮ってアップロードする方式にしました。 使ったカメラモジュールはこれ。
公式のカメラモジュールで、静止画、動画の撮影が出来、専用のコマンドも用意されているのでものすごく簡単に使うことが出来ます。
raspistill -o image.jpg
たったこれだけで、静止画が撮れます。
さすがに、標準の解像度だとファイルサイズが大きくなりすぎるので、-w 1280 -h 720
とオプションを指定してサイズを抑えます。
撮影した静止画は、S3にアップロードして保存するようにしています。 AWS IoTを使って画像ファイルをbase64化して送ることも考えたのですが、あまりメリットが無さそうなので、aws cliで普通にアップするようにしています。 この場合は、awsのクレデンシャル情報が必要となるので、最低限の権限を付与したACCESS KEYを使っています。
アプリのオートアップデート
実際に畑を監視するときは遠隔地にデバイスを置くことも考えられるので、バグを修正したい時とか、新しい機能を追加したい時に気軽に触ることが出来ません。 また電源節約のため、Raspberry Piは常時ネットに接続していないので、sshで入ったり直接操作することが出来ません。 そこで、非同期でRaspberry Pi側からソースのアップデートができるようにする必要があります。
AWS IoTのDevice Shadowを利用することで、Raspberry Piがオフラインであっても次にオンラインとなった時に、設定した値を読み取ることができ、それをトリガーとしてgithubから最新のソースを取得して反映させることができるようになります。
https://github.com/sparkgene/iot_farm_monitoring/blob/master/iot_shadow.js#L31-L38
Device Shadowのソースはこんな感じでチェックしており、ローカルにあるソースのバージョンとDevice Shadowに設定されているバージョンを比較して、違う場合はgit cloneしてソースを入れ替える様になっています。
静止画からタイムプラス動画を生成する
静止画で畑の様子を見れるようにしたのですが、動画で一日の様子を見れるようにしたほうが面白いなと思い、S3にアップロードされてくる画像を元に動画を生成するようにしました。
qiita.com タイムプラス動画を作る方法はQiitaの方に上げてあるので、詳しいことはそちらを参考にしてもらえればと。
畑に置いた
さすがに畑の土真ん中に置くのは邪魔になるので道具小屋の所に置きました。
収集されるデータ
soracom → AWS IoT → Lambda → CloudWatchと流れてくるセンサーのデータ あれ、、水分の値が全然拾えてない(と言うか、小屋の脇だとカラッカラに乾燥してるのが原因)
タイムプラス動画
Raspberry Piからアップロードされてくる画像を元に、Lambdaが動画を生成してくれました。 設置した時はカメラが逆さまだったので、最初の方は逆さまですw しかも設置中の自分も写ってしまってる。。
今回の反省
24時間稼働してくれない
無停電キットで24時間運用できるようになったはずでしたが、想定よりも消費電力が大きすぎて発電が追いつかず、バッテリーが空になって2日目には動かなくなった。。。 もっと大きなソーラーパネルに置き換えれば解決しそう。
カメラモジュールの防水対策
オフィシャルなカメラはフラットケーブルでRaspberry Piと繋げるのですが、カメラ基盤がむき出しだったりと、屋外での利用に向いていない。仮で、基盤自体をバスボンドで防水加工してみたけど、ちゃんとしたケースが欲しい。あと、カメラの向きを簡単に調整できるようなマウントも欲しい。 リモートから角度調整とかもできると最高。
AWSの進化の速さ
AWS IoTも日々進化しており、当初これを作った時にはなかったのですが、現在はAWS IoTのRuleのActionとしてCloudWatchのメトリックスが追加されたので、このブログのサンプルのようにLambdaを経由する必要がなくなりました。 ただし、現状csvで送っている形式を見なおす必要はありそうです。
さいごに
家で実験している時に気になってたことが、そのまま実際の畑に持って行ったら、やっぱりダメだった。 そのまま置いてくるつもりでいたけど、見なおして出直す必要がありますね。
JAWS DAYS 2016
今年も開催されました! jawsdays2016.jaws-ug.jp
前回の参加記事はこちら sparkgene.hatenablog.com
昨年と同様、今年もHackDayのスタッフとしてお手伝いしました。 ただし、今年は当日スタッフとしてではなく、事前準備からHackDayの開催に向けた準備をお手伝いしました。 事前申し込みが1500名、当日参加が1100名を超えるような、巨大なイベントが出来上がっていくのを見れたのは非常に楽しかったです。 大きく7トラックのセッションがあり、それ以外にもスポンサーのブースが有ったり、SAに相談できたり、カルタ、麻雀など、盛りだくさんのコンテンツでした。 今年はイアホンの貸出もあり、スピーカーの声がよく聞こえて評判はかなり良かったようです。 中には、参加中のセッション以外のチャンネルを聞くという2度美味しい楽しみ方をしている人もいたようです。
キーノートの様子。 アンケートを取ったら初参加の人が6〜7割と、幅広いユーザーが参加したのも今年の特徴なのかなと。
それにしても、これほどのイベントとなると、殆どシステムの開発と同じような感じですね。 しかも、100%リモートワーク。
さまざまな会話がSlack上で行われ、やらなければならないことはチケットで管理され、たまにオフラインで集まって調整といった形は、普段の業務と変わらないです。 そして当日は、参加者が快適にイベントに参加できるように、スタッフそれぞれがその場で判断したり、相談したりして運営していくのは、リリースしたサービスの障害対応や、エンハンスに近いとも思います。
HackDay
初級編
HackDayは初級編と中級編の2つのコンテンツを用意しました。
初級編は満席で、OpenBlocks Iot + SORACOM + AWS IoT + Elasticsearch Serviceを使った、センサー情報の収集〜ビジュアライズまでを体験できるセッションでした。 ビジュアライズまでやってるのに、全部マネージドサービス使っているので、サーバレスという最強の環境です。
中級編
中級編ではMaBeeeをAWS IoT〜OpenBlocks経由で操作するというセッションでした。 ネットワークの調子が悪く、結局完走出来たのは一人だけと非常に申し訳ない結果となりましたが、一人でも完走者が出て良かったです。 MaBeeeは6月頃に発売されるようですが、すごく面白そうなので手にれたいと思います。
恒例のLT大会
一通りセッションが終わると、LT大会が始まります。とてもLTとは思えないような凝ったものもあり、ビールを飲みながら聞くのが楽しいです。 一日中チューターとして立っていたので、このタイミングでやっと椅子に座れましたw 案の定、翌日は筋肉痛です。。。
打ち上げ
去年とちがって公式な打ち上げはなかったので、有志でふらふらっと飲みに行きました。 ギネスビールとか飲みまくって、楽しく飲みました。(さすがにHubへいく元気はなかった)
11時月頃から手伝い始めてあっという間の4ヶ月でした。 次回のJAWS DAYSはどんなイベントになるか楽しみです!
sphero + leap motion + gobot = フォースの覚醒
BB-8欲しいですね!ただ、結構高い…
けど、これってspheroがベースなんですよね。 mashable.com
色々ググってると。すでに先人がいました makezine.com
そんなわけで、たまたま手元にあったspheroを改造して、手の届かないBB-8を自作してみることにしました。
まずは、つなぎ目があるのでそれに沿って切ります。 そして、外殻のギリギリにネオジム磁石が来るように、ガチャポンの入れ物を切って基盤の上に載せます。 ガチャポンを基盤に固定する必要があるので、グルーガンで固定しちゃいました。
磁石が固定できたら、半分に割ったspheroの殻を内側に段差ができないように組み合わせて、接着剤でくっつけます。
頭の部分はユザワヤで買ってきた、発泡スチロール球を半分に切って使います。
頭の底の部分には、磁石にくっつけるために金属製のクリップをノリ付けします。
色は白のままですが、とりあえず組みあがりました。BB-8の色は難しいから、 うーむ、実物と比べるとちょっと頭でっかちになってしまった… しかも、目玉の部分とか、アンテナが無いとただの雪だるまみたいだな。
Gobotでleap motionとspheroBB-8を制御
Gobotを使ってleapmotionでBB-8を操作してみようと思います。
package main import ( "fmt" "github.com/hybridgroup/gobot" "github.com/hybridgroup/gobot/platforms/leap" "github.com/hybridgroup/gobot/platforms/sphero" ) func main() { gbot := gobot.NewGobot() leapAdaptor := leap.NewLeapMotionAdaptor("leap", "127.0.0.1:6437") spheroAdaptor := sphero.NewSpheroAdaptor("Sphero", "/dev/tty.Sphero-OBG-AMP-SPP") leapDriver := leap.NewLeapMotionDriver(leapAdaptor, "leap") spheroDriver := sphero.NewSpheroDriver(spheroAdaptor, "sphero") work := func() { cnt := 0 gobot.On(leapDriver.Event("message"), func(data interface{}) { hands := data.(leap.Frame).Hands heading := 0.0 if len(hands) > 0 { if cnt > 20 { x := hands[0].Direction[0] if x > 0 { // This means 0 degree. sphero move to forward heading = 0 } else { // This means 180 degree. sphero move to backward heading = 180 } fmt.Println("heading:", heading) spheroDriver.Roll(60, uint16(heading)) cnt = 0 } else { cnt++ } } }) } robot := gobot.NewRobot("leapBot", []gobot.Connection{leapAdaptor, spheroAdaptor}, []gobot.Device{leapDriver, spheroDriver}, work, ) gbot.AddRobot(robot) gbot.Start() }
アダプターとドライバーにそれぞれleap motionとspheroを指定して、leapmotionから手の位置を取得してそれを元に動かすスクリプトです。
spheroは0〜360の数値を渡してあげるとその方向(0=前、90=右、180=後ろ、270=左)に動くので、本来であればleap motionから2軸分のデータを使って操作したほうがうまく動かせると思うんですが、座標と数値がちょっとめんどくさそうだったので手抜きしました。。 leap motionの座標
実際に動かしたムービーはこちら。
本物と比べると頭の位置が安定しないです。しかもすぐ取れちゃう。頭側も磁石にしたほうが安定するかな。 そんな訳で、スター・ウォーズの新作公開日に間に合って良かったw