ブロック

今月の記事から転送)

注目の記事.png この記事は2018年2月の注目の記事です。

ブロックは、Scratch のプログラムを組み立てるために使う部品で、ジグゾーパズルのようにつなげて使用する。それぞれのブロックは、役割(「イベントを受け取る」「命令を出す」「値を返す」「真偽を返す」「スクリプトの終わりを表す」など)によって異なる形をしており、それぞれの形には、その形がピッタリはまる専用のスロット(ブロックを入れる場所)が存在している(これによって、プログラム上の構文エラーの発生を防いでいる)。なお、複数のブロックを組み合わせてひとまとめにしたものを、スクリプトという。

ブロックには次の12種類のカテゴリが存在する。このうち10種類が ブロックパレットに表示されている。

動き見た目ペン変数リストイベント制御調べる演算PicoBoardLEGO WeDo

ただし、Mod版ScratchScratchX)には、その他のカテゴリやブロックを持つものもある。


形状別に見た場合は、Scratch全体で、ハットブロックが11個、C型ブロックが5個、値ブロックが37個、真偽ブロックが13個、キャップブロックが2個、スタックブロックが77個存在する。

ブロックの形状

ブロックの形は、全部で6種類存在する: ハットブロックスタックブロック真偽ブロック値ブロックC型ブロックキャップブロック

ハットブロック

ハットブロックのかたち
詳細は「ハットブロック」を参照

ハットブロック(Hat Block)とは、スクリプトを開始するブロックであり、上が丸く、下に出っぱりがある形状をしている(したがって、下にしかブロックをつなげられない)。ハットブロックは全部で11個あり、そのうち6個が「イベント」、1個が「制御」、4個が「その他」に含まれている。 次に、ハットブロックの例を示す:

@ がクリックされたとき

このスプライトがクリックされたとき

スタックブロック

スタックブロックのかたち
詳細は「スタックブロック」を参照

スタックブロック(Stack Block)は、各種の命令を実行するブロックであり、上にくぼみ、下に出っぱりがある形状をしている(したがって、上下にブロックをつなげられる)。スタックブロックは全部で77個あり、ブロック形状別に見た場合、もっとも数が多い。

真偽ブロック

真偽ブロックのかたち
詳細は「真偽ブロック」を参照

真偽ブロック(Boolean Block)は、真(True)または偽(False)のどちらかの状態を表すブロックである。たとえば誰かに、「2+2は4だよね?」というような質問をすると、たずねられた人は「はい」「いいえ」のどちらかの答えを返すことになるが、真偽ブロックもこれと同じように真(はい)、偽(いいえ)のいずれかを返す。真偽ブロックは、全部で13個存在しており、六角形で表される。


値ブロック

値ブロックのかたち
詳細は「値ブロック」を参照

値ブロック(Reporter Block)は、数値や文字列を返すブロックである。たとえば誰かに「2+2っていくつ?」と尋ねれば、「4」という答えが帰ってくるだろうが、値ブロックもこれと同じように数値や文字列を答えとして返す。なお、質問できる内容は数式だけではない。値ブロックは、だ円形をしており、全部で37個存在する(値ブロックは、変数やリストを自分で作成した場合、理論上、無限に増やせるが、ここではそういったブロックは数に入れていない)。


C型ブロック

C型ブロックのかたち
詳細は「C型ブロック」を参照

C型ブロック(C Block)は、アルファベットの「C」の形をしたブロックであり、"ラップブロック"とも呼ばれる。C型ブロックには、間に挟まれたブロックを繰り返し実行したり、条件によってどの処理を実行するかを決める役割がある。C型ブロックは全部で5種類存在し、それらはすべて制御カテゴリに属している。C型ブロックの下部は、でっぱりがあるものとないものがある。

キャップブロック

キャップブロックのかたち
詳細は「キャップブロック」を参照

キャップブロック(Cap Block)は、スクリプトを停止するブロックで、上部にへこみがあり、下部は平らである(したがって、このブロックの下には他のブロックをつなげることができない)キャップブロックは全体で2個存在しており、どちらも制御カテゴリに属している。

ブロック一覧

Scratch 2.0にはユーザーが定義したブロックを除けば全部で144個のブロックが存在する。

動きブロック

詳細は「動きブロック」を参照

