きっかけはモーニングコール
きっかけは、Amazon Echo Dotでした。我が家では、Alexaの「定型アクション」という機能を使って、毎朝同じ時間に、音楽を流すアクションを追加することで、Amazon Echoを目覚ましがわりに使っています。
ただ、毎日娘が好きな「ドラえもん」のOP曲をかけていたら、だいぶ妻が飽きてしまいました。ランダムな曲を流せると良いねということでTwitterで質問してみたのです。
アレクサで毎朝決まった時間に音楽流して目覚ましがわりに使っているのですが、妻が飽きてしまったので、曲をランダムに流したいです。誰か、手軽な方法をご存知無いでしょうか?
— からあげ (@karaage0703) February 15, 2021
Amazon Echo単体で実現したいです。
すると「ジャンルで指定すれば、ジャンル内でランダムに再生されます!」とか「複数ジャンル指定もおすすめです!」など有益な情報をいただきました。
そのときふと、思いついたのが、曲にアスタリスク(*)を入力することです。これがビンゴで、毎朝ランダムに再生することができました。
みなさんからいただいたアドバイスをヒントにアレクサにモーニングコールとして毎朝ランダムに曲を流してもらう設定できたかも!
— からあげ (@karaage0703) February 16, 2021
曲として「*」を指定しました。アレクサ、正規表現理解できるっぽいですね。 pic.twitter.com/uoJMS7tPbq
Alexaは正規表現を理解できるのか?
ここで「Alexaは正規表現を理解できる?他にも色々指定できるのだろうか?」という好奇心が沸いたのと同時に、以下のような指摘もありました。
正規表現なら多分「.*」だからこれはワイルドカードだろうな https://t.co/xELrVul3H5
— dEvo (@ssaattwworg) February 17, 2021
そういえば、ワイルドカードと正規表現は違ったかも…。また、妻からも「正規表現って何?」という質問もいただいたので、改めて学び直してみることにしました。漫画で。
正規表現に関して学んだこと
正規表現が何かというのは、ここでは省略します(すみません、各自調べてください)。ソフトウェアを開発する人にとってはとっても便利な機能ですし、様々なテキストエディタが対応しているので、文字入力・編集(特にパターンのあるもの)をする人にとっては、エンジニアでなくても重要な機能となります(知っていると得するかも)。
また、先ほど出てきた「ワイルドカードと正規表現の違い」ですが、以下の記事が詳しいです。正規表現の方が上位互換的存在ですが、同じアスタリスク1つだと、意味がわかってくることに注意ですね。
そして、肝心の「Alexaが正規表現を理解できるか?」ですが、どうも正規表現自体には対応していないようです。
試しに\d{4}
と4桁の数字のみ対応するような曲名を指定してみたのですが「大丈夫・W-D4」といった、D4が直接入った曲名ばかりが出ててしまいました。
他の正規表現も色々試してみたのですが、規則性は発見できませんでした。Googleの検索演算子的なものかな?と思いORを試したりもしたのですがきかないようですし。検索した単語に含まれてない曲が再生されたりもします。
学習ベースの探索なのか、ユーザーが見えない曲のメタ情報まで検索しているのか、判断できませんでした。とりあえずランダムに再生したいなら*, ?, .
あたりの記号を入れておけばよいみたいです。
正規表現をチェックしたい人は、以下のWebサイトが便利です(紹介した正規表現の漫画の中に出てきたものです)。
まとめ
アレクサをきっかけに正規表現を復習してみたという話でした。結局肝心のアレクサの検索の仕組みはよくわかりませんでしたが、正規表現を学び直すきっかけになってよかったかなと思います。
正規表現は、昔から変わらずずっと使えるプログラムのテクニックの1つなので、なんとなく使っているという人は、一度書籍を読んだりすると、新たな発見があるかもしれません。
あと、もしアレクサの検索の仕組みを詳しく知っている人いたら教えてください(笑)