Hatena::ブログ(Diary)

One Etoy Per Child

2015-12-16

センダーとレシーバー

(2015/12/19 追記) この説明は、オフラインエディターのv441.2で確認しました。今日現在のオンライン版であるv441ではまだ使えないようです。ご注意ください。

-----

※ これはScratch Advent Calendar 2015の12/16の記事です。

「いいよね、センダー」

「いいね、レシーバー

Smalltalkerは、implicit communicationで通じ合っているので、お互いの会話は少ないものですが、たまに話をするとすればこんな感じです。

さて、今日はScratchの話。

Scratchのメッセージは便利なものです(Smalltalkのメッセージとは似て非なるものであることはこのあたり)。

2.0でカスタムブロック定義ができるようになったとは言え、不特定多数スプライトやステージの任意のスクリプトを起動するイベントを同時に送る方法はこれしかありません。

ブロードキャスト(放送)とはよく言ったものです。

非同期の「[メッセージ]を送る」と、同期する「[メッセージ]を送って待つ」があるのもナイスです。

Meshを使えば、ローカルだけでなく、分散環境でも使えます。

いまScratch界でモテるのは、メッセージを使いこなせる人ではないでしょうか。

そんな素晴らしいメッセージですが、ひとつだけ困ったことがありました。

それは、デバッグが超しにくいことです。

一度書いたら最後、誰が定義していて、誰が反応するのか動かしてみるまで誰にも分からないという恐怖のブラックボックス

これがテキスト言語なら、grepとかすれば良いのでしょうが、ビジュアル言語のScratchではそうも行きません(正直に言うと、1.4のころは「プロジェクトのまとめを書きだす」して、そのテキストをgrepしてました)。冒頭の会話は、Smalltalkに備わっている検索機構が如何に素晴らしいかをたたえあっているものです(この文脈であればセンダーでなく、インプリメンターですが、そこは演出上の改変)。

そんなことも今では昔話。

なぜなら、メッセージを送受信するブロックの右ボタンメニューにセンダーとレシーバーの検索機能が追加されたからです。

たとえば、これは「[message1]を受け取ったとき」の場合です。

f:id:abee2:20151215222747p:image

このメニューから「センダーを表示」を選ぶと、このメッセージを送っているスクリプトを含むスプライト(もしくはステージ)のサムネイルがハイライトされます。黄色い枠が分かるでしょうか。

f:id:abee2:20151215222748p:image

さすがに、該当するスクリプトまでは教えてくれませんが、通常はこれだけで十分でしょう。

同様に「レシーバーを表示」はメッセージを受け取っているスクリプトを含むスプライト(もしくはステージ)のサムネイルがハイライトされます。

「センダーとレシーバーハイライトを消す」は、その言葉通りです。

そして、「rename broadcast」でメッセージ名のリネームが可能です。その際、全てのセンダーとレシーバーも自動的に置き換わります。Just like a dream!

ちなみに、なんでこれが英語のままなのかというと、決して私がさぼっているからではなく、翻訳のためのエントリーがまだ用意されていないからです。しかし、この機能自体、自分で訳していたのにすっかり存在を忘れていたのはここだけの話。

これに限らず、Scratchには多くの隠し機能があります。いろいろなところで、マウスの右ボタンやシフトキーを押しながらのクリックを試してみると、面白いものが見つかるかもしれません。

それでは、皆さん、これからもハッピーなScratchライフをお楽しみください。

P.S. ちなみにタイトルは新井素子の「チグリスとユーフラテス」へのオマージュです。

2014-12-08

Scratch Cat 誕生の秘密

※ これは Scratch Advent Calendar 2014 の12/8の記事です。

Scratch のユーザー、 Scratcher から親しまれている Scratch Cat。

Scratch のマスコットキャラクターで、起動すると最初に出会うデフォルトスプライトです。

「かわいい」と言われることもあれば、「キモイ」と消されることもある。しかしどこか憎めないオレンジ色のネコ

このネコをデザインしたのは誰でしょう。

