はじめました!

by Kenta Shimojima : @shimojik

2016年の子ども向けプログラミング学習

ついにErgoDoxを導入しました!
キー配列がだいぶ変わるので、覚えるのにちょっと苦労してますが、慣れればかなり快適に使えそうです!

さて、本題

僕が子供向けプログラミング学習サービスに取り組み始めたのは、去年の8月なのですが、向かう先がなかなか決まらず1年ほど悩んでいました。
やっと最近考えがまとまってきたので、いま考えていることをまとめてみようと思います。

まずおさえておきたい誤解を含みやすい大事な言葉

先日WWDCでAppleが発表した内容はそれまでに考えていたことをきれいにまとめてくれるきっかけとなりました。
僕としてはしてもうプログラミング学習はこの流れしかないんじゃないかというくらいにまとまってきたわけですが、その答えの前にちゃんと理解しないといけない言葉があります。

それは"プログラミング"です。

"プログラミング"

プログラミングを学習するというときの"プログラミング"という言葉の意味は、"プログラミングに必要な考え方"のことだと思います。
つまり、必ずしもプログラマーになることを目的としているのではなく、プログラミングをするためのベースを養うことを目的としているという意味です。
プログラミングを学習をすることで、論理的な思考力や想像力を養ってもらおうという意図もあるかもしれません。
特に小学生のプログラミング学習だとこの意味でプログラミング学習を指す場合が多いと思います。

前提としてすごく大事なことなんですが、このプログラミングと、プログラムを実際にキーボードから入力していくことは別物です。
つまり、プログラムをたくさんキーボードから入力しても、それはキーボードに触れる練習になるだけで、プログラミングの考え方は全くと言っていいほど身につかないことは、十分にあり得るということです。

僕が生まれる前後くらいのころは、雑誌にコードが何ページにも渡って書いてあり、それを意味も分からずもくもくとコンピュータに書き写すということをしていたそうです。
それは、その時代においては一番よかった方法だったのかもしれません。
しかし、今では文字を入力しつづけなくてもプログラミングの考え方を身につけられる道具はたくさん出ていますし、プログラミング言語も進化していて、基本的なものであれば、読めばなんとなく書いてあることがわかるくらいに、プログラミングの敷居も下がってきています。

プログラムをわけも分からず入力するのではなく、理解しながら、プログラミングの考え方を身につけながら、プログラム"も"書けるようになるというのが、今の時代における最善のプログラミング学習なんじゃないかと思います。
そして、いまそれができる時代になっており、そのための環境がどんどん成長しています。

ここで書いてる"プログラミング"については、詳しくて分かりやすい記事があるので、すごくおすすめです!
「プログラミング」と「プログラミング的思考」の違いを、分かったつもりになれるヒント - SenseiCode http://htn.to/9bDKC4

AppleとGoogleの発表

上の内容と合わせて、前提としたいここ最近のニュースを少し紹介します。

まず、AppleがiPadでプログラミングが出来るアプリを秋に出すと発表しました。これはタッチ操作しながらプログラミングに自然に触れられ、本格的なプログラミングまで出来るようになるというアプリです。
(1時間48分のところからがその機能の紹介です)
youtu.be

そして、Googleはブロックなどを実際に積み上げて学ぶプログラミング学習用プラットフォーム「Project Bloks」を発表しました。 youtu.be

2016年のプログラミング学習

前置きが長くなりましたが、本題の2016年のプログラミング子供向け学習です。
ここまでの内容を前提にすれば、確かにそうだと思っていただけるんじゃないかと思います。

プログラミング学習で一番敷居が低いのは、実際にブロックなどの物理的なものに触れながら進められる形のものです。
上に挙げたGoogleのProject Bloks以外にも、
Osmo
youtu.be

Cubetto
youtu.be

などがあります。
僕も先日Osmoを購入して操作してみたのですが、結構クオリティが高く、ゲームそのものを楽しめました!
5歳くらいから12歳くらいであれば、説明なしに楽しみながら進められるんじゃないかと思います。

