今年私が一番ハマったものはScratch

スクラッチ開発のことではなくて、プログラミング言語学習環境のことだ。
いつまでも無職でブラブラしてるのも難なので「地域xICTx教育」で何か出来ることはないかと彼方此方徘徊している時に巡り会った。

そんなScratchに関する話を書いてみた。


Scratchで何ができるのか

冒頭にも書いたとおり、Scratchはプログラミング言語で学習環境でもある。
Scratchについて」には次のように書いてある。
With Scratch, you can program your own interactive stories, games, and animations — and share your creations with others in the online community.

Scratch helps young people learn to think creatively, reason systematically, and work collaboratively — essential skills for life in the 21st century.
TOEIC330点(←私)に和訳を求めるのはやめていただきたいのだけど、整理するとこんなところか。
  • 自作の対話型物語・ゲーム・アニメーションをプログラムを書いて動かすことができる。
  • 自分が創った作品をオンラインコミュニティで他の利用者と共有することができる。
  • 21世紀の暮らしに不可欠な技能(創造的思考、論理的・体系的思考、協業)の習得の手助けになる
要するに、プログラミングの技能を学ぶためだけのものではないことはお分かり頂けるだろうか。

自分が楽しい!面白い!と思うものは他人にも勧めたくなる、が…

私にとってScratchの一番の魅力は、PC上でダイナミックかつグラフィカルな作品を手軽に作ることが出来るというところだ(勿論、理念は全体的に共感している)。
一から創ってもよし、みんなと作品を改良し合ってもよし、コラボしても良し。素敵じゃないか。

そういった訳で、周囲に「Scratchでプログラミング、論理的思考を養うにも良いし、面白いからやろうよ!」と誘ってみる。
だが共感は薄かった。「プログラミングの知識なんて、生活に全く必要がない」というところから始まり、ドン引きするようなお断り理由を頂くことも少なくなかった

それで、悔しいあまり思わずこんなScratch紹介動画を作ってみた。

アニメーションの制作風景を45秒に圧縮して紹介したものだ。

すると、今までとは打って変わって温かい反応が返ってきた。
「面白い。私もやってみたい。」という声を多数頂いたのだ。
針人間に毛の生えたキャラクターがただただ左右に歩くだけの、非常に簡単な作品にもかかわらず、だ。
「ものづくりの道具」という部分に焦点を当ててみたのが良かったようだ。

要するに、みんな、創ることは好きなんスな。
小難しい専門知識の臭いがするものを毛嫌いするというだけで。
操作が簡単で、自由な自己表現を可能にする道具には興味があるんですな。
さすが職人大国。

勧めるときは、相手の琴線に触れるか、焦点の当て方に注意したい。
(Scratcthに限らず何事もそうだけど)

Scratchの「リミックス」機能

色々すっ飛ばして実際にScratchで作品を作る時の話に移る。

Scratchバージョン1.4までは各端末(PC)にインストールして使うものだったが、バージョン2.xはブラウザ上で動作するようになって、更にオンラインコミュニティの機能も備わっている。
2.x系で特に注目すべき機能は「リミックス」。
ユーザが創った作品を自由に再配布・改変することができるのだ。

まず、自分の作品を他人がリミックス出来るようにするには、「共有」ボタンを押せば良い。


逆に、他人の作品をリミックスする時は、該当作品の中身を見て「リミックス」ボタンを押せば良い。
どの作品をリミックスしたかは「リミックスツリー」によって参照することができる。
どんな派生作品がどのくらいあるのか可視化されるのだ。

完全とは言いがたいけれど、リミックスツリーによってリミックス「元」と「先」を確認することができる。
ビジュアルを通して「自由な改変」を体感で学ぶ事ができる点が斬新だ。

ところで、コミュニティガイドラインの「共有する」の項は次のようになっている。
あなたはScratchで見つけた作品、アイディア、画像など全てのものを自由にリミックスできます。それはだれでも、あなたが共有したものを使うことができるということです。リミックスするとき必ずクレジットを残してください。
CCライセンスでいうところのCC BYが適用されている。
Scratchのオンラインコミュニティで作品を公開すると言うことは、公開した時点で他のユーザがその作品を引用して新しい作品を作ることにも承諾するよ、ということだ。

