ICT・Educationバックナンバー
ICT・EducationNo.44 > p14〜p17

教育実践例
楽しいプログラミング
─コンピュータ・サイエンス・アンプラグドからドリトルまで─
神奈川県立相模向陽館高等学校 保福 やよい
hohuku@amy.hi-ho.ne.jp
1.はじめに
 筆者は昨年10月まで神奈川県立松陽高等学校で情報Bを教えていた。松陽高校はのどかな田園風景が広がる横浜市泉区に位置し,生徒は部活動,行事にも熱心に取り組む中堅進学校である。情報Bは2学年の必修科目であった。
 情報Bの授業ではコンピュータを使わない実習「コンピュータ・サイエンス・アンプラグド(以下,アンプラグド)」を多く取り入れた。そこでは,ワークショップスタイルの学びの中で,体験的であり発見を伴う学習を行った。
 今回はアンプラグドの翻訳書※注1に記されている,「学習12 出発進行(プログラミング言語)」と実際のプログラミングに焦点を合わせて紹介する。
2.アンプラグド
 アンプラグドはニュージーランド,カンタベリー大学のTim Bell博士がコンピュータを使わずに情報科学を体験的に学ぶ手法として1990年代に開発した。
 2007年には日本でも翻訳書が出版されたため,情報の授業で扱えるようになった。現在は中学校,高等学校,大学などの授業,イベント等で数多く実践されている学習方法である。さらに,小学生向けイベントとして「富士通キッズイベント※注2」「たかはま夢・未来塾※注3」が開催されている。

(1)アンプラグドの特徴

 アンプラグドは次のような特徴を持っているため,生徒たちが主体的に学ぶ傾向にある。
  • ゲームで楽しみながら学ぶ。
  • 体を動かし体験を通じて学ぶ。
  • グループで協力して問題解決。
 友達と一緒にゲームやパズルを解く中で,互いにコミュニケーションを取り楽しく学ぶことができる。また,楽しみながら学ぶ中で,好奇心を大いに刺激され,自分で考える中で様々な「発見」をする。
 アンプラグドで学ぶ中でブラックボックスであった情報科学の本質を理解することができる。
3.指導の難しさ
 情報Bでは処理手順を明確に記述することや,簡単なアルゴリズムを理解させることが必要である。
 しかし,プログラミングには難しいイメージがあるようだ。

(1)生徒の意識

 未経験の生徒のプログラミングに対する意識は否定的なものだ。「よくわからない,難しいもの」「できるかどうか不安」と感じている生徒が多い。新しいことに対して不安感を感じるのは当然とも言える。
 不安感いっぱいの中で,いきなりJavaなどのコンパイルの必要があり入力すら難しいプログラムを体験させることは,プログラミングに対して「よくわからない,難しいもの」という意識を固定化させてしまう。
 そうしたことを避けるために,まずプログラミングの概要を楽しく理解させる仕組みが必要になる。
4.授業の内容
 翻訳書の学習12には,言葉で絵を伝えるという実習がある。今回は,実際のプログラミングに入る前に概略を伝える手立てとしてこの実習を行った。

(1)ウォーミングアップ

 冒頭でアイスブレイクをすると,生徒はリラックスするし,発想が豊かになるなどのよい効果が得られる。図1のような絵を教員が言葉だけで生徒に伝え,生徒が絵に直すことで,アイスブレイクと内容の紹介を兼ねる。
▲図1 これは何でしょう
▲図1 これは何でしょう

(2)実習

 実習は次のような手順で行った。
[1]2人1組になり,絵A,Bをそれぞれ一方にだけ配り,他方には見せないように指示する。
▲図2 絵A,絵B
▲図2 絵A,絵B

[2]渡された絵をできるだけ短い文章でワークシートのマス目に表現する。
▲図3 ワークシート
▲図3 ワークシート

