高等学校「情報Ⅰ」のプログラミングのために(4) Python,JavaScriptは「やさしい」か
大学入試センター試験「情報関係基礎」の過去問を,Cindyscript,Python,JavaScriptで書いてきた。ここまで,記事にしたのは,2007年のブロック落とし,2009年の素因数分解,2017年の三角形の個数の3問。3通りで書いてはいないが,「バブルソートは易しいか」で書いた2008年の問題は難なくできる。2020年の宝探しは,最初にとりあげたが,Python,JavaScriptではまだ全く見通しが立っていない。問題の部分だけならできるが,そこを完成して全体が動くようにするには,ボタンの作成,画像の表示をどうすればいいかがまだわかっていないからだ。できることはわかるが,具体的に作るに至っていない。図書館から本を借りてきたが載っていないことはWebで調べるしかない。
以上は,教材を用意する教師側のスキルのレベルの問題なので,生徒側はここまでわかっていなくてもよい。適当な入門書でも読めば十分だし,それすらもいらない。教科書と教師側で用意したテキストで十分。ただし,ここでいう「十分」は,「学校の授業やテストで問題に答える」というレベルである。課題研究で使おうと思ったらそうはいかない。
何か入門書を買おうかと,本屋に行って棚に並んでいる本を見た。以前買って手元にある「JavaScript 本格入門」(山田祥寛 技術評論社 2016)や,以前図書館で借りたPythonの本では解決できなかったこと,センター試験の過去問を書いていて引っかかったことについて書かれているかどうか。
・デバッグ環境
・四則演算の中に,商を整数で得る演算(Pythonの // )があるか
・変数のスコープ
・リスト処理
・図形描画(線分,多角形,円)
満足のいくものはなく,買わずに帰った。
その後,Amazon(古書)で2冊買った。
一冊は,牛田みほさんがnoteに書かれている「ゼロからやさしくはじめるPython入門」(クジラ飛行机 マイナビ 2018)
ただし,同じ出版社で同じ著者の2年前(2016)の本「実践力を身につける Pythonの教科書」を買ってしまった。目次を見るとちょっと違うが,まあ,似たようなものだろう。
もう一冊は偶然見つけた「データ分析ツール Jupyter 入門」(掌田津耶乃 秀和システム 2018)
さらに,市の図書館から本を借りてきた。
どれも入門書で,冒頭に「やさしい」と書いてある。
・ゼロからわかる Python 超入門(佐藤美登利 技術評論社)
Python はシンプルな書き方であることから,初級者向けのわかりやすいプログラミング言語だと言われています。
・実践力を身につける Pythonの教科書(クジラ飛行机 マイナビ)
Pythonのよいところは,手軽に実用的なプログラムが作れるところです。
・JavaScriptとことん入門(大津真 技術評論社)
JavaScriptは,スクリプト言語と呼ばれる種類の,シンプルで手軽に記述できるプログラミング言語です。Webブラウザとテキストエディタさえあれば,すぐにプログラミングをはじめられることから,プログラム学習用にも最適です。
どれを読んでも,すぐにできそうに思える。
しかし,その次にこうなる。
ゼロからわかる Python 超入門では,1-2節に
コマンドでの操作をマスターしよう
つまり,コマンドラインでREPLを使うか,テキストエディタでファイルを作ってコマンドラインから実行する。いずれにしても,カレントディレクトリを cd で移動するなどの操作が必要だ。
慣れればなんということはない,かもしれないが,生徒が最初にここでつまづくであろうことは容易に想像できる。言われた通りにできたとしても,ディレクトリの概念を習っていないから意味がわからない。教科書にはディレクトリについては何も書かれていないから,授業でも扱っていない。せいぜい「フォルダ間のファイルコピー」や「保存するときに保存先をまず決める」くらいだ。したがって,その前にディレクトリの概念を教える必要がある。
・実践力を身につける Pythonの教科書
この本でも,初めに出てくるのは REPLとIDLE。そして
プログラミングを学ぶ上で,コマンドライン上での操作は外すことのできない要素です。
と書かれている。
・JavaScriptとことん入門
17ページに,
JavaScript はどこに記述するの」に「Webブラウザで実行するJavaScriptのプログラムは,基本的にHTMLファイルの中のscriptエレメントに記述します。
と書かれている。26ページに進むと「HTML5について知っておこう」という節がある。
高校の「情報」では,HTMLも学ぶが,教科書レベルでは,ちゃんと学ぶにはほど遠い。現行の教科書では HTML5に準拠していない。最初に書くDOCTYPE宣言すらいい加減なものだ。(第一学習社:社会と情報) JavaScriptの例も載っているが,HTMLの中に書くとは書かれていない。次の新学習指導要領の教科書では改善されるだろうが,いずれにしても,簡単なソースでさえもHTMLの基本構造を記述しなければならない。(雛形として用意しておけばよいことだが)
そして,決定打は,オブジェクト指向だろう。
「JavaScriptとことん入門」では,繰り返しと条件判断の前に「オブジェクトの基本操作を理解しよう」がある。「プロパティ」「インスタンス」「メソッド」。生徒の混乱が目に浮かぶ。
「ゼロからわかる Python 超入門」では,Chapter8 で学ぶようになっているので,リストや関数をやったあとだからまだいい。
ということは,オブジェクトの概念がわかっていなくても,基本的なプログラムなら,例題を真似して書ける,ということだ。しかし,「真似して書ける」ということは「理解していなくても書ける」とほとんど同義だ。私は現在そのレベルにある。
これが,本当に「やさしいプログラミング言語」だろうか。
「Cindyscriptって誰さん?」で紹介した通り,Cindyscript はオブジェクト指向ではないから,BASICと同じレベルで始められて,構造的な書き方も,ユーザー定義関数もすぐに学べるし,実行画面とエディタは別画面で,デバッグもしやすい。それとは大違いである。
今行っている論議で,大事なことを今まで書いていないので,ここで書いておこう。
高校の「情報」の授業でプログラミングを扱う,という前提の話である。
「情報」は必修。興味があろうがなかろうが,全員が履修する。つまり,モチベーションの段階で,生徒には「プログラミングを学ぼう」とはなっていないのである。もちろん,興味のある生徒もいるが。
そして,教員側の問題。センター試験の問題を,紙の上だけでやるならよいが,実際にコーディングさせて動かそうと思ったら,問題によってはそう簡単にはいかないよ,という話。決してやさしくはない。やさしいのだったら,かつてC言語でソフトウェアを作り,CindyscriptでWeb上のアプリケーションを作っている私がこんなに苦労するはずがないではないか。
要求の度合いが高い,というなかれ。何かのアプリケーションを作ろうというのではない。進学校で,大学入試センター試験(今後は共通テスト)を見据えた授業を行うためのレベルなのである。
<追記> 12.10
もしかすると,なまじCindyscriptで大抵のことはできる,というスキルがあるために,その知識が邪魔をしているのかもしれない。
この件については,いずれ「Python,JavaScriptの入門書を探す」で書くことにしよう。