それで、時々「一部の友達に見せるために公開したけれど、知らない人に引用されたくない」という意見を聞く。その場合は公開しない方が良い。直接会って見せ合いっこしよう。
もし、直接会うのが難しい場合は「手元のコンピューターにダウンロード」でローカルに保存してメールやオンラインストレージ経由で保存ファイルを友達に渡すという方法もある。
内輪で閲覧もリミックスし合うこともできるし、一石二鳥だ。



「リミックスって、本当に著作権侵害じゃないの?」と気になって仕方がない場合は、デジタルミレニアム著作権法のページも参照されたい。「著作権侵害を受ける方法でコピーされた場合」の適切な処置の求め方について書かれている。

知的財産権は色々とややこしいけれど、色んな形態があることを知ることでより柔軟な創作活動ができるようになるのではないだろうか。

「ネコ逃げ」と「ネコたたき」 をベースにオリジナル作品をつくる

さて、ここからは私が実際に作った作品の話になる(ほぼ制作後日談)。

Scratch初心者にお馴染みの課題といえば「ネコ逃げ」や「ネコたたき」。
(ひょっとしたら独習者には馴染みが薄いかも知れない)

ネコ逃げは一方が他方を追いかけて捕まえるゲーム。
基本仕様は次の通り。
  • フィールド上を歩き回るネコがいる(ネコは敵キャ)
  • 「何か(例:ネズミ)」がネコから逃げている(「何か」がプレーヤー)
  • 「何か」はマウスやキーボードで操作することができる
  • 「何か」がネコに捕まったらゲームオーバー
ネコたたきは、フィールドに順々に現れた敵を攻撃するゲーム、要するにモグラたたき。
基本仕様は次の通り。
  • フィールド上にネコが不規則な周期で現れたり隠れたりする(ネコは敵キャラ)
  • マウスのクリック操作でネコを叩くことができる
  • ネコは叩いたら「ニャー」と鳴く
初心者向けだけに、非常に簡単なつくりだ。
上記の設定だけなら数分から数十分で作ることができる。
ゆえに多くのScratcherは、誰かが作成したネコ逃げやネコ叩きをリミックスするのではなくで、新規作成で作っている。

そこで「思わずリミックスしてみたくなるようなネコ逃げやネコ歩きがあっても良いのでは」と考える。
リミックスされなくても「『それを超える作品』を作りたくなる作品」があっても良いと思う。
(かくいう私はハイレベルな物は全く作れないので、しようもない作品のアイデアしか浮かばんのですが。)

ネコ逃げをモチーフになんかつくってみた

今年は自宅周辺地域で開催されているCoderDojoや子供向けのワークショップなどにボランティアスタッフとして参加したり見学に行ったり、あちこちうろちょろしている。
ワークショップでは講義形式で操作方法を説明することもある。そこで作例をそのまま示すと、提示したものを見よう見まねしただけで「作った気になる」子供が続出する。
見よう見まねすこと自体は良いけど、家に帰ってから復習したり自発的に新しいことを学ぼうとしないのはいただけない。
とはいえ参加者のヤル気は参加者本人の問題だけではなくて私の(他人に何かを教える)技量や(子供との)相性(とかコミュニケーション量)など様々な外的要因によるところもあるので以下略…。
そういうこともあって、尚更に「簡単に真似できないけど、どう作っているのか気になるでしょ?」的な作品を作りたくなった。

そこで私が作った「ネコ逃げ」作品はこれだ。