[3]文章ができ上がったら,ワークシートを隣と交換し,文章をもとに絵を描く。
[4]絵を描き終わったら隣の人にワークシートを返し,元の絵と比較する。
[5]文章を発表する。
[6]絵C,Dについても同様のことを行う。交換相手を変えるのもよい。
▲図4 絵C,絵D
▲図4 絵C,絵D

 ABCDと課題が進むにつれ難易度が高くなる。以下に生徒の文章のいくつかを記す。
Bの失敗例として
  • 丸を描き,その中に目と口だけを描いて,口のみを変えながら笑った顔とふきげんな顔とその中間のような顔を描く。
Dの成功例として
  • 正方形があり,縦に2等分しその右半分に横棒をひき,上下に正方形をつくる。同じことを上の内部で2回行う。

(3)振り返り

 次の項目について,各自振り返りをした後,グループで共有した。
振り返りの内容
[1]あなたは,どのようなことに気をつけて言葉にしましたか。
[2]絵を伝えるときに必要な要素は何ですか。
[3]相手はあなたの思う通りに絵に直してくれましたか。直してくれない場合原因を書いてください。
[4]言葉を短くするためにどのような工夫をしましたか。

 これらの質問に対して,「簡潔にわかりやすく書くこと」「実行して調べること」「繰り返しを使うこと」「形,位置関係,大きさ,数など必要な情報を与えること」「全体をまず説明し,細部に入ること」「相手の立場に立つこと」などが挙げられた。
 これらの考え方は,そのままプログラミングの考え方に通じる。伝える相手は,私たちとは情報の解釈の仕方がまったく違うコンピュータなのだ。使うプログラミング言語が何であろうと,こうした考えを知っておくことは今後役立つのではないだろうか。
 引き続いて,プログラミングの実習に入った。生徒はこの実習を通して,言葉が通じない「相手」コンピュータに対しての命令を学習することになる。
5.プログラミング
(1)ドリトルの紹介

 授業ではドリトル※注4という初心者でも学びやすい教育用プログラミング言語を用いて実習を行った。
 ドリトルは筑波大学の久野靖教授と大阪電気通信大学の兼宗進教授によって設計された言語である。ドリトルではグラフィックス,ゲーム,音楽,ネットワーク,ロボット制御などをたやすく扱うことができる。プログラムは英語,日本語,韓国語で表記することができ,母国語で書くので何をしているかが生徒にわかりやすい。

(2)授業の流れ

 2009年度は次のような学習計画を立てた。
—1時間 プログラム体験
—2時間 ドリトルの基礎
—5時間 自由課題制作
—1時間 発表

(3)プログラム体験

 プログラミングの実際を体験させるため,以下の「宝物拾いゲーム」のプログラム(図5)を1行ずつ編集画面に入力し,その都度実行させた(図6,図7)。
かめた=タートル!作る。
左ボタン=ボタン! "左" 作る。
左ボタン:動作=「かめた! 30 左回り」。
右ボタン=ボタン! "右" 作る。
右ボタン:動作=「かめた! 30 右回り」。
タイマー!作る「かめた! 10 歩く」実行。
タートル!作る "tulip.png" 変身する ペンなし 100 100 位置。
タートル!作る "tulip.png" 変身する ペンなし 100 -100 位置。
タートル!作る "tulip.png" 変身する ペンなし -100 100 位置。
かめた:衝突=「|相手| 相手!消える」。
▲図5 「宝物拾いゲーム」のプログラム

▲図6 ドリトル:編集画面
▲図6 ドリトル:編集画面

▲図7 ドリトル:実行画面
▲図7 ドリトル:実行画面

 カメが動いた跡を残しながら,チューリップを消していく。カメは左,右のボタンでコントロールする。
 たった,10行のプログラムで簡単なゲームができるのだ。1行入力するたびに発見がある。
 プログラムの意味を理解するにはまだ時間が必要だが,ゲームはどんな風に作られているか,プログラムとは何をするものかは楽しく理解したのではないだろうか。
 チューリップの数を増やし,「かめた」のスピードを変えていく中でプログラムの意味を自ら発見していったようだ。
 以下に生徒の感想のいくつかを記す。
  • 自分がゲームを作っているようで楽しかった。
  • 他の動作をもっと試したくなった。数字を変えると速さや角度が変わった。
  • 1つ言葉や数字が違うだけでまったく別のプログラムになる。

