Smalruby3

Smalruby3
チャットボット

教員用「こんにちは」「こんにちは」目次
事前準備
1. ソフトウェアの立ち上げ …………………………………………………………………… ４
2. ソフトウェアの基本操作 …………………………………………………………………… ５
3. プログラムの作成方法 ……………………………………………………………………… ６

導入
1.

双方向性のあるコンテンツとは …………………………………………………………… ９2.

情報通信ネットワークの構成と仕組み ………………………………………………… １０

3. チャットボットとは ………………………………………………………………………… １１

チャットボットを作成しよう
1. シナリオ型チャットボット ………………………………………………………………… １６2.

辞書型チャットボット ……………………………………………………………………… ２４3.

AI型チャットボット ………………………………………………………………………… ３１

発展課題
1. ネットワークをつなごう…………………………………………………………………… ３８2.

双方向通信のできるチャットボットを作成しよう ……………………………………… ４４

2

事前準備
・ソフトウェアの立ち上げ
・ソフトウェアの基本操作・プログラムの作成方法

3

ソフトウェアの立ち上げ

本テキストでは「smalruby3」を使用してコンテンツの制作を行います。
Webブラウザを開いて下記URLにアクセスし、「smarluby3」を立ち上げてください。
●ソフトウェアURL

https://www.artec-kk.co.jp/dl/smalruby/
サポートOS: Windows10/Chromebook/iPadOS
インターネット接続環境が必要です。

※上記URLで提供している「smalruby3」
は、
アーテックオリジナルバージョンです。
当社によるサポート対象は上記バージョンのみとなります。

カテゴリー：命令の種類を選ぶことができます

言語の選択

ステージ：
プログラムによってスプライトが動くエリアですメニュー

ブロックパレット：
センサーやアクチュエータへの命令が表示されますスクリプトエリア：
命令をつないでプログラムをつくることができます
スクリプトとは？・・・・6ページ参照

スプライトリスト：
プログラム内で使用するキャラクターが表示されます
スプライトとは？・・・・5ページ参照

拡張ブロック：
各種拡張ブロックが追加されます4ソフトウェアの基本操作① スプライトの追加
スプライトの追加をする場合は、スプライトエリア右下部の「スプライトを選ぶ」
からスプライトを追加します。

ABCD
A スプライトをアップロード

ファイル参照画面が開きます。
ファイル保存先を参照してファイルを選択してください。

B サプライズ
ソフトウェアに標準で準備されている画像の中からランダムにスプライトが追加されます。

C

C 描く
ペイントエディターが開きます。
D スプライトを選ぶ

ソフトウェアに標準で準備されている画像の中からスプライトを選択します。

D

スプライトとは・・・。

コンピュータの画面上で画像や図形を動かす表現を実現する仕組みのひとつで、各画像を背景と別に作成し、それらを合成する仕組みです。この仕組みを使って表示される各画像のこともスプライトとよびます。スプライトは主に、コンピュータゲームなどで用いられている手法です。

チェック

スプライトの作成方法は理解できましたか。

5

プログラムの作成方法■スプライトの切り替えプログラムはスプライトごとに作成します。
スプライトエリアの各スプライトをクリックすることで、それぞれのプログラム作成画面に切り替わります。

ここに表示されているスプライトのプログラムがスクリプトエリアに表示されています。

選択

スクリプトとは・・・。

簡易的なプログラムとして用いられる用語で、スクリプトを作成するための言語を「スクリプト言語」と呼びます。スクリプト言語は機械語への翻訳を必要とせずにプログラムを実行することができ、特定のアプリケーションの動作など簡単なプログラムに用いられています。用途を限定しているため、構造自体も本格的なプログラミング言語よりも簡単に作成できます。

◆ プログラムの作成

ブロックパレットにある命令をおもちゃのブロックのようにつなぐことでプログラムをつくります。
この命令のひとつひとつを「ブロック」と呼びます。

ブロック

つなぐ

6

◆ ブロックの削除

削除するブロックをブロックパレットにドラッグ＆ドロップします。

ドラッグ＆ドロップ

ブロック
パレット

◆

ブロックの複製
つながっているブロックを複製できます。つなげたブロックの一部分だけ複製したい場合は、その部分を抜き出して同じ操作を行います。

右クリックして複製

ブロックが
複製される

◆

取り消し
スクリプトエリアで右クリックをして表示されるメニューから取り消しを押す
ことで、一つ前の状態に戻すことができます。

右クリックで表示◆ プログラムの保存方法①「ファイル」から「コンピュータに保存する」を選択します。

チェック
ソフトウェアの基本操作は理解できましたか。

7

導入
・双方向性のあるコンテンツとは・情報通信ネットワークの構成と仕組み
・チャットボットとは

8

双方向性のあるコンテンツとは
コンテンツ

コンテンツとは、文字、画像、音声、動画などをくみあわせて、意味のある情報としてあらわされたものを指します。
例えばデジタルのコンテンツには、Web サイトやSNS があります。
アナログのコンテンツには本や雑誌があります。
コンテンツは情報を伝達する手段であり、私たちの生活に深くかかわっています。

(例)

＝

Aa ＋

Webサイト

文

＝
本

Aa ＋
文

＝
SNS

Aa ＋
文

＋
動画

画像

画像

＋
画像

＋
動画

音

双方向性のあるコンテンツ

テレビ番組のようにメディアから視聴者へ向けて一方向に情報が発信されるコンテンツに対して、
テレビゲームのように操作（入力される情報）によって発信される情報が変化するようなものを「双方向性のあるコンテンツ」といいます。
新聞、
テレビなどの一方向のコンテンツ

