子どもにプログラムの手順だけでなく概念を伝えたい子ども向けプログラミングの現場から(1)

子ども向けプログラミング環境「Scratch」を学ぶ小学生が増えている。ものづくり寺子屋&きょーくりっの共同授業をレポートする。

» 2013年03月25日 12時40分 公開
[星 暁雄,ITジャーナリスト]

 その教室では、10組ほどの受講者がパソコンに向かっていた。半分は子ども連れだ。低学年の小学生も交じっている。一方で年配の受講者もいる。

 プロジェクターで拡大投影されたパソコン画面の中では、プログラミング環境Scratch(参照記事:マウスだけでもプログラミングできる!(1)- GUIベースの環境でプログラミングを始めよう -非プログラマのためのプログラミング講座)のマスコット、「猫」のキャラクターが動いている。ここで講師から声が掛かった。

 「ここで、猫が画面から出て行ったらそれっきりだね。そこで『もし端に着いたら、跳ね返る』ようにプログラムを直してみよう」

 そう言いながら画面内でプログラムの要素を1つ追加すると、猫のキャラクターの挙動が変わる。壁の端まで到達すると、向きを変えて跳ね返ってくる。その様子を見て、受講者の子どもの1人、小学2年生の女の子が笑い声を上げた──。

 2013年2月23日(土)、明星大学 日野キャンパスで開催中の「オープンソースカンファレンス2013 Tokyo/Spring」の企画として実施された「Scratchワークショップ」の1コマだ。この日は2時間程度の時間を使い、プログラミング環境「Scratch」を使った簡単なゲームを作った。

 ワークショップの講師を務めるのは原 健太さん(国立大学法人東京工業大学附属科学技術高等学校 情報・コンピュータサイエンス分野3年)だ。小中学生にプログラムに興味を持ってもらうことを目的とする団体「ものづくり寺小屋」の代表を務めている。ほかのメンバーも高校生や大学生が中心の若い人ばかりだ。この日は、もう1つの団体「京都クリエイティブワークショップ(きょーくりっ)」からのメンバーもワークショップ運営に協力していた。受講生の数と、ワークショップのサポートスタッフの数が同じぐらいの手厚いサポートの下、ワークショップは進行していく。

ワークショップ中の風景。会場ではスタッフが常時見回っていて、子どもたちが説明に置いて行かれないように気を配っている。

プログラミングの手順だけでなく概念を伝えたい

 ワークショップの後、講師の原さんに少し話を聞いた。興味深かったのは、次の一言だ。

 「プログラミングの手順だけでなく、概念も知ってもらいたいと思っています」

 ワークショップの説明でも、ただブラックボックスとして手順だけを覚えてもらうのではなく、制御構造や変数といったプログラミングの基本的な概念を、子どもなりに理解してもらおうと工夫している様子が伝わってきた。

ワークショップ中の風景。講師の原さんも時々会場を見回って、子どもたちを指導する。

 例えば、「ゲームオーバー」の機能を実装するときは、次のやりとりになる。

講師 「ゲームオーバーになったら、どうなる?」

子ども 「ゲームができなくなる!」

講師 「そうですね。そこで全体を止めようと思います。(Scratchに用意されているブロックを見ながら)『制御』の中の『すべてをとめる』が使えそうですね。これを使ってみましょう」

ビジュアルプログラミング環境Scratchとは

 Scratchは、子どもにプログラミングを教える目的で作られたビジュアルプログラミング環境である。その大きな特徴は、キーボードをタイピングすることによる入力を最小限にし、画面上の「何か」を並べ替えるやり方でほとんどの処理を記述できることだ。

 C、Java、Rubyなど、普通のプログラミング言語でプログラムを作って動かすには、まずキーボードを使ってプログラムコードを正確に打ち込む必要がある。

 少しでもプログラミングの経験があれば分かるように、プログラムコードの構文を間違えたり、予約語や変数名のつづりを間違えれば、処理系はエラーメッセージを表示し、プログラムは動かない。初心者の状態で最初に打ち込んだプログラムは、大体一発では動かず、打ち間違いによるエラーを解消する努力が必要になると考えた方が良い。子どもに興味を持ってもらう目的からは、このことは大きなハードルとなる。

 一方、Scratchは図的に表現されたプログラム要素を、画面上でマウスでつかんで組み立てていくことにより、プログラムを記述していく。間違った構文はそもそも記述できないし、予約語のつづりを間違える心配もない。タイピングに不慣れな子どもでも、プログラムを作ることに集中しやすい作りとなっている。

 かといって、Scratchがプログラミング言語として貧弱かといえば、そうではない。制御構造の種類など基本的な機能ではほかの汎用プログラミング言語の能力に劣らない。複数のオブジェクト(Scratchでは「スプライト」と呼ぶ)を並行動作させる記述が容易な点や、オブジェクト同士のメッセージ交換の機能を実装している点では、多くのプログラミング言語より進んでいる面があるとさえ言える。