(4)ドリトルの基礎

 宝物拾いゲームに出て来た,ボタン,色,変身,アニメーションなどについての練習問題を交えながら,自由課題制作に無理なく取り組めるよう基礎固めをした。

(5)自由課題制作

 ゲーム,アニメーション,アニメーション+音楽などそれぞれテーマを決め,事前に仕様書を提出し5時間の予定で自由課題に取り組んだ。新型インフルエンザ流行のため,学年閉鎖や出席停止者も多く授業が円滑に進まなかったが,補講を行うことで補った。

(6)発表

 実行画面を1人ずつプロジェクタに写し,簡単な紹介を各自で行った後,クラスメートの作品を鑑賞した。その後担当した作品について評価させた。

(7)生徒作品の例

 生徒の作品例を紹介する。
▲図8 進め,カメ太
▲図8 進め,カメ太
 カメ太が迷路を進む。動く障害物があってカメ太を悩ませる。

▲図9 風力発電
▲図9 風力発電
 晴れでも曇りでも朝でも夜でも回り続ける風車。風の強さ,天気をボタンで変えることができる。

(8)アンケート

 授業後のアンケートを1クラス31名のみ取ることができた。いくつかを抜粋して紹介する。
[1]Suicaやオンラインショッピング,オンラインゲームなどは人間がプログラムを組んで作ったシステムで,故障することもあり得るということが理解できましたか。
(1)よくできた     70%
(2)まあまあできた   25%
(3)あまりできない    3%

[2]手順に分けて考えることが重要であることがわかりましたか。
(1)よくわかった    52%
(2)まあまあわかった  48%

[3]プログラミングの授業では好奇心を刺激されましたか。
(1)よくされた     45%
(2)まあまあされた   45%
(3)あまりされない   10%

[4]プログラムを作ることを楽しみましたか?
(1)よく楽しんだ    55%
(2)まあまあ楽しんだ  39%
(3)あまり楽しくない   6%

[5]自由記載
  • ゲームや日常で使う家電などが今回自分でプログラムを作ってみて,改めて人が作ったものなんだ!!と気づきました。そう考えると,私が作ったプログラムとは比べものにならないくらい難しいものなのに,トラブルがあまりないことに技術の高さにびっくりしました。情報化社会の世の中なので,今回を機に知識を増やして生活に生かしていきたいと思います。
6.まとめ
 アンプラグドやプログラミングの授業で,生徒には次の3つを教えることができた。

(1)全体から細部へ

 人やコンピュータに何かを伝えるときは,全体も細部もわかるように伝えることが大切である。また,構造化して記述することは,言語活動能力の育成にもつながる。

(2)手順に分ける大切さ

 どんなプログラムも一足飛びにはできない。細かい手順に分けることで簡単に実現することができる。

(3)情報社会を理解する

 実際にプログラムを作ってみることで,プログラマの立場を味わい,コンピュータや情報社会の本質をよく理解した。

 プログラミングは生徒の好奇心を刺激し,達成感も大きいよい教材である。今後も継続して教材として取り上げていきたい。
注1:兼宗進監訳,『コンピュータを使わない情報教育アンプラグドコンピュータサイエンス』,イーテキスト研究所,2007
http://www.etext.jp
注2:富士通株式会社「富士通キッズイベント」
http://jp.fujitsu.com/about/kids/events/
注3:たかはま夢・未来塾
http://yume-mirai-juku.jp/
注4:プログラミング言語「ドリトル」
http://dolittle.eplang.jp/
参考URL
カメ太の日記「1時間で学ぶソフトウェアの仕組み」
http://kanemune.eplang.jp/diary/2008-11-06-1.html
前へ   次へ
目次に戻る
上に戻る