【0円で超簡単】Alexaスキルのパフォーマンスを70%改善した方法
今回は、色々なスキルで応用できるパフォーマンス改善の方法についてです。
費用は実質無料
コードの修正が基本不要で超簡単
というコスパ最強なので、Alexaスキル開発者は必見です。
効果
このスキルで実験してみました。 シンプルさを謳っているだけあって、パフォーマンスは重要です。 alexa-skills.amazon.co.jp
まずは効果を見てみましょう。
Alexa Developer Consoleの「PERFORMANCE」の「エンドポイントのレイテンシー」のデータをグラフにしました。
2つの改善を行い、最終的には、p90が1500ms から、460msに減少しました。
それでは実際にやったことを書いていきます。
1. Lambdaのランタイムの更新
シンプル時計では、Node.jsを利用しています。
ランタイムをNode.js12.x から、現時点で最新のNode.js14.x に変更しました。
これで200msの改善です。
基本的には互換性があるので、コードの変更は不要だと思いますが、念のため動作確認はしましょう。 シンプル時計の場合は、呼ばれるはずのないダミーで登録しているIntentが呼び出されるようになってしまったので、そこだけ修正しました。(謎い)
2. Provisioned Concurrency の設定
Lambdaにはコールドスタート問題というのがあります。 (詳細は調べるとたくさん出てきます。)
この問題を解決する機能が2019年の12月に発表されました。
いろいろな理由があって試してなかったのですが、840ms改善という思った以上の効果がありました。
- 最近はコールドスタート問題が改善されたという話をよく聞いていた
- そもそもシンプル時計のレスポンスはそんなに遅くないのでは?
- Lambdaの無料枠が使えない
- 処理する時以外も起動しておくのがもったいないなぁ
試したきっかけは、Alexa AWSプロモーションクレジットが使いきれなかったと言うだけですw
毎月100ドル分のクレジットがもらえる中で、Provisioned Concurrencyをメモリ:256MB、予約数:1で設定した場合、月3.5ドルくらいなので、実質無料です!
注意点としては、Provisioned Concurrencyを使う場合、aliasの利用が必要っぽいです。
シンプル時計では、Alexa側の設定エンドポイントをLATEST運用(aliasやバージョン指定なし)していたので、スキルの申請が必要でした。
(スキル自体には変更ないので、1営業日でサクッと通りました。)
まとめ
- Lambdaのランタイムの更新
- Provisioned Concurrencyの設定
を設定して70%のパフォーマンス改善しました。
そして何より、Alexa AWSプロモーションクレジット で毎月100ドルもらえるのはすごいので、まだの人は申し込みましょう。
最後に
プロモーションクレジットはスキル開発を始めた2年前に、一度申請してたのですが、最近までもらえてませんでした。
というのも、最初に申請した時に、AWSアカウントIDが不正(ハイフンが含まれていた)で、適用されてなかったそうです。
(不備があった場合も申請完了のページは表示されるので、直してもらえるといいなぁ)
最近AWS費用がかかるようになり辛くなってきたので、改めて問い合わせてみて発覚。 同じようなケースで貰えてなかった人は是非もう一度申請してみてください!
【瞑想の時間】2020年9月の振り返り
2020/6 にリリースし、約4ヶ月が経ちました。
多くの人に利用していただき、累積瞑想時間が300時間を超えました↗
1日20分を8週間(=18.6 h)瞑想を続けると効果が出ると言われています。単純計算なのであれですが、16人(=300 h / 18.6h )の平穏に貢献できていそうですね。何よりです。
というわけで、 前回の振り返り以降にやったことや気づきを書いていきます。
リリースノート
- 画面対応(APL)
- 時間の読み上げの修正
- 分析システムの改善(cron lambda -> Athena Partition Projectionに移行)
- サウンド追加(川、牧場の朝)
- レベルシステム
- 瞑想するたびに履歴カードを送信
- スキルカードの利用状況調査
今回は、大きめな機能(画面対応、レベルシステム)が多かったです。たくさんコードも書いたので、ようやくAlexaやTypeScriptになれてきて良き感じです。
Partition Projection、Step Functions、HTTP API(API Gateway)など、AWS関連で初めて触るものも多く、色々遊びながらできてるのも良かったです。(詳細については別で書くかも)
気づき
リテンション率が20%増加
瞑想というドメインや、それに関心があるユーザーの属性もあり、もとから他のスキルよりリテンション率は高い傾向がありました。そんな中、レベルシステム導入を境にさらに増加して、4週間後の復帰に関しても+20%に増えました。
- 初回に1レベル上がって気持ち良い
- 序盤はサクサクレベルが上がって気持ちよい
- 中盤以降も、継続ボーナスで習慣的に利用したくなる
という設計がうまく行ったのかなと思います。
スキルカードは利用されない
音声だけで表現するのが難しい場合に使われる方法の一つに、スキルカードがあります。スキルカードは、スマホのAlexaアプリやブラウザのアクティビティで確認できます。
アレクサ、瞑想の時間で履歴
と言うとスキルカードを送って履歴を確認できるという機能を実装していました。
しかし、全く使われないということで、瞑想するたびにスキルカードを送れば見てくれるかな?という仮説でやってみました。
結果、自動で送るようになっても、ほぼスキルカードは見ていないということがわかりました。(画像にトラッキング用のパラメータを付けて、アクセスログで集計)
確かに、暇なときにAlexaアプリのアクティビティ見るか考えると、あまりイメージわかないですね。
先日のAlexa Live 2020では、モバイルアプリとの融合を強めるような発表もありましたが、ユーザーに受け入れられるのは時間がかかるかもしれません。
画面対応しても画面付きデバイスでの利用は増えない
タイミングよくjsx-for-aplが出たのと、画面対応スキルの判定をもらってスキルストアの上位の方に表示されないかなーというのを狙ってやってみました。
結果、以前と変わらず、画面付きデバイスの割合は10%ほどで変化なしでした。
画像をおいて、タッチで少し操作できるくらいのスキルでは、画面対応スキルの称号はいただけないようです。
サウンドの追加は効果あり
2つサウンドを追加したところ、一定の利用があるので効果ありでした。
画面なしデバイスの利用が多い状況で、サウンドを増やしすぎても選びづらいという問題が生じるので、UXの検討が必要です。
お昼の利用が多い
12時~14時がこのスキルのピーク帯。
お昼休みのご飯食べたあとに使われるのかな?
イメージとしてはこんな感じでしょうか。
- 30代男性
- 会社員(家でリモートワーク)
- 誠実性高い
- 自己啓発やビジネス系の本をよく読む
説明文書いたりするときに参考にできそうです。
今後
もう少しインパクトが有るようなことをやりたいと考えてますが、すぐに動ける打ち手があまり思いつかないというのが正直なところです。しばらくは考えるが中心の期間になりそうです。
新機能が日本に来るのを待つ
Alexa Live 2020 で発表された新機能に期待しています。Quick linkで流入増加を期待したり、Skill Resumptionで終了時の体験を改善したいと考えています。
機能以外の改善
コードから少し離れて、スキルアイコンや説明文、LP作成や宣伝など、後回しにしていたものをちゃんとやろうと思います。(苦手分野なので、気楽に)
この本面白かったのでちょっと実践してみようと思います。
瞑想のガイド
前回からも考えていることですが、瞑想のやり方を説明して、瞑想初心者の人にも、瞑想するきっかけを提供したいと思っています。
瞑想の時間はベテランが黙々と使うようで、初心者向けには別でスキルを作った方がシンプルでいいかなと考えています。
続きを読む
【瞑想の時間】リリース2カ月の振り返り
2020/6/8にリリースし、2ヶ月が経ちました。
多くの人に利用していただき、とても嬉しい限りです。
そして8/5になんと...
累積の瞑想時間が100時間を超えました↗
本当にありがとうございます。
(※測定の仕組み導入後の記録なので、本当はもう少し前に超えているかも)
というわけで、ここ最近のやったことや気づきを書いていきます。
リリースノート
- リファクタ&テスト
- twitterで毎日のサマリーをつぶやく仕組み @v_meditation
- BGMの選択機能(1種類固定から2種類 + 無音 + ランダムから選べるように)
- 分析用の基盤作成
- BGM追加(夏の夜)
- 起動時にアップデート情報をお知らせする機能
- 途中でBGMが無音になる問題の修正 詳細
- 画面付き対応(AudioPlayerにBackground Image追加)
- サウンド設定の改善
- twitterの文言変更
- ask-cli@v2への移行
- 履歴の確認機能
- サウンドファイルの最適化(s3の転送量削減)
- 起動時メッセージの改善
- 新しい機能
- 開発系の改善
- 分析系の仕組み
- 細かな改善
をバランス良く出来ていて、個人的に開発の進め方も大満足。
気づき
7月下旬にスキルの有効化数が急増する
とあるユーザーさんからバグ報告&フィードバックをもらい、対応したところ、スキルのレビューを書いてもらった。それきっかけで表示順が上がり流入増えたのかなーという予想。Alexaのセールがあると急増するという話もあるが、この期間はやってなさそう。
レビュー大事だなと思いつつ、このスキル、終了するという行為を明示的にあまり使わないので、「レビューをつけますか?」が差し込まれる余地がないという欠点が...。
レビュー数も、他のスキルと比較して(レビュー数:起動回数)圧倒的に少ないので、改善の余地あり。
90%のユーザーがデフォルトBGMを利用
他の瞑想スマホアプリを見るとBGMが豊富なアプリが多い。
真似して増やしてみたけども、90%はデフォルトのままで使われているという状況。
最近追加した「夏の夜」という鈴虫の音に至っては誰も使ってないので、他に変えよう...(キーンとして不快なのかな...)
スキルの説明や初回起動時には案内しているが、声のUIで設定を認知させるの難しいんじゃないかなーという気がする。
90%のデバイスが画面なし
利用デバイスに関しては、圧倒的に画面なしのEcho Dotなどが多い。
画面なし:丸形デバイス(Echo Spot):長方形デバイス(Echo Show)=18:1:1
一番安いし最初に買うのはそうだよなーという感じ。
APLの新しい機能追加されてるけども、もうちょっと画面付きデバイスの普及が追いついてないのが見えてきます。
履歴確認機能があまり使われない😢
logをCWLogs -> S3 -> Athenaで集計 -> S3と技術的には頑張って作ったのですが、ハッピーパスには乗らないので、あまり使われないのかな。毎回送るようにしても当たり前に見れるようにするのが良さそう。
今後
色々学びがあるわけですが、引き続き頑張って開発していこうと思います。
画面付きデバイスにしっかり対応する
検索対策で画面付きデバイス対応を突貫で入れてみたのですが、やっぱり甘くはありませんでした。APLのアップデートもあり色々使ってみたいのと、これまで触ってない分野なのでいい機会なのでガッツリやろうと思います。
いろいろなBGMを使ってもらう
画面付きデバイス対応とも絡んでくるのですが、やはり他のスマホアプリ見てると重要そうなので、もう少し分散させたいお気持ち。良いサウンドも探さねば。
レベル・経験値システムの追加
リングフィットアドベンチャーを最近やっているのですが、このゲーム、習慣化やモチベアップの参考になる部分がたくさんあります。瞑想の時間でも、起動回数とトータル瞑想時間は確認できるのですが、やっぱりサクサクあがっていく感じがあると続くと思うので導入しようと思います。
瞑想のガイド
瞑想初めてやるんだけど!という人に対してはあまり親切ではなかったので、瞑想のやり方や、いろいろな種類の瞑想についての雑学も学べるようになると良いかなと。
続きを読む
瞑想の時間 - アップデート(v2.0)
【🎉6/29 アップデート🎉】
— 瞑想の時間@Alexaスキル公開中 (@v_meditation) June 29, 2020
サウンド🎧が選べるようになりました。
デフォルトの自然公園🌲、海🌊、無音🌖、そして(無音以外から)ランダム🎲の4つが選べます。
スキル起動後の「何分行いますか?」のあとに、「サウンド設定」と言って設定してみましょう!https://t.co/eCVUHaMkXt
更新しました。
申請から1時間で公開という超速審査。
いつもありがとうございます。
1年前に無音のオーディオファイルを使ったスキルを申請したときは、
「お客様の信頼を維持するために、無音のオーディオファイルを使用してセッションを維持するスキルについてのポリシーを再検討しています」
と言われてリジェクトされました。
あれからアップデートあったかなと気になっていたのと、やっぱり人によってはウルサイと思う人もいると思うので早めに入れたかった機能。
無事通ってよかったです。
開発話
今回は実装面は1インテント作るだけだったのでそれほど大変じゃなかった。 ただ今後も開発していくために、テスト作ったりきれいにリファクタもやっておいた。 Github Actionsも作ってみてpushトリガーでテスト走るようにしたのでだいぶ開発効率上がってきたー!
ユニットテストは普通に作ればいいけど、S3連携周りの部分がcredentialどうしようかというので、CI化はできてないけども。
手元で統合テストやる分には権限あるからいいけど、Actions用にIAM発行するのも微妙だなーというお気持ち。
(権限強すぎるのはいやだし、かといってスキルごとにIAM発行するのもめんどくさい...)
書いてて思ったけど、localstackとか使えばいけるのかな。
試してみても良さそう。
オーディオファイルの編集も、だいぶ楽にできるようになったのも収穫。
今まではGarbageBandで手動でぺたぺたぽちぽちやってて大変だったけど、ffmpegでコマンドで編集できるようになった。
volumeやビットレート変更、指定秒数(loop)に拡張などコマンドで出来るのすごいわ。
今後
毎日使ってくれる人がいて、総瞑想時間もすごく右肩上がりなので嬉しい限りです。
この調子でどんどん開発していくのですが、やることとしては
分析系の強化
とかを分析できるようにGA連携したり、Dashbord作ってみるというのが一つ
APL対応
この有名なスキルを触ってて思ったのだが、やっぱり画像一枚あるだけでも全然印象が違うので、対応しておきたい。
あと時々開催されるキャンペーンがおもしろくて、
キャンペーン告知もして、期間限定でスタンプもらえて、キャンペーン参加人数を表示して他のみんなと頑張りましょうという仕組みが参考になりそうだなーと。
APLやるなら履歴の可視化もやってみたいかなー。ちょっと先になりそうだけど。
瞑想後にツイート機能
瞑想やってる人を見て回ってると、"#朝の習慣"とかつけて毎日つぶやいてる人が結構いる。
そういう人たち向けにあると嬉しいかなーと思いつつ、個人的には使うか怪しいので悩みどころ。
とまあ、色々ありますがどれからやるかなー。
1分で設定出来る!Alexaの時短テクニック
Alexaを使っている人におすすめの時短テクニックの紹介です。
我が家には時計がありません。
時間を確認するときは、スマホを見るか、Alexaに聞きます。
天気と時間がAlexaの利用目的の上位を占めていると個人的に思っているのですが、
朝の忙しい時間帯に使うと、煩わしく感じませんか?
「アレクサ、何時?」
「東京都の現地時間は、2020年6月8日、午前7時56分です。」
電車の出発ギリギリで急いでいるときに、知りたい時刻(時と分)を最後まで焦らすAlexaさん。場所や日付とかよりも早く時間を教えてほしい!
そんなお悩みを解決するスキルを紹介します。
このシンプル時計は、時刻だけを教えてくれるスキルです。
「アレクサ、何時?」
「7時56分です。」
比較してみると半分以下というシンプルさです。
文字数 | 読み上げ時間 | |
Alexa標準 | 30文字 | 8.41秒 |
シンプル時計 | 8文字 | 3.26秒 |
設定方法はこちらです。
まずはスキルを有効にします。
そして、スマホアプリのAlexaアプリを起動し、定形アクションを登録します。
定形アクションは右上の+ボタンで作成できます。
次に、定形アクション名を入力します。今回は時計という名前にします。
次は開始フレーズを設定します。
ここで入力した文字が呼び出し名になります。
(スキル名を省略できるので非常に便利)
今回は「何時」で呼び出すことにします。
ここまで出来たら、もう少しです。
次はアクションを追加します。
スキルを選択し、シンプル時計を追加します。
最後に、デバイスを選択して、戻るを押すと完了です!
よきAlexaライフを。
楽して受かる!アロマ検定 アロマのクイズ
アロマテラピー検定を受験予定の方に役立てばと思い、試験対策ポイントと勉強用アプリを作ったので紹介です。
昨年11月にアロマテラピー検定(1級)を受験しました。2ヶ月前からテキストを読み始めましたが、なかなか進まず実際に勉強し始めたのは2週間前くらいだったという記憶。もちろん全部を完璧にする時間もなく、効率重視・取捨選択の試験対策を行なってギリギリ受かりました。
(香りテストという、匂いを嗅いで何の精油か当てる問題は全問外しました)
試験の傾向
個人的な印象では、試験は大きく3つに分類できました。(出題数の割合)
- 一般常識でなんとかなる問題(30%)
- 歴史や人名などの知識問題(10%)
- 精油に関する知識問題(60%)
一般教養で対応できる問題
- 精油を飲んでよいですか
- 幼児に使用してよいですか
- 効果(病気に効くなど)を謳ってよいですか
常識的に考えたり、違和感のある選択肢を消去法で消していくことで対応できます。テキストを一度流し読みし、頭の片隅に入っていれば十分対応できる問題です。
歴史や人名などの知識問題
- 歴史的な本の書かれた時代はいつか
- 歴史的なアロマの薬物誌の著者は誰か
- 歴史的に正しいのはどれか
精油にまつわる歴史や、精油を作った人に関する問題も少し出題されます。しかし、あまり興味が湧かないのと、覚える量が多い割に出題数が少ないので、捨て問題として切りました。(合格基準は、正答率80%なので捨てても何とかなります。勘で当たればラッキーです。)
精油に関する知識問題
- ラベンダーは何科か
- イランイランはどのようにして抽出するか
- レモングラスはどこの部位から抽出するか
科目・抽出方法・抽出部位を問う問題が非常に多く、ここを抑えることが重要です。出題される精油の種類は、級によって変わりますが、1級だと30種類の精油が出題範囲となっています。
30種類 × 3項目(科目・抽出方法・抽出部位)の90個も覚えるの?と思うかもしれませんが、ある程度偏っているので、特殊系を覚えることで効率よく暗記できます。
(大半がシソ科・水蒸気蒸留法なので、違う精油だけ覚えましょう。)
と言うわけで、この精油に関する知識問題を効率よく覚えるためのAlexaスキル(アプリ)を作りました。完全無料です。
アロマのクイズ
このスキルは、30種類の精油からランダムで問題を出されるので、その精油の科目・抽出方法・抽出部位を答えるというシンプルなものです。
tekuto: 「アレクサ、アロマのクイズを開いて」
# 第1問
Alexa: イランイランは何科で抽出方法と抽出部位はなに?
tekuto: 「バンレイシ科、花、水蒸気蒸留法」
Alexa: 正解!イランイランは、バンレイシ科、花、水蒸気蒸留法です
# 第2問
Alexa: ラベンダーは何科で抽出方法と抽出部位はなに?
(...繰り返し)
喩えるならば声で答える単語カードのようなイメージです。
声に出すことで、テキストを見るだけよりも暗記効率が高いと言うメリットがあります。
気軽にできるように、問題の途中でスキルを中断した場合も、次回起動時に途中から再開できるようになっています。
間違った問題一覧をカードで送るので、スマホなどのAlexaアプリのアクティビティで確認して復習出来ます。
また、Alexaには「定型アクション」という毎日決まった時間にスキルを起動する機能があります。この機能と組み合わせて「毎朝7時に目覚ましを鳴らした後に、アロマのクイズを開いて3問答える」というような習慣を作ると、コツコツ覚えることができます。是非試してみてください。
最後に
答えに迷ったら、ラベンダー・シソ科・水蒸気蒸留法を選ぶと正解する確率が一番高いです。
そして、ラベンダーは最強です。
検定受けて一番良かったことは、ラベンダーがスゴイということを知ったことです。実際に、寝る前にラベンダーのアロマを使うようにしたところ、スマートウォッチで測っている睡眠スコアの平均が75点から85点に上がりました。目覚めも良くなったと実感出来るほど変わります。
勉強だけでなく、使って体感するのが最も効率的に覚えるので、楽しみながら試験頑張りましょう!