44回のAlexaスキル申請で延べ76個の指摘を受けたので、スキル申請の感想と指摘内容をまとめました

こんにちは。

2018年もいろいろありましたが、この1年私が取り組んできたことのひとつにAmazon EchoのAlexaスキル開発があります。

blog.wackwack.net


年明けにAmazonEchoを入手して以来、10個のスキルを公開しました。スキルの申請はアップデートも含めて合計44回、そして延べ76項目のダメ出しを受けました。

明らかなデバッグ不足でリジェクトされたものもあれば、「え、これもだめなの?」と思うものもありました。

そこで今回は2018年に初挑戦したAlexaスキル申請の感想といただいた指摘の内容を振り返ってみます。これからAlexaスキル開発に取り組む人の参考になれば幸いです。

Alexaスキル申請の感想

まずは実際に44回のAlexaスキル申請を行い、審査を受けて感じたことを書いてみます。

レスポンスが早い

とにかくこれです。申請する前は「1週間ぐらいかかるのかな」と思っていましたが、ほとんどの場合は審査を出してから翌営業日には結果が出ます。

44回の申請について、審査結果のフィードバックが返ってくるまでの期間をまとめました。

日数 回数
0日 18回
1日 23回
2日 1回
3日 1回
4日 1回

0日は当日中または休日に申請して翌営業日にレスポンスがあったものをカウントしました。

ご覧のとおりめちゃくちゃ早いです。スキル申請が立て込む時期……があるのかはわかりませんが、基本的にあっという間にレスポンスが返ってきます。

審査は丁寧

審査の指摘が非常に丁寧です。具体的に事象を発生させる手順まで記載されています。

例えばこんな感じです。

  1. いずれかのスロットに無効または空のスロット値を指定して1つ以上のインテントを呼び出した際、スキルがエラーを返します。

該当箇所:GetPointDayTrashes、{DaySlot} に無効の値

再現手順:

ユーザー:アレクサ 今日 の ゴミ出し を 開い て

スキル :今日のゴミ出しをお知らせします。今日のゴミ出しは?と聞いてください。

ユーザー:カレー ライス に 出す ごみ は

スキル :スキルからの応答に問題があります

審査はどんどん細かくなる

新規のスキル申請だけではなく、アップデートにも取り組んできました。

その中で感じたのが審査項目が増え、より細かくなっているということです。


アップデートの申請時に、

「前回の申請時にはそんなこと言ってなかったじゃないか!」

といように、修正を加えていない実装済みの機能にまで指摘が入ることもありました。


1度審査が通ったからと言って、次も大丈夫というわけではありません。もし公開日の目標があるなら余裕を持って審査に出しましょう。

なお、アップデートの審査がリジェクトされたとしても公開済みのスキルが削除されることは無いのでご安心を。

クオリティは審査されない

「こんなスキルを申請して大丈夫なんだろうか」

「誰にも需要がないのでは.....」


と考える人もいるのではないでしょうか。でも(今のところは)大丈夫。Alexaスキルの審査では、スキルのクオリティ自体は審査されません。

スキルでやりたいことさえきちんと伝われば、「こんなレベルの低いスキルは公開できませーん」などと言われることはまずありません。


「それもどうなの?」とは思いますし、事実SNSなど見ているとスキルのクオリティに関する批判もたまに見受けられます。


だがしかし!それは開発者ではなく提供側(Amazon)が考えることと割り切って、開発者はとにかく自分の作りたいものを作り、当たって砕けろ精神でアグレッシブに取り組むのが良いと思います。

分からないことは質問しよう

スキル審査結果のメールには「わからないことがあればここから質問してね」というリンクが添付されています。

分からなければ遠慮せずにどんどん質問しましょう。

たとえば、

  • このエラーが再現しないんだけど、発生パターンを教えて!
  • これはこういう意図で作っているので問題ないのでは?
  • どのドキュメントを見ればいいですか!?

など、基本的に何でも答えてくれます。


またスキル審査同様、結果の問い合わせに対する回答も概ね1営業日以内で返ってきます。

44回の審査で受けた指摘の解説

それでは私が2018年の計44回の審査で受けた延べ76個の指摘の詳細をご紹介します。()の中は延べ回数です。

スキル応答がエラー(10回)

これはAlexaが

「スキルがリクエストに正しく応答できませんでした」

とか、

「スキルの応答に問題があります」

と返すものです。

テスト不足が根本原因ですが、Amazonのテスターさんは予想外の言葉を投げかけている場合もあるので、ありがたく受け入れましょう。


基本的にはログ(AWS Lambdaを使っていればCloud Watch)を見てデバッグしていきましょう。

スキルの応答が不適切(8回)

