hiro.Hasegawaの気紛れブログ


by hirop

<   2014年 09月 ( 2 )   > この月の画像一覧

 2学期は、小中学生の混成クラスの授業が1コマ増え、週に3コマとなった。当初は、パソコン教室が塞がっているので、通常の授業(歴史関係)を展開してみたのだが、1学期にさんざんパソコンを使ったものだから、生徒たちには評判が悪い。
 そりゃそうだろう。パソコン教室では、こっそりとゲームをしたり動画を見たりできる。見つからないようにこっそり遊ぶのも、またスリルなのだ(経験あるでしょ?)。それが、机に座って話を聞き、ノートを取るなんて退屈きわまりない。


 何とかしようと思って確認すると、パソコン教室の空いている時間が見つかった。そこで、週1コマだけ、彼らにプログラミングを教えてみようと思い立った。
 別に突然ひらめいたわけじゃない。高校生以上に頭の柔らかいはずの彼らに、プログラミングの基本を教えてみたかったのだ。
 教材には、もちろんScratchを使う。しかし、社会人の場合のような、仕組みと理屈優先のアプローチは採らない。高校生のとき以上に、体感的な「やってみればわかる」式の授業を展開することにした。


 Scratchには入門用のPDF文書が添付されているが、教科書的なスタイルなのでこれは使わない。
 まずはともかくScratchを起動させて、いきなりネコちゃんを歩かせてみる。次に角度を変え、また歩かせる。「せんせー、面白くない」と、D君やHさんがぶうぶう言い出す。
 「だよな。じゃあこうしてみよう」と、繰り返し構造(「ずっと」ブロックを引っ張り出す。もちろん、説明はなし。ネコちゃんがステージ上をぐるぐる回る。「ちょっと速すぎるよな」と言って、遅延処理(xx秒待つ)を置いてみる。


 ネコ以外のキャラクタも用意されていること、自分で描いた絵も使えることを教えると、彼らは夢中で遊び出す。
 回転する角度を変えたり、スピードを変えたり。人物を宙返りさせたり…。彼らは、自力で組み立て方を身に着けていく。
 1学期の授業ではほとんど動画ばかり見ていたD君は、この授業の始まる前も「せんせー、YouTube見てもいい?」などと、気乗りしていない様子だった。その彼が、動画を見るのも忘れて、自分で描いたへんてこなキャラクターを動かしている。


 これがステージでサイズはxxピクセル、ここから命令ブロックを…などという説明は一切なし。スクリーンに画面を映し出し、操作とその結果を見せて簡単に説明するだけにした。
 もちろん「オブジェクトとは?」なんて説明もしない。そもそもオブジェクト指向とは、人間の日常的な感覚に基づいて、コンピュータを構成する要素を制御するものなのだから、うんたらかんたらと理屈を垂れなくてもよいのだ。
 しかし残念ながら、大人になるほどそういった自然な理解ができなくなってしまう。コンピュータとかプログラミングといった言葉を聞いて、意識の中に「平易ではないもの」という垣根を作ってしまうのだろう。


 1学期にワープロで文書を作成させてみて、操作手順やお約束などを省略してとにかく触らせれば、彼らは使いこなす、ということは体験済み。むろん高度なことはできないけれど、あたかもボールペンを握るように、道具は自然に扱って目的を達成できればそれでよいのだ。
 何かを作るときに重要なことは、道具の使い方をマスターすることより、作りたいものの完成形をイメージすること。それが明確になれば、あとはゴールに向かって道具を自由に使えばいい。


 このことは、他の創作活動にも言える(というか、大学ではよく言っている)。手段にばかり気を取られている大人たちを尻目に、子供たちは自然にどんどん学んでいく。
 理屈は、ある程度自在に扱えるようになってから、じっくり教えればいい。その頃には、すんなり理解できるようになっているはずだ。仮に理解が難しくても、わかるための努力を煩わしいと思わないようになっているのではないかと思う。だって、「面白いこと」のリストに組み込まれたのだから。
 彼らの中から、オブジェクトを設計できる人が出てくれば楽しいな、などと思っている。


 やがて若いお父さんお母さんに、小学校から帰った子供が言うだろう。「ねえ、宿題手伝って」「いいよ。どんな問題?」「オブジェクトの派生と継承を使ったサンプルを完成させるの。教えて」大人の皆さん、さあ、どーする?


※ 写真は、オブジェクトについて思考を巡らせるうちのネコさん。



e0359459_18151141.jpg




[PR]
by horonekop | 2014-09-24 17:19 | 日記・その他

 2014年春から、私立高校でプログラミングの授業を始めた。演劇や絵画など、生徒に様々な創作的技能を身に着けさせるという「ユニット授業」の一環だ。
 他にも、Photoshopによる画像処理やWebデザイン、写真撮影などの授業もあって、どれも守備範囲というか得意分野なので、あれもこれもやってみたい気持ちはあったのだが、まぁ、そんな無茶はできないので、結果的には誰も適任者がいない(要するに、一番難しくて手間がかかりそうな)ところを担当することになった次第。


 偉い先生は、当然ながらコンピュータの素人。「グループを作り、キャラクタデザインや作曲、プログラミングなど生徒の得意分野を活かしつつ、ゲームを作れたら…」などとのたまわれる。
 週4コマの授業で、そんなの無茶だ。検討と上部の説得を重ねた結果、JavaScriptで簡単なゲームを作りながら、「コンピュータでものを作る」ことの面白さを体験させることにした。


 プログラミングに興味がある、将来ゲームプログラマーになりたい、そっち系の大学や専門学校に進学したい…といった2、3年生が対象なのだが、全員ズブの素人である。
 コンピュータの動く仕組みから、順に導入していくというオーソドックスな手はあるが、そんなことは端からするつもりはない。とにかく触らせて、何か作らせ、「できた!」という喜びから引っ張り込んでやろうと考えた。


 特に、オブジェクト指向の基本的な考え方を叩き込みたかった。最近はかなりマシになってはきたものの、市販の書籍やWebの記事を見ていて、オブジェクトに対するちゃんとした8それでいてわかりやすい)記述は極めて少ないと感じる。
 PHPやJavaScriptの入門書の中には「オブジェクト指向は大変難しいので…」と言い訳をして、お茶を濁しているものも少なくない。中途半端に手続き型でプログラミングを覚えてしまった人には、頭の切り替えが難しいのだろう。要するに書き手、教える側の問題である。
 オブジェクト指向を身に着けるなら若いうち、と強く感じる。


 そこで目を付けたのが、Scratch(http://scratch.mit.edu/)というプログラミング学習ツール。
 子供にオブジェクト指向プログラミングを学ばせようという目的で作られた学習環境で、ネコのキャラクターを動かしながら、プログラミングに必要な考え方を体感的に会得していける。
 社会人には何度も教えているので、こちらとしてもやりやすい。相手は高校生だから、多少難しい概念が出てきても、丁寧に説明すれば理解する力は持っている。


 案の定、多くの生徒がハマった。ネコが画面の端まで来ると方向を変える、というところまで進むと、独自のキャラクターを描いて走り回らせている生徒も出てきた(ゴキブリが100匹くらい、ウジャウジャと動き回るプログラムを作った生徒がいて、よくできたと言ってはみたものの、その画面は実に気持ち悪かった)。
 学期末の試験では、プログラムの条件を示して、あらかじめ用意した命令のブロックを組み立てさせてみた。彼らにとっては未体験の試験だから、少し易しい問題にした。
 するとまぁ、100点満点が続出♪ オリジナルの設計はまだまだ無理だとは思うが、ヒントを与えればちゃんとアルゴリズムに沿った組立ができるということがわかった。
 ただ、学校の偉い人からは「試験では満点を出し過ぎないように。学校全体の偏差値に影響します」と釘を刺されてしまった^^;)ゞ


 そして2学期、いよいよJavaScriptの入門に入る。
 Scratchとは異なり、テキストエディタでソースコードを記述していかなければならないので、これまでのような直感的な驚きが得られるわけではない。
 言ってみれば、急に地味な作業になるわけだ。彼らの興味をつなぎつつ、さらに高度な技術、知識と考え方を養わなければならない。
 この段階になると、着いてこれる生徒とそうでない生徒に分かれてくる。そのことは既に織り込み済みだし、学校側にも「将来のために自身の向き不向きを知ることは必要」との方針を説明してある。


 まだ始めたばかりだが、自分からどんどん学んでいく生徒と、集中力が切れて雑談を始める生徒に分かれてきている。そして、非常に理解力が高く、プログラミングに向いていそうな優秀な生徒も発見した。
 そういった素質のある生徒に対して、学校側は「ITパスポートの資格取得に向けた特別授業をせよ」と言ってきた。パソコンに詳しい社会人でも難しい資格を、高校生に取得させようというのだから、なかなかに無謀な学校である(笑)。
 でもまあ、面白そうなので引き受けてしまった。経過はまた、折に触れて報告します♪


[PR]
by horonekop | 2014-09-24 17:03 | 日記・その他