スゴ育児

息子育ての狂気の日々

Scratchはじめました

GIGAスクール構想っていうんですかね。
小学生の息子がパソコンを学校から借りてきて、
ログインして英語の教材を開いてなにか聞いたりしてる。

ちょっと画面を覗くと、ブックマークにScratchがあるじゃないですか。
ちょっとScratchは触ったことなかったけど、息子と一緒にいじってみました。

あんまり長くパソコンすると目に悪そうだから、ほどほどで切り上げようとすると、
息子の「あとちょっと!」の連発にあってしまい、だらだらと長引いて・・・。
もっとも、プログラミングにハマるのは悪いことではないので、ちょっとだけ支援したいなぁと思った今日でした。

この記事を読んでわかること

この記事では、色々なプログラミング言語を使ってきた工学博士の著者が考える、プログラミング言語習得の最短経路と、どうやってプログラミングを息子に教えよう考えているのかについて記載します。

プログラミングの経験はないけど子供にプログラミングを教えたい親御さんや、これからプログラミングの習得を試みたい方の役に立つといいなぁ。

 目次

著者とプログラミング

著者とプログラミングとの出会いは、大学生のとき。
卒論でコンピュータシミュレーションをやったのがはじまりだ。
このとき扱ったのは、C言語
当たり前だけど当時は完全な素人だったので、プログラム書くのに苦労した。

それから、仕事でVisual C#でちょっとしたアプリケーションを作ったり、
AndroidアプリもどきをJavaで書いたり(当時は、Eclipse使ってたなぁ。)、
最近だとpythonのgensimで人工知能っぽいことしたり、
でも一番のお気に入りは、Rでデータをいじることだったり。
博士取るときは主にR使ったけど、Unityとかもちょっとかじったなぁ。

そんな感じで、色々なプログラミング(スクリプト)言語いじってます。
なんとかシステムみたいな本番用のシステムを組んだことはないし、
各言語の特徴とか得意不得意とかちゃんとわかってるわけではないですが、
そんな人でもプログラムって書けちゃうんですね、これが。

この記事を読んでくれた方には、プログラムを学んだり書いたりする上で大事なことをこっそりお知らせします。

Scratchそのものにはあまり興味はない、学び方が重要だ

ここでタイトルをひっくり返しちゃうんだけど、息子に教えたいのはScratchそのものじゃなくて、プログラミングの仕方や習得の仕方なのよね。
だから考え方やお作法は教えるけど、Scratch自体はあんまり教える気がないです。

確かにScratchを完璧に習得すれば、小学校でヒーローになれるかもしれない。
だけど、時代や扱う対象によってプログラミング言語って変わっていくし、
Scratchのプロになっても手に職がつけられるわけではないと思うので。

Scratchじゃなくて、プログラミング全般の習得に焦点を当てていきます。

プログラミングの基本戦略

プログラミングできる人はみんなやってる。
これがプログラミングの基本戦略だ!

これだけ。
プログラミングの教科書的なものもたくさんあるけど、あんまりまともに読まない。
むしろ、そういったアプローチをしていたときは、全然上達しなかった、私の場合。
では、一つずつ解説しよう(不要ですか?)。

ググる

ググるとは、文字どおりGoogleで検索することだ。
例えば、pythonで繰り返す処理のプログラムを書くときは、Googleの検索窓に「python 繰り返し」とか打って検索すればいい。
ものすごい数のサイトがヒットするだろう。
適当にブラウジングしていけばpythonの繰り返しのコードが出てくるはずだ。

いやいや、for文みたいな基本的なものは出てくるでしょうけど、もっとマニアックなプログラムは出てこないでしょ?って思いませんでした?
これが、出てくるんですよ。たいていのプログラムは。

それじゃあ、マニアックに「python 人工知能 自然言語処理」とか検索してみると、こりゃまた結構な数のサイトがヒットします。
えっ?なんで自分の書いたプログラムをネット上に上げる人がいるの?って思いませんでした?

それは、ネット上に自分の書いたプログラムを上げておくことで、自分自身の知名度を上げたり、技術力を証明することになるからです。
どこかの企業がプログラマーを雇いたいとき、実際にプログラムを書けるかどうかなんて面接じゃわからないですよ。
でも、実際にその人が書いたプログラムを読めたらわかりますよね、プログラム書ける人なのか、そうじゃないのか。
だからプログラマーは、こぞってプログラムをネットに上げます。

アカデミアの研究者も、自分の書いたコードをネット上に上げることが貢献の一つの形になってるみたいですし。

「quiita」とかに結構良質なプログラムの記事が上がってます。
本当にお世話になっています。先人たちに積み上げたプログラム。

パクる

さて、ほしいプログラムが見つかりました。
そうしたらそのプログラムを自分の環境にコピーして取りあえず動かしてみます。
大抵の場合は、ちゃんと動きます。

そして、動作確認をします。ちゃんと望んだ処理をしてくれているのか。
できればコピーするんじゃなくて、中身まで読んでほしいけどね。

調整する

最後に、そのパクったコードを自分のプログラムに組み込んで、調整します。
まぁ、つじつま合わせみたいなものですよ。

でも、このつじつま合わせは、それなりに経験がないと難しいかも

必要な修行と役に立つ本のタイプ

ググる、パクる、調整する、の三つの中で、一番スキルが求められるのは、調整する、なんだけど、ここのスキルをどうやって身に付ければいいかというと、これは、圧倒的に「写経」です。

ここにきてスピリチュアルか!と突っ込みがきそうですが、何も般若心経を100回書けとかいうんじゃないです。
「うまい人のプログラムを見ながら自らの手で打ち込んで動かす。」
を延々と繰り返す修行です。

教科書読むより、よっぽど効率的。
だって、そのプログラムを写経しているときは、そのうまい人がやっていることと、同じことをやっているんですよ。
追体験してるんですよ、
これは、つまりすごいプログラムを書いてる自分スゴイ!なわけですよ。

うまい人が何を考えてプログラムをこう書いたのかを想像することは、冗談抜きでこれ以上ない教材です。

習い事に「守破離」という言葉がありますが、この写経はまさに「守」です。
徹底的に「守」をやると、自分なりのプログラム(破)ができるようになります。

そうすると必要になってくるのが「うまい人のプログラム」がたくさん書かれたもの。
もし、ググる力が十分にあれば、ネット上を検索するだけでOK。
でも、そうでなければ、本に頼るのも悪くないです。

特に、息子の場合、目が悪くなるといやなので、あんまり長い時間画面見させるのも考えもの。
なので、うまい人のプログラム集的なものを用意しようかなと思います。
例えば、こんなのとか。

 

スクラッチプログラミング事例大全集

スクラッチプログラミング事例大全集