てきとうなさいと べぇたばん

Pythonとプログラミング教育 PyCon JP Advent Calender 2016

I love Python!! turtleモジュールを動かしたスクショ。

この記事はPyCon JP Advent Calendar 2016の9日目の記事です。

Pythonと私

Pythonはいろいろあって仕事で使ってました。今現在では、ArduinoやRaspberry Piをいじるために使ってます。前者はpyserial、後者はGPIOモジュール使ってます。制御するの楽しいです。

コンピュータシステムの理論と実装から、アセンブラを作り、バーチャルマシンを作っている最中…って言ってもう1年くらい終わらない戦いしてます。参考までにそのリンク。

仕事ではちょくちょく、AnsibleやFabricを使ったりして説明の面倒な部分を自動化・マニュアル化させています。

PyCon JP 2016と私

その前にYouth Coder Workshopの開催後レポートよんでね!!

Youth Coder Workshopという子ども向けワークショップで、子どもに対してプログラミングを教えるということをやりたくてPyCon JPのプログラムチームに入りました。

色々あって体壊して、複数で働くってどういう感じだっけというのも経験したかったというのもありました。仕事ではずっとプロジェクトを回すのは一人だったり、2〜3人の少数だったので、非常に貴重な経験をさせてもらえたなと思っています。恐らく今後の財産になるでしょう。

子どもとプログラミング

子どもにプログラミングを教える、というのは何も「プログラミングそのもの」を教えるのではなく、「プログラム(機械)がどういう考え方で動くのか」ということを知ってもらうというのが大まかな目標になっているようです。

文部科学省の「小学校段階におけるプログラミング教育の在り方について」でも、以下のような指摘があります。

○ プログラミング教育とは、子供たちに、コンピュータに意図した処理を行うよう指示することができるということを体験させながら、将来どのような職業に就くとしても、時代を超えて普遍的に求められる力としての「プログラミング的思考」などを育むことであり、コーディングを覚えることが目的ではない。

個人的にはこの考え方は賛成です。そもそもプログラミングは、美術や音楽といった技能的なスキルでかなりの練習が必要になるものですから、どうしても向き不向きが出てしまいます。

子どもとPython

プログラミングはあくまでもその考え方を学ぶべき、というのであれば、子どもにPythonを教えるというのはどういうところでメリットが有るのでしょうか。

特にPythonではなくとも良いのかもしれないとか悩んでいたりするわけですが、Pythonには以下のような特徴があるのではないか、と思い込んでいます。

  • 非常にシンプルな構文で、だれが書いても同じような書き方になる傾向がある
  • 様々な用途、あらゆる分野むけのモジュールがある
  • 高等教育機関(大学など)ではPythonが使われているケースが多く、プログラミングを専門的に学ぶ土壌はある
  • 内部構造もシンプルなのが功を奏しているのか、様々なプラットフォームの実行環境が存在する(CPython、IPython、etc)

教育向けモジュールってあるのかな

turtleモジュールありましたね。ずっと前にたかのりさんと話したときに「🐢うごかせられればいいと思う」的なことを話してたのを思い出したのもありますし、PyCon USのYoung Coderのリポジトリを覗いたらturtleモジュールがあったので、なるほどと思いました。

24.1. turtle — Turtle graphics — Python 3.3.6 ドキュメント

とりあえず、turtleモジュールをWindowsとMacで動かしたところ、これたのしいとおもいました。更にブラウザだけで完結できないか、と思って「ブラウザ実装のPythonってないかなー」とかいう変なことを思いついてBrythonというものにたどり着いてしまいました。

Brythonによるturtleモジュールを読んで動かしてみたところ、仕様がすこし違っていましたがそれを除けば動いちゃいました。ひとまず30角形(円が360度であることを利用している)を描いてみました。微妙に怪しい実装したから挙動が怪しいけど。

それよりもJupyterを使ったほうが現実的かな、とはと思っています。

教育向けモジュール、あるじゃないか…しかし。

ありましたね。他にも、マインクラフトをいじるモジュールもあるわけで、子ども向けプログラミングプラットフォームはだいぶ充実しているように感じます。

…とはいえ、Scratchを始めとした、子ども向けプログラミングプラットフォームは他のツールが充実しているようにも思えます。

たすけてー

しかし、ここで机上の空論を話していても、それが正しいのかまったくわかりませんし、どうなるのかすらわかりません。もし、PyCon JPのこうした活動に興味を持ってくれる人がいたら、助けてほしいなと。

https://docs.google.com/forms/d/e/1FAIpQLSf3QCVdzvii1RTt65ZnZeW-CdJnvvneistLNvX61aacr4_XzQ/viewform

雰囲気掴みたいなーという人はconnpassをチェックして賑やかし枠で参加してもらえたらいいのではないかなとおもいます。

マジでどうしようか