高校教科「情報」シンポジウム2014秋

教員免許更新講習を担当して 4

ミーハー教師の講師体験記

神奈川県立柏陽高校 間辺広樹先生


情報教員としての魂=チャッカリ型の好奇心を持つために


間辺広樹先生
間辺広樹先生

 私自身はもともと数学が専門でしたが、20年ほど前、今は統廃合でなくなってしまった神奈川県立六ツ川高校に赴任した際、そこには情報科学コースが設置されていて、数学の教員は情報も教えるということになっていたので、初めて情報教育に携わりました。ある時、同僚の先生の授業に一緒に入っていた時、生徒の目の前で「間辺さん、〇〇ってなんだっけ?」って聞かれたのです。私は答えられなかったのですが、生徒が私の方を一斉に見て「え何?先生知らないんだ」と言うのです。これは勉強しなければいかんな、というところから始まりました。

その後、別の学校にいた時、情報教員の免許取得の講習があって、どういうわけか私に「データベースとアルゴリズムのコーチを担当しろ」という命令が県から来ました。先生方に説明するのは初めてだったので、これはきちんと勉強しなければいけないと思っていろいろやりました。その勉強を通して、数学だけ教えていた時と比べて、授業の幅が広がったこと感じたわけです。

本日は、今回の講師体験から私が何を得たのか、そして「チャッカリ型の向上心」を持つことのススメについて話します。


実は私は2013年3月まで、大阪電気通信大学大学院で、教育用プログラミング言語のドリトルを作った兼宗進先生のところで、3年間修業させていただいていました。兼宗先生ご自身もかつて社会人学生で、その時の師匠が今回の教員研修を作られた久野靖先生(筑波大学)で、私からすれば師匠の師匠と一緒にお仕事ができると、非常にワクワク感がありました。


「プログラミング教育の考え方」の内容


内容 担当
 第1章  基本  久野
 第2章
 制御構造(1)
 中西
 第3章  制御構造(2)
 間辺
 第4章  手続き
 中西
 第5章  画像を生成する
 久野
 第6章  計算量
 久野
 まとめ

 間辺


そして、久野先生がメイン講師をされる2日目の「プログラミング教育の考え方」の補助講師を私と中西渉先生(名古屋高校)ですることとが決まった直後に、久野先生から108ページにもわたるテキストが送られてきました。内容は、東大で行われている半年間の講義用テキストを教員講習用にアレンジしたとのことでした。久野先生が研究会などで話されているプログラミング教育に対する考え方が反映されているもので、私のやる気も一気に加速しました。


「鼻歌プログラミング」でプログラミングを教えてみたい


ここで扱う言語がRubyなのですが、私はRubyを触ったことがありませんでした。これはちょっとマズイな、と思いましたが、私自身、自分の引き出しを増やしていくという気持ちを常に持ち続けることが必要だと思っていて、せっかくの機会なのでRubyを学んじゃえ、というようなチャッカリ型の向上心を持ち出してきて、勉強してみることにした次第です。

話は戻りますが、最初に情報教育を担当した六ツ川高校には情報科学コースがあるので、県内からコンピュータができる先生達が集まりまっていました(私は例外でしたが)。その中に情報科学コースを作ってきた富尾先生という非常に豪快な数学の先生がおられました。この先生は、いろいろと面倒は見てくださるのですが、いろんな試練も与えてくれる。相撲で言うところの「かわいがり」ですよね。当時はすごく大変でしたが、今はとても感謝しています。

その富尾先生の教えの一つに、「プログラムを教えるときは、できたものを見せるのではなく、生徒の目の前で作る」というものがありました。プログラムの目標を示した上で、どこに着眼してどのようにコードを打ち込んでいくのか、説明しながらプログラム作りの過程を示しなさい、ということです。実際授業をされる時も、鼻歌まじりにブツブツ言いながらコードを記述していきます。決して上から順番に作っていくわけではなく、要所を押さえながらきちんと動作するように作っていくわけですね。時にはわざと間違えてエラーを出し、どこを直せば正しく作動するのかという考えさせることもありました。


それがまるで鼻歌を歌っているようだったので、私は「鼻歌プログラミング」と名づけましたが、プログラムが構築されていくライブ感はすごく素敵でした。当然生徒達が理解しなければそういうことはできないわけですし、なんかカッコイイのでした。これが、私のプログラミング教育の手本になっています。それで、先ほどの108ページのテキストを一生懸命読んで、自分の担当部分に関しては鼻歌プログラミングができるようになったら、という思いで準備をしました。

