新型コロナウイルス流行以降、いろいろと世の中の環境が変わっている。従来の仕事のやり方が難しくなる一方、IT系の仕事が注目されている。また、リアルではない、ネット経由のコンテンツに興味が集まっている。
こうした変化のひとつに、子供向け教育コンテンツ動画が話題になったことがある。学校の一斉休校に伴い、こうしたコンテンツがネットで多く取り上げられた。一斉休校が解除されたあとも、この傾向は続いている。
そうした中、プログラマー界隈で話題になった子供向け動画がある。NHK教育テレビ(Eテレ)で放送された『
テキシコー』だ。同動画は、
NHK for Schoolのサイトで、Webから観ることができる。
『
テキシコー』の名前の由来は「
プログラミング的思考」だ。テーマは「
コンピューターを使わずにプログラミング的思考を育む」である。対象年齢は小学3~6年・中学・高校となっているが、未就学児から楽しめる。もちろん大人も楽しめる。
この番組に関わっている人たちを見ると、これは絶対に面白いだろうと想像がつく。プログラミングに興味がない人でも、ちょっと番組を見てみようと思うはずだ。
監修は
佐藤雅彦。年配の人は、『スコーン』『ポリンキー』『ドンタコス』『バザールでござーる』などのCMで名前を覚えているだろう。ゲーマーなら、PlayStationのソフト『I.Q インテリジェントキューブ』で記憶している人もいるだろう。社会現象になった『だんご3兄弟』の人でもある。そして、『ピタゴラスイッチ』の監修者でもある。
製作総指揮は
ユーフラテスだ。『
ピタゴラスイッチ』の制作で有名なクリエイティブ・グループだ。そして、プロデューサーは
林一輝。NHK Eテレの『Why!?プログラミング』や『香川照之の昆虫すごいぜ!』のプロデューサーだ。
このメンバーなら、必ず面白いはずだと感じさせられる。コンテンツは人が作る。人に興味を持ったら、コンテンツを追いかけるべきだ。私も全10回を見たが、非常に面白かった。というわけで『テキシコー』について、話をしていこう。
分解、組み合わせ、一般化、抽象化、シミュレーション
『テキシコー』は、プログラミングという言葉とは裏腹に、現実のコンピューターのプログラミングについては一切触れない。
プログラミングそのものではなく、背景となるプログラミング的思考にしぼって番組を作っている。
『テキシコー』では、プログラミング的思考として、以下の5つを挙げている。
1. 【分解】小さく分けて考える。
2. 【組み合わせ】手順の組み合わせを考える。
3. 【一般化】パターンを見つける。
4. 【抽象化】大事なものだけぬき出して考える。
5. 【シミュレーション】頭の中で手順をたどる。
このそれぞれについて、プログラマーの視点から話をしていこう。
◆【分解】小さく分けて考える
これまで様々な人に接してきて、プログラミングに向いている人と、向いていない人というのを感じてきた。向いている人は、「
処理の分解能」と私が呼んでいる能力が高い。
機械などを見たときに、その動きをどれだけ細かく説明できるかの能力だ。
世の中には、音楽を繊細に聴ける人や、絵を詳細に見られる人、言葉の微妙な違いに敏感な人がいる。同じように、処理を細かく分解できる人がいる。
たとえば機械式時計を見たときに、「時間を表示している」という大雑把な見方しかできない人もいれば、「秒針が1周したら分針が1目盛り動く」という見方ができる人もいる。もっと細かく、歯車やぜんまいの動きを説明できる人もいる。
目の前の現象に対して分解して言語化する能力は、プログラミングにとって第一歩となる。
◆【組み合わせ】手順の組み合わせを考える
物事をどの順番でおこなうと、どうなるか。その
組み合わせをどうするかは、プログラムでは特に重要になる。なぜならば、プログラムでは多くの場合、同じことを大量の回数繰り返す。作業を3手でおこなうか、4手でおこなうか。1手の違いしかなくても、100万回繰り返すと100万手の違いになる。
たとえば毎朝職場で缶コーヒーを1杯飲む。出社して席に着いたあと、自動販売機に行って缶コーヒーを買ったとする。365日続けると365回、職場と自動販売機のあいだを往復することになる。しかし出社するときに、ついでに缶コーヒーを買えば、この時間を節約できる。あるいは、缶コーヒーを箱買いしておき、職場の冷蔵庫に入れておくという解決方法もあるだろう。1つずつ買うのではなく、まとめて買うというやり方だ。
手順の組み合わせを考えて効率化することは、番組中でも『ダンドリオン』というコーナーで繰り返し出てくる。
◆【一般化】パターンを見つける
パターンを見つけるのは、現実世界をプログラムに落とし込むのに大切な考え方だ。
たとえば、木を描く必要があるとする。現実世界のスケッチなら、木を見て、その姿を描けばよい。しかし、パターンを見つけて、違うアプローチをすることもできる。
1本の太い線から、何本かの少し細い線を枝分かれさせる。できた細い線に対して、この処理を繰り返せば、細かな枝を作れる。最後に、線の先に葉っぱを付ければ木が完成する。
プログラムでは、このようにパターンを見つけて、そのパターンを使って世の中を再現することが多い。世の中からパターンを見つけるのも、大切なプログラミング的思考だ。