動きブロックは、スプライト の動きをコントロールするブロック群である。Scratch 2.0.には、全部で17個の動きブロックが存在する。 Scratch 2.0の動きブロックには、14個のスタックブロックが存在する:

Scratch 2.0の動きブロックには、3個の値ブロックが存在する:

  • x座標 — 選択中のスプライトのx座標
  • y座標 — 選択中のスプライトのy座標
  • 向き — 選択中のスプライトの向き

見た目ブロック

詳細は「見た目ブロック」を参照

見た目ブロック は、スプライトの見た目をコントロールするブロック群である。Scratch 2.0には全部で23個の見た目ブロックが存在する。スプライトの見た目ブロックは19個であるが、このうち3個には、同等の機能を持つステージ用の見た目ブロックが存在する。

Scratch 2.0の見た目ブロックには、16個のスタックブロックが存在する:

Scratch 2.0の見た目ブロックには、値ブロックが3個存在する。

音ブロック

詳細は「音ブロック」を参照

音ブロックは、音とMIDI機能に関するコントロールを行うブロック群である。Scratch 2.0には13個の音ブロックが存在する。

Scratch 2.0の音ブロックには、11個のスタックブロックが存在する。

Scratch 2.0の音ブロックには、2つの値ブロックが存在する:

ペンブロック

詳細は「ペンブロック」を参照

ペンブロック はペン機能をコントロールするブロック群である。Scratch 2.0には、11個のペンブロックが存在する。

Scratch 2.0のペンブロックには、11個のスタックブロックが存在する。

Scratch Day 2011で発表されたScratch 2.0 pre-alpha版では、ペンカテゴリのスタックブロックとして次のブロックが存在していた。

  • stamp transparent ()(透明スタンプ) — 現在のスプライトの見た目を、指定した数値に応じて透明化し、画面に転写するブロック。現在では、スタンプに対して「幽霊の効果」が適用できるようになったため、このブロックは廃止された。

データブロック

変数ブロック

詳細は「変数ブロック」を参照

変数ブロック は、値や文字列を持つブロックである。Scratch 2.0には、5個の変数ブロックが存在する。

Scratch 2.0の変数ブロックには、4つのスタックブロックが存在する:

Scratch 2.0の変数には、値ブロックが1つ存在する:

  • () — その変数の値

リストブロック

詳細は「リストブロック」を参照

リストブロックリストを扱うためのブロック群である。これらのブロックはデータカテゴリに用意されている。Scratch 2.0には、全部で10個リストブロックが存在する。

Scratch 2.0のリストブロックには、スタックブロックが6個存在する:

Scratch 2.0のリストブロックには、3つの値ブロックが存在する:

Scratch 2.0のリストブロックには、次の真偽ブロックが存在する:

  • () に () が含まれる — 要素の中に、指定したテキストと同じ値を持つものがあるかどうかを判断する。

イベントブロック

詳細は「イベントブロック」を参照

イベントブロック はイベントをコントロールして、各種のスクリプト開始のきっかけとなるブロック群である。Scratch 2.0には、全部で8個のイベントブロックが存在する。 Scratch 2.0のイベントブロックには、次の6個のハットブロックが存在する:

Scratch 2.0のイベントブロックには、次の2個のスタックブロックが存在する:

  • () を送る — Scratchプログラム全体にメッセージを送る。送ったメッセージが指定された「() を受け取ったとき」ブロックがあれば、そのスクリプトを実行する。
  • () を送って待つ — 「() を送る」ブロックと同様だが、メッセージを送った結果開始したスクリプトの処理がすべて終了するまで、このブロックが置かれた側のスクリプトの実行を中断して待つ。

制御ブロック

詳細は「制御ブロック」を参照

制御ブロックはスクリプトを制御するためのブロック群である。Scratch 2.0には、11この制御ブロックが存在する。

Scratch 2.0の制御ブロックには、1つだけハットブロックが含まれる。

  • クローンされたとき (スプライトのみ) — クローンが作成されるたびに指定したスクリプトを実行するが、スクリプト実行の対象となるのは、作成されたそのクローンだけである。

Scratch 2.0の制御ブロックには、3個のスタックブロックが存在する:

  • () 秒待つ — 指定された秒数、スクリプトの実行を止める。
  • () まで待つ — 与えられた条件が満たされるまで(Trueになるまで)、スクリプトの実行を止める。
  • () のクローンを作る — 指定したクローンを作成する。