ねずみおいかけ (Scratchcat's mouse hunting!)


なんというか、作品タイトルの語呂が恐ろしく悪い。
ネーミングセンスがないのは御愛敬…。

このゲーム、ネコからネズミが逃げるゲームではなくて、ネコがネズミを捕まえる(ネズミが逃げる)仕様にしてみた。
  • ネズミを追いかけるネコはマウス操作で動く(クリック不要)
  • ネコがネズミに触れたら得点が加算される
  • 制限時間は30秒
…と、まあ、これはこれで特別何のひねりもない。

何を工夫したかというと、マウス操作に対して微妙に時間差が発生するようになっているのだ。
実際プレイすれば分かるが、ネコがマウス操作にすぐ追従してくれない

操作に慣れないと若干イラつくところへ更に調子を狂わせるように、暢気なBGMが流れる。

残り時間が10秒切ると画面が赤くなり、BGMが少々速いテンポに切り替わって、緊張感が増す。


ちなみに、ネコの一部のコスチュームとネズミは自作だけれど他は既存の素材を流用している。
ネズミは今回の合う感じのヤツが居なかったので、テキトーに。

ネコたたきをモチーフになんかつくってみた

実は「ねずみおいかけ」を作る前に、同じような動機でネコたたきの作品を作っている。

ネコの道場破り[酔拳編]


こちらは比較的物語性を重視して作った。

作るきっかけは、ある時「CoderDojoは道場破りもアリなのか?」という疑問が一部でネタになったことだ。


それと同時期に別件で「道場の開始前に飲酒」という事案が発生した。
時間になっても参加者が来なくて、その時同じ会場のちょっと離れた場所で酒盛りしてる人がいたので一杯頂いたのだ。その際に「道場主が酒飲みの道場w」という話で盛り上がった(※よい子は真似しないでネ!)。
それで、
道場破り」+「道場主が酒飲みの道場

酔拳の使い手がいる道場主の道場に道場破りしに行く
というアイデアが浮かんだ。

今回は、ゲーム前に導入の物語を入れた。
登場キャラクターを明確にすることと、感情移入しやすくするためだ。
(「感情移入…しやすい…?」などとツッコミ入れないで下さいw)

それから、誰がプレイヤーで誰が敵か、どんな操作をすれば良いのか明確にするために、ゲームスタート直前に説明を入れるようにした。
なにせ「ネコたたき」じゃなくて「ジジイたたき」だし。

(説明といっても一言なんですけどねw)

主な仕様は次の通り。
  • プレイヤー側のキャラクターはネコ
  • ネコは道場主を叩く
  • 道場主は(酔拳の達人なので)酩酊してフラフラしている
  • 表示される道場主の大きさ毎に叩いた時の得点が異なる
  • 制限時間は30秒
  • タイムアップしたときの得点によって最後にネコが呟くメッセージを変える
  • 道場主は酒が好きなので、意味もなく酒(東京の地酒)の銘柄を呟く(どうでも良いオプションw)
  • タイムアップ後に道場主が呟く台詞はランダム表示


どうでもいいオプションはゲームに直接関係がないのだけれど、あとで興味を持った人に尋ねられたときに「へえ」と感じる要素があったら面白いかな、という理由で入れた。
ここが上手くユーザの感動体験に乗っかってくると、コアなファンを作れるのではないか、と。

大人の道具を駆使して少々見た目を凝らしたおかげか、「見た目を作り込むと、全体の雰囲気がグンと良くなる(制御部分を作り込むことも大事だが、目で見て操作するものだから、見た目も大切)」というのを考えてもらうきっかけにもなったと思う。

ゲーム制作のためにスプライトのコスチュームを増やしてみた

上記2つ(+α)の作品のためにScratch Catのコスチュームを独自に増やした。
真正面と真後ろと、攻撃する(これ、手首折れるぞ…)のと、攻撃されたポーズ。


できるだけ元の素材に近いテイストになるように、線の太さや造形に配慮。
ちなみに制作にはAdobe Illustratorを使用(すんません、不器用ゆえに作業の手間を減らしたく…)。
(補足:このコスチュームをまとめたファイル(ver2.x用)はGitHubに放り込んであるので、良ければ御自由にご利用下さい)

一生懸命作ったものは誰かに見せたくなるし、モノがモノだから触って欲しいという欲がでる。
すると、必然的に「公開」するし、あわよくば「リミックスされたい」という欲が出る。
どんな作品を作ると見てもらえてリミックスされるようになるか、考えるようになっていく。
(そこで、アイデアをどんどんアウトプット出していく習慣がつくと良いのかも知れない。)

作品を発表していくと、どれが他人受けが良くてどれが他人受けが悪かったか、気になってくる。
全く気にならない人のことはさておき、気になってきて「他人受けが良い作品を」と考えていくうちに色々失敗談が出てくる。

失敗談

失敗談とは言っても大した話ではないけれど。
前々から「プログラミングをやるなら絶対作ってみたい」ものがあって、Scratchを触り始めて間もない頃にそれを作ってみた。それがこの作品だ。

binary games - powerd by scratch



これには元ネタがある。cisco社の「Binary Game」。
過去にネットワーク構築の勉強をしている時に愛用していて、使ってみて勿論勉強にもなるし何よりも面白かったので「いずれ自分も似たゲームを作れないか」と考えていて、それで作成した。
とはいっても元になるゲームのライセンスは改変自由にはなっていないので、「2進数から10進数あるいは10進数から2進数を計算する」という、特徴的だけれど汎用的なアイデアだけを参考にした。

作ってみたところ、自分自身は楽しめたけれど、他人様はなかなか遊んでくれない。
懇切丁寧なチュートリアル付なのだけれど、根本的に「2進数から10進数を計算する」というところで躓くようだ。


元々難易度設定を出来るようにしていたけれどそれでもまだ難しいとのことだったので、更に難易度を下げることにした。
その工夫というのが、normalより優しい設定の場合は2進数の各桁の上に10進数の値が表示されるようにする、というものだ。

(ちなみにバグっていて調子悪い…要メンテですな…)

調整したおかげで前よりはプレイしてくれるようになったけれど、それでもまだまだ難しいということでリピーターは出てこない。要改善ですな。
他人に遊んでもらうというのは、なかなか難しい…。

自己満足で完結していた作品づくりが、他人に見てもらうようになると、良い意味でも悪い意味でも自分にはなかった気づきを得る。そして評価を下される。
評価について自己否定に走る必要はないけれど、(評価されない時は特に)状況を真摯に受け止め分析して改善活動することも必要だと思う。

このような体験を通して、技能の研鑽だけではなく、他人が自分の作った作品をどう捉えるのか考えられるようになると面白いと思う。

まとめ

既存の作品のリミックスによって新しい作品を生み出すのも、ありふれたものをベースに何かを創ることも、全くのゼロから何かを生み出すのも、創作活動としてはどれも「アリ」だ。
また、自分の世界を貫き通して生きるにしても、人から作った作品について何かしらのカタチで評価される体験も非常に大切だ。
同時に、他人がどういう行動をとりやすくてどんなものを好むかということを、学べるときに学んでおいては損はない。
2.x系のScratchはそういうことにうってつけの道具だ。

こういった道具を介して、決まりきった枠にとらわれない自由な想像力つまりは柔軟な発想力を養えて行けたら良いと思う。
考える力を養うことで、日常生活の中で様々な問題に直面したときに自分にとっての最善の選択ができるようになっていば、生きやすくなるのではないか(と、信じている)。

なにはともあれ、個人的にはScratchは面白い道具なので、リアルな場でも一緒に遊ぶ仲間が増えていくと良いなと思っている。

補足

この記事を通して初めてScratchを知った・興味を持ったという方がゼロではないと思うので、念のために参考資料でも。

「わくプロ」こと「小学生からはじめるわくわくプログラミング」。
Scratchやってる人なら「知らなきゃモグリ」と言っても過言ではない本。
国語・算数・理科・社会・音楽・体育などの科目別に分類された、楽しい作例が紹介されている。
本書の作例にアレンジを加えてみたり、或いは作例をそのままやってみたという人は多いのでは。
巻末の「Dynabookとは何か?「すべての年齢の『子供たち』のためのパーソナルコンピューター」の後日談」も併せて熟読しておきたい。


「どきプロ」こと「Raspberry Piではじめる どきどきプログラミング」。
ものづくりブーム効果で近頃ちょいちょいフィーチャーされている超小型PC Raspberry Pi を使ったプログラミングの入門書。第3章に「ネコ逃げ」が載っている。
みんな、Lチカよりもマインクラフトが気になるみたいですな。そうだよね、ははは…。


※今回の記事はScratchのAdvent Calendarにあわせて作成したものです(予定日に間に合ってないけど^^;)。