AWS 認定 Alexa スキルビルダー のサンプル問題の日本語訳および模試を受ける

https://aws.amazon.com/jp/certification/certified-alexa-skill-builder-specialty/

AWS 認定 Alexa スキルビルダー – スペシャリティテスト試験が発表となっていて、もう日本でも受けられるようです。ただし英語のみ。
この試験、ベータ版が今年の一月に開放されていましたが、その時は半額で受講できたようでその時に受けておけば良かったなー。

# 試験の概要
https://aws.amazon.com/jp/about-aws/whats-new/2019/04/new-awsexam-certified-alexa-skill-builder-specialty/

AWS トレーニングと認定では、新しい AWS 認定 Alexa スキルビルダー – スペシャリティ認定を発表いたします。これは、Amazon Alexa スキルの構築、テスト、公開の能力を検証する、業界初かつ唯一の認定です。新しい AWS 認定 Alexa スキルビルダー – スペシャリティ認定を取得すれば、Alexa 開発者はさらに自信を持ってスキルを公開でき、世界各地の 1 億台を超える Alexa 動作デバイスを通じて顧客にリーチできる可能性があります。

## Recommended Knowledge
- At least 6 months of hands-on experience building Alexa skills using the Alexa Skills Kit, including skills that incorporate services from the AWS Cloud
- Proficiency with a programming language
- Published an Alexa skill

こちら、ベータ版の時の記事ですが、対象は変更なさそうです。
> 本試験は、Alexaスキルの設計と構築に6か月以上の経験があり、プログラミング言語に精通しており、少なくとも1つのスキルを公開している個人に勧めると記載があります。
https://dev.classmethod.jp/cloud/aws/aws-certified-alexa-skill-builder-beta-exam/

