Amazon Alexaスキル作成時に気をつけること　その2


#はじめに
[Amazon Alexaスキル作成時に気をつけること その1](https://qiita.com/second113/items/161eb3d30598e78f63d6)の続きです。

## 目的（その１の再掲）
本記事は、Alexa Skill作成の練習中に躓いたAlexaスキル作成時に気をつけることを整理・記録するものです。気をつけることの範疇には、技術的観点以外のことも含めます（意外とこれが一番重要かも・・・）。同じところで躓く人が少しでも減ることを願っています。
＃しょぼいつまづきポイントもありますが、ご愛嬌ということで・・・

## 対象読者（その１の再掲）
- これから初めてAlexa Skillを学習される方
    - ⇒参考資料のセクションに有用なリンクを整理したいと思いますので、ご参考に。
- 一般公開用のSkillを開発しようとされている方
    - 全ての項目ではないですが、自宅で使うだけであれば注意すべき点は減ると思います。

バリバリ開発されている方には当たり前、既知な内容かと思われます。

#作成したスキル
~~Tシャツ欲しさにゴミスキルを量産~~クイズ系やトリビア系のスキルを作成した過程で気がついたTipsをご紹介します。

直近でリリースしたのは**「[芸能人サーチ](goo.gl/MYjAtZ)」**です。[~~Echo Dotほしいので~~](https://developer.amazon.com/ja/alexa-skills-kit/alexa-developer-skill-promotion)1回で良いから使っていただけると嬉しいです！いろいろな文章を読ませることになるスキルであるため、うまく読めないケースもありました。少しずつ改善中ですので、フィードバックいただけると助かります。


#Alexa Skill作成時の注意点、Tips

##Alexaの発音調整
###課題：Alexaの発音がおかしい
日本人が自然と読めるものでも、SSMLを活用し、きめ細やかに指定が必要な場合があります。しかし、それ以前に実際に読ませてみないと発音が予想できないものもあります。定型の文章であれば、[事前にシミュレータを使ってテストする](https://qiita.com/second113/items/8feda078bd555dd5d6a1)ことも可能ですが、動的に文章を生成や取得している場合には難しいところです。

###対処方法
うまく発音されないものは、既知のものとして文章生成時にSSMLの設定や置換をしてしまいましょう。

※2018/06/12時点の発音であるため、Alexaのアップデートにより変更されている可能性があります。

- 数値の間の「・（なかぐろ）」
    - 誤読例：2・3月号　（にーてんさんがつごう）
    - すべての「・」をうまく読め無いわけではなく、数字の間の「・」を「てん」と読んでしまうようです。この場合は、少し間を開けて読んでほしいはずなので読点「、」に置換しまうのも手です。ちなみに、人名（ヘレン・ケラー）などは正常に少し間を開けて読むことができます。SSMLのbreakタグを使って間を開けるのもアリですね。
    - 変更例：2、3月号（に　さんがつごう）

- 半角のアポストロフィ「'」
    - 誤読例：MEN'S NONNO　（めんえすのんの）
    - 半角のほうが正常に読めそうかと思いきや、アポストロフィの後の文字を単独の文字として読んでしまいます。上記の場合、全角表記にすると正常に読んでくれます。
    - 変更例：「MEN’S NONNO」（めんずのんの）

- 半角のアンパサンド「&」
    - こちらが含まれる場合は正常に読めなくなる以前に、バックエンドからの発話用応答として正常な値としてみなされず、「スキルからの応答に問題があります」というエラーになってしまいます。LambdaからAlexaへレスポンスが返った後に音声合成の入力としたタイミングで、エラーとなります。
        - Lambdaファンクションとしてのレスポンスは正常に返っており、CloudWatchメトリクスやLogsを見てもエラーに気がつくことが難しいため、注意が必要です。読ませてみるまでわからない系ですね。
    - 全角のアンパサンド「＆」に置換して「あんど」と読ませるか、場合によっては読点「、」にして少し間を開けて読ませることになります。一律に置換するのが難しいケースだと思います。
 

### 対処できていないもの
- 月9「つききゅう」
    - 俳優、女優の経歴を読むとよく出てくるのがドラマの話。そう、「げつく」です。元の表記も揺れそうですが、そのままではAlexaはうまく読めません。
    - 一律に置き換えてしまうか悩んだのですが、他への影響を検討中のため一旦保留中です。

- 固有名詞（特に人名）
    - Alexaの音声合成の精度の問題であるため、スキル開発者側での対応がかなり難しいですが、逆に言えば放っておくと勝手に改善されるかも。
    - 例
        - 金城武（きんじょうたけし）
        - 平清盛（ひらきよもり）
        - 剛力彩芽（ごうりきいろどりめ）

- 人を卑下するような単語？
    - 落下女（らっかおんな）を発音させようとしたときに遭遇。Alexaは「おち（ぴー　※電子音）」と発音する。
    - 「下女」と解釈して発音しないようにしている？


## Alexaの音声認識精度（ビルトインスロットAMAZON.Actor）
芸能人サーチでは、ビルトインスロットのAMAZON.Actorを利用してみました。独自に受け取りたい値やシノニムをスロットに定義するのは、スキル開発者には結構、酷な作業になりますので、どの程度イケる子なのかを確かめたかったのが採用理由でした。で、結果としてはそれなりに使えますが、改善の余地ありというところです。

公開から現在までに発話頂いた中で、うまく認識されているものとNGだったものを以下に紹介します。もちろん、発話する人間の側でうまく発音できていたいものも混ざった結果です。また、発話者の意図したものと別のものとして認識されたとしても、該当する芸能人が見つかったらOKに入れています。
＃サンプル発話に石原さとみさんを載せてしまっているので、それを除きます。


- OK
    - 川上音二郎
    - 新垣結衣
    - 杏里
    - 中川大志
    - 田中圭
    - 鳳恵弥
    - 泉清子
    - 橋本環奈
    - 松坂慶子
    - 栗山千明
    - 堀北真希
    - 山田孝之
    - 長澤まさみ
    - 渡辺謙
    - 深田恭子
- NG
    - 七を（菜々緒？）
    - 沙羅智
    - 二かけ
    - 今から木原さとみ（発音が悪かった石原さとみっぽい。）
    - キッチン美智子五（吉瀬美智子？）
    - 吉西美智子（吉瀬美智子？）

NGの中で、カスタムスロットであればシノニムで対応するケースもあると思いますが、**ビルトインの場合はシノニムが使えないため**Amazon側で対応されるのを待つしか無いようなきがします。(使えるようになったとしても、自動で拡張されないと辛い。)[現在は開発者プレビューのステータス](https://developer.amazon.com/ja/docs/custom-skills/slot-type-reference.html)ですので、今後に期待。


## スロット設定値と異なる値がLambdaの入力として渡る
###課題：スロットの設定値によって自動的に値が変換される場合がある
スロットにしていた文字列と異なる文字列がLambda側に渡るケースがあります。
いくつかケースがあると思いますが、特にハマったところを。

- 半角大文字の英数
    - スロットの値AAAやAA、Aなどを設定している場合、Lambdaファンクション側に値として渡される際には、半角小文字aaaやaa、aに変換されてしまいます。
    - スロットの値を最初から半角小文字にして登録し、Lambdaファンクション側でも小文字で扱うようにする、またはスロットに設定するID（数値などを設定）をもとにLambdaファンクション側で処理をするようにしましょう。

##公開中スキルの削除
###課題：スキルが削除できない。
結論から言うと、公開中（公開済み）スキルの削除はできません。。。サービスって始めるのは割と簡単ですが、止めるのって難しい、を体現しております。

以下がDeveloper Consoleのスキル一覧ページです。お分かりいただけますでしょうか。公開中のスキルからは削除するメニューが消えております。
![WS000126.JPG](https://qiita-image-store.s3.amazonaws.com/0/179480/6f53e4e7-679e-fce7-2ee9-7d91b2eb4ad4.jpeg)
![WS000127.JPG](https://qiita-image-store.s3.amazonaws.com/0/179480/486da3e1-8bdb-138a-99f3-6342109b4990.jpeg)

ちなみにAmazon Developer Forumsのナレッジベースでも以下の回答がAmazon側から回答されていました。

>スキルを削除するには、以下の手順に従ってください。

>1.開発者コンソールにログインします。
>2.「Alexa」をクリックします。
>3.「Get Started」（Alexa Skills KitまたはAlexa Voice Service）をクリックして、>スキルのリストを表示します。
>4.「Actions」列で「Delete」をクリックしてスキルを削除します。
>注: 削除できるのは、「Development」（開発中）段階にあるスキルのみです。>「Certification」（認定中）または「Live」（公開中）段階にあるスキルは削除できませ>ん。


以下のような場合に消したくなっても手遅れです。

- Tシャツ欲しさに恥ずかしいスキルを公開してしまった。
- 思ったよりも維持管理にお金がかかる。作り直す暇もない。リワードプログラムにも選ばれなかった。

###対処方法

- 公開申請を行う前に、胸に手をあててよーく考えましょう。
    - 残り続けるけど大丈夫？
- スキルのアップデートは可能ですので、まずい部分を更新して申請する。
    - スキルの名前やコンセプトが全く別のモノになるようなアップデートは許されていない気がします・・・が試した方がいらっしゃいましたら情報をお寄せくださいｗ


#おわりに
引き続き調整中のため、修正できたものをしばらくは追記しようと思います。