QiChat MANIAX(2)  ヘッダのキーワードを網羅する🕸🔓

#はじめに
今回はQiChat MANIAXの続編です！ヘッダのキーワードについて、詳しく見ていきましょう👁‍🗨👁‍🗨

#conceptで同類を定義する🍌🍫🍬

conceptは、リストの単語とフレーズを定義するものです。下記のように使います↓

```
concept:(name) [word1 word2 "word3 word4"]
```

* word1とword2は個々に独立した単語
* word3とword4は複数の単語によるフレーズ。間に合うスペースのある単語を一つのフレーズとして扱う場合は、ダブルコーテーション(")でくくってください
* nameはリストにつけるコンセプト名。コンセプトを使用するときに使います

⚠️注意
フレーズとは文章ではなく単語の集まりであり、句読点は自動的に排除されます。
コンセプトはどの単語でもglobalであり、異なるTopicでも使用可能です🌍

以下は使用例と実行例です。

```
topic: ~introduction ()

concept:(greetings) ^rand[おはよう スラマッパギ "許して ヒヤシンス"]

concept:(phoenix) [銅の 金の] 鳳凰
concept:(food) [リバイアサン アマビエ ~phoenix]

u:(~greetings) ~greetings
u:(_~food が食べたい) $1 は調理済みです
u:(お腹すいたな) ~food 捌いてきましょうか
```

![スクリーンショット 2021-08-02 11.01.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574697/afd5509d-2b5c-0b0f-f2dd-667a782a7d77.png)![スクリーンショット 2021-08-02 11.01.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574697/f63552d1-3eae-e1c7-47fc-7377772c6ef2.png)


ちなみに<font color="#1e90ff">**^rand**</font>は、選択をランダムにしてくれます🎲
<font color="#1e90ff">**^rand**</font>なしの場合、選択肢の中身は順番に選択されていきます。

<img width="100px" alt="food_meat_loaf.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574697/a9d981c5-b146-85be-1856-75583c484141.png">$\tiny{アマビエローフ}$

#後出しできるdynamic

```
topic: ~dynamic()

dynamic:mp3
u:({そうだな}_~mp3 ["かけて　お願い" 聴きたい] ) $1 再生します。ぷわーん
```
```java
QiChatbot qiChatbot = ...;
EditablePhraseSet editablePhraseSet = qiChatbot.dynamicConcept("mp3");
List<Phrase> phrases = new ArrayList<>();
phrases.add(new Phrase("マリークレールアラン"));
phrases.add(new Phrase("グレングールド"));
phrases.add(new Phrase("エンリコピエラヌンツィ"));
editablePhraseSet.addPhrases(phrases);
```
![スクリーンショット 2021-07-30 13.21.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574697/4cc694ec-d574-0a90-b4c2-e43a1423811c.png)

基本的にはstaticを使う方が良いですが、<ins>[Git](https://github.com/aldebaran/qisdk-tutorials/tree/master/app/src/main/java/com/softbankrobotics/qisdktutorials/ui/tutorials)</ins>のMastering dynamic conceptで体験できるように後から単語を追加することができます➕

![スクリーンショット 2021-08-02 12.39.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574697/c3e4b5d0-ed3a-2c71-ff10-d07de6e4d075.png)

⚠️注意
dynamicのコンセプトにあまり多くの単語やフレーズを追加すると、読み込み時間に影響します。例えば数千の単語やフレーズを含むdynamicのコンセプトは、読み込みに数分を要するでしょう🕐🐦
それぞれの単語やフレーズを読み込むためにPepperはリスニングの機能を停止するので、多すぎる単語やフレーズの読み込みはユーザー体験の質を劣化させてしまうのです。


#descriptionで話を思い出す🗯
descriptionに記述した内容は、$Dialog/FocusDescriptionで呼び出すことができます。使用例は以下の通りです↓

```
description: イルミネーション

u:(天の川を航海できたら星が採れるのに) 月には海がありますよ
u:(淡水魚いるかな) それを言うなら海水魚だと思います
u:(何の話だっけ) $Dialog/FocusDescription の話です
```

![スクリーンショット 2021-08-02 11.14.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574697/8eca0ed3-52c6-c23c-1306-c73f4c8e08f5.png)

#topicでネーミングセンスを試される📛
Topicの名前を決定します。nameの部分です↓

```java
topic: ~name ()
```
名前は一つしか持てないため、ポチやタマなどいい加減な命名は避けましょう。
<img width="100px" alt="space_uchuhikoushi_dog.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574697/c0f4a16d-2212-7d22-039e-15d82dacea53.png"><img width="100px" alt="animal_music_band_guitar.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574697/c2b30aa6-699f-40ea-823d-a27c196ebe3e.png">
$\tiny{ストレルカとベルカに憧れるポチと、音楽性の違いからブレーメンの音楽隊を脱退してギタリストになったタマ}$

#あとがき
今回も[PepperSDKforAndroid](https://android.aldebaran.com/sdk/doc/pepper-sdk/ch4_api/conversation/qichat/qichat_syntax.html#header-keywords)を参考に書かせていただきました。

次回のQiChat MANIAXはルール編です。下の画像は網の目を潜る(物理)Pepperです。
![kinoko_kinugasatake.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574697/ef4f0503-064d-67ad-0766-92d2d99471ca.png)

それでは!