# サンプル問題日本語訳
早速サンプル問題をみてみましょう。
[download sample questions - pdf](https://d1.awsstatic.com/training-and-certification/AWS%20Certified%20Alexa%20Skill%20Builder%20-%20Specialty_Sample%20Questions.pdf)

10問あって全部解答付きです。
ちなみに・・日本語訳とか書いてますが、書いてる人の英語力はほぼありませんのであらかじめご了承下さい。
基本google翻訳に通した後に補正しています。
気になる点とかがあればご指摘くださればなおします。
というか試験が英語しかないのに日本語訳とかどこに需要があるんだって気がしないでもないですが。

## Q1
```
An Alexa Skill Builder is writing a skill that needs to play short MP3 files using the SSML audio tag.
Which AWS service provides the MOST highly available and scalable solution to host the MP3 files?

  A) Store the files in an Amazon S3 bucket.
  B) Store the files on an Amazon EC2 instance.
  C) Store the files in an Amazon DynamoDB table.
  D) Store the files in Amazon ElastiCache.
```

<details><summary>answer</summary><div>
 A – S3 is a highly available and durable object store with unlimited storage capacity. It is ideal for **hosting the
audio files for your skill**.
</div></details>

```
Alexa Skill BuilderでSSMLオーディオタグを使って短いMP3ファイルを再生するのに必要なスキルを書いています。
どのAWSサービスがMP3ファイルをホストするための最も可用性が高くスケーラブルなソリューションを提供しますか？

  A）ファイルをAmazon S3 bucketに保存します。
  B）ファイルをAmazon Amazon EC2 instanceに保存します。
  C）ファイルをAmazon Amazon DynamoDB tableに保存します。
  D）Amazon ElastiCacheにファイルを保存します。
```

<details><summary>answer</summary><div>
 A – S3は、無制限の記憶容量を備えた高可用性で耐久性のあるオブジェクトストアです。
あなたのスキルのためのオーディオファイルをホスティングするのに最適です。
</div></details>

## Q2
```
When configuring account linking for an Amazon Alexa skill using Login with Amazon, which of the
following example scopes should an Alexa Skill Builder use to avoid exposing Personally Identifiable Information (PII)?

  A) profile:email
  B) profile:user_id
  C) profile
  D) profile:name
```

<details><summary>answer</summary><div>
B – **profile:user_id** uniquely identifies the user but does not expose additional information beyond the User ID,
which is anonymous.
</div></details>

```

Amazonでログインを使用してAmazon Alexaスキルのアカウントリンクを設定する場合、
Alexa Skill Builderで個人情報を公開しないように使用する必要がある場合にどのスコープを用いるべきですか？（PII）

  A) profile:email
  B) profile:user_id
  C) profile
  D) profile:name
```

<details><summary>answer</summary><div>
B – ** profile：user_id **はユーザーを一意に識別しますが、ユーザーID以外の追加情報は公開しません。
これは匿名です。
</div></details>

## Q3
```
An Alexa Skill Builder is debugging an AWS Lambda function using console.log() statements to inspect values in requests.
How will the log statements be made available to the Builder?

  A) The log files will be saved in Amazon CloudWatch Logs.
  B) A card will be created in the Amazon Alexa app containing the output.
  C) The messages will be available in the console when using ask simulate --debug.
  D) The messages will be spoken as part of the Amazon Alexa output.
```

<details><summary>answer</summary><div>
A – Lambda functions save log files to CloudWatch Logs by default. Logging entries are stored in CloudWatch
Logs by **using standard logging statements** such as console.log() in Node.js.
</div></details>

```
Alexa Skill Builderでconsole.log（）ステートメントを使用してAWS Lambda関数をデバッグし、リクエスト内の値を検査しています。
ログステートメントはどのようにしてBuilderで利用できますか？

  A）ログファイルはAmazon CloudWatch Logsに保存されます。
  B）出力を含むカードがAmazon Alexaアプリに作成されます。
  C）ask simulate --debugを使用すると、メッセージはコンソールに表示されます。
  D）メッセージはAmazon Alexaの出力の一部として読み上げられます。
```

<details><summary>answer</summary><div>
A – Lambda関数はデフォルトでログファイルをCloudWatch Logsに保存します。ログエントリはCloudWatchに保存されます
Node.jsのconsole.log（）などの**標準ロギングステートメント**を使用してログを記録します。
</div></details>

## Q4
```
A skill to search for local businesses returns the following output in the response:

 <speak>I’ve found <emphasis level=”strong”>Bananas & Bears</emphasis></speak>

In testing, the Alexa Skill Builder notices the skill keeps failing and reviews the logs in Amazon CloudWatch and finds the following error:

"error": {
  "type": "INVALID_RESPONSE" ,
  "message": "Invalid SSML Output Speech for requestId amzn1.echoapi.request.afb31745-05ad-400e-8703-3a. Error: Fatal error occurred when processing
SSML content. This usually happens when the SSML is not well formed. Error:
Unexpected character ' ' (code 32) (missing name?)\n at [row,col {unknown-source}]:
[1,101]"
}

What is wrong with the <speak> response?

  A) <emphasis> should be <say-as>.
  B) The entire string needs to be in quotes.
  C) The apostrophe in "I've" should be removed.
  D) There is an ampersand (&) in the text.
```

<details><summary>answer</summary><div>
D – Ampersands cannot be parsed by SSML and will result in an error when used in speak output in a skill.
Ampersands are **considered a control character in XML**.
</div></details>

```

地元企業を検索するスキルがあり、応答に次のような出力を返します。

 <speak>I’ve found <emphasis level=”strong”>Bananas & Bears</emphasis></speak>


テスト中、Alexa Skill Builderはスキルが失敗し続けることに気付き、Amazon CloudWatchのログを確認して以下のエラーを見つけました：

"error": {
  "type": "INVALID_RESPONSE" ,
  "message": "Invalid SSML Output Speech for requestId amzn1.echoapi.request.afb31745-05ad-400e-8703-3a. Error: Fatal error occurred when processing
SSML content. This usually happens when the SSML is not well formed. Error:
Unexpected character ' ' (code 32) (missing name?)\n at [row,col {unknown-source}]:
[1,101]"
}

<speak> responseの何が問題になっていますか？

  A）<emphasis>を<say-as>に変えるべきです。
  B）文字列全体を引用符で囲む必要があります。
  C）"I've"のアポストロフィは削除してください。
  D）本文中にアンパサンド（＆）があります。
```

<details><summary>answer</summary><div>
D – アンパサンドはSSMLで解析できないため、スキルのスピーチ出力で使用するとエラーになります。
アンパサンドは**XMLの制御文字と見なされます**。
</div></details>

## Q5
```
What is required for a skill to support multi-turn conversations?

  A) The skill must have slots marked "required" with prompt text.
  B) The skill must respond to the user by asking a follow-up question.
  C) The skill must define session attributes to store the questions and responses.
  D) The skill must return shouldEndSession=false in a response.
```

<details><summary>answer</summary><div>
D – shouldEndSession is **a parameter in the Response object** that tells Alexa whether or not to keep the
session open. True means that the session should end after Alexa speaks the response, and false that the
session should remain active. If not provided, it defaults to true. Session attributes are not required when using a
dialog model because the user’s responses are sent to the skill in the intent’s slot values.
</div></details>

```

Multi-Turn Conversationsをサポートするスキルに必要なものは何ですか？

  A）スキルには、プロンプトテキストが"required"と記されたスロットが必要です。
  B）スキルはフォローアップの質問をすることによってユーザーに応答しなければなりません。
  C）スキルは質問と回答を保存するためにsession attributesを定義しなければなりません。
  D）スキルはレスポンスでshouldEndSession = falseを返さなければなりません。
```

<details><summary>answer</summary><div>
D – shouldEndSessionは、セッションを開いたままにするかどうかをAlexaに伝えるResponseオブジェクト内のパラメータです。 Trueは、Alexaが応答をした後にセッションを終了する必要があることを意味し、Falseはセッションをアクティブなままにすることを意味します。指定されていない場合は、デフォルトでtrueになります。ダイアログモデルを使用する場合、セッション属性は必要ありません。ユーザーの応答はインテントのスロット値でスキルに送信されるためです。
</div></details>

※Multi-Turn Conversationsが何を指してるのかわからない。。

## Q6
```
An Alexa Skill Builder is creating a podcast skill using the ASK SDK and AWS Lambda. The Builder wants the skill to launch differently depending on where the user is in the podcast: midway, completed, or at the beginning.
Which type of attribute should be used to store the resume point across skill invocations?

  A) Persistence attribute
  B) User attribute
  C) Session attribute
  D) Device attribute
```

<details><summary>answer</summary><div>
 A – Data that is needed to be retained between sessions is stored in DynamoDB by using the Attributes
Persistence Adapter in the Alexa SDK. The concept of Attributes Persistence is discussed in **the High/Low Skill
Game**. Session attributes would not be retained when the user stops the podcast and then resumes later. 
</div></details>

```
Alexa Skill Builderで、ASK SDKとAWS Lambdaを使用してポッドキャストスキルを作成しています。 Builderは、ユーザがポッドキャストのどこにいるかによって、スキルの起動方法を変えたいと考えています。
スキル呼び出し間で再開ポイントを共有するためにどのタイプの属性を使用する必要がありますか？

  A) Persistence attribute
  B) User attribute
  C) Session attribute
  D) Device attribute
```

<details><summary>answer</summary><div>
 A – セッション間で保持する必要があるデータは、Alexa SDKのAttributes Persistence Adapterを使用してDynamoDBに保存されます。属性永続性の概念は、**高/低スキルのゲーム**で説明されています。
ユーザーがPodcastを停止して後で再開した場合、Session attributesは保持されません。
</div></details>

## Q7
```
To which of the following Amazon Alexa requests can an outputSpeech object be returned?
(Select TWO.)

  A) IntentRequest
  B) SessionEndedRequest
  C) Display.ElementSelected
  D) PlaybackController.NextCommandIssued
  E) AudioPlayer.PlaybackStarted
```

<details><summary>answer</summary><div>
 A,C – An **IntentRequest** is sent when the user makes a request that corresponds to one of the intents defined
in your schema. A **Display.ElementSelected** request is sent when the user selects an item on a screen on a
device that supports it, like Echo Show. You cannot return a response to a **SessionEndedRequest**.
**PlaybackController** and **AudioPlayer** requests can only be responded to with an AudioPlayer directive. 
</div></details>

```
次のAmazon Alexaリクエストのどれに対してoutputSpeechオブジェクトを返すことができますか？
（2を選択）

  A) IntentRequest
  B) SessionEndedRequest
  C) Display.ElementSelected
  D) PlaybackController.NextCommandIssued
  E) AudioPlayer.PlaybackStarted
```

<details><summary>answer</summary><div>
 A,C – スキーマで定義されている目的の1つに対応する要求をユーザーが要求すると、**IntentRequest**が送信されます。 Echo Showのように、ユーザーが画面上のアイテムをサポートしているデバイス上のアイテムを選択すると、**Display.ElementSelected**要求が送信されます。 SessionEndedRequestに応答を返すことはできません。
**PlaybackController**と**AudioPlayer**のリクエストは、AudioPlayerディレクティブでのみ応答できます。
</div></details>

## Q8
```
An Alexa Skill Builder has selected a skill invocation name "cat and dog facts."
Why is this an invalid skill invocation name?

  A) It has too many characters.
  B) It contains more than three syllables.
  C) It contains the connecting word "and."
  D) It is grammatically incorrect.
```

<details><summary>answer</summary><div>
C – The **invocation** name must not contain any of the Alexa skill launch phrases and connecting words.
</div></details>

```
Alexa Skill Builderを使用し、スキルの呼出し名に「cat and dog facts.」を選択しました。
これが無効なスキル呼び出し名とされたのは何故ですか？

  A）文字数が多すぎます。
  B）3つ以上の音節が含まれています。
  C）それは接続語「and」を含みます。
  D）文法的に正しくありません。
```

<details><summary>answer</summary><div>
C – **呼び出し名**には、Alexaのスキル起動フレーズおよび関連語を含めることはできません。
</div></details>

## Q9
```
An Alexa Skill Builder is developing a skill that enables users to get information about train connections between two cities. The skill's invocation name is "train finder" and the main intent for searching connections has the following sample utterances:

"trains between {cityA} and {cityB}"
"connections between {cityA} and {cityB}"
"how do I go from {cityA} to {cityB}"
"when is the next train from {cityA} to {cityB}"

Which example phrases would pass the certification process? (Select TWO.)

  A) "Alexa, how can I go from Manchester to London"
  B) "Alexa, ask train finder for connections from Manchester to London"
  C) "Alexa, ask train finder when is the next train from London to Manchester"
  D) "How do I go from Manchester to London"
  E) "Alexa, ask train finder what are the trains between London and Manchester" 
```

<details><summary>answer</summary><div>
 C,D – Example phrases **must be 100% supported by the sample utterances**. The phrase in answer C is fully
supported by the sample utterance: “when is the next train from {cityA} to {cityB}.” The example phrase in answer
D is covered by the sample utterance: “how do I go from {cityA} to {cityB}.”
</div></details>

```
Alexa Skill Builderで、ユーザーが2つの都市間の列車の接続に関する情報を取得できるようにするスキルを開発しています。スキルの呼び出し名は「train finder」で、接続を検索するための主な目的は次のようなサンプル発話です。

"trains between {cityA} and {cityB}"
"connections between {cityA} and {cityB}"
"how do I go from {cityA} to {cityB}"
"when is the next train from {cityA} to {cityB}"

認定プロセスに合格するフレーズの例はどれですか。 （2つ選択）

  A) "Alexa, how can I go from Manchester to London"
  B) "Alexa, ask train finder for connections from Manchester to London"
  C) "Alexa, ask train finder when is the next train from London to Manchester"
  D) "How do I go from Manchester to London"
  E) "Alexa, ask train finder what are the trains between London and Manchester" 
```

<details><summary>answer</summary><div>
 C,D – 
Example phrasesは、**サンプル発話によって100％サポートされている必要**があります。答えCのフレーズはサンプル発話で完全にサポートされています:“when is the next train from {cityA} to {cityB}.答えDのフレーズ例はサンプル発話でサポートされています:“how do I go from {cityA} to {cityB}.”
</div></details>

## Q10
```
The following JSON defines a custom slot type named MEDIA_TYPE with two values:

{
 "types": [
   {
     "name": "MEDIA_TYPE",
     "values": [
       {
         "id": "SONG",
         "name": {
           "value": "song",
           "synonyms": ["tune","single","track"]
          }
        },
        {
          "id": "ALBUMS",
          "name": {
            "value": "album",
            "synonyms": ["record","lp","cd"]
          }
        }
      ]
    }
  ]
}

Assuming that when a user says "change the record," an intent is matched, and the MEDIA_TYPE slot is populated, identify the canonical value that will be returned.

  A) ALBUMS
  B) album
  C) record
  D) song
```

<details><summary>answer</summary><div>
 B – Even though the user used the word "record" the canonical slot value contains the more general "album"
value because “record” is **defined as a synonym**. ALBUMS is returned as the values id.
</div></details>

```
次のJSONは、MEDIA_TYPEという名前のカスタムスロットタイプを2つの値で定義します。

{
 "types": [
   {
     "name": "MEDIA_TYPE",
     "values": [
       {
         "id": "SONG",
         "name": {
           "value": "song",
           "synonyms": ["tune","single","track"]
          }
        },
        {
          "id": "ALBUMS",
          "name": {
            "value": "album",
            "synonyms": ["record","lp","cd"]
          }
        }
      ]
    }
  ]
}


ユーザーが"change the record,"と言ったときにインテントが一致し、MEDIA_TYPEスロットに値が入力されていると仮定して、返される標準値を識別します。（＝返されるvalueはどれか？という事でいいと思う）

  A) ALBUMS
  B) album
  C) record
  D) song
```

<details><summary>answer</summary><div>
 B – ユーザーが"record"という単語を使用した際、"record"が"album"の**synonyms**として定義されているため、返されるvalueは"album"となります。 ALBUMSがvalues idとして返されます。
</div></details>

## AWS Certified Alexa Skill Builder Specialty - Practice (AXS-P01)
そしてまだ英語のみですが、模試が受けられるようになっています。

関係ないですが、aws認定の試験ベンダーがPSIとピアソンVUEの2パターンになりましたね。どっちがいいんだろうか。今度VUEの方も受けてみよう。

と、少し脱線しました。

![97.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308709/60030414-fa12-eb4b-9b73-e1572e262205.png)

65分ですって。20問かな？
サンプル問題の感じだと内容薄いからあまり時間がかかならそう。
ではとりあえず受けてみますよ。
いってきます。

・・・
・・・
・・・

ただいま。

![98.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308709/ffa501e7-4059-960a-9aee-f873c4082b0a.png)

こりゃアカン。。
俺の英語力だとさすがに厳しいか。
特に悪いのは```Skill Development```と```Test, Validate, and Troubleshoot```か。
ちなみに問題の難易度としてはサンプル問題と同程度に感じました。
audioとかvideoのあたりがやや多めか？
英語力もそうなんだけど知らない事も多かった。
もうちょっと解けるかと思ったんだけどな。おとなしく日本語に対応してくれるまで待つ事にしよう。

ちなみに今回はピアソンVUEの方で受けてみた。
インターフェースはかなり違って・・PSIよりシンプルかな。画面がスッキリ。
PSIの時はどうだったから忘れたけど、VUEは問題が全部コピペできたのでキャプチャに加えて問題もコピった。
フラグ付けたり見直したりするのはPSIの方がやりやすい。
あと結果が早い。終わって10秒ぐらいでスコアレポート出た。個人的にはこっちがうれしい。