今月も恒例の @gaomarさん主催の「大阪スマートスピーカーミーティング」でLTしてきました。11回目です!私のLTも5回目!いつもありがとうございます!>@gaomarさん
今回は、福岡や札幌とも繋いでの3拠点中継、ということでいろいろな話がたくさん聞けて非常に楽しかったです!
資料
動画(43:40〜1:03:36あたり)
動画の撮影、いつもありがとうございます!>@diberidarshiさん
内容
Alexaの標準機能であるリマインダー、使ってる方も多いと思います。うちでもサプリの飲み忘れを防ぐために使ってますが、とても便利です。このような習慣的な取り組みを継続するのにリマインダーや通知という仕組みはとても効果的で、これを自分のカスタムスキルにも活かせれば、利用者の利便性を高めるとともに、スキルの利用促進にもつながるので、ぜひ使っていきましょう、という話でした。
リマインダーの実装についてはいくつかブログ等の記事はあるものの、タイマー的な「相対指定」が多く、カレンダー的な「絶対指定」について触れられているものがあまりありませんでした。スキルの継続利用を目的とした場合(ユーザも開発者も)、絶対指定のニーズは高いんではないかな、ということでそのあたりを中心に、リマインダーのガイドラインだったり、UX的な話も含めて、手っ取り早くポイントを押さえた感じでまとめたつもりです。皆様の参考になれば幸いです。
あと、Voiceflowでのリマインダーは、ブロック少し多いですし、現状は繰り返しのリマインダーはできないという制限もありますが、非常に流れもわかりやすく、かんたんに実装できますので、こちらもぜひぜひトライしてみてください!
補足
資料の中では記載していないサンプルコードをgithubに上げておきます。UXの話をしておきながら、そこは考慮ができていないコードになっています、ごめんなさい。こうすればよいのではないか?というアイデアがあれば是非お願いします。
ソースコードの一部について補足します。
AMAZON.Time
AMAZON.Timeは時間を言うと"HH:MM"の形式でスキルに渡してくれます。人間らしい言い方、例えば「夜の12時」とかというと「00:00」、「昼の12字」とかというと「12:00」を返してくれたりして、非常に便利なんですが、一部例外がありして、「午前」「午後」「夜」とか一部の広い範囲の表現の場合は「MO」「AF」「NI」みたいな異なるフォーマットで渡ってくるきます。なので、「HH:MM」のフォーマットで渡ってこなかった場合に限り、時間を固定する処理を入れています。
let hh, mm; switch (hhmm) { case 'MO': hh = '09'; mm = '00'; break; case 'AF': hh = '13'; mm = '00'; break; case 'EV': hh = '18'; mm = '00'; break; case 'NI': hh = '21'; mm = '00'; break; default: [hh, mm] = hhmm.split(":"); }
もっといいやり方あると思いますが、まあサンプルなので雑にまとめてます。時間の場合にはこういう場合もあるよ、ということで。
AMAZON.Timeについてはこちらをご覧ください
Voiceflowの場合
Voiceflowで毎日とかの繰り返しについては、公式にまだサポートしていないという回答をもらいました。
ただ少しヒントももらって、Integration BlockでリマインダーAPI直接叩けばいいんじゃないか、と言うのを思いついたので、また後日試してみたいと思います。今回のやつもチュートリアル的に別にまとめたいと思います。
あと、要望リストにも載せてもらえました!Voiceflowのこのスピード感、とても期待が持てますね!
追記:2019/09/27 記事の修正をしてませんでしたが、3週間後ぐらいに「毎日とかの繰り返しにも対応したよ!」みたいな連絡をもらってて、今は使えます!やっぱりこのスピード感は素晴らしいです!詳しくは以下もご覧ください。
そうそう、今回のスマートスピーカーミーティングではVoiceflow関連のLTが複数ありました!始めたばっかりでもGoogleスプレッドシート連携とかやってて、やっぱりVoiceflowの敷居の低さは素晴らしいですね。かんたんにスキル開発にチャレンジできますので、興味がある方はFacebookに日本語ユーザグループあります!そちらにも参加してみてください!
https://www.facebook.com/groups/vfjug/
参考にさせていただいたサイト
非常に多くのサイトを参考にさせていただきました。ありがとうございます!資料の中でも紹介していますが、順不同で以下に貼っときます。是非御覧ください。
- 公式ブログです。基本はここ。
- 相対指定の場合です。スッキリまとまっててわかりやすいです。
- リマインダーがリリースされたときに(多分)一番最初に実装されていたエムティーアイさんのブログです。毎日の繰り返しという最もニーズ高いリマンだーについて書かれています。なお、当時はリマインダーAPIへのリクエスト処理を書かないといけなかったのですが、今はServiceClientFactoryを使えるので簡単にかけるようになっています。
- リマインダーオブジェクトについて記載されています。エムティーアイさんのブログにも書いてありますが、時間のフォーマット、最初にハマりましてとても助かりました。
- あと、今回のネタの発端は、#AAJUG京都のVol.0でAlexa Champion岡本さんが言っていた「Alexaにはホーム画面のようなものがない」という話と、@sitoppさんのQiitaの記事についての岡本さんとのTwitterでのやりとりでした。非常に勉強になりました。ありがとうございます!> 岡本さん、@sitoppさん
めっちゃ知見ですなー、参考になる/ https://t.co/2xOz96BlZX
— kun432@Voiceflow夏休みAdvent Calendar完走! (@kun432) July 15, 2019
後からだとやってくんない場合多そう、、、
— kun432@Voiceflow夏休みAdvent Calendar完走! (@kun432) July 16, 2019
あと、バージョンアップして機能追加とかの場合、めんどくさそう
— kun432@Voiceflow夏休みAdvent Calendar完走! (@kun432) July 16, 2019
最後に
次回は8/29だそうです。もちろん参加しますし、LTしますよ!このために色々調べてスキル作って資料に落とすという「LT駆動型開発」はやっぱりいいですね。何はなくともネタ探してインプット&アウトプットできるので、とてもおすすめです!
ということで、もし興味があれば是非スマートスピーカーミーティング、お越しください。みんなでゆるーく楽しみましょう!
今回もありがとうございました!明日(というかもう今日ですが)はガールズハッカソンでスタッフします。もしお時間合えば是非お越しください〜