教材にも工夫が

 この日のワークショップの教材は「ねこからにげろ」と題されたシンプルなゲームだ。ネズミと猫が追いかけっこをする。猫がネズミと衝突すると、ポイントが減っていき、ポイントが0になるとゲームオーバーになる。

 会場では、「ものづくり寺子屋」と「京都クリエイティブワークショップ(きょーくりっ)」のメンバーが巡回しながら受講者をサポートする。受講者がパソコンに向かう様子を眺め、つまずいている場合は手助けする。

 取材していた筆者が感心したことは、このゲームを成立させるために必要な概念をきちんと説明し、しかもプログラムロジックの説明を一切省略しなかったことだ。

 例えば、「変数」の概念を説明するときはこんな具合だ。

 「ねずみの『ライフ』を表すものとして、『ざんき』(注:シューティングゲームで良く使う「残機」から)という変数を作ってみます」

 「『ざんき』を−1ずつ変えます」

 「ちょっと分かりにくいけど、『変える』というのは、増える動きなので、数字を減らすには-1を『変える』ようにします」

 小学生なので負数の概念はまだ習っていないはずだが、普段から親しんでいるゲームの話なので、それなりに話は伝わっている感じだ。このように、原さんはプログラムの「どこを」「なぜ」修正したのかを、省略せずに説明していく。

ゲーム「ねこからにげろ」の作成中の画面。ワークショップでは、このゲームの内容について、ロジックの細部まで丁寧に紹介していく。

 ワークショップ終了後に感じたことだが、このゲームは良く考えられた教材だと感じた。子どもを対象に1回のワークショップで教えられるサイズに収まっている。短い時間の中で、少しずつ機能を増やしながらゲームを完成させていくプロセスを体験できるように作られている。

 原さんによれば、この教材は、Scratch日本語版のコントリビュータでもある武蔵大学非常勤講師の阿部和広氏が作成したものを基にしているとのことだ。

「プログラミングを広く普及させたい」

 ワークショップの最後では、「こんなこともScratchではできることを実感してもらえたら」と前置きして、iPhoneからPCに命令を送り操作する様子を見せた。

Scratchワークショップで紹介された展示(OSC2013の展示「オープンハードカンファレンス」から)。レゴブロックで作った自走するミニロボットを、Arduino互換ボード「なのぼーど」を経由して、Scratchからモータを制御している様子。これもScratch関連の教材として作られたもの。

 講師の原さんに、気になることを聞いてみた。

 「自分の技術で人を驚かせるような野心はあるのですか?」

 原さんはこう答えた。

 「同じ高校生で、ハッカー的な活動で有名になる人もいますが、私はむしろプログラミングを広く普及させる活動をしたいと思いました」

 この日のワークショップを見て分かったことは、手順だけでなくプログラミングの概念を子どもに教えることは、情熱や才能が必要な仕事だということだ。Scratchに接した子どもたちの何人かは、プログラムの才能で社会に貢献するかもしれないが、それは10年以上先の話になる。そんな活動を地道に続ける若者がいることを確認できたことも、この日の収穫の1つだった。

著者プロフィール

星暁雄(ほしあきお)

ITジャーナリスト。日経BP社で『日経エレクトロニクス』記者、オンラインマガジン『日経Javaレビュー』編集長などの経験を積み2006年に独立。現在はフリーランスとして活動。半導体、プログラミング言語、オペレーティングシステム、エンタープライズIT、インターネットサービス、スマートデバイスなど、幅広い分野の取材執筆経験を持つ。イノベーティブなソフトウェア分野全般に関心を持つ。最近は現実世界のモノとソフトウェアを結ぶ技術に特に注目している。より詳細な経歴はこちら


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。