生きることにこだわりを。魚住惇です。 今回もちょっとしたこだわりに、お付き合いください。
ここ最近、Twitterで生徒のことを褒めちぎっていました。
あまり生徒のことを書いてばかりいると、他の生徒からも示しがつきません。それに生徒目線からしてみると、「自分と話た内容がツイートされている」ということを不快に思い、学校生活で僕と話してくれなくなる可能性も十分に考えられます。
それでも、どうしてもこの感動を伝えたいと思ったので、ツイートせずにはいられませんでした。
毎年3学期にはプログラミングの授業をしています。今回はちょっと過去に振り返りながら、魚住がどのようにしてPythonを使った授業に至ったのかをお話ししつつ、今年度出会ってしまった、プログラミングに目覚めた生徒の話をしたいと思います。
VBAからScratchへ
ちょっと話が長くなりますが、プログラミングを授業に取り入れていった話や、言語をPythonにした経緯などを、少し長めにまとめます。
2023年現在では情報Ⅰという科目名の授業を行っています。その昔は情報ABCでした。そのあとで”社会と情報”と”情報の科学”に再編されて、多くの学校が”社会と情報”を履修させていました。
これが後になって、情報の科学的理解を養うことができていないじゃないかと文科省が問題視するようになります。
そんな僕はというと、大学時代にC言語でプログラミングを授業で経験し、一応ポインターや構造体までかじりました。
あとはバブルソートなんかもやった記憶があります。
赤松健先生の漫画、”AIが止まらない”も読みましたし、中学生時代にN88-BASICも触りました。僕なりにPC9801も触ったつもりです。
WordPressを触るようになってからはPHPも触れるようになりました。学校で働く中では、成績処理系のExcel VBAを使うことが多かったです。
あとはこの辺りの知識を使ってBATファイルを組んだり、大学時代にはシェルスクリプトを書いたりもしました。
ただし、趣味の域を出ませんでした。個人的に楽しむことができたとしても、授業で教えるのはハードルが高いんじゃないかと思っていました。
プログラミングは自分みたいにコンピュータに興味がある人がやるものであって、初心者がやるものではない。
それに、自分みたいにプログラミングに興味がある人は、きっとどこかでプログラムを書く体験をして、のめり込んでいくものだ。
専門家がやることなんだから、自分のように自らその領域に足を踏み入れた人が、自分の実力で勝手にやっていくもんだ。
心の中のどこかでそんな感覚がありました。コンピュータは道具。包丁と一緒。包丁を日常生活で使う人全員が、包丁そのものを作ることができないのは当然のことです。
しかし、そうも言っていられない時代になりました。端的な理由としては、教科書に記載されている単元で、プログラミングが盛り込まれているから。
生徒らに購入させている教科書に載っているのなら、それも扱わなければなりません。
そして学習指導要領には、プログラミングを教える根拠として、情報という科目を通して「情報の科学的な理解」というものを養う。そんな記述もありました。
学習指導要領にそう書いてあるんじゃ、やらないわけにはいきません。そこに書いてあるということは、すべての高校生がプログラミングを通して、問題解決方法を考えたり、世の中で動いているプログラムの仕組みを自分なりに考えたりする力を身につけてもらう必要があるということです。
僕としても趣味として続けていたプログラミングを、授業で教えることができるレベルにまで上げなければならなくなりました。
ここまでが、僕が授業にプログラミングを取り入れた大きな理由です。
教員採用試験に合格した次の年に配属された学校では、"情報の科学"を2年生で履修していたため、どんな偏差値の生徒であってもプログラミングを教えなければなりませんでした。
この時、選んだ言語はVBAでした。Excelがインストールされているパソコンなら、とりあえず実行環境が用意されているに等しいので、わざわざ別のアプリをインストールせずに授業を進めることができました。
今の勤務校に転勤してからは、VBAだと、 VBA独特の記述などがプログラミングのハードルを上げてしまっているのではないかとも思っていたので、使用言語をScratchに変更しました。
それから3年ほどはScratchを使っていましたが、テストの問題用紙にブロックの画像が綺麗に印刷できなかったり、やってることはアルゴリズムなので結局は猫の吹き出しだけを使ったりと、Scratchを使い続けることでの新たな弊害なども出てきました。
話は逸れますが、当時の生徒の中にScratch2や3のブロックの色が刺激が強すぎて、目の痛みを訴えてくる生徒がいました。僕も目が痛くなる程ではありませんが、確かにScratch3のブロックの色は原色が多く、明るいなという印象がありました。 結局コンピュータ室に導入したScratchは、まだまだブロックの色が控えめの、バージョン1.4のオフライン版にしました。
ScratchからPythonへ
ちなみに前任校は情報活用コース設置校でした。普通科であるにもかかわらず、情報の専門科目の授業を行うクラスが1クラスだけあったんですよ。
転勤するまで、僕はそのクラスの担任だったわけですが、そこではPythonを使ったプログラミングを授業に取り入れていました。
細かいことを話すとキリがないので省略しますが、当時は24人ほどのクラスで、情報の授業は前半と後半とにメンバーを分けて、半々に行うというカリキュラムでした。
なので1回の授業では12人に対して授業を行う、いわば少人数クラスという授業展開ができていました。Pythonを使ったプログラミング演習は少人数だから実現していたというのが、当時の自分の見立てでした。
2017年ごろの話なので、ちょうどPythonが話題になってきた頃です。まだこの時は、ちょっと使ってみようかなくらいの意識でした。
結局今の勤務校では、Pythonを経験した後になっても、使用言語としてScratchを選び、まずはプログラミングという行為そのものに慣れてもらおうと考えました。この時点ではこれが正解だと思ったんですよ。
ところがそれから数年経ち、世間では2020年度より小学校でプログラミング教育が必修化されるという話がニュースで話題になりました。
先進的な取り組みを実践されている小学校でのプログラミングの授業の様子が報道されていたのをよく覚えています。
Scratchやタートルグラフィックスがよく登場していました。小学校でのプログラミングは、あくまで体験活動ですから、自分で考えて作ったものが動いたことに意味があるんだと思います。
そんなことよりも僕は、小学校でのプログラミング教育にScratchが使われるということを知って、危機感を覚えました。
既にScratchを使ってプログラミングを学習した生徒が、高校に入学してくる。そんな光景が、あと10年しないうちに当たり前となるのではないか。
その新しい世代の新入生に対して、情報の授業でプログラミングをやるよと言って、出てきたのがあのオレンジのネコ。もしそうだとしたら、
「またこれか。もう小学校でやったよ。」 「中学校ではmicro:bitを触ったのに、今更Scratchなんてやるんだこの学校は。」
こんなことを新入生に思われてしまうかもしれない。
そんな未来を想像したら、もう居ても立っても居られなくなりました。
これがPythonを導入しようと思った一番のきっかけです。
Pythonに鞍替えしたことによる弊害は?
これまでScratchを使ってプログラミングの授業を展開していて、ふとPythonに切り替えたくなった。
それっていつだったっけと思い返してみると、昨年度でした。その時のnewsletterにもその話題を書いていました。
大晦日にPythonの教材を作っていた話 - by 魚住惇⌨️『教師のiPad仕事術』
はっはっはっ。今この文章を書いているのは1月31日の23時です。PythonについてScrapboxにまとめ始めたっていうことを書いたnewsletterの最初の見出しを見て、思わず笑ってしまいました。
人って変わらないものですね。1年経った今でも僕は、締め切りギリギリ生活を送っています。
いや、その話がしたいんじゃなくて、Pythonの話でした。
昨年度の1年生、つまり今年度の2年生(もうすぐ新3年生)から、Pythonに切り替えました。今年でPython2年目ということです。
当時を振り返ると、Scratchみたいなビジュアルプログラミング言語から、Pythonのようなテキストコーディングに切り替える時に、結構不安に思っていました。
ブロックをマウスで選んで運んでプログラムを作る方が、アルゴリズムの内容を考えることに集中できると考えていたからです。
プログラミングって一言で言っても、作業の内容には段階があります。何をどういう手順で行うかという中身を考えて、その後に実際にコードを書いていくという二段構えです。
Scratchなら、ブロックを組み合わせるだけなのと、ブロック同士も無意味につながらないように工夫されています。しかもブロックが日本語です。
多くのプログラミング言語は英単語を元に作られているので、英語が苦手な人にとって、その時点でアレルギー反応みたいなものが出そうになります。
でも日本語に対応していて、しかもブロックを組み合わせるだけなので、全角半角の区別もつけることなくプログラミングができる。Scratchなら、プログラミングという行為の中で、アルゴリズムを考えることに集中できるんじゃないかと思ったのです。
とはいえ、大学入学共通テストに出題される情報の問題では、Pythonのコードの記述によく似た形式で出題されます。ビジュアルプログラミング言語に慣れたまま受験すると、ひょっとしたらその表記の違いに戸惑うのではないかという懸念もありました。
まぁここまで心配事をうだうだ考えるくらいなら、授業で扱う言語をPythonに変更してみて、それで勤務校のレベルに合わなかったらまたScratchに戻せばいいか。
そんなふうに考え方を切り替えました。いやむしろ、自分がPythonの授業をやりたかっただけなのかもしれません。そんなことを考えていた2021年の大晦日に、ふとPythonの解説ページを作り始めてしまいました。
授業中に使用する言語をPythonに変更したことでどうなったのかというと、
結論、僕の感触では、まったくというほど大きな問題にはなりませんでした。
もちろん一部ではプログラミングそのものに拒絶反応が出る生徒もいましたが、そういった生徒はScratchで授業をしていた頃にもいましたし、Pythonにしたからといって、そこまで授業の進度に影響が出ることもありませんでした。
むしろScratchだと、課題に取り組むことを諦めた生徒が、キャラクターを編集する画面を開いてお絵描きを始めてしまったり、音を出して遊んだりしていました。
Pythonだとお絵描きも音を鳴らすのも、コードを書かなければ実現しませんからね。目の前の課題から逃げられない状況を、意図せず作っていたことに後になって気がつきました。
それに、解説したりヒントを出したりする際に、ホワイトボードを使って書くときが、Pythonだと楽なんですよ。アルファベットと数式を書いたら良いわけですから。
プログラミングが苦手な生徒も得意な生徒も、ScratchからPythonに変更したことで、その割合に特に変化が見られなかった。
そんな感覚を、肌で感じていました。
逸材をどう育てたらいいのか
Twitterでも公開した、今年度の課題リスト。昨年度とあまり変わっていません。昨年度では10時間ほどプログラミングに費やして、学年末考査を迎えていました。
10時間の中で、多くの生徒はkadai9くらいまで到達しました。拒絶反応が出てしまう生徒は、友人のコードを写す作業を頑張って、kadai8くらいまで出してきました。
そんな中で、プログラミングに夢中になり、家でも課題に取り組んでくれた生徒が何人かいました。その生徒たちは授業中には他の生徒から頼られることが多かったので、僕の代わりにTT(チームティーチング)役としてクラスメイトにアドバイスをしてくれと頼んでみました。
頼られたことが嬉しかったのか、クラスメイトに貢献できるのがやる気につながったのか、その生徒たちは目をキラキラさせながら活躍してくれました。
教える側に回ったことで、より課題への理解にもつながったんじゃないかと思います。その子たちは終盤には全ての課題を提出してくれました。
そして今年度もこうしてプログラミングの時期となり、昨年度のようにスペシャルな生徒が出てきてくれないかとワクワクしながら様子を見ていました。
そうしたらなんと、授業を2回行い、課題でいうとkadai3のif文まで進めたところでプログラミングに目覚めて、あっという間にkadai11まで終わらせてしまった生徒が現れたんですよ。
まさか、二分探索のコードをヒントなしで書くなんて・・・。
ゾワっとしました。何も教えていないのに、なんでそのコードが提出できるんだ。まさか、昨年度書いた教材を読み漁った?自分の力だけで内容を理解して、課題を提出してきた?
いや、まさかとは思うけど、ググりながら課題に取り組んだのかもしれない。そう思って、その生徒とPythonの内容を話すときに、専門用語を言い換えたりせずに、割と早口で話すようにしました。
ついてくるんですよ。僕の会話のテンポに。しかもアドバイス通りにプログラムを修正して再提出までしてくれました。
多くを語らずとも、最小限のアドバイスで話が通じて、こちらが期待した通りのプログラムを書いて提出してくる。そんな生徒が目の前に出てきたんです。
これはちょっと、授業の範囲に満足せずにチャレンジさせまくったら、すごい領域に到達できるんじゃないか?
そんなことばかりを考えていたら、もうワクワクが止まらなくなりました。昨年度教える側に回ってくれた生徒を遥かに上回るスペシャルが現れてしまった。
僕から見ても手の届かない領域に到達してしまうかもしれない。そう思えてなりません。
だってその生徒がPythonに出会って、まだ2週間も経ってないんですから。成長速度がバグってるとしか思えないんですよ。リライフしたのか?それとも異世界から転生してきたのか?それか何度か過去からやり直してきたのか?そう思ってしまうほどの素質を秘めた生徒です。
先週末から、途中で止まっていたAtCoderのBiginners Selectionを最後まで終わらせました。
それから、バブルソートと選択ソートしかコードを書いてなかったので、挿入ソートのコードを書きました。
また今度でいいやって思って放っておいた、自分自身に課した課題を進めることに必死です。
ちょっと今、その生徒に対して、リスペクトの想いももちろんあるんですが、その一方で対抗心もあるんですよ。今の2年生の生徒に対しては心の余裕があり、頭の片隅では「まだまだだな」なんて思っていました。
今年度は、そんな心の余裕が良い意味で、ありません。メキメキと力をつけていくその生徒が持つ素質に対して、少し嫉妬しています。
いつまで維持できるかわかりませんが、その生徒から見て、まだまだ先を生きる存在でありたい。負けてらんないんですよ。
いかんいかん、書いていて、つい熱くなってしまいました。
今週は闘争心に火がつき、新たなこだわり先を見つけてしまった。そんな1週間でした。話す機会がありましたら、その生徒がどんな感じに成長したのか、書ける範囲で書きたいと思います。
今回のnewsletterは以上となります。 「いいね」を押していただけるとうれしいです。Pythonの良い課題などがありましたら、「#こだわりらいふ」をつけたツイートや、Substack内のコメントまでお願いします。
あ、そうそう、僕がScrapboxにまとめたPythonの解説ページはこちらです。
そのワクワクは、教師冥利に尽きますね〜