私の担当した「制御構造の組みあわせ」の授業についてお話しします。ここでは、繰り返しや条件分岐が組み合わって様々な処理が行えることを学びます。題材には、
・ユークリッドの互除法
・素数の判定と列挙
・fizzbuzz
・世界のナベアツ
を使いました。


fizzbuzzは、「1から順に数えていって、3の倍数なら『fizz』、5の倍数なら『buzz』、3と5の公倍数なら『fizzbuzz』という言葉遊びです。世界のナベアツは、このfizzbuzzの応用問題で、「3がつく数はアホになる」というギャグを使ったものです。講習では、テキストエディターにコードを書き込んでから、irbというRubyのツールで入力や実行を行いました。以下のようにターミナルとirbを行き来しながら作業しました。


1.エディタにRubyのコードを打ち込む
2.拡張子をrbとして保存する(例: fizz2.rb)
3.ターミナルで作業フォルダに移動する
4.ターミナルからirbと入力する($irb)
5.ファイルをロードする(>load 'fizz2.rb)
6.プログラムを実行する(>fizz2)


私はこの日に向けてRubyの基本とテキストの内容を勉強して、今回の授業の問題はすべて鼻歌プログラミングできるレベルになっていました。


いよいよ私の授業です。緊張しましたが、トラブルもなく、ユークリッドの互除法、fizzbuzz、素数の判定などの題材を説明しながらプログラミングしました。そして、You Tubeのビデオで一息入れてから「世界のナベアツ」のプログラミングも行いました。


このような場につながる考え方を教えてくれた富尾先生に感謝したい気持ちでした。


引き出しを増やすために常にアンテナを張り続けることの大切さを改めて知った


この講習を通して私が手に入れたものは、大きく三つあると思っています。まずは、情報教育についての考え方を久野先生から間近で学ぶことができたということです。


あの108ページのテキストには、なぜこの題材なのか、この流れなのかということが丁寧に書かれています。例えば「fizzbuzzは、簡単版から、込み入ったナベアツ版までバリエーションが作りやすいから取り上げた」とか、「素数判定・列挙は、速度を上げる工夫がいろいろできる」などです。さらにテキストの各章の終わりにはopen questionとして、各章の内容に対する問いかけが書かれています。


例えば、この第3章で言えば
・学習者に難易度が上がったと思われないで、うまく『制御構造の中に制御構造』を体験してもらえる題材になっているでしょうか?
・構造は「ループの中に場合分け」に絞り、そのパターンを応用することで様々なものが書けるようになってもらう、という戦略はうまくいくでしょうか?
・データ構造としてまずは配列に絞って始める構造は良さそうでしょうか?  また、その着手として配列の初期化から始めるという(Rubyに特化した)方法はどうでしょうか?
・「合計」「最大」などの標準的な課題で十分に配列のことが理解してもらえるでしょうか?


などです。受講された方々は、ぜひこれらの問いに対する答えを考えていただきたいと思います。私自身も、自分なりにいろいろ考えことで、プログラミング教育に対する考え方を深めることができました。

2つめはRubyです。プログラミング言語を習得するということは、情報科教員としての引き出しを増やすことになります。体験したことがあるだけでも違うと思います。たまたま私はその後に、学校の夏期講座でプログラミングの講習をやる予定があったので、ちゃっかりそういった題材を入れさせてもらいました。これからどのように情報教育に使っていこうか、という楽しみが一つ増えたと思います。

3つめは、人とのつながりです。講習の講師チームが4月頃でき、Moodleで議論してきましたが、学会や大学の先生方、そして中学・高校先生方が一つの方向に向かって議論するのは、非常に貴重な経験でした。普段はこのように授業についてや、講師間の連携について議論することはほとんどできません。


今回の講義内容は、かなりレベルが高く、おそらく中学や高校の授業でそのまま使うことは難しいと思います。しかし、そこから本質的なことをつかみ取って、自分の生徒にカスタマイズしてアウトプットすることが大事ではないかと思いました。それが、情報科教員にとって必要な能力ではないかと思っています。


私の伝えたかったことは、こうした情報科教育者の魂であり、引き出しを増やそうと常にアンテナを張り続けるということです。そのためには、何かしら追い込まれることも必要だと思います。追い込まれてしまったら、しっかりと、ちゃっかりと勉強する、そういう考え方でいいのではないかと思う次第です。