インターネットなどの双方向性のあるコンテンツ

一方向に情報が発信される（情報を受け取るのみ）

双方向に情報が発信される（情報を受け取るだけではなく、発信することもできる）

一方向のコンテンツと双方向性のあるコンテンツの例を考えよう

年

一方向のコンテンツ

双方向性のあるコンテンツ（例）従来のテレビ番組（例）デジタル番組（ｄボタン）

新

聞

SNS

映

画

インターネット検索

組

番

名前

9

情報通信ネットワークの構成と仕組み
ネットワーク

複数のコンピューターやプリンターなどの機器を接続し、お互いに通信できるようにした状態のことを指します。
接続する方法にはケーブルを使用して接続する有線接続と電波などを利用した無線接続があります。
有線接続
無線接続

インターネットテレビ

PC

インターネット

ルーター

TV
ハブ

無線ルーター

PC

無線ルーター

プリンター

PC

身のまわりにある有線接続と無線接続の例を考えよう

有線接続

無線接続

プリンター

スマートフォン

デスクトップPC

ポータブルゲーム

テレビ

Bluetooth スピーカー
IoT 家電情報通信ネットワーク「情報通信ネットワーク」とは、
コンピューターやスマートフォンなどのデバイス同士がネットワークを使って、情報をやりとりする仕組みです。
これは、手紙や電話と同じコミュニケーション手段の１つです。例えると、
ネットワークは街中を走る道路のようなもので、データはその道路を通る車です。様々な目的地を行き交いながら情報をやり取りします。

年

組

番

名前

10

チャットボットとはチャットボット

チャットボットとは、チャットを使って会話をするロボット（またはプログラム）のことを指します。
チャットボットは人間が質問したり、指示を出したりすると、自動的に質問に回答したり、タスクを実行したりすることができます。
チャットボットは、
カスタマーサポート、情報提供、予約の管理、タスクの自動化など、さまざまな用途に使われています。

＋
チャット(Chat)＝
チャットボット(ChatBot)

ロボット(Bot)

チャットボットは質問に対する回答の仕方によって、次の３つに分類することができます。
① シナリオ型
② 辞書型
③ AI型

シナリオ型

シナリオ型のチャットボットは、あらかじめ設定された台本に基づいて会話をします。

スーパーマーケットのセルフレジ
（例）

セルフレジ

有料のレジ袋は必要ですか?

お客さん

セルフレジ

いいえ

ポイントカードは持っていますか?

お客さん

セルフレジ

はい

はい

いいえ

お支払い方法は1〜3のどれですか?
1.現金
2.クレジット
3.バーコード決済

お客さん

現金

クレジット

バーコード決済

オレンジ色のセルフレジのセリフはあらかじめチャットボットに設定されています。お客さんはその質問に対して、選択肢の中から回答します。
どのように会話が進んでいくのかのシナリオが決まっているため、
このチャットボットを「シナリオ型」と呼びます。

11

辞書型

辞書型のチャットボットは、人間からの質問や指示の中に特定の単語やフレーズが入っていた場合に、あらかじめ設定された回答をします。
シナリオ型と異なる点は、人間側からの解答や指示に制限を設けないという点です。

（例）今日の体調について質問するチャットボット〈 設定されている単語と解答 〉

元気

楽しい

という単語が入っていたら…

「よかった！今日も頑張ろう！」
と答える

悲しい

辛い

という単語が入っていたら…

「そっか…。無理しないでね」
と答える

風邪

腹痛

という単語が入っていたら…

「今日はゆっくり休もう！お大事にね」と答える〈 辞書型チャットボットとの会話 〉

チャットボット

今日の体調はどうですか?

チャットボット

今日の体調はどうですか?

チャットボット君こんにちは! 今日はとっても元気だよ!

昨日試合に負けちゃって悲しいんだ「チャットボット君こんにちは! 今日はとっても 元気 だよ!」

「昨日試合に負けちゃって 悲しい んだ」

元気

チャットボット

チャットボット

楽しい

悲しいという単語が入っていたら…

辛いという単語が入っていたら…

「よかった！今日も頑張ろう！」と答える「そっか…。無理しないでね」と答える

チャットボット

チャットボット

よかった! 今日も頑張ろう!

チャットボット

そっか…。無理しないでね

今日の体調はどうですか?

今日は風邪気味で、体調よくないんだ「今日は風邪気味で、体調よくないんだ」

風邪

腹痛という単語が入っていたら…

「今日はゆっくり休もう！お大事にね」と答える

チャットボット

チャットボット

今日はゆっくり休もう！お大事にね

このように決まった単語やフレーズに反応して回答します。
このチャットボットを「辞書型」と呼びます。

12

AI型

AI型のチャットボットは、AI（人工知能）
によって自然なコミュニケーションができるようにつくられています。
今までのチャットボットとの違いは、ロボットが自分で質問や指示を理解して、答えることができるという点です。
AI型チャットボットでは、質問や指示の内容を理解するために「機械学習」という方法が使われています。

機械学習「機械学習」とは、機械（コンピューター）がデータの内容を理解するために使われる方法の一つです。
特定のデータを理解できるようにするためには、関連するデータを大量に使って、共通点や特徴を覚えさせる必要があります。
例えば画像認識では、次のように学習と判定が行われます。

（例）提示されたイラストが犬か猫かを判定する①

大量の画像データから、その共通点や特徴を探す。

〈犬の画像データ〉〈猫の画像データ〉

