高等学校情報のプログラミング教育を考える:Python(1)
はじめに
2022年度から始まる新学習指導要領による高等学校情報は,科目が現行の「社会と情報」「情報の科学」(選択必修)から情報Ⅰ(必修)となり,プログラミングが本格導入される。情報Ⅱもあるが,必修ではないのでほとんど履修されないだろう。情報Ⅱが不要というのではなく,他教科の履修で授業コマ数が目一杯だからだ。
「プログラミングが本格導入される」というのは,たとえば,学習指導要領解説に「コンピュータについての本質的な理解に資する学習活動としてのプログラミングや,より科学的な理解に基づく情報セキュリティに関する学習活動を充実した。」と書いてあるからだ。
現行の教科書でもプログラミングを扱っていないわけではない。ただし,発展的な内容として,「アルゴリズム」を取り上げ,JavaScriptのコード例を示しているくらいだ(第一学習社:社会と情報)
コード例なので,変数や制御構造などのプログラミングの基本概念についての説明は一切ない。もしこれを授業で取り扱うならば,教員には当然ながらプログラミングの素養が必要である。
また,「モデル化とシミュレーション」も発展的な内容としてあるが,ここでのシミュレーションは表計算ソフトを用いて,ごく簡単な場合だけを扱っている程度である。
したがって,現在の情報の授業は,プログラミングの素養がない教員でも,発展的な内容のアルゴリズムの節をはずせば授業を行うことができる。実際,2000年から行われた「新教科「情報」現職教員等講習会」では,当時の学習指導要領に沿って講習が行われ,プログラミングはやっていない。対象者はほぼすべての教科の教員に渡る。要するに,「パソコンが使える」教員を校長が推薦して免許を取らせていたわけである。
「現職教員等講習会」による免許取得は,授業開始に当たっての臨時的措置だったといってもよいのだが(取得できる免許は臨時ではなく正式な免許),その後情報の免許を持った新卒者を採用することがほとんど行われなかった。県によって事情は異なるが,採用ゼロの県も多くあった。
筆者の周りの情報免許を持った教員を見ても,プログラミングができる人は非常に少ない。情報免許を持たない数学や理科の教員でプログラミングができる人はいるが,プログラミングができても,免許がないから情報の授業は持てない。
では,情報系の学部卒業者を採用すればいいじゃないかと思うのだが,情報系の学部卒業者で教員免許を取得して教員になろうとする人がどのくらいいるかを考えると,「ほとんどいない」ということになってしまう。
そこで(かどうかはわからないが)文科省は,新課程へ向けての教員研修をおこなうべく,そのための資料を発表した。
この中で使われている言語は,microbit を使う例が示されていることもあり,Pythonが使われていた。
しかし,その後,他の言語(JavaScript,VBA,ドリトル,Swift)のものが発表されている。
言語はPythonか
これらを比べてみると,結局 Pyrhon を選択することになりそうだ。
VBAはほとんど「話にならない」だろう。MS-Office 上の言語であるからだ。
ドリトルも,中学校ではよく使われているだろうが,将来的なことを考えると選択肢からはずれそうだ。
Swift もアプリケーション開発に使われてはいるものの,採用率は低そうだ。
ほかの候補としては Ruby や R があってもよさそうだが,いまのところ文科省のページには掲載されていない。
筆者としてはCindyScriptがイチオシなのだが,知らない人が多いだろうから(文科省関連に)採用されそうもない。
なぜCindyScriptがイチオシなのかというと,初心者には「簡単」で,将来的にMathematica , Python などに移行するのも容易だからだ。
筆者はこれまで,CindyScriptで数年間授業を行ってきた。教科書は「社会と情報」だが,その中の「モデル化とシミュレーション」をプログラミングで行っている。なお,統計部分はRにしている。ExcelでなくRにするのは,「簡単」だということと,プログラミングの要素があるからだ。
そこで,2年後にPythonへ移行するとして,その準備のためのメモをしておこうというのが本稿の趣旨である。
題材は,「みんなのPython 第4版」で,これを読み進めながら,生徒の実態を考慮して環境の構築,教材の作成を考えていくことにする。
インストールと起動
Pythonは,Anaconda をインストールして,Jupyter Notebook で使っていくことになるだろう。コマンドラインでの実行はやらなくてよい。あれこれやらずにできるだけ簡単な方がいいからだ。
パソコン教室46台のパソコンにインストールしていくのは結構大変な作業だが,何を使ってもこれについては同じことだ。
書法
PythonとCindyScriptやC言語との書法を比べてみる。
・行の末尾
Python :改行
CindyScript や Cなど : セミコロン
・グルーピング
Python インデント
CindyScript や Cなど : ( ) や { }
・コメント文
Python : # または三重のダブルクウォーテーション
CindyScriptなど : //
これはソースコードの構造に関わることで,ちゃんと「ルール」として理解しておかないといけないのだが,生徒は意外にこれをおろそかにする。理由は,「コード例を見て打ち込む」が,ただの丸写しになってしまっていて,やっていることを考えながら打ち込むという習慣がないからだ。これは,一般の学習でもいえるだろう。板書は意味も考えずに丸写し,という態度のままプログラミングも行ってしまうからだ。
========================
次回は基本演算とリテラル,変数