これはAlexaがユーザーが期待する文脈にそぐわない応答を返した場合の指摘です。

例えば以下の例では、「リセットをキャンセルする」と言っているのに、Alexaがそれを無視する形でリセットしています。

ユーザー:アレクサ、今日のやることを開いて

スキル :曜日ごとのやることを登録して確認できます。やることを確認するには「今日のやることは?」と話しかけてください

ユーザー:いつ も やる こと を リセット

スキル :いつも のやることをリセットします。よろしいですか?

ユーザー:いいえ

スキル :毎日のやることをリセットしました

様々な原因が考えられますが、私の場合はスロット値に対する処理の考慮不足が多かったです。

スキルの呼び出し名NG(7回)

何気によく指摘されるのがこちら。

Alexaスキルには呼び出し名の要件があります。

私が最も指摘を受けたのは「ひとつの言葉だけじゃだめ!」という点です。

例えば以下の呼び出し名は全て「ひとつの言葉」と見なされリジェクトされました。

  • ゴミ出し(「今日のゴミ出し」ならOK)
  • マイタイマー(「オリジナルタイマー」ならOK)
  • お年玉帳(「お年玉の記録」ならOK)


また上記の点はクリアしていてもAmazon Echoの標準機能と紛らわしい呼び出し名はNG」というものもあります。この辺は判断基準が難しいので、ダメ元で申請してみるしかないかな、と思います。

スキル説明文のサンプル発話が無い(7回)

スキルストアに公開された際に表示される呼び出し例でスキルが反応しない場合の指摘です。

呼び出し例

200%確認不足、テスト不足によるものです。この指摘はなるべく減らす努力をしたいですね。

プライバシーポリシーページが表示できない(7回)

アカウントリンクを行うスキルや個人情報の収集を行うスキルはプライバシーポリシーページが必須です。

そのページが表示できないというものですが、私の場合は少し特殊な指摘でした。

それは、

「WebとAndroidのAlexaアプリでは表示できるけど、iPhoneのAlexaアプリだと表示できない」

という謎のエラーでした。


iPhoneの実機が無くて検証ができず途方に暮れたのですがfavicon.icoを準備することで解消しました。

本当にそれが原因なのかは断定できないのですが、もしも同じ指摘を受けた場合は参考にしてみてください。

スキルの応答と状態が不一致(7回)

少しわかりにくいのですが、

  • Alexaの発話が問いかけの形で終わったのに、スキル(セッション)が終了している。
  • Alexaが問いかけていないのに、スキル(セッション)が終了しない。

というようにユーザーが期待しているものとAlexaスキルの状態が一致しない場合の指摘です。


例えば「アレクサ、ご飯食べたよ」と発話して、Alexaが何かコメントを返す場合、

アレクサ「味はいかがでしたか?」(スキル終了)

と応答した場合、Alexaの発話が疑問形で終わっているため、ユーザーの発話を促していると判断されます。そのため疑問形の応答でスキルを終了してはいけません。


逆にスキルを起動した際に、

アレクサ「このスキルではあなたのご飯食べた報告にコメントをします。」(ユーザーの発話待ち)

だけでは、NGです。スキル起動時にはユーザーのコメントを待ち受ける形になるため、

アレクサ「ご飯食べたよと話しかけてください」

のように、ユーザーの発話を促す必要があります。

ホームカードが必要または情報が不足(7回)

ユーザーの住所情報の利用やアカウントリンクを要する場合、その旨はAlexaアプリのホームカードに表示する必要があります。

またアプリにカードを表示した場合は、Alexaの返答で「カード見てね!」と伝える必要があり、それらが漏れているとこの指摘を受けます。

サンプル発話が足りない(6回)

Amazonのテスターさんたちはテストするだけでなく中身も見ています。

インテントを起動するための発話パターンが少ない場合にこのような指摘を受けます。

微妙に異なる言い回しをとにかくたくさん登録しましょう。

アカウントリンクページのドメイン所有が確認できない(4回)

外部サービスのアカウントを利用した機能を提供する場合には、Webページを経由してアカウントリンクを行います。

この時アカウントリンクを実施するためのページドメインの所有者情報が、スキル開発者の情報と一致する必要があるのです。

具体的にはWhoisで取得される情報(名前、住所、電話番号)AmazonDeveloperコンソールの会社情報を合わせます。


ということは、Whois経由で自分の個人情報を全世界に公開することになるため、個人開発者にとっては心理的なハードルが高い問題です。

私は審査が通ったら即座に代理公開に戻す、という微妙な方法で対応しています。


また外部サービス(TwitterFacebookなど)を利用したい場合には、

Alexaアプリ→→→自分で用意したリダイレクト用のページ→→→サービスのアカウントリンクページ

