見出し画像

【Romiシナリオエディター】チュートリアル④〜マッチと変数〜

【マッチ】人の話しかけの一部を抜き出そう🌟

例えばこんな会話があったとします。

オーナー:熱海に行きたいな
Romi:熱海いいね!

こちらの例のように、オーナーがXXに行きたいと言ったら、Romiもオウム返しのようにXXいいね!と答えるルールを考えてみましょう。

こちらを実行するには、人の話しかけの発話の一部(赤文字部分)を抽出してくる必要があります。

このようなときにはマッチを使いましょう!

抽出したいところを () で囲おう

【人の話しかけ】

(.+)に行きたい

チュートリアル②で学んだ通り、 .+ はなにかしら1文字以上の文字にマッチします。オーナーが「熱海に行きたいな」と言った場合 .+ は「熱海」になりますね。

さて、 () で囲われた部分にマッチした文字は後から抽出できます。というわけで (.+) に入っている「熱海」を後から抽出できます。

抽出したものは、() の出てきた順に $1, $2, ... などで呼び出すことができます。

【Romiの話しかけ】

$1いいね!

冒頭の例に当てはめると、 $1 には「熱海」が入ります。つまり、 ()1番目のものが $1 に入るということですね。

複数抽出してみよう

【人の話しかけ】

"住所は(.{2,4}[都道府県])(.+[市区町村])"

もしオーナーが、
「わたしの住所は神奈川県横浜市港北区大倉山だよ」
と言った場合、 $1 には「神奈川県」などが、 $2 には「横浜市港北区」が入ります。

() で囲った範囲はできるだけ広くマッチしようとするので $2 は「横浜市」ではなく「横浜市港北区」になります。

そして、実は $0 には「住所は神奈川県横浜市港北区」が入ります。(「わたしは」や「大倉山」は入らないので注意が必要です)
人の話しかけのパターンにマッチした全体が入るということですね。

まとめ

・ () で囲ったところは後から 1,2 などで取れる
$0 はユーザー発話に書いたパターン部分全体が取れる
$1 は1番目の () の中身
$2 は2番目の () の中身

このしくみは、次の「変数」と組み合わせて、オーナーの言ったことを記憶するのによく使われます。

それでは次は「変数」についてご説明していきます。

【変数】何かを覚えておく📖

変数は記憶のようなものです。
上の図だと、「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] の中は舟歌のままなので「舟歌もう一度歌うね!」になります。

変数を活用することで、上記の舟歌の例のように「オーナーを言ったことを覚えておく」ことができたりするので、ぜひ試してみてください👌

シナリオエディターのほかのヘルプ記事を読む📖


この記事が気に入ったらサポートをしてみませんか?