kun432's blog

Alexaなどスマートスピーカーの話題中心に、Voiceflowの日本語情報を発信してます。たまにAWSやkubernetesなど。

〜スマートスピーカーやVoiceflowの記事は右メニューのカテゴリからどうぞ。〜

Voiceflow Updates: AlexaとGoogleでプロジェクトが完全に分かれるようになりました

f:id:kun432:20200918173639p:plain

VoiceflowはAlexaスキル/Googleアクションの両方に対応していますが、プロジェクトの管理の仕方が変わりました。

目次

概要

この切り替えは、これまでは画面上部で変更できていました。

f:id:kun432:20200620194738p:plain

ただ、これにはいくつかの問題がありました。

そもそもAlexaとGoogleで提供可能な機能が違う

例えばAlexaで作ったプロジェクトをGoogle向けに切り替えただけで動く、というわけではなく、使えない機能などが出てきてしまいます。例えば、ブロックにあるメニューのうち、”Channel"というのがプラットフォームに特化したものになります。見てみましょう。

Alexaの場合(すいません、βテストに参加しているので、普通は見れないブロックも見えてます)

f:id:kun432:20200918174536p:plain

Googleの場合

f:id:kun432:20200918174644p:plain

全然違いますね。Alexa向けに作ったプロジェクトで、Googleで使えないブロックが含まれていた場合、それらは使えないので、修正する必要が出てきてしまいます。

AlexaとGoogleで共通な機能でも中身が違う

また、Alexa/Google共通のブロックでも使い方が変わってくるものもあります。例えば、インテント。ビルトインで使えるインテントもこれだけ違います。

Alexaの場合(ちょっと画像編集して一覧で見れるようにしてます)

f:id:kun432:20200918180123p:plain

Googleの場合。実はGoogleの場合はビルトインインテントがないのですね・・・(Dialogflowにはもちろんありますので、Voiceflowで実装されていないということだと思います。)

f:id:kun432:20200918180908p:plain

つまり、現状のVoiceflowだと、Googleの場合は「Yes」や「No」みたいなものも、カスタムインテントですべて作らないといけないということになりますね。それはしょうがないとしても、逆にGoogleからAlexaに戻した場合、Alexaには「Yes」「No」のビルトインインテントがあるので、おそらくバッティングすることになります・・・

じゃあどうするか?(これまで)

じゃあ、同じプロジェクトを、AlexaスキルとGoogleアクションの両方に対応させたい、となった場合、これまではどうするのがよかったか?というと、プロジェクトを分けることだったと思います。例えば、

  • まずAlexaスキル向けに作る
  • そのプロジェクトをコピーして、Googleアクションに切り替え
  • Googleアクション向けに修正する
  • 同じ機能を追加したければ、両方のプロジェクトに追加する

という感じです。個人的には、切り替えてサラッと動くわけではないし、都度変更していく手間を考えると、1つのプロジェクトで切り替えるよりは、最初からプロジェクトを分けてしまったほうが良い、と感じていました。

今回のアップデート

ということで、今回のアップデートですが、この切替機能がなくなり、プロジェクト作成時にどちらかを選ぶことになります。プロジェクトを作成してみましょう。"Create Project"をクリックします。

f:id:kun432:20200919011040p:plain

プロジェクト名、アイコン画像を設定して、"Continue"をクリックします。

f:id:kun432:20200919011132p:plain

はい、ここですね。ここでAlexaスキル向けか、Googleアクション向けを決めることになります。今回はAlexaを選択します。

f:id:kun432:20200919011541p:plain

最後に、呼び出し名と言語を設定して"Create Project"をクリックします。

f:id:kun432:20200919011655p:plain

Alexaスキル用プロジェクトができました。画面上部の切り替えスイッチはありませんね。一旦プロジェクト一覧画面に戻ってみましょう。

f:id:kun432:20200919011929p:plain

作成したプロジェクトをコピーしてみます。

f:id:kun432:20200919011956p:plain

Alexaスキル用プロジェクトとしてコピーされます。つまり、プロジェクトのコピーなどでも切り替えができないということです。

f:id:kun432:20200919012025p:plain

Alexa/Googleの両方で同じスキルをリリースしたい場合は?