Scratch 2.0の制御ブロックには、5個のC型ブロックが存在する:

  • () 回繰り返す — 指定した回数、処理を繰り返す。
  • ずっと — 永遠に処理を繰り返す。
  • もし () なら — 「もし () なら」で与えられた条件を確認して、条件が満たされていれば(Trueであれば)、中に入れられたブロックを実行する。
  • もし () なら、でなければ — 「もし () なら」で与えられた条件を確認して、条件が満たされていれば(Trueであれば)、中に入れられた1番目のブロックのまとまりを実行し、条件が満たされていなければ(Falseであれば)、2番めのブロックのまとまりを実行する。
  • () まで繰り返す — 条件が最初に満たされたとき、繰り返し処理を止める。

Scratch 2.0の制御ブロックには、2つキャップブロックが存在する:

  • () を止める — ドロップダウンメニューから選択したスクリプトを停止する。なお、「スプライトの他のスクリプト」が選択されたときは、スタックブロックになる。
  • このクローンを削除する (スプライトのみ) — このスクリプトを実行したクローンを削除する。

調べるブロック

詳細は「調べるブロック」を参照

調べるブロックは、何らかの事象を検出するブロック群である。Scratch 2.0には、調べるブロックが20個存在する。

Scratch 2.0の調べるブロックには、4個のスタックブロックが存在する:


Scratch 2.0の調べるブロックには、5個の真偽ブロックが存在する:

  • () に触れた — 選択中のスプライトがマウスポインターや他のスプライトに触れているかどうかを判別して、その真偽を返す。
  • () 色に触れた — 選択中のスプライトが指定した色に触れているかどうかを判別して、その真偽を返す。
  • () 色が () 色に触れた — 選択中のスプライトから指定した色が、もう1つの色に触れているかどうかを判別してその真偽を返す。
  • () キーが押された — 指定したキーが押されているかどうかを判別して、その真偽を返す。
  • マウスが押された — マウスが押されているかどうかを判別して、その真偽を返す。

Scratch 2.0の調べるブロックには、11個の値ブロックが存在する:

  • () までの距離 — 選択中のスプライトからマウスポインターまたは指定したスプライトまでの距離を返す。
  • 答え — 一番最後に実行した「() と聞いて待つ」ブロックの入力結果。
  • マウスのx座標 — マウスポインターのx座標.
  • マウスのy座標 — マウスポインターのy座標.
  • 音量 — コンピュータのマイクが検知した音量の大きさ。
  • タイマー — Scratchプログラムを開始してから、または、タイマーがリセットされてからの経過時間。
  • ビデオの () ( () ) — 指定したオブジェクト上のビデオのモーションの大きさまたは向き。
  • () ( () ) — ステージまたは指定したスプライトのx座標、y座標、向き、コスチューム、大きさ、音量 。
  • 現在の () — 選択した単位の時間情報.(年、月、日、曜日、時、分、秒)。
  • 2000年からの日数 — 2000年1月1日からの経過日数。
  • ユーザー名 — 実行中のユーザーのユーザー名。

演算ブロック

詳細は「演算ブロック」を参照

演算ブロックは、数式、数学関数、文字列処理を行うブロック群である。Scratch 2.0には、17個の演算ブロックが存在する。

Scratch 2.0の演算ブロックには、6個の真偽ブロックが存在する:

  • () < () — 1つめの値が2つめの値より小さいかどうかを判別して返す。
  • () = () — 1つめの値と2つめの値が同じかどうかを判別して返す。
  • () > () — 1つめの値が2つめの値より大きいかどうかを判別して返す。
  • () かつ () — 2つの条件を連結する。1つめの条件と2つめの条件が両方とも真のとき、真を返す。
  • () または () — 2つの条件を連結する。1つめの条件と2つめの条件を別々に判断して、どちらかが真を返すとき、真を返す。
  • () ではない — 与えられた条件が偽のとき(条件が満たされないとき)、真を返す。