そんなとき、参考になるのが Scratch WikiScratch Cat を検索すると以下のように書かれています。

The Scratch Cat is a trademark of MIT[3] and was drawn by Wing Ngan.[4]

どうやら、 Wing Ngan さんが作者のようです。リンク先のプロジェクトを見ると Goboその友達もデザインされたようですね。

さらに調べてみましょう。 Wing さんは香港出身でマサチューセッツ芸術大学を優秀な成績で卒業後、2000年に Ink Design という会社を設立クライアントMITハーバード大学などです。

個人の作品サイトも見つかりました。衝撃の初期デザインとその変遷はこちらでご確認ください。

人に歴史があるようにネコにも歴史あり。

f:id:abee2:20141207190444j:image

2012-12-23

abee22012-12-23

中学校にマイコンとセンサーがやってきた

かつて中学校の技術・家庭科といえば、男女に分かれて、男子は木工やはんだ付けなどの生産技術、女子は裁縫や料理などの家庭生活を支える技術を学ぶものだった。現在の技術・家庭は男女とも同じ内容を行う。おもに技術分野と家庭分野に別れており、さらに技術分野では、「A 材料と加工に関する技術」、「B エネルギー変換に関する技術」、「C 生物育成に関する技術」、「D 情報に関する技術」を習得することが求められている。

2008年3月28日に改訂された新学習指導要領では、「D 情報に関する技術」のなかで「プログラムによる計測・制御」が必修となり、4年間の先行実施を経て、2012年4月から完全実施されている。猶予期間があったとは言え、ものづくりが中心だった現場にはコンピューターやプログラミングに対する戸惑いもあるようだ。その実情を知るために、東京都板橋区上板橋第二中学校の2年生の授業を見学した。

授業は、2012年12月21日の6時間目にパソコン室で行われた。指導は新村彰英教諭、対象は約30人のクラスである。これは全6回(1週間に1回、各50分)の「プログラムによる計測・制御」の最終回にあたる。

f:id:abee2:20121221143501j:image

写真1 授業が行われたパソコン室。Windows Vistaが使われている

ぱらぱらと集まってきた生徒は慣れた様子でラックの中から車型のロボットを取り出し、決められた席に座る。このロボットは、プラスチック棒のフレームで作られた簡単なもので、DCモーター1個で前後に動くようになっている。その両端にはそれぞれ上向きに光センサー(CdS)があり、マイコンボード(ちっちゃいものくらぶNanoBoardAG)の抵抗センサー端子につながっている。同様にDCモーターは、NanoBoardAGのモーター出力端子につながっている。

f:id:abee2:20121221145628j:image

写真2 車ロボット。左に見えるのがNanoBoardAG

席についた生徒は、新村教諭の指示でPCとロボットUSBケーブルで接続し、制御用のソフトウェアScratch」を起動した。

Scratchは米マサチューセッツ工科大学(MIT)が開発したビジュアルプログラミング言語だ。Scratchでは、命令となるブロック型のアイコンマウスで組み合わせることでプログラムを記述する。キーボードタイピングが不要で、原理的に文法エラーが生じないため、小学生でも簡単にゲームやアニメなどを作成できる。また、PicoBoardという外部センサー(光、音、抵抗、ボタン、スライダー)を使うためのブロックが用意されており、LEGOのMindStormsに似たWeDoというロボットキットを制御するブロックもある。NanoBoardAGは、Arduinoをベースにハードウェアソフトウェアを拡張しており、PicoBoardとWeDoをエミュレートできるので、これらのブロックを使うことができる。

f:id:abee2:20121221145842j:image

写真3 Scratchの画面。ブロックを並べてプログラムを書く

生徒は、これまでの授業でScratchのプログラミングをある程度マスターしている。今回のゴールは、車ロボットに手をかざし、その方向に車を走らせることだ。

新村教諭は、プリントを配り、前後の光センサーのそれぞれについて、手をかざしたときとかざしていないときの値を記録するように指示した。Scratchには監視版という機能があり、リアルタイムに各センサーの値をモニターできる。

