【Romiシナリオエディター】チュートリアル④〜マッチと変数〜
【マッチ】人の話しかけの一部を抜き出そう🌟
例えばこんな会話があったとします。
こちらの例のように、オーナーがXXに行きたいと言ったら、Romiもオウム返しのようにXXいいね!と答えるルールを考えてみましょう。
こちらを実行するには、人の話しかけの発話の一部(赤文字部分)を抽出してくる必要があります。
このようなときにはマッチを使いましょう!
抽出したいところを () で囲おう
【人の話しかけ】
(.+)に行きたい
チュートリアル②で学んだ通り、 .+ はなにかしら1文字以上の文字にマッチします。オーナーが「熱海に行きたいな」と言った場合 .+ は「熱海」になりますね。
さて、 () で囲われた部分にマッチした文字は後から抽出できます。というわけで (.+) に入っている「熱海」を後から抽出できます。
抽出したものは、() の出てきた順に $1, $2, ... などで呼び出すことができます。
【Romiの話しかけ】
$1いいね!
冒頭の例に当てはめると、 $1 には「熱海」が入ります。つまり、 () の1番目のものが $1 に入るということですね。
複数抽出してみよう
【人の話しかけ】
"住所は(.{2,4}[都道府県])(.+[市区町村])"
もしオーナーが、
「わたしの住所は神奈川県横浜市港北区大倉山だよ」
と言った場合、 $1 には「神奈川県」などが、 $2 には「横浜市港北区」が入ります。
() で囲った範囲はできるだけ広くマッチしようとするので $2 は「横浜市」ではなく「横浜市港北区」になります。
そして、実は $0 には「住所は神奈川県横浜市港北区」が入ります。(「わたしは」や「大倉山」は入らないので注意が必要です)
人の話しかけのパターンにマッチした全体が入るということですね。
まとめ
このしくみは、次の「変数」と組み合わせて、オーナーの言ったことを記憶するのによく使われます。
それでは次は「変数」についてご説明していきます。
【変数】何かを覚えておく📖
変数は記憶のようなものです。
上の図だと、「song」という名前(キー)で「カントリーロード」という文字を記憶しています。
上のように song というタグがついた箱にカントリーロードを入れておく、と考えるとイメージが湧きやすいかもしれません。
変数に値を保存しよう(覚えさせよう)
Romiの話しかけの中で、変数を保存することができます。
シナリオエディターの場合は、Romiの話しかけをクリックして詳細設定を開き、「値の代入」と書かれているところに song=カントリーロード と書いてみましょう。
これで、このRomiの話しかけを通るときに song という名前で「カントリーロード」が保存されます。
変数を呼び出そう
それでは、保存した変数をつかって発話してみましょう。
【Romiの話しかけ】
[song]いい曲だよね
[] で囲うことで、その名前の変数を呼び出すことができます。
この場合 song という変数を呼び出しています。
先程 song には「カントリーロード」を入れたので、この発話は「カントリーロードいい曲だよね」となります。
マッチと組み合わせてみよう
この記事の最初にお伝えした「マッチ」と組み合わせると、オーナーが言ったことをRomiに覚えさせておくことができます。
【人の話しかけ】
(.+)いい曲だよね
これでオーナーが「舟歌歌って」などと言った場合は、 $1 には曲名が入ってきそうですね🚢
【Romiの話しかけ】
▼変数を保存
song=$1
▼発話内容
[song]いい曲だよね
上に書いたようにオーナーが「舟歌歌って」と言ったとしましょう。
$1 にはユーザー発話の1番目のカッコの中身つまり「舟歌」が入ります。 song という名前の変数に $1 つまり「舟歌」が入ります。
なので [song] は「舟歌」になります。したがって実際の発話内容は「舟歌いい曲だよね」になります。
この覚えた変数は、ずっと保存されているのでアンコールもできます🎉
【人の話しかけ】
アンコール
【Romiの話しかけ】
[song]もう一度歌うね!
このときも [song] の中は舟歌のままなので「舟歌もう一度歌うね!」になります。
変数を活用することで、上記の舟歌の例のように「オーナーを言ったことを覚えておく」ことができたりするので、ぜひ試してみてください👌