見出し画像

高等学校「情報Ⅰ」のプログラミングのために(1) 早期に準備が必要だ

 高等学校の「情報」が,2022年度から新課程に移行し,科目名が「情報Ⅰ」(必修)となる。情報Ⅰのプログラミングについて,学習指導要領解説には次のような記述がある。

イ(イ) 目的に応じたアルゴリズムを考え適切な方法で表現し,プログラミングによりコンピュータや情報通信ネットワークを活用するとともに,その過程を評価し改善すること では,コンピュータを効率よく活用するために,アルゴリズムを表現する方法を選択し正しく表現する力,アルゴリズムの効率を考える力,プログラムを作成する力,作成したプ ログラムの動作を確認したり,不具合の修正をしたりする力を養う。その際,処理の効率 や分かりやすさなどの観点で適切にアルゴリズムを選択する力,表現するプログラムに応じて適切なプログラミング言語を選択する力,プログラミングによって問題を解決したり, コンピュータの能力を踏まえて活用したりする力を養う。
 例えば,気象データや自治体が公開しているオープンデータなどを用いて数値の合計,平均,最大値,最小値を計算する単純なアルゴリズムや,探索や整列などの典型的なアルゴリズムを考えたり表現したりする活動を取り上げ,アルゴリズムの表現方法,アルゴリズムを正確に表現することの重要性,アルゴリズムによる効率の違いなどを扱うことが考えられる。その際,アルゴリズムを基に平易にプログラムを記述できるプログラミング言語を使用するとともに,アルゴリズムやプログラムの記述方法の習得が目的にならないよう取扱いに配慮する。

 文科省が出している研修用教材は,ほぼこの線に沿って作られている。取り上げられている例題は,線形探索,二分探索,選択ソート,クイックソート,モンテカルロ法,放物運動などだ。それらを見ると,「ちょっと待てよ」と思うものもあるが,それについてはいずれ書くとして,問題は,授業ではどの「言語」を用いるか,である。

 筆者は,MS-DOSの時代に,C言語で画像ファイルコンバータのソフトを作った経験がある。Windowsになってプログラミングからは離れ,さらにMacユーザーとなって,VBAで業務用のマクロを組む以外,プログラミングはほとんどしなくなったが,Cinderella2との出会いからまたプログラミングに関わっている。
 ひとつは,Cinderella2を使ってTeXの文書用の図をつくるKeTCindyを大学の先生と共同で開発したからだ。Cinderellaの作者のコルテンカンプ氏から了解を得て,Cinderellaのマニュアルの日本語化にも取り組んだ。したがって,Cinderellaに付属するプログラミング言語 CindyScript についてはほぼ精通しており,授業でも生徒に使わせている。放物運動,モンテカルロ法もやった。大学入試センター試験「情報関係基礎」の過去問を使って,ソーティングも授業でやった。ORの分野の待ち行列もやったし,ライフゲームもやった。
 そういった経験のもと,数日前から,Python,JavaScriptの初心者として「情報関係基礎」の過去問に取り組んでみた。その結果わかったのは,初心者の立場では,文科省のいうことは,教員にとっては結構ハードルが高いということだ。現在,情報の授業を持っている教員のうち,何割がこれを短期間にクリアできるだろうか。

 たとえば,「アルゴリズムやプログラムの記述方法の習得が目的にならないよう取扱いに配慮する」など,どういう授業を想定しているのだろう。センター試験「情報関係基礎」にあるように,アルゴリズムを考えてコードは穴埋めができればよい,ということだろうか。しかし,プログラムの記述方法を習得できなければプログラムが書けるようにはならない。生徒もそうだし,教員はそれ以上だ。研修会をやったとして,文科省の研修用教材の例題を打ち込んでやってみたという程度ではとても授業はできない。生徒にプログラムを書かせているとエラーが頻発する。エラーが出たときの対処はやったことがなければわからない。エラーメッセージの意味,たとえば「Syntax error」が何のことなのか,教員がわからなければ,授業でエラーが出たときに対処できないではないか。
 オブジェクト指向の概念もそうだ。Python,JavaScriptでは,生徒は「インスタンス」「メソッド」という言葉を知らなくてもよいが,教員はある程度知らなければ教材が作れない。JavaScriptではHTMLの知識も必要だ。(CindyScriptはいずれも不要)
 教科書に載っているコードをそのまま打ち込んで「書いたつもり」の授業ならいいだろう。しかし,センター試験の「情報関係基礎」の問題をやってみようとしたら,生徒は穴埋めをすればいい授業でも,その準備を考えると大変だ。プログラミングの授業を実際にやって,生徒は何ができて,何ができないかを経験していないとわからないだろう。

 文科省の研修用教材では,Python , JavaScript , VBA , ドリトル , Swift の5つの言語について教材が作られている。これらの言語を選んだ理由は不明だが,特に指定があるわけではないので,教える教員が使えるものにすればよいだろう。教科書とコードが違っても,同じテーマで別のテキストを作ればよい。(現在,筆者がやっている方法だ)
 しかし,これからプログラミングを勉強するという教員は,どの言語を使うのがいいかさえもわからないだろう。1年かけて準備する覚悟でないと授業はできない。各都道府県の教育委員会はそういうことがわかっているだろうか。
 これから,その「準備」のために,いくつかの note を書いていく。

次回は「どの言語を選ぶか」