【ポエム】「文部科学省はPythonなんて使ってんじゃねえ」に対する2019-05-22現在の返答【ただの推測】

# はじめに

元ネタは @nagataaaas さんの、
「 [文科省のPythonはPythonじゃねぇ](https://qiita.com/nagataaaas/items/ba33c4c4e0df0b5aa0c4)」
です。

この記事のコメント欄が、それこそ学校行事の校舎宿泊のキャンプファイヤーのごとく燃え上がってるので、
「おっ、これは29歳四流プログラマで、女子高生にPython本を貸したり、[子供向けプログラミングクラブ](https://coderdojo.com)で、毎回子供たちにマニアックなネタ（言語仕様の解説やCLIの話）で冷笑されている俺が、ちょっとマジレスしないとダメかな？」
と勝手に思ったので、例によってまた就業中にこの記事を書き始めた。

就業中の息抜きで[文部科学省のWebサイト - 教育の情報化の推進](http://www.mext.go.jp/a_menu/shotou/zyouhou/detail/1369613.htm)をチラ見している程度なので、文部科学省の方が見たら、
「いや、お前、違うから」
と叱られることを承知の上で書いていく。

なお、この記事では「情報活用教育」、「情報モラル教育」に関しては、基本は扱わない。

# 高校の前に

そもそも人によっては、
「高校生でPythonは早い。つーかプログラミングなんか学ばせるのがおこがましい」
という人もいるかもしれないので、2020年から子供たちがどのようにプログラミングを学んでいくかをかいつまむ。

## 小学校では何を使って学ぶのか

無難といえば無難。[Scratch](https://scratch.mit.edu/)と[Viscuit](https://www.viscuit.com)である。

> また、本教材は、「Scratch　正多角形をプログラムを使ってかく」から視聴／閲覧していただき、その後、必要に応じて「Scratch　ねこから逃げるプログラムを作る」「Viscuit　たまごが割れたらひよこが出てくるプログラムを作る」を視聴／閲覧していただくことを想定して作成しています。
>
*[文部科学省 - 教育の情報化の推進](http://www.mext.go.jp/a_menu/shotou/zyouhou/detail/1416408.htm)のページより*

指導内容も無難だろう。

## 「ヴィジュアルプログラミング言語って、おもちゃじゃん」

そうだが？

しかしながら、[ScratchのWiki](https://ja.scratch-wiki.info/)ページをご覧いただくとわかると思うが、その言語（？）仕様は結構しっかりしている。むしろ **例外ハンドリングがない** ことにまずは驚いていただきたい。

[あのネコ](https://ja.scratch-wiki.info/wiki/Scratch%E3%82%AD%E3%83%A3%E3%83%83%E3%83%88)をぐるぐる回して遊ぶだけでも結構だが、ちゃんと組むとネコの座標情報を取得し、変数に文字列でログを出力することもできる。

ただ、子供たちがその必要性を感じていないからやっていないし、大人たちもムキになってやってるわけでもないので、そんなに目立たないだけである。

Viscuitは[原田博士（敬称）](https://devroom.viscuit.com/)のブログを参照していただいたほうが、僕が変なことを言うより早いし叱られないと思う。

### 蛇足

特に誰にも教えていないのに、吹き出しの文字列の中をに変数を加えて文字連結して出力している女の子を見たときは、度肝を抜かれた思い出。

----

# 高等学校情報科 - 研修用教材について

では本題の[高等学校情報科「情報 I」の教員研修用教材](http://www.mext.go.jp/a_menu/shotou/zyouhou/detail/1416746.htm)に触れていこう。

高等学校情報科でなぜPythonを使うかも、あまりに弱い説得材料だが、ある。

## 「なんでPythonなんだよ」 => micro:bit

個人的に調べるまで期待していなかったのだが、高校では [micro:bit](https://microbit.org/ja/g) をこの記事を書いている時点では使う方向で資料が作られている。

しかし、優秀で博識な読者の皆様なら、
「『micro:bit』はほかの言語でも動かせるじゃん」
と気づかれると思う。

### micro:bit エディタ 「Mu」 の存在

ところで、Qiitaをご覧になっている皆様は、プログラミングを始めようとした際に一番躓くのは、どこだろうか。

プログラミングにおける論理的思考能力というのはここでは脇に置く。それはあくまでコードを起こす前の話である。

一番は、開発環境の構築ではないだろうか。

### 余談

ECMA標準とか国際基準（ISO）などの観点からすると、JavaScriptやRubyももちろん上がるのだが、なぜかそうはいかない現実。

今日のJavaScript（Node.js）への愚痴は、ここではやめておく。

---

件の資料では、micro:bitのプログラミングに[Mu](https://codewith.mu/)というエディタを使う。

> 　ここでは，イギリスで教育用に作られ，実践例が豊富にあり，各種のセンサと簡易な表示装置が内蔵され，多くのプログラミング言語で制御可能な外部機器として micro:bit を用い，センサ（加速度センサ）で得たデータに応じて LED を制御するプログラミングを行う。
> 　micro:bit を Python で動作させるオフライン環境のエディタとして，Mu がある。 micro:bit のオンラインエディタ MicroPython ドキュメントでは，標準開発環境よりも，この Mu を勧めている。プログラムはダウンロードを介さずに，Web ページのボタンを押すだけで，直接 MICROBIT ドライブに転送し，またコードのチェックもしてくれるので便利である。
>
> *[研修用教材 P.14 (PDF)](http://www.mext.go.jp/component/a_menu/education/micro_detail/__icsFiles/afieldfile/2019/05/15/1416758_005.pdf) より*

少し乱暴なまとめかたをするが、micro:bit を扱うにあたっては、 Python と Mu が一番簡単に環境が構築できるのである。

## 「なんでPythonなんだよ」 => pyplot

元ネタの記事で問題になっていた基本構文に関してのあれこれはここでは飛ばす。

ではそれを学んだ先に何をやるのかというと、目次には以下のように載っている。

> * 学習15 アルゴリズムの比較
> * 学習16 確定モデルと確率モデル
> * 学習17 自然現象のモデル化とシミュレーション
>
> *[研修用教材 P.3](http://www.mext.go.jp/component/a_menu/education/micro_detail/__icsFiles/afieldfile/2019/05/15/1416758_005.pdf) より*

この記事を書いている私が、10年前に総合専門学校の情報科で習ったようなことを、高校のうちから学ぶのである。私はうらやましい。

### 余談: 「おまっ、『MATLAB』があるだろっ？！」

ライセンス料、ばかにならないでしょう。[GNU Octave](https://www.gnu.org/software/octave/)というのも手だろうけど。

# まとめ

[元ネタのコメント欄](https://qiita.com/nagataaaas/items/ba33c4c4e0df0b5aa0c4#comment-b36bc66c2576cef78746)を眺める限りでは、過去のPythonのいやな思い出によるコメントが散見された。

しかしながら、文部科学省の資料を斜め読みする限りだと、 micro:bit という回避で、ハードウェアをいじる体験もでき、かつ環境構築の手間をある程度省けてるのではなかろうか。

私個人、小学5年生の時に[Hot Soup Processor](http://hsp.tv/)で `goto` と `if` しか使わないプログラミングでもやもやし、中学時代にC++で挫折。ようやく高校2年生になって[Ubuntu](http://ubuntulinux.jp)と出会って、UbuntuにたまたまPythonが入っていたので、それで構造化プログラミングのいろはを理解したので、かなり認知バイアスはかかっているのは承知である。

確かに、
C, C++, Rust, その他でビルドしたバイナリは速い。
JavaScriptだってECMAScriptだ。
RubyはMatzが作った国産言語で国際標準もある。
Lispはむちゃくちゃ頭がよくなる。
Smalltalkが理想のプログラミング体験だ。

ただ、Pythonは計算機科学やコンピューターアーキテクチャに精通していなくても、
ある程度動くものは作れるし、「今日では」という条件がついてしまうが、割といろいろできる。

そういう意味では、教育用としては結構ベター（ベストではない）な選択肢ではなかろうか。

という私は、仕事でVB.net, CSharp, PHP, JavaScript, Bash Script, Power Shellとか転々としてるけどな！！