・足が４本ある・しっぽがある・ひげが生えている・耳がついている
etc…

・足が４本ある・しっぽがある・首輪がついている・耳がついている
etc…

②

学習したデータ（共通点や特徴をまとめたデータ）を使って、提示された画像が犬か猫かを判定します。
〈提示された画像データ〉
・足が４本ある・しっぽがある・赤い舌が出ている・首輪がついている・耳がついている
・座っている

猫の確率
犬の確率

60%
87％

この画像は
「犬」
だ！

このように画像認識の機械学習では、画像のデータを大量に学習します。AI型のチャットボットでも同じように、会話文のデータを大量に学習します。
この学習したデータを使って、「〇〇という質問が来たら、××と返せばよい」というように、ロボットが自分で質問を理解して、適当な回答をすることができるようになります。
このようにAIの技術が使われたチャットボットを「AI型」と呼びます。

13

ふりかえり【狙い】
・チャットボットの特徴をどれだけ捉えることができているのか確認する
・P.27でも同様の設問を行い、授業前後でどれだけ理解が深まっているのか確認する
教員用P.36【課題】
シナリオ型・辞書型・AI型、それぞれのチャットボットの特徴を以下の表にまとめましょう。

シナリオ型

辞書型

AI型

●選択肢から回答を選ぶから、使い方が簡単。

●登録された単語やフレーズに反応して回答することができるため、幅広い入力に対応することができる。

●AI 技術を使っているので、自然な会話をすることが可能。

●専門用語などを知っていな
いと質問を入力することができない。

●会話を学習して、回答の精度が上がっていく。

●あらかじめ設定されたパターンに基づいて回答する。
●特定の分野やテーマに注目しているため、正確な会話が可能。
●提示された選択肢からしか会話することができない。

年

組●カタカナ、平仮名、漢字など文字の種類が異なると反応することができない。

番

名前

14

●作成するのが大変。

チャットボットを作成しよう
・シナリオ型チャットボット
・辞書型チャットボット
・AI型チャットボット

15

チャットボットを作成しよう
シナリオ型チャットボット
学校への訪問客対応のためのシナリオ型チャットボットを作成しましょう。

【課題】
学校を訪れたお客さん（訪問客）に対して、どのような目的で来校したのかを聞き、それに応じて案内するチャット
ボットを作成します。

（アクティビティ図）
訪問客

チャットボット①

学校に来る

来校目的を聞いて、以下の選択肢から選んでもらう

質問に答える1.先生と会う 2.会議に参加する 3.行事に参加する②
質問に答える「こんにちは」と言う

1.の場合

先生と約束しているか聞く
1.約束している

2.約束していない

④

③

2.の場合

3.の場合

会 議 が 行 わ れて いる

行 事 が 行 わ れて いる場所を伝える

1.の場合

2.の場合

職員室を案内する先生に連絡する

16

場所を伝える訪問客

プログラムの作成

学校に来る

P.16のアクティビティ図を参考にして、プログラムを作成していきます。
① 以下の部分のプログラムを作成します。
①①「こんにちは」と言う

来校目的を聞いて、以下の選択肢から選んでもらう
1.先生と会う 2.会議に参加する 3.行事に参加する

1.の場合
質問に答える「こんにちは」と言う先生と約束しているか聞く
1.約束している

2.約束していない

来校目的を聞いて、以下の選択肢から選んでもらう

1.の場合

1.先生と会う 2.会議に参加する 3.行事に参加する(1) カテゴリー 見た目 から質問に答える

チャットボット

職員室を案内する

2.の場合

3.の場合

会 議 が 行 わ れて いる

行 事 が 行 わ れて いる場所を伝える

場所を伝える

2.の場合先生に連絡するをスクリプトエリアにドラッグします。

(2) カテゴリー 調べる からをスクリプトエリアにドラッグし、「ご来訪の目的を選んで数字を入力してください。 １．先生と会う ２．会議に参加する ３．行事に参加する」と入力し、（１）で作成したブロックの下につなげます。

(3) カテゴリーイベント からを（２）で作成したブロックの上につなげることで、 をクリックしたらプロ
グラムが動作するようになります。

ここまでで①のプログラムが完成です17②

以下の部分のプログラムを作成します。

訪問客

チャットボット

学校に来る

②

1.の場合

「こんにちは」と言う

来校目的を聞いて、以下の選択肢から選んでもらう

質問に答える先生と約束しているか聞く

1.先生と会う 2.会議に参加する 3.行事に参加する②

1.約束している

質問に答える2.約束していない

1.の場合

先生と約束しているか聞く
1.約束している

2.約束していない

1.の場合職員室を案内する

2.の場合

3.の場合

会 議 が 行 わ れて いる

行 事 が 行 わ れて いる場所を伝える

場所を伝える

2.の場合先生に連絡する(1) カテゴリー 演算 からをスクリプトエリアにドラッグします。
「り」の部分に「１」を入力します。

(2) カテゴリー(3) カテゴリー

調べる

制御

から

から

をドラッグして、「りんご」の部分に挿入します。

をスクリプトエリアにドラッグし、（２）で作成したプログラムを挿入します。

18

(4) カテゴリー 調べる からをスクリプトエリアにドラッグし、「約束はされていますか？
「はい」の場合は1を、「いいえ」の場合は2を入力してください」と入力します。

(5) （３）で作成したブロックに、（４）で作成したプログラムを挿入します。

(6)①で作成したプログラムの下につなげます。

ここまでで②のプログラムが完成です19

③

以下の部分のプログラムを作成します。

③