ではプロジェクトをAlexa/Googleごとに1から作らないといけないのか、というと、一応逃げ道はあるようです。VoiceflowのChangeLogに記載されている内容を抜粋して拙訳します。

  • 異なるチャンネル(Alexa or Google)のプロジェクト間でブロックをコピー+ペーストすることは可能です。コピー元のプロジェクトでチャンネル固有のブロックが含まれていた場合、コピー先のチャンネルでは機能しません。

つまり、プロジェクトを開いて、ブロックをコピー、もう一つのプロジェクトをペーストすればいけるということですね。例えば、Alexaスキル向けプロジェクトをGoogle向けプロジェクトにコピペする場合だと、まずこんな感じで範囲選択して、

f:id:kun432:20200919022648p:plain

Windowsの場合はCtrl+C、Macの場合はCommand+Cでコピーします。以下のように表示されればコピーされています。

f:id:kun432:20200919022804p:plain

でAlexa向けプロジェクトから抜けて、Goole向けプロジェクトを開いてペーストすればOKです。ただし、本来は対応していないブロックなどもコピーされてしまいます。例えば、以下の例だとDisplay BlockはAlexaのみなので、Googleの場合は削除しないと正しく動作しないようです。

f:id:kun432:20200919023134p:plain

インテントやスロットなどもほぼ引き継がれるようですが、ビルトインのインテントやスロットの場合はうまく引き継がれない場合がありますので、修正が必要です。

f:id:kun432:20200919023300p:plain

以前に両方アップロードしていたプロジェクトはどうなるの?

これもChangeLogに載っています。

  • 過去にAlexaとGoogleの両方にアップロードしていたプロジェクトは、プロジェクトのダッシュボードに、各チャンネルごとにそれぞれ別のプロジェクトとして表示されます。

つまり、2つのプロジェクトになっているということですね。どちらか片方だけしか使えなくなるというわけではなさそうです。安心ですね。

まとめ

今回の変更の背景は、以下のChangeLogに載っています。

DeepLで日本語翻訳したものに少し拙訳を入れたものを以下に掲載します。

なぜこれを構築したのか?

私たちが最初にVoiceflowを構築したとき、私たちの意図は「一度構築したら、どこでも公開できる」プラットフォームを作ることでした。この2年間で、AlexaとGoogleアシスタントは提供するサービスを拡大し続けており、それぞれのチャンネルは違う方向に向かっています。もし私たちが「すべてのチャンネルに共通の単一のプロジェクト」を続けるとしたら、それは両方のチャンネルで共通の機能しか提供できないことを意味します。

私たちの目標は、各チャンネルが提供しているすべての機能に対応できるようにすることであり、これを実現するためにはそれぞれのチャンネル用にプロジェクトを独立させざるを得ませんでした。現時点では構造的な変更に過ぎませんが、AlexaやGoogle アシスタント、そして今後のロードマップで紹介することになる新しいチャンネルに、より素晴らしい機能を提供できるための扉が開かれました。

つまり、当初はAlexa/Googleの違いをVoiceflowが吸収するという方針だったのが、それぞれが別々のやり方でどんどん変化していく中で、徐々に厳しくなってきた、ということかなぁと思います。

ユーザの立場としては、できるだけ同じやり方でやりたいという思いもあるのですが、個人的には今回のアップデートはむしろ歓迎したいですね。というのも、現在のVoiceflowのGoogle対応は、冒頭でご紹介した通り、

  • Alexa固有の機能は多数対応しているけど、Google固有の機能は全く対応していない
  • ビルトのインインテントは微妙に異なるが、Googleにもないわけではない。が、現状はすべてカスタムインテントとして実装する必要がある

といった点に加え、

  • Alexaだと開発者アカウントとリンクしてアップロードするだけだが、Googleの場合は手動で多数の事前準備が必要、かつ、プロジェクトごとに行う必要があり、非常に手間
  • 共通のブロックできちんと動かないものがある(Stream Blockなどは少し不具合があると認識しています)

など、Alexa対応と比較すると、非常に弱いんですね。これがプラットフォームごとに独立することで影響しあわなくなれば、一気にGoogle対応が進むことを期待できるのではないかと。まあ個人の勝手な意見ではありますが・・・

ということで、マルチプラットフォーム向けにVoiceflowを使っている/使おうと思っている場合は少し注意が必要ですよ、という話でした。今回のアップデートも含めて、ぜひぜひGoogle対応も進めていってほしいですね!