私が高校の「情報Ⅰ」でPythonを使うことに否定的なわけ

Twitterで断片的なことを書いて、補足補足になって面倒なことになっているので、まとめておく。

話の発端はこれ。

高校「情報Ⅰ」で研修教材 新指導要領の高度化に対応

どんなカリキュラムかは、

高等学校情報科(各学科に共通する教科)

を見て欲しい。また、このタイトルでわかることは、これは「各学科に共通」ということで、高校生全般の必修科目だということがわかる。「職業科」でもなければ、「副読本」でもない。

私はここで、「Python」が出て来ることに否定的である。理由は、

である。これについて、もうちょっと詳しく書く。

背景

ここで「ECMA」とか「ISO」とか出ているが、直接的には「JIS」と言いたいところである。ただ、国際規格からJISになるには年単位のタイムラグがあったりするので、JISになくても国際規格があれば良いと考えている。どうせJISは国際規格に追従することになっているのだし。

そもそも、そういった「規格」は何のためにあるかと言えば、それを取り決めた機関の「お墨付き」である。「JIS」であれば日本政府が当該工業規格に対してお墨付きを与えたということである。同じような規格は世界中にあり、「DIN」とか「ANSI」とかはその仲間である。

では政府機関が何の必要でそういった「お墨付き」を与えるかと言えば、元々は政府系調達のための基準というのが一番大きかった。当然民間もそれに合わせておいた方が都合が良いので、それに準拠したものを要求するようになったというわけである。

さてそこで、件の「情報I」について見てみれば、これは「高校全般」に対する「文科省(つまり国)」の施策である。であれば、政府系調達に準じるような考え方をするべきだろうというのが、私の考えである。それゆえ、ここに「Python」が出て来るべきではないと考えているのだ。

規格に準拠するメリット

そういった「規格」があるということは、公的な「規格書」というものが存在しているということである。それを典拠にして、個々の物品は作られる。これは、「言語」についても同様で、「規格準拠」であるということは、「規格」に既定された範囲は最低でも正しいことが期待される。それが「規格書」の存在する意義である。

それは、「プログラム言語」で言えば、単に「処理系」ということに留まらず、「教科書」の類も「規格」に従うことにより、内容が保証される。「規格」が存在するというのは、そういったことである。

ここで、そういった公的な規格がない言語について考えてみると、そういった基準となるものが存在せずに、「実装」が全てということになる。無論ここでバージョンを固定してしまって、「PythonはVer 3.6を基準とする」とすれば、実用的には大きな問題はないはずである。とは言え、何かの動作が期待と違った時、それが規格に従ってなかったからなのか、処理系に問題があるからなのか、簡単にはわからないこともありうる。「実在する」ものを基準にしてしまうと、そういった問題が起きてしまうのである。

技術的には、バージョン固定して基準にすることも、標準化規格を基準にすることも大差はない。ただ、標準化規格を基準にするということは、その裏にある諸々の合意や仕組みが流用出来るということであるし、標準化規格を改訂する時には、そういったことも意識しつつ行われる。少なくともJISの委員会では「用語の統一と一貫性」については、かなり厳しく言われた。

そういった点で、規格に準拠しないものを使うというのは、「どうせ現場合わせが必要なんだから雑な設計図でいいでしょ」と言われているのに近いものを感じてしまう。ここで私は「ぴったりの設計図があれば現場合わせは少なくて済むよね」と言いたいのである。

副次的なメリット

このような場合に、プログラム言語を「標準化規格の有無」で分けてしまうのは、一つの大きなメリットがある。それは、

○○言語はもっと良いよ

という声をとりあえず無視出来るということである。

今やプログラム言語は星の数ほどある。その中である程度メジャーになって「良い」とされるもの、そこそこ以上の「教科書」が存在するものだけでも、ちょっと数え切れないほどある。あるいは、「文科省謹製教育用プログラム言語」なんてものも定義可能かも知れない。既に情報処理試験にはあるものと同様である。

「標準化規格の有無」と「言語の優劣」は全く関係がない。

しかし、そういった「もっといい言語あるよ」の類の「雑音」は「標準化規格ある?」という言葉で、だいたい黙らせられるのである。

いや、黙るかどうかは別にして、そういったものをどんどん認めてしまって行くと、日本のような教育後進国だと、現場が混乱するだけである。いろんな言語を知ることそれ自体は悪くない。なるべくたくさんの言語に触れて欲しいとは思うのだが(言語を知るということはパラダイムを知るということである)、ここは「ぼくのかんがえたさいきょうのITこっかじぱんぐ」ではなくて、「江戸しぐさなんかを教えてしまう、教員がブラック労働を強いられてスキルも微妙な現代日本」なのである。下手に多様化されてしまうと、現場の悩みが増えるだけである。また、「教科書」を書くエネルギーが分散してしまうと、そのエネルギーの行方が問題になってしまう。