Scratch 2.0の演算ブロックには、11個の値ブロックが存在する:

  • () + () — 足し算の結果(和)
  • () - () — 引き算の結果(差)
  • () * () — かけ算の結果(積)
  • () / () — わり算の結果(商)
  • () から () までの乱数 — 指定した2つの値の範囲で乱数(ランダムな数)を返す。
  • () と () — 2つの値を接続する。
  • () 番目( () )の文字 — 指定した位置の文字などを返す。
  • () の長さ — 指定した文字などの長さ。
  • () を () で割った余り — わり算の余り(剰余)
  • () を四捨五入 — 値を四捨五入して、一番近い整数を返す。
  • () ( () ) — 指定した値の、絶対値(abs)、平方根(sqrt)正弦(sin)、余弦(cos)、正接(tan)、逆正弦(asin)、逆余弦(acos)、逆正接(atan)自然対数(ln))、対数(log)指数関数(e^)、底を10とする指数関数(10^)を返す。


その他

詳細は「その他」を参照

その他 では、ユーザーが自分でカスタムブロックを定義して使うことができる。Scratch 2.0では、このためのブロックとして2種類が用意されている。

Scratch 2.0のその他ブロックでは、次のハットブロックを使用できる。

  • 定義 () —このブロックを使って、カスタムブロックを 定義する。

Scratch 2.0のその他ブロックでは、次のスタックブロックを使用できる。

  • () — カスタムブロック(自分で定義したブロック)。

PicoBoardブロック

詳細は「PicoBoardブロック」を参照

PicoBoardブロックPicoBoardで調べた値を制御するために使用するブロック群である。. Scratch 2.0のPicoBoardブロックには、2つのハットブロックが存在する:

Scratch 2.0のPicoBoardブロックには、2つの真偽ブロックが存在する:

Scratch 2.0のPicoBoardブロックには、2つの値ブロックが存在する:

LEGO WeDoブロック

詳細は「LEGO WeDoブロック」を参照

LEGO WeDoブロックは、LEGO WeDoを制御するためのブロック群である。これらのブロックを利用するには、「拡張機能を追加」ボタンを押して、拡張機能をインストールする必要がある。

Scratch 2.0の LEGO WeDoブロックには、5つのスタックブロックが存在する:

Scratch 2.0のLEGO WeDoブロックには、2つのハットブロックが存在する:

Scratch 2.0のLEGO WeDoブロックには、2つの値ブロックが存在する:

Scratchブロックプラグイン

詳細は「ブロックプラグイン」を参照

Scratchブロックプラグインを使用すると、ScratchフォーラムScratch Wiki(その他のJavaScript製専用プラグインを組み込んだサイト)で、Scratchのブロックやスクリプトをそのまま表現することができる。 次に、このプラグインの使用例を示す:

@ がクリックされたとき x座標を (0) 、y座標を (0) にする // 最初にスプライトを画面中央に移動 スタンプ ずっと x座標を ((-240) から (240) までの乱数)、y座標を (0) にする スタンプ (0.2) 秒待つ [色 v] の効果を ((5) から (14) までの乱数) ずつ変える

このプラグインの現バージョンの作者はblob8108であり、現在、Scratch 2.0のすべてのブロックに対応している。

ブロックの色を編集する

ブロックの色を編集する
詳細は「ブロックの色を編集する」を参照

オンライン版のScratch 2.0エディタでは、シフトキーを押しながら「編集」メニューをクリックすると「Edit block colors」という項目が現れるので、これを選択するとブロックの色の編集画面が表示される。ここにはカラースライダーが3つ含まれており、これを利用すると指定したブロックの種類の色を変更できる。ここで色をカスタマイズした結果は使用中のコンピューターに保存できるが、現在、保存した設定を読み込もうとしたときは正しく動作しないようだ。

その他のプログラミング言語におけるブロック

SandCastleIcon.png このページには、ScratchのWebサイトまたはWikipedia以外へのリンクがあります。 他のサイトの安全を保証することはできないため、インターネットを使用する際は常に安全を忘れないようにしてください。

ブロックを使用するプログラミング言語としては、Scratchは最初期に登場しており、ブロックを使うというアイディアはその他の多くの言語に影響を与えている。 Mod版Scratch には、Scratchの本家であるMIT版では今のところ採用されていない、新しいブロックが多数含まれている(MITでは、MIT App Inventorのような、ブロックを使うプログラミング言語を他にも作成している)。さらに現在では、Stencyl など、全面的にブロックを使用する言語でありながら、リアルタイムアプリケーションやオンラインゲームにも対応したプロ志向の言語も登場している。また、より幼い子供にも理解しやすい言語として開発されたScratch Jr もブロックを使ったプログラミング言語である。

参照


  • このページの最終更新日時は 2018年1月27日 (土) 01:22 です。