最初の課題は、これを閾値として条件分岐させ、画面に表示されているネコの絵を左右に動かすことだ。

f:id:abee2:20121221144544j:image

写真4 新村教諭の説明

10分ほどの演習で、何人かが完成した。新村教諭は、その生徒のプログラムプロジェクター投影し、生徒自身にプログラムの説明をさせた。同じ課題でも、ネコの向きを変えて歩かせたり、直接x座標を操作したりなど、異なる解法があるのが面白い。

これを受けて、他の生徒もプログラムを完成させ、いよいよ本番となる車ロボットに取り掛かった。今度は光センサーの値を閾値にして、モーターのオンオフと回転方向を制御することになる。ただし、画面の中のネコと違って、現実世界のロボットは、暴走して机から落ちたりする。そのため、木製のスタンドで車輪を浮かせて試行錯誤しやすいようになっていた(さすが技術の先生)。

f:id:abee2:20121221145601j:image

写真5 試行錯誤中。実際に手をかざして振る舞いを見る

f:id:abee2:20121221152018j:image

写真6 まったく違うことをやっている生徒も

しばらくしてから、さきほどと同様に何人かの生徒を選び、プログラム投影と説明を行った。中には、前後の動きを独立したプログラムにして並列に動かしたり、車を走らせながら吹き出しでしゃべらせたり(車の向きでセリフが変わる)などの工夫もあった。また、ある生徒が見つけたアイデアが教室内で伝播していく様子が見られたのも興味深い。

たちまち時間が過ぎ、ほぼ全員が完成した頃に授業も終了となった。

f:id:abee2:20121221152431j:image

写真7 プログラムの例。並列処理になっている。なぜか大量のセリフが

新村教諭は「プログラムによる計測・制御」の実施が決まって、いろいろな教材を検討した結果、見つけたのがScratchだったと言う。Scratchは、指導案や簡易言語とセットになった市販の教材と比べて自由度が高く、コストも低いことが決め手だったとのことだ(Scratchは無料でMITのサイトからダウンロードできる。NanoBoardAGはキットで1,500円から。端材を使った車も含めて1人あたり全部で2,000円以下)。生徒が面白いと思うポイント(前記の吹出しや視覚効果など)をよく研究して組み込んでいることも評価できる。新村教諭は、他の単元で必要だったタイマーを作るためにもScratchを活用している。

一方で、技術・家庭の時間数は週1回に減っており、その時間内で前記の広範な内容を学習することが求められている。そのために生物育成と計測制御を組み合わせるなど、教員も工夫して対応している。今回の授業は、フィジカルコンピューティングの入り口に立ったところで、時間があればもっと面白いことができるだろうと感じた。ここで終わるのは実にもったいない。

技術・家庭は中学校の授業の中で、もっともMakeの方向性に近い。将来のMakerを育てるために私たちもできることがあるのではないかと考えながら、学校を後にした。

2010-12-29

近況

最近はほとんどTwitterに書いています(@abee2)。よろしくお願いします。

2010-05-25

abee22010-05-25

少年写真新聞「学校コンピュータ

少年写真新聞社の壁新聞「学校コンピュータ」の2010年6月号の付録「情報教育ブックレット」に「スクラッチで簡単教材づくり 〜与える教材から先生と児童生徒がつくり上げる教材へ〜」という記事を書きました。

パソコン教室だけでなく、すべての児童が自分のパソコンを持ち、スクラッチのような言語の習得を前提にすると、授業の形が大きく変わるかもしれません。教材も先生がつくって提示するものから、先生と児童が共同でつくり上げるものに変化するでしょう。これはプログラミングを情報教育の枠内で考えるのではなく、漢字の読み書きや九九などと同等の基礎リテラシーととらえるものです。これは協働学習や自発的学習者養成などとも相性がよく、デジタル教科書の導入などと合わせて今後の教育のあり方を考える上でも注目に値すると思われます。

一般の書店では販売していないようなので入手は難しいかもしれませんが、機会があればぜひ御覧ください。