そういったことを考えると、ここで「Python」や「Visual Basic」には手を出させない方が良いし、手を出すと「パンドラの匣」を開いてしまうことになりかねないと危惧するのである。

もちろんより良い「○○言語」を使うこと、あるいは選定された言語の変遷はあるだろうし、それはあって良いとは思う。でも、教育としての連続性を考えれば、

まず標準化規格を作って来い

であっても悪くはない。

なのである。

そもそも、今標準化規格のある言語には、RubyECMAScriptC#C/C++もある。これらが向こう数年以内にレガシー化してしまうことは考えにくいし、これらの言語でも十分実際に動く実用的で楽しいプログラミングは出来るわけなので、そこにあえて標準化規格のない言語を持って来るだけの強力なメリット、「パンドラの匣」を開いても余りあるようなメリットはないだろう。くどいようだが、「それらと比べて価値がない」と言っているのではない。そこで「パンドラの匣」を開く意味があるのかと言っているのである。

さらにエスパーとして

あくまでも「エスパーとして」の話であるが、ここで唐突にPythonが出て来たことは、

政府、AI人材年25万人育成へ 全大学生に初級教育

これと無関係ではないのではないかと思う。つまり、「AIやるにはPython」という短絡的な思考の結果ではないか。また、VisualBasicが出て来たのは、「学校はもっと仕事に役立つ教育しろ」という声の反映ではないかと思う。

仮にこういったことが背景にあるのだとしたら、それは

短絡的思考

と言う外はない。なぜなら、「AIやるならPython」「Officeを使うにはVBA」ということがいつまでも続くという保証がないからだ。そもそも、どちらの話もここに出て来る言語はあくまでも「グルー言語」でしかないから、原理的には他の言語に置き換えることが出来る。もちろん今まで使って来た歴史があるわけなので、そうそう簡単に否定出来るわけでもないが、「歴史」と言ってもこの世界のことなので、たかが知れている。何らかのキラーアプリが出てしまったら、翌日にはがらっと変化してしまっているかも知れないのが、コの業界だ。「実際に動く」とことはもちろん大事だが、「高校」の「必修科目」があまりに実用に振られ過ぎているのは、ちょっと怖いと思う。

余談

何度でもくどくど言うが、一連の話は「Pythonがその用途で劣っている」と言っているものではない。あるいはもっと直接的に「Pythonが劣っている」というつもりもない。

また、件の「情報I」が、選択科目であるとか、(職業高校での)職業教育であるとか、あるいは「副読本」で使うとか、課外活動で使うとか、授業研究の教材にするとか、そういったことであるなら、「それはそれでいいんじゃね?」と言うだろうし、それに上記の理由で反対する人がいたら、「ここでそれを言う必要なくね?」と言うだろうと思う。ここでの反対は、あくまでも「高校生全般」に対する「必修科目」としての反対である。「もしかしたら将来センター試験の科目になるかも知れないもの」としての反対である。

個人的にはPythonはあまり好きではないし、その理由のいくつかは賛同する人が多いだろうとは思う。でもそれは私が実はCOBOLがあまり好きではないという理由と大差ないし、他方実用品としてはCOBOLと同じくらい意味があると思っている。客観的にその方が都合がいい応用があるなら、好き嫌い関係なく使うべきだと。

余談の余談

と言うことを書いていながら、「プログラム言語の国家標準化規格」が必要かという話には、実は否定的である。「当該言語の仕様に支配的な影響力を持つ者」が作った言語仕様書が存在していれば、それで十分だと思うのだ。なぜなら、「標準化」としてはそれで十分であるからだ。

世の中の動きは激しい。特にコの業界の動きは激しい。ところが、「国際規格」の標準化には、途方もないと言って良いレベルの時間がかかる。それだけ「標準化」は大変な作業なのだ。実はC#のECMAはMicrosoftが仕様書を出したことで、「異例」と言っても良いくらい短時間で「標準化」されたし、それを典拠としてISOも短時間で決まったのだが、これは本当に異例中の異例と言ってもよい。他方COBOLはISOがJISになるだけでも、年の単位で時間がかかっている。

「標準化ドキュメント」が必要であることは否定しないし、重要なことだと考えているのだが、今の標準化規格が出版されるまでの時間を考えると、こういったことが必要なのかどうなのか。まぁそれで国家標準化規格がなくなってしまったら、上記のような問題が厄介なことになってしまうので、もっと深い議論が必要だろうと思うのだけど。