提供: Japanese Scratch-Wiki

このきじは ひらがなのページがありません。ごめんなさい。編集者向け:作成する
Scratch2.0では、クラウドデータを利用することでリアルタイムで複数のScratcherたちが話せるチャットルームを作ることが可能である。しかしながら、現在基本的にチャットルームを作ることは許可されていない。

よくある質問と答え(FAQ)の「クラウドデータ」には、 「技術的にはクラウドデータを用いてチャットルームを作ることは可能ですが、現在それらは許されていません。クラウドデータの監督と報告の管理に対して十分な能力を持ったところで再検討するでしょう。」と書かれてある。

しかし、これは、Scratchチームがあるプロジェクト内のクラウドデータを利用したチャットを監督できず、安全が保障できないからであり、現状安全なチャットルームなら作っても問題ないとされている。


安全なチャットルームなら作っても良いとされる根拠

Scratchチームの一人であるPaddle2SeeさんのサブアカウントPaddle2SeeFixItさんのプロジェクト 「Pretty good wordlist for cloud chat projects」の「使い方」の欄には、次のように説明されている。

The release of Cloud variables with Scratch 2.0 opened up the possibility of making "chat room" projects using cloud variables to store the conversation on the server and allow different people running the Scratch project to participate. These kinds of projects are currently allowed on Scratch if certain precautions are made to insure that the Community Guidelines are being followed in the chat room. Specifically, measures must be taken to:

1. prevent exposing participants to inappropriate words

2. allow easy monitoring of the conversation to prevent inappropriate conversations

Words used in the chat room project must be selected from a list of approved words or phrases. Non-approved words must not be communicated through the cloud variables. This is an example of a so-called "whitelist filter". A sample approved whitelist word list can be found in this project.

In addition to the whitelist filter, the current conversation must be easily monitored by all people running the project - the use of individual rooms or channels is not permitted.

日本語訳:

Scratch2.0のクラウドデータのリリースは、クラウドデータを「会話の情報をサーバーに貯蓄し、そのプロジェクトを実行している様々な人にその情報に関係する許可を与える」ために使用することで「チャットルーム」プロジェクトを作ることを可能にした。現在、このようなプロジェクトは、そのプロジェクト内でコミュニティーガイドラインが守られるということを保証する、確かな備えがあるのなら許可されている。 具体的に、それが満たされているかは次の二つの基準で判断する。

  1. 参加者が不適切な会話に触れないように防止策が施されてあるか。
  1. 不適切な会話を防止するため、容易に会話のモニタリングが行えるようになっているか。

チャットルームプロジェクトで使われる言葉は、許可された単語やフレーズのリストから選ばれなければならない。許可されていない単語はクラウド変数を通して伝えられてはならない。これは「ホワイトリストフィルター」と呼ばれるものの実例だ。ホワイトリストワードリストのサンプルは、このプロジェクトの中にある。

また、ホワイトリストフィルターに加え、会話の状況はプロジェクトを実行している全ての人が簡単にモニタリングできるようになっていなければならない。そのため、個別・チャンネル別のチャットルームの使用は許可されていない。

もしScratcherたちが不適切な単語や会話がなされているのを目にしたら、彼らは「報告」ボタンを使用しようとし、又は私たちScratchチームにそのことを知らせようとするだろう。

Scratchチームは現在、上で示されている二つの基準が満たされた、安全なチャットであれば作ることを許可している。

チャットルームの仕組み

チャットルームは、クラウドリストを利用して作成される。 個人が投稿したメッセージをクラウドリストに追加し、保存出来るようにすればよいのだ。 しかし、"チャットルームプロジェクトで使われる言葉は、許可された単語やフレーズのリストから選ばれなければならない。"ことに留意しなくてはならない。 この条件を満たすチャットは、大きく「定型文式チャット」と「セーフチャット」に分類される。

定型文式チャット

定型文式チャットとは、文字通り定型文のみを投稿できるチャットのことを指す。多くのものは、許可された複数の定型文をリストに入れてユーザーに提示し、ユーザーが投稿したい文のリスト番号を入力するという仕組みである。クラウドリストには定型文のIDだけ保存し、そのIDから定型文を復元すればよいので、簡単に作ることができる。つまり、クラウド変数をリストに変換する技術さえあれば、通常のクラウドリストに必要な文字の英数字への変換・復元技術は無くても良いのだ。

定型文式チャットのつくり方

前述したように、定型文式チャットを作ることはとても簡単だ。このプロジェクトで必要な変数、リストは

  • 変数「cnt」
  • クラウド変数「ID」
  • リスト「定型文」
  • リスト「チャット」

である。

  1. 定型文の用意
@greenFlag が押されたとき::events hat
隠す
[定型文 v]のすべてを削除する::list
[おはよう] を [定型文 v] に追加する
[こんにちは] を [定型文 v] に追加する
[こんばんは] を [定型文 v] に追加する
[始めまして] を [定型文 v] に追加する
[お元気ですか] を [定型文 v] に追加する

別に定型文は何個あっても良いが、今回のスクリプトは定型文の数が一桁であるということが前提なので、二桁以上の定型文を使用したい場合は自分でプログラムを改造する必要がある。

  1. 復元プログラムの作成

これが最も重要な部分である。この定義は「再描画しない」設定にする。そうすることで復元処理を1フレーム内で終わらせることができる。

定義 復元
[チャット v]のすべてを削除する::list
[cnt v] を [1] にする
((☁ ID) の長さ) 回繰り返す //クラウド変数「ID」の値を一つずつ取得し、取得した値番目にある定型文を「チャット」に追加
  ([定型文 v]の((☁ ID)の(cnt)番目の文字::operators) :: list) を [チャット v] に追加する
  [cnt v] を (1) ずつ変える
end
  1. 入力システムの作成
@greenFlag が押されたとき::events hat
ずっと 
  [投稿したい文のリスト番号を入力してください。] と聞いて待つ
  もし <<(答え) < ([定型文 v] の長さ :: list)> または <(答え) = ([定型文 v] の長さ :: list)>> なら //定型文のIDとして扱える値かどうか
    [☁ ID v] を ((☁ ID) と (答え)) にする//クラウド変数「ID」の一番後ろに新しいIDを追加。=投稿
  end
end
  1. リロードするプログラムの設定

本来は、クラウド変数が更新されたときにのみリロード(チャットの再読み込み)するのが望ましいが、難しいので今回は1秒ごとに自動的にリロードさせることにする。

@greenFlag が押されたとき::events hat
ずっと 
  (1) 秒待つ
  復元 :: custom
end

定型文式チャットの限界

定型文式チャットは、作ることは簡単だが、チャットとしては優れていない。もとから決められた文でしか話せないという制約があまりにも厳しいからだ。しかし、これは、安全な「文」ではなく、「単語」のみを投稿できるようにすることで解決する。