その次に敷居が低そうなのが、画面上でブロックを組んでプログラミングしていく形のもので、Scratchが有名です。
Scratchは結構複雑なゲームまでつくれるので、これだけで相当プログラミングの考え方を身につけることができます。
世界的にもかなり有名で、プログラミング学習には非常に優れたツールです。
youtu.be

物理的なブロックをつかうかどうかというのは、導入の敷居を下げる必要があるかどうかで分かれると思うのですが、メインはScratchです。

Scratchを触っていると、

  • プログラムは実行するとか
  • 繰り返しの表現とか
  • 条件の使い方

のようなプログラミングの当たり前が、文字通り当たり前になっていきます。

そうやって、プログラミングの考え方が当たり前になれば、最初に掲げた目標はかなり達成出来たと言えます。

ここまで来ると、下地が出来ているので、文字をキーボードからどんどん入力していく、いわゆる"プログラミング"っぽいプログラミングも、かなりスムーズに理解できる状態になっています。
しかし、やっぱり英語とか記号とかを入力してプログラムを書いていくことにはハードルを感じるかもしれません。

ここで、Appleの発表したiPadアプリが大きな役目を担うわけです。
Appleの発表したアプリ、Playgrounds for iPadを使うと、なんと最初はScratchのような操作感覚で、プログラムを組めるんです。
しかもScratchとは違い、ブロックを積み上げていくように、コードを積み上げていく操作を行います。

まさに、ブロックプログラミングから文字入力によるプログラミングへの橋渡しをしてくれるわけです。
このiPadアプリはAppleが出しているだけあって、このアプリでプログラミングを深めていくことで、自然な流れでiPhoneアプリの開発につなげられます。

まとめると、2016年の子供向けプログラミング学習として最適なのは、
0. 物理的なブロックを使ったプログラミング
1. Scratch
2. Playgrounds for iPad
3. 本格的なプログラミング
だと思います。

小学生がプログラミングの考え方を学ぶというのであれば、1のScratchまでで十分かもしれません。
しかし、その先の流れ、発展性が明確に見えているのは、大きな価値だと思います。

"プログラミング学習"の目的は?

プログラミング学習のサービスの話をしていて、それがどうその先につながるのかという話になると、「興味を持たせることが大事」とか、「触れることが大事」という結論に至る場合が がかなり多いです。

しかし、それには僕個人の体験から同意出来ません。
僕は、小学生のときに、電子工作講座の通信講座を雑誌か何かからみつけてきて、祖母に頼んでやらせてもらったのを覚えています。
確か4万円くらいしたと思います。
ちょうどそのころに、学校で将来の夢を描いたんですが、基板に半田づけをしている絵だったのを覚えています。それくらい誇りに思っていました。
熱感知センサーとか、光センサーとかのついた多機能ツールとか、音に反応して動くロボットをつくりましたし、電気に関する本もついていたので読みながらやりましたが、大量の半田付けをしたため半田づけの練習になったとはいえ、あくまでプラモデルの延長という感じでした。

結局、キットをつくって終わりで、電子工作とかプログラミング的なものは20歳過ぎるまでやることはありませんでした。
あくまで「興味をもったか?」に対して、僕の場合はそうではなかったというだけで、もちろん今何かに大きな影響を与えている可能性はありますし、トライした立場としては、経験として非常によかったと思います。

しかし、僕はこのテーマにおいては、自分をサービス提供者側と捉えているので、提供者が"何かの役に立つかもしれない"という立場ではよくないという認識を持っているということです。

具体的な動きへ

組み立て"作業"を提供したいのか?
入力"作業"を提供したいのか?

これらにNOというには、代案を提示する必要があります。

というわけで、
1. Sketch
2. Playgrounds for iPad
3. iPhoneアプリ・Webアプリ
4. TCP/IP・数学・データ分析・セキュリティ
という構成で進めていこうと思います。

最初にも書いたのですが、プログラミング講座については、2015年の8月からラズベリーパイを使ったコンテンツを作っていたのですが、なかなか向かう先をバシッと決められずに悩んでいました。
1年かかりましたがようやくすっきり整理できたので、これからプログラミングコンテンツの開発により力を入れていこうと思います。