という形を取る必要があります。

例えば私が公開しているスキル『ツイログ』では、Twitterでのアカウントリンクを必要とするため、このような流れになります。

f:id:WorldWorldWorld:20181222010150p:plain
Alexaアプリ(Webページ)からアカウントリンクを実施する

f:id:WorldWorldWorld:20181222010234p:plain
自分で準備したWebページが表示され、このリンクからサービスのアカウントリンクページを開く

f:id:WorldWorldWorld:20181222010318p:plain
アカウントリンクを行う

この時中間のページのドメイン所有が確認できる必要があります。

知的財産権の問題(2回)

スキル名、呼び出し名、スキルの説明文、スキルアイコン等に特定のブランド名や商標を利用する場合、法的な正当性を示すための書類が必要になります。


私の事例として、映画.comで公開されているカレンダー情報をGoogleカレンダーに突っ込んで、それをもとに映画の公開情報を教えるスキル、を作ろうとしたところ、この指摘を受けました。

「公開情報だからいいんじゃないの?」

とも思ったのですが、質問が面倒になってそのまま放置しています。


このためスクレイピングで情報を取る」といったスキルは、リジェクトされる可能性があります。

アカウントリンクのテストアカウントが無い(2回)

アカウントリンクを実施するスキルを申請する場合、スキルコンソールのテスト手順にテスト用アカウントの情報(IDやパスワード)を明記する必要があります。

Amazonのテスターさんが自らテスト用アカウントを準備してくれる、ということはありません。自分で準備しましょう。

スキル説明のサンプルフレーズが不適切(2回)

Alexaスキルストアで公開されるスキルページには3つのサンプル発話を登録しますが、それらの書き方に問題がある場合の指摘です。

具体的には1つめのサンプル発話は「アレクサ、〇〇を開いて」とする必要があります。

これが「〇〇を開いて」のように、「アレクサ」という言葉がないとリジェクトされます。

子供向けスキルとすべき(1回)

スキルが子供向けっぽいのに、子供向けスキルにチェックを付けずに申請すると指摘されます。

ここは交渉次第で通すことはできるのかもしれません。(私はおとなしく従いました)

子供向けスキルは個人情報を収集できない(1回)

子供向けスキルでは個人情報を収集することができません。


私の場合は

「お小遣いを誰にもらったのかを記録する」

というスキルを考えて申請したのですが、”誰”という部分に人名が入ることから個人情報の収集と見なされました。


確かにデータベース上に個人名を登録するのは個人情報の収集にあたりますね。

子供向けスキルはなかなか制限が厳しそうです。

画面の表示が終了しない(1回)

AmazonEcho DotやEcho Showなど、ディスプレイ付きデバイス向けに画面表示対応のスキルを開発した際の指摘です。

画面表示を行うスキルは、インテントの終了時に.withShouldEndSession(true)を実施する必要があります。これがない場合、スキル終了後に30秒間画面が表示し続けるためリジェクト対象となります。

サンプル発話の重複(1回)

複数のインテントで同じサンプル発話がある場合の指摘です。

スキルコンソール上では検知してくれないので注意しましょう。

アカウントリンクが失敗する(1回)

アカウントリンクが失敗してしまう場合の指摘です。

自分でサービスを用意している場合はサーバー周りの設定を、外部サービスを取り入れている場合はAPI周りの設定を確認しましょう。

アカウントリンクの説明が足りない(1回)

アカウントリンクが必要な場合に、Alexaの応答で「アカウントリンクしてください」と伝えるだけでは不十分です。

「なぜ、どんなことをするためにアカウントリンクが必要なのか」という旨を伝える必要があります。

スロットの使い方が不適切(1回)

スキルの利用シーンに対するスロットタイプが不適切な場合の指摘です。

例えば「人の名前を指定する」ことを想定したインテントに対して、スロットタイプをAMAZON.Foodにしたりするとリジェクトされます。

いざAlexaスキル開発!

以上、2018年に私がAlexaスキル申請を行った感想と指摘内容についてまとめてみました。

私は自分でコードを書く通常の開発スタイルを取っていますが、プログラミングレスでAlexaスキル開発ができる「NOID」「Invocable」と言ったサービスも登場しています。

www.noid.ai

www.invocable.com


Alexaスキル開発はスマートフォンやWebアプリ開発よりもハードルが非常に低く、誰でも参加できる環境が整いつつあります。

またスキル申請もこの記事で紹介したように、特別難しいものではありません。

少しでも興味があるなら、Alexaスキル開発に挑戦してみましょう。そして当記事で紹介した内容が少しでも参考になれば幸いです。

Amazon Alexaプログラミング入門 (impress top gear)

Amazon Alexaプログラミング入門 (impress top gear)