BLOG

[Alexa Advent Calendar 2018] スキルリジェクト遍歴

2018-12-02 00:00:00

Alexa AAJUG

Echo

Alexa Advent Calendar 2018の12/2担当です。Alexaスキルを2つほど作りましたが、まぁまぁリジェクトを食らったのでご紹介したいと思います。


自己紹介

一応自己紹介を。フリーランスでWebエンジニアをしています。普段はPHPメインでCMSやフレームワークなどを利用してバックエンドの開発を行なっています。
音声UIというのに興味がでて、Amazon Alexaでスキルを作ったりしました。今まで作ったスキルはこちら。

CoderDojo Hirakata

CoderDojo HirakataCoderDojo Hirakata
CoderDojo Hirakata

子供達のためのオープンソースプログラミング道場、『CoderDojo』を枚方で開催していて、その代表をしています。このスキルはCoderDojo枚方の予定を教えてくれるスキルです。「アレクサ、コーダー道場枚方を開いてイベントを教えて」と伝えると直近のイベントの開催日、開催場所をCoderDojo Zenのサイトから取得して教えてくれます。

気まぐれレコメンド

気まぐれレコメンド気まぐれレコメンド
気まぐれレコメンド

こちらはちょっとしたジョークスキルです。普段生活している中で「どっちにしよう?」と悩むことがあるかなと思います。今日着る服だったり、夕飯の献立だったり。それをAlexaにお願いして決めてもらおうというスキルです。「アレクサ、気まぐれレコメンドを開いて」と伝え、そのあとに候補を2つあげると完全ランダムに選んでもらえます。


本題。リジェクト遍歴

Alexaスキルの場合、かならずAmazonの審査を受けることになります。動作テストはもちろんAlexaスキルのポリシーテストなどポリシー違反していないなどかなり丁寧にチェックされます。上記2つのスキルとも1発で審査をクリアできず、何度か再提出しています。では、リジェクトを受けた内容をご紹介しています。

スキル呼び出し名が悪い

初手からつまづいている感がすごいんですが、実はAlexaスキルの呼び出し名には明確なルールがあり、それを遵守する必要があります。例えば

  • 2つ以上の名詞を利用("おやつ""手帳"、"都道府県""クイズ" など)
  • 単語1つのみは禁止(貯金箱、クイズ など。ただし自身のブランド名や知的所有権があるものは覗く)
  • 人名や場所の単独利用は禁止(いっぺい、枚方市 など)
  • 原則助詞の利用は禁止(みんなでエクササイズ、ポイントを利用 など)
  • ウェイクワードなどの利用はは禁止(アレクサ、スキル、アプリ など)

を守る必要があります。思いの外厳しいです。最初『気まぐれレコメンド』は『どっちがいい?』というスキル呼び出し名にしていましたが、この中だと助詞の利用に当てはまりリジェクトとなりました。スキル呼び出し名は名詞2つ以上で考えた方がいいでしょう。

スキルの説明に『アレクサ』と記載

各スキルはどのような機能かを案内する説明文を用意することになっていますが、この中に『アレクサ』という言葉があったため標準機能と誤解や混同される可能性があるということでリジェクトになりました。こちらも『気まぐれレコメンド』ですが、当初の説明文はこんな感じでした。

2つのうちどちらがいいか迷った時に、どちらが良いかアレクサが決めてくれます。

『アレクサが決めてくれる』というのをアピールしたかったのですが、確かにこのままだと標準機能と誤解される可能性があります。最終的には

2つのうちどちらがいいか迷った時に、気まぐれに1つを選びます。
スキルを起動したら、候補を1つ伝えます。その後、もう1つを伝えると、気まぐれにどちらが良いかをお答えします。

になりました。スキル呼び出し名もそうですが、説明文にもAlexa, Echoなどという記載は避けた方がいいでしょう。

子供向けスキルと取れる記載、応答がある

現在はAlexa子供向けスキルというものがあり、子供向けスキルと設定すれば問題ないですが未設定だったり子供向けではないスキルに対して、子供向けと取れるような説明、記載、応答があるとリジェクトになります。こちらは『CoderDojo Hirakata』のスキルでリジェクトになりました。CoderDojoの説明として以下のような説明や応答を用意していました。

コーダー道場枚方は7歳から17歳の子どもを対象にしたプログラミング道場です。このスキルではコーダー道場枚方の今後のワークショップの予定をおしらせします。

スキルとしては『開催予定を知らせる』というものですが、『7歳から17歳の子どもを対象にした』が子ども向けスキルと取れる記載とみなされたようです。最終的には

コーダー道場枚方はプログラミング道場です。このスキルではコーダー道場枚方に参加するニンジャの保護者に向けて今後のワークショップの予定をおしらせします。

としました。『保護者』という言葉を入れて、子供向けじゃない感をアピールしました。また、こちらは説明文だけではなく応答に対してもチェックされます。子供向けスキルではない場合は、子供を対象にしていると思われるような説明、応答がないかをチェックした方がいいでしょう。

子供向けスキルと取れる記載、応答がある その2

子供向けスキルと取れる記載、応答があるとリジェクトになります。こちらももちろん『CoderDojo Hirakata』ですが、上記のように説明文や応答から全て子供向けと思われる箇所を取り除いて安心して再提出しましたが、リジェクトになりました。何が引っかかったかというと

APIの戻り値

このスキルはCoderDojo ZenというWebサイトのAPIから直近のイベントを取得しています。APIの戻り値からイベントのタイトルと開催日、開催場所を取得しているのですが、再提出時のイベントのタイトルが

CoderDojo枚方 第11回 子ども向けプログラミングワークショップ

となっており、スキルの応答が「**月**日、第11回 子ども向けプログラミングワークショップが**で開催されます。」となり子ども向けスキルとみなされました。これを受けてイベントのタイトル名から"子ども向け"という記載を削除しました。スキルの応答は主にプログラム内のメッセージに記載されているのでそこだけ直してしまいますが、APIなど外部から取得するメッセージなどにも注意した方がいいでしょう。


まとめ

というわけで、たくさんリジェクトを食らってきましたが基本的にはドキュメントを読めば回避できるので、回避策は『ドキュメント読め』に尽きます。しかし、読んでいても見逃していたり、ちょっとしたノウハウが必要だったりします。そこでオススメなのがコミュニティへの参加です。

実はAmazon Alexa Japan User Group(略してAAJUG)というユーザグループがあり、そこで定期的に勉強会やディスカッションを行なっています。こちらにはAlexa ChampionなどたくさんのAlexaスキル開発者が事例やノウハウを共有しています。こちらに参加することでリジェクトについてのノウハウもいろいろと入手することができると思いますので、ぜひぜひご参加ください!