訪問客

学校に来る

2.の場合
会 議 が 行 わ れて いる場所を伝える

3.の場合

質問に答える

チャットボット「こんにちは」と言う

来校目的を聞いて、以下の選択肢から選んでもらう
1.先生と会う 2.会議に参加する 3.行事に参加する

行 事 が 行 わ れて いる場所を伝える

1.の場合
質問に答える先生と約束しているか聞く
1.約束している

2.約束していない

1.の場合

(1)

②の（１）
〜
（３）
を参考にして、以下のプログラムを作成します。

(2) カテゴリー 見た目 からす。」と入力します。

(3)

職員室を案内する

③

2.の場合

3.の場合

会 議 が 行 わ れて いる

行 事 が 行 わ れて いる場所を伝える

場所を伝える

2.の場合先生に連絡するをスクリプトエリアにドラッグし、「会議は第1会議室で行われま(１）で作成したプログラムに（２）で作成したプログラムを挿入します。

20

(4) カテゴリー 制御 からムを作成します。

をスクリプトエリアにドラッグし、
（１）
〜
（３）
を参考にして、以下のプログラ(5) （４）で作成したプログラムを（３）で作成したプログラムに挿入します。

(6) （5）で作成したプログラムを、②で作成したプログラムに挿入します。

ここまでで③のプログラムが完成です21

④

以下の部分のプログラムを作成します。

④

訪問客

チャットボット

学校に来る

1.の場合
職員室を案内する

2.の場合「こんにちは」と言う

来校目的を聞いて、以下の選択肢から選んでもらう

質問に答える1.先生と会う 2.会議に参加する 3.行事に参加する

先生に連絡する

1.の場合
質問に答える先生と約束しているか聞く
1.約束している

2.約束していない④

1.の場合
職員室を案内する

(1)

2.の場合

3.の場合

会 議 が 行 わ れて いる

行 事 が 行 わ れて いる場所を伝える

2.の場合先生に連絡する③の（1）〜(3)を参考にして、以下の２つのプログラムを作成します。

(2) （１）で作成したプログラムをつなげ、③で作成したプログラムに挿入します。

ここまでで④のプログラムが完成ですプログラムの実行
プログラムを完成後、ソフトウェア画面右上のを押して、作成したチャットボットと会話しましょう。

22

場所を伝えるふりかえり【狙い】
実際にシナリオ型チャットボットを作成して、このチャットボットの改善点を考える。
【課題】
シナリオ型チャットボットの良い点と悪い点を以下の表に書き入れましょう。

良い点

悪い点

● 事前に用意されたシナリオに沿って解答する
ため、チャットボットからの回答が迅速な点。

● 回答の選択肢が決まっているため、会話で対応できる範囲が限定的な点。

● シナリオが設定されているため、チャットボッ
トからの回答が正確である点。

● 対応できる場面やタスクが決まっているため、使える場面が限定的な点。
● 答えることのできない質問がある。
● 新しい情報に対応することができない。

【狙い】
・チャットボットの改善を考えることで、シナリオ型チャットボットの仕組みをより理解する。
・書き出した改善点から次の「辞書型チャットボット」
に対して、興味を持ってもらう。
【課題】
シナリオ型チャットボットの悪い点を踏まえて、どのように改善すればもっと使いやすくなるか考えて、下の赤枠
内に書き入れましょう。
●選択肢から選ぶのではなく、ユーザーが自由に回答を入力できるようになるとよい。
●選択肢のほかに、自由に記述できるようにする。
●質問に回答できない場合は、オペレーターなどにつなげるようにする。
●新しい情報が出てきたら、チャットボットが自分で学習するようにする。
●テキストのチャットだけではなく、絵文字や音声にも対応できるようになるとよい。
●今までのチャットボットとの会話を学習すれば、もっと自然に会話ができるようになると思う。

年

組

番

名前

23

辞書型チャットボット
学校への訪問客対応のための辞書型チャットボットを作成しましょう。
【課題】
学校を訪れたお客さん（訪問客）に対して、案内するチャットボットを作成します。
シナリオ型チャットボットのように選択肢から回答させるのではなく、自由に入力してもらえるようにしましょう。

（アクティビティ図）
訪問客

チャットボット①

学校に来る「こんにちは」と言う質問に答える

来校目的を聞く②「先生」
かつ「打ち合わせ」という単語が入っている
場合③

会 議 が 行 わ れて いる先生と約束しているか聞く

質問に答える

④

「会議」
または
「会合」
という
単語が入っている場合

場所を伝える

「行事」
または
「参観」
という
単語が入っている場合

行 事 が 行 わ れて いる場所を伝える「いいえ」という単語が入っている場合「はい」という単語が入っている場合職員室を案内する先生に連絡する

回答の用意
チャットボットの回答内容が以下の表の場合、訪問客が入力する文章には、どのような単語が含まれている必要があるでしょうか。
適切な単語を以下の表に書き入れましょう

入力された単語

チャットポットの回答内容（例）会議・会合・打ち合わせ（例）本日の会議は２階会議室で行われます。

先生・約束・アポイント

先生と約束はされていますか?

今日・行事・場所・参観

本日の行事は体育館で行われます。

はい・約束している

職員室にお越しください。

いいえ・約束していない
年

組番

確認いたします。少々お待ちください。

名前

24

訪問客

プログラムの作成

チャットボット①

学校に来る

教員用P.24

P.15のアクティビティ図を参考にして、プログラムを作成していきます。
① 以下の部分のプログラムを作成します。

①「こんにちは」と言う質問に答える

来校目的を聞く「先生」
かつ「打ち合わせ」という単語が入っている場合

質問に答える

「会議」
または
「会合」
という
単語が入っている場合

会 議 が 行 わ れて いる先生と約束しているか聞く

場所を伝える

場所を伝える「いいえ」という単語が入っている場合「はい」という単語が入っている場合「こんにちは」
と言う

「行事」
または
「参観」
という
単語が入っている場合

行 事 が 行 わ れて いる

職員室を案内する先生に連絡する

来校目的を聞く
教員用P.17

P.8の（１）〜（３）の手順を参考にして、以下のプログラムを作成してください。

ここまでで①のプログラムが完成です②

以下の部分のプログラムを作成します。

② 「先生」かつ「打ち合わせ」という単語が入っている
場合

学校に来る

「こんにちは」と言う質問に答える

来校目的を聞く

先生と約束しているか聞く②
質問に答える

教員用P.18(1)

チャットボット

訪問客

P.9の（１）〜（２）を参考にして、以下の2つのブロックを作成します。

「先生」
かつ「打ち合わせ」という単語が入っている場合先生と約束しているか聞く「はい」という単語が入っている場合職員室を案内する

「会議」
または
「会合」
という
単語が入っている場合

会 議 が 行 わ れて いる場所を伝える

「行事」
または
「参観」
という
単語が入っている場合

行 事 が 行 わ れて いる場所を伝える「いいえ」という単語が入っている場合

先生に連絡する

ここでは例として
「先生」
と
「打合せ」
を入力しましたが、P.15の「入力された単語」
を参考にして、自分で考えた単語を入力しても大丈夫です。
教員用P.24

25

(2) カテゴリー 演算 から(3) カテゴリー

制御からをスクリプトエリアにドラッグし、（１）で作成したブロックを挿入します。

をスクリプトエリアにドラッグし、（２）で作成したプログラムを挿入します。

(4) カテゴリー 調べる からをスクリプトエリアにドラッグし、「約束はされていますか？」
と入力し、
（３）
で作成したブロックに挿入します。

26

(5) （４）で作成したプログラムを、①で作成したプログラムの下につなげます。

ここまでで②のプログラムが完成です③

以下の部分のプログラムを作成します。

③「会議」
または「会合」
という単語が入っている場合

会 議 が 行 わ れて いる場所を伝える「行事」
または「参観」
という単語が入っている場合

行 事 が 行 わ れて いる

訪問客

チャットボット

学校に来る「こんにちは」と言う質問に答える

来校目的を聞く

場所を伝える「先生」
かつ「打ち合わせ」という単語が入っている場合

質問に答える先生と約束しているか聞く「はい」という単語が入っている場合職員室を案内する

(1)

③

「会議」
または
「会合」
という
単語が入っている場合

会 議 が 行 わ れて いる場所を伝える

「行事」
または
「参観」
という
単語が入っている場合

行 事 が 行 わ れて いる場所を伝える「いいえ」という単語が入っている場合

先生に連絡する

②の（１）
〜
（４）
を参考にして、以下の２つのブロックを作成します。

ここでは例として「会議」
や「会合」、「行事」、「参観」
を入力しましたが、P.15の「入力された単語」
を参考にして、自分で考えた単語を入力しても大丈夫です。
教員用P.24

27

(2) （１）
で作成したプログラムを組み合わせます。

(3) （2）で作成したプログラムを②で作成したプログラムに挿入します。

ここまでで③のプログラムが完成です28

④ 以下のプログラムを作成します。

④

訪問客

「はい」
という単語が入っ
ている場合

「いいえ」
という単語が入っている場合職員室を案内する先生に連絡する

チャットボット

学校に来る「こんにちは」と言う質問に答える

来校目的を聞く「先生」
かつ「打ち合わせ」という単語が入っている場合

質問に答える先生と約束しているか聞く④「はい」という単語が入っている場合職員室を案内する

(1)

「会議」
または
「会合」
という
単語が入っている場合

会 議 が 行 わ れて いる場所を伝える「いいえ」という単語が入っている場合

先生に連絡する

②の（１）
〜
（４）
を参考にして、以下の２つのブロックを作成します。

(2) （１）で作成したプログラムをつなげ、③で作成したプログラムに挿入します。

プログラムの実行
プログラムを完成後、ソフトウェア画面右上のを押して、作成したチャットボットと会話しましょう。

29

「行事」
または
「参観」
という
単語が入っている場合

行 事 が 行 わ れて いる場所を伝えるふりかえり【狙い】
実際に辞書型チャットボットを作成して、このチャットボットの改善点を考える。
【課題】
辞書型チャットボットの良い点と悪い点を以下の表に書き入れましょう。

良い点

悪い点

● 比較的簡単に作成することができる。

● 登録されていない単語には回答することができない。

● 答えが用意されているため、素早く回答することができる。

● 会話を自然に行うためには、大量の単語の登録が必要になり、プログラムの作成が大変。

● 特定の場面に絞られているため、高い精度の回答をすることができる。

● 複雑な会話に向かない。

● 登録された単語にしか応答しないため、ある程度会話の内容をコントロールすることがで
きる。

【狙い】
・チャットボットの改善を考えることで、辞書型チャットボットの仕組みをより理解する。
・書き出した改善点から次の「AI型チャットボット」
に対して、興味を持ってもらう。
【課題】
辞書型チャットボットの悪い点を踏まえて、どのように改善すればもっと使いやすくなるか考えて、下の赤枠内に書き入れましょう。
●ユーザー自身が単語を登録できるようにする。
●会話した内容を学習し、それに応じて回答を改善するようにする。
●登録されている単語や類義語や同義語を登録して、言葉のバリエーションを増やす。
●ユーザーが求める回答が登録されていない場合、インターネットに誘導する。
●チャットボットにキャラ付けをし、会話をより楽しくする。

年

組

番

名前

30

AI型チャットボット
辞書型チャットボットを改良して、会話を重ねるごとに回答の精度が上がるようにしましょう。
【課題】
辞書型チャットボットでは、人間から入力された質問次第でチャットボットが答えられない場合がありました。
この答えられなかった質問をリストに集め、データリストを作成できるプログラムを作成しましょう。

（アクティビティ図）
訪問客

チャットボット

学校に来る「こんにちは」と言う質問に答える

来校目的を聞く「先生」かつ「打ち合わせ」という単語が入っている場合

質問に答える

先 生と約 束して
いるか聞く

「会議」
または「会合」という単語が入っている場合会議が行われている場所を伝える「行事」
または「参観」という単語が入っている場合行事が行われている場所を伝える「はい」という単語が入っている場合「いいえ」という単語が入っている場合職員室を案内する先生に連絡するプログラムの作成
上記のアクティビティ図を参考にして、プログラムを作成しましょう。
前回作成した「辞書型チャットボット」に以下のプログラムを作成し、追加します。

あてはまる単語がなかった場合

質問内容をリストに追加する

ごめんなさい。
その質問には答えられません。

31

あてはまる単語がなかった場合

質問内容をリストに追加する

ごめんなさい。
その質問には答えられません。

(2) カテゴリー 変数 からトを作成します。

リストを作るをクリックし、新しいリスト名に「答えらなかった質問」
を入力して、
リス(2) カテゴリー 変数 からにを挿入します。

をスクリプトエリアにドラッグし、「なにか」の部分(3) カテゴリー 見た目 からをスクリプトエリアにドラッグし、「ごめんなさい。その質問には答えられません。」と入力し、（２）で作成したプログラムの下につなげます。

32

(4)

教員用P.29

P.20で作成した「辞書型チャットボット」
で、赤枠の「もし〜なら」のブロックを、「もし〜でなければ」のブロックに変更します。

(5) （４）の「〜でなければ」のブロックの下の部分に、（３）で作成したプログラムを挿入します。

33

プログラムの実行
プログラムを完成後、ソフトウェア画面右上のを押して、作成したチャットボットと会話しましょう。
この時、答えられなかった質問がリストに保存されていくことを確認してください。

回答方法の追加
リストに追加された質問を参考にして、回答方法を新しくチャットボットに追加しましょう。
(1) リストに追加された質問を確認します。
リストの表示を右クリックし、「書き出し」
を選択します。
パソコンのダウンロードファイルにテキストファイルが保存されます。
このテキストファイルからリストに保存された「答えられなかった質問」
を見ることができます。

右クリック

(2)

①

ダウンロードされたテキスト
新しい回答方法を作成します。
（例）答えられなかった質問に「保護者会に参加するため」と記入されていた場合「保護者会」という単語にも回答できるようにプログラムを追加していきます。
以下のようなプログラムを作成します。

34

②

(3)

①で作成したプログラムに答えられなかった質問をリストに集めるプログラムを挿入します。

教員用P.33

P.2４で作成したAI型チャットボットに（２）で作成したプログラムを挿入します。
以下の赤枠の部分のプログラムを取り、（２）で作成したプログラムと入れ替えます。

35

プログラムの実行
プログラムを完成後、ソフトウェア画面右上のを押して、作成したチャットボットと会話しましょう。
また、答えられなかった質問があった場合には、P.25の「回答方法の追加」
を行い、チャットボットに登録される情報を増やし
教員用P.34ていきましょう。
情報が増えれば増えるほど、
チャットボットとの会話の精度は上がっていきます。本来のAIはこの学習もロボット
自身で行っています。
ふりかえり
【狙い】
実際にAI型チャットボットを作成して、このチャットボットの改善点を考える。
【課題】
AI型チャットボットの良い点と悪い点を以下の表に書き入れましょう。

良い点

悪い点
● 必ずしも回答が正確ではない。

● 機械学習を通じて、柔軟な対応をすることが可能になり、自然な会話をすることができる。

● 作成が難しい。

● 会話の履歴などを学習し、よりユーザーに対応した回答をすることができるようになる。

● 最初に大量のデータを学習させる必要がある。

● 幅広い質問に対して、回答することができる。

【狙い】
・P.6の振り返りと比較して、授業前後でチャットボットに対しての理解がどれほど深まっているか理解する。
教員用P.14【課題】
シナリオ型・辞書型・AI型チャットボット、それぞれの特徴を以下の表にまとめましょう。

シナリオ型

辞書型

● 選択肢から回答を選ぶから、 ● 登録された単語やフレーズに使い方が簡単。
反応して解答することができるため、幅広い入力に対応す● あらかじめ設定されたパターることができる。
ンに基づいて回答する。
● 専門用語などを知っていない● 特定の分野やテーマに注目しと質問を入力することができているため、正確な会話が可ない。
能。
● カタカナ、平仮名、漢字など文● 提示された選択肢からしか会
字の種類が異なると反応する
話することができない。
ことができない。

年

組

番

名前

36

AI型
● AI 技術を使っているので、自然な会話をすることが可能。
● 作成するのが大変。
● 会話を学習して、回答の精度が上がっていく。

発展学習
・ネットワークをつなごう
・双方向通信のできる
チャットボットを作成しよう37

ネットワークをつなごう
ネットワークをつなぐ（メッシュのホストになる）(1)

画面左下の「拡張ブロック」
をクリックし、「メッシュ」
を選択します。

(2) メッシュのホストになる【＊＊＊＊】が表示されていたら、「接続する」
をクリックし、「エディターへ行く」
を選択します。
【＊＊＊＊】にはランダムな文字列が表示されます。

(3)

下の図のようにカテゴリーに ᵫᶃᶑᶆ のアイコンと、
パレットに

38

のブロックが追加されます。

ネットワークをつなぐ（メッシュに参加する）(1) ローカルネットワーク接続された別の端末、または新しく別のブラウザ画面を立ち上げて、Smalruby3を起動させてください。
(2)

画面左下の「拡張ブロック」
をクリックし、「メッシュ」
を選択します。

(3) メッシュに参加する【＊＊＊＊】が表示されていたら、「接続する」
をクリックし、「エディターへ行く」
を選択します。
この時、参加するホストと【＊＊＊＊】の文字列が同じになっていることを確認してください。
※メッシュのホストになる【＊＊＊＊】
を選択すると、新たなホストになることができます。

(4)

下の図のようにカテゴリーに ᵫᶃᶑᶆ のアイコンと、
パレットに

39

のブロックが追加されます。

Smalruby3では、ネットワークをつなぐことにより、以下のことが可能になります。
①互いに信号を送ることができる。

②変数を共有できる。

参考 変数ってなに？
変数は数字を入れて保存しておくことができる箱と考えることができます。
箱に名前を付けておくことで色々なところで中身を取り出して確認することができます。

7

5+
3+

8

箱に7を入れると・・
・

7
7

＝12

2+

×2＝17 4×

7
7

＝9

5+

＝28

3+

箱の数字を8に変えると・・・

8
8

箱の数字を変えるだけで、たくさんの式を一度に変更できます。

40

＝13

2+

×2＝19 4×

8
8

＝10
＝32

メッセージブロックを使って、お互いに信号を送る
ネットワークでつながれた複数のコンピュータでお互いに信号を送る方法を確認しましょう。
①

一方のPC
（送信側）
でイベントカテゴリからをスクリプトエリアにならべましょう。

② ネットワークでつながれた別のPC（受信側）
で以下のようなプログラムを作成しましょう。

メッセージ1の名前は任意に設定できますが、必ず受信側と送信側のブロックの名前は同じにしてください。

③

送信側PCのをクリックするとネットワーク経由でメッセージ
（信号）
が送られ、

受信側PCの

以下につながれたプログラムが実行されます。

ここでは受信側PCのスプライトが信号を受け取る度に15度ずつ回転します。
受信側

送信側
クリック

チェック

チェック

メッセージブロックの使い方を理解できましたか。

ネットワーク経由で他のPCのスプライトを動かせましたか。

41

変数をネットワークで共有する変数を作成し、ネットワークでつながれた複数のコンピュータで変数を共有する方法を確認しましょう。
①

一方のPC
（送信側）
で変数カテゴリで「変数を作る」をクリックして表示されたウインドウで新しい変数名を指定して作成します。

すべてのスプライト用を選んでください。

②

作成した名前の変数が使用できるようになります。
（ここでは「テスト１」という変数名を用いています。）

ステージには変数の値が表示されます。
初期値は 0 となっています。
チェックマークが付いている変数の値がステージに表示されます。

③下図のブロックに任意の値（文字列でもよい）を入力してクリックすると変数の値が変化することを確かめてください。

42

④ ①〜②と同じ手順でネットワークでつながれた他のPC（受信側）
でも任意の変数を作成してください。
（ここでは「テスト２」という変数名を用いています。）

⑤

PC
（受信側）
に以下のようにMeshブロックをならべて、 変数ブロックに「テスト2」、Meshブロックに「テスト１」
を選択します。

⑥⑤で作ったブロックをクリックして実行すると、③で送信側で設定した変数の値が、受信側の変数に反映されます。

受信側で設定した変数

送信側で設定した変数

変数「テスト２」の値に変数「テスト１」の値が反映される。

43

受信側 PC双方向通信のできるチャットボットを作成しよう
今まで作成してきたチャットボットは、一つのコンピューター内で完結していました。
しかし企業で使われているチャットボットは、複数のコンピューターからの質問に答えられるようにつくられています。そこで、一つのチャットボ
ットに複数のパソコンから質問することができるプログラムを作成しましょう。
教員用P.35【課題】
ネットワークを使って、P.26で作成したチャットボットが複数のコンピューターから質問されても答えられるようなプログラムを作成しましょう。

訪問客への回答を返すチャットボットの仕組みと、その回答を通信によって訪問客に伝えるための仕組みが必要になります。
複数のコンピューターからの質問に答えるチャットボットを、
通信システムをまとめるものとして「親」と呼ぶことにします。
親からの回答を訪問客に伝えるための各コンピューターを、親の命令に従って動くものとして「子」と呼ぶことにします。

【これまで作成したチャットボット】【双方向通信のできるチャットボット】

チャットボットと訪問客が一対一

チャットボットと訪問客が一対多数

チャットボット（親）訪問客

チャットボット

訪問客

A学校（子）

B学校（子）

訪問客

C学校（子）

訪問客（アクティビティ図）
訪問客

子 チャットボット

学校に来る「こんにちは」と言う

来校目的を答える

来校目的を聞く

親 チャットボット①

回答を親チャット
ボットに伝達する

③

②

「先生」
かつ
「打ち
合わせ」
という単
語 が 入って いる
場合

「会議」
または「会
合」
という単語が入っている場合

「行事」
または
「参
観」
という単語が入っている場合

あてはまる
単語がなか
った場合

先 生と約 束しているか聞く

会議が行われている場所を伝える

行事が行われている場所を伝える

質 問 内 容をリストに追加する

親チャットボットの返答を伝達する

親チャットボット → 赤枠で囲まれたプログラム（P.32から） 教員用P.46
子チャットボット → 青枠で囲まれたプログラム（P.31からとP.３5から）教員用P.45 からとP.49「親チャットボット」
か「子チャットボット」
どちらのプログラムを作成するか決めてください。

自分の作成するプログラム →44

プログラムの作成
教員用P.44

P.30のアクティビティ図を参考にして、プログラムを作成していきます。
訪問客

子 チャットボット

学校に来る「こんにちは」と言う

来校目的を答える

来校目的を聞く

子 チャットボットの作成①①

以下の部分のプログラムを作成します。

①
学校に来る

「こんにちは」と言う

回答を親チャット
ボットに伝達する

来校目的を答える

来校目的を聞く
回答を親チャット
ボットに伝達する

親チャットボットの返答を伝達する

教員用P.17(1)

P.８を参考にして、以下のプログラムを作成します。

(2) カテゴリー 変数 から変数を作成します。
ここでは変数名を「入力された答え」にします。
※「すべてのスプライト用」
として変数を作成してください。
をスクリプトエリアにドラッグします。

(3)

変数「入力された答え」
を（１）で作成したプログラムの下につなげ、
カテゴリー 調べる からて、変数の中に挿入します。

45

をドラッグし(4) カテゴリー イベントからをドラッグして、
新しいメッセージを作成します。
ここでは「訪問客の回答」
としています。
新しいメッセージを作成後、（３）で作成したプログラムの下につなげます。

ここまでで①のプログラムが完成です

親 チャットボットの作成②

以下の部分のプログラムを作成します。

②
「先生」
かつ
「打ち
合わせ」
という単
語 が 入って いる
場合

「会議」
または「会
合」
という単語が入っている場合

「行事」
または
「参
観」
という単語が入っている場合

あてはまる
単語がなか
った場合

先 生と約 束しているか聞く

会議が行われている場所を伝える

行事が行われている場所を伝える

質 問 内 容をリストに追加する(4) カテゴリー イベントからをスクリプトエリアにドラッグします。①で作成したメッセージと全く同じ文字を入力して、新しいメッセージを作成します。
ここでは、①の（４）で入力した「訪問客の回答」
を入力します。

46

(2)辞書型チャットボットで作成したプログラムを改良します。P.16〜P.１７の（１）〜（４）を参考にして、以下のプ
教員用P.25 ～P.26
ログラムを作成してください。

(3) カテゴリー 制御 からをドラッグして、
カテゴリー 演算 からを挿入します。

(4) カテゴリー 演算 からをスクリプトエリアにドラッグし、
「り」
を
「先生」
と
「打合せ」
にそれ

(5) カテゴリー ᵫᶃᶑᶆ からをスクリプトエリアにドラッグします。
「りんご」の部分に挿入し、「入

ぞれ変えます。そして、（３）ののブロックに挿入します。

力された答え」を選択します。

47

(6) カテゴリー 変数 から変数を作成します。
ここでは変数名を「回答を返す」にします。
※「すべてのスプライト用」
として変数を作成してください。

をスクリプトエリアにドラッグし、変数の名前を「回答を返す」に変更します。
「０」の部分に「職員室にお越しください」
を入力し、
（５）
で作成したプログラムに挿入します。

(7) カテゴリー イベントからをドラッグして、新しいメッセージを作成します。

ここでは「親チャットボットからの回答」
としています。
新しいメッセージを作成後、（４）で作成したプログラムの下につなげます。

(8) （２）〜（６）を参考にして、以下のプログラムを作成します。

ここまでで②のプログラムが完成です48

子 チャットボットの作成③

訪問客

子 チャットボット

学校に来る「こんにちは」と言う

来校目的を答える

来校目的を聞く以下の部分のプログラムを作成します。

③

親チャットボットの返答を伝達する

回答を親チャット
ボットに伝達する③

親チャットボットの返答を伝達する(1) カテゴリー イベントからをスクリプトエリアにドラッグします。①で作成したメッセージと全く同じ文字を入力して、新しいメッセージを作成します。
ここでは、②の（５）で入力した「親チャットボットからの回答」
を入力します。

(2) カテゴリー 見た目 からつなげます。

をスクリプトエリアにドラッグし、（１）で作成したプログラムの下に(5) カテゴリー ᵫᶃᶑᶆ からをスクリプトエリアにドラッグします。
「こんにちは！」の部分に挿入し、「回答を返す」を選択します。

ここまでで③のプログラムが完成です49

プログラムの実行
プログラムを完成後、ソフトウェア画面右上のを押して、作成したチャットボットと会話しましょう。
以下のようにメッセージブロックを使って、「子チャットボット」と「親チャットボット」
で情報を伝達しあっていることを確認してください。

子 チャットボット

親 チャットボット【これまで作成したチャットボット】【双方向通信のできるチャットボット】

チャットボットと訪問客が一対一

チャットボットと訪問客が一対多数

チャットボット

チャットボット（親）訪問客

A学校（子）

訪問客50

B学校（子）

訪問客

C学校（子）
B098118

訪問客
K0324