BBTインサイト 2020年7月2日

21世紀を切り拓くプログラミング的思考<第1回> 親子で楽しくプログラミングを学ぼう



講師:松林 弘治(リズマニング代表)
編集/構成:mbaSwitch編集部




2020年から小学校でのプログラミング教育が必修化され、近年、プログラミング教育が盛り上がりを見せています。日本や世界では、どのようなプログラミング教育が行われているのでしょうか。また、プログラミング教育を通して身につけるべき能力はどのような能力なのでしょうか。

今回は、そのような疑問を紐解きながら、これからの時代に必要とされるプログラミング的思考について考えていきます。まずは、プログラミング教育がブームとなっている背景から詳しく見ていきましょう。

1.日本のプログラミング教育の現状

まずは、日本のプログラミング教育を取り巻く現状から見ていきましょう。

2020年から、小学校でプログラミング教育が必修化されることになりました。都心部を中心に民間のプログラミング教室が大変多くなっており、キャンセル待ちの状況になっています。また、NHKのEテレでは、「スクラッチ」という子ども向けのプログラミング言語を使ったプログラミング入門の番組も放映されています。

そして、企業にも目を向けてみると、日本の角川グループは、人事や経理の立場の人でも、エンジニアの素養があるかどうかを試す試験を実施して、試験に合格した人にきちんと対価を支払うという制度を始めています。海外では、アメリカのGeneral Electric社のCEOが、今後、新規採用する全社員はプログラミングの技能を最重要視するという方針を発表しています。また、個人に目を向けると、プログラミングを学ぶ必要性を感じて独学で学んだり、大人向けのプログラミングスクールに通われているビジネスパーソンの方も増えています。

このようなブームは日本だけでなく、世界中でプログラミング教育が行われています。例えば、イギリスでは、コンピューティングという教科があり、小学一年生から必修科目となっています。また、他の国でも同じように、小学生、あるいは、中学生から必修科目として、今後の子ども達にはITの技術や、コンピュータの知識を身につけるような教育が行われています。

2.なぜ「プログラミング」がもてはやされているのか?

このように、日本でプログラミング教育がブームとなっていますが、その背景には、次のような3つの考え方があります。

まず、ひとつ目は、IT人材不足を解消するために、小さいときからIT人材の育成を行おうという考え方です。

ふたつ目は、小学校、中学校、高校の教育課程において、今までの授業とは違った学び方を取り入れていこうという考え方です。プログラミングやコンピュータを活用することで、主体的な学びのキーワードである「アクティブラーニング」ができるのではないかと考えられています。

最後は、プログラミング教育をビジネスチャンスと見る考え方です。プログラミングの必修化を受けて、学校の授業だけでなく、子どもにもっと色々と難しいことにチャレンジさせたいと考える方は当然いらっしゃいます。それを見据えて、既存の学習塾が新しいビジネスとしてプログラミング教室を始めています。これらの色々な立場の人の色々な考え方が重なり合って、プログラミング教育がブームになっていると考えられます。

3.プログラミングを身につけるメリットとは?

このようにブームとなっているプログラミング教育ですが、プログラミングを身につけると一体どんなメリットがあるのでしょうか。

《①知る力が身に付く》

まず、ひとつ目は、知る力が身に付きます。
コンピュータなくして毎日の生活が成り立たないぐらい、ありとあらゆるところにコンピュータがあって色々な制御がなされています。ただ、コンピュータがどういうふうに動いて、人々を便利な生活に導いてくれているかということはあまり知られていません。そのため、コンピュータがどんな仕組みで便利なことをやってくれているかということを理解できれば、より自分達がコンピュータを活用することができるようになります。

小学校で社会科見学がありましたが、工場でどんなふうにものが作られているかを実際に見て体験することで、世の中の仕組みを理解することができました。それと同じように、コンピュータの仕組みを知るのは、社会科見学と同じようなことが必要だと思います。コンピュータの仕組みを知ることで、世の中でどうやって生きていけばいいのか、また、コンピュータをどう活用していけばいいのか分かるようになります。

《②考える力が身に付く》

ふたつ目は、考える力が身に付きます。
考える力といっても、プログラミングそのものではなく、もっと幅広く、コンピュータを活用するために必要となる考え方を学んで身につけることです。一般的にコンピュータを活用する際は、ロジカルに考えることが必要になりますが、プログラミングそのものを体験したり、また、コンピュータについて学ぶことで、ロジカルに考えることができるようになります。

《③作る力が身に付く》

みっつ目は、作る力が身に付きます。
プログラミングスキルを身につけると、自分の思ったように自分で作ることができるようになります。また、プログラムで自己表現が可能になります。ビジネスの世界で、こういうサービスを作りたいと思っても、作る力がないと他社に先に作られてしまう場合があります。アイディアだけではダメで、アイディアを具現化する能力、つまり作る力が必要です。これまで、色々なITのスタートアップ企業が出てきましたが、必ずしも天才エンジニアがサービスを作ってきたわけではありません。アイディアをもとに、自分たちでサービスを作って、ユーザー数を増やしてきた企業もあります。作る力があると、スピーディにアイディアを形にすることができます。

《④「新しい学び」としての可能性》

最後は、新しい学びとしての可能性があります。下図の左側の写真にゲームのようなものがありますが、実は、プログラムでキャラクターを操作するようになっていて、ゲームをしながら、プログラミングが学べるようになっています。

パソコンのキーボードや英語になれていない子どもが、実はこれがゲームだと分かった途端に目の色を変えて夢中になります。また、右側の写真は、スクラッチというプログラミング環境を使って、自分で作った作品を誇らしげに見せている子どもの写真です。このように、子どもたちを引きつける魅力がプログラミングにはあります。このような魅力を教育に活用することで、新しい学びが生まれる可能性があります

4.プログラミング「を」学ぶのではなく、プログラミング「で」学ぶことが大切

プログラミングを教育に活用する話は、実は歴史が長く、構築主義という考え方がすでにありました。子ども自身が知らないことについて、何かを組み立てるという行動とセットにして試行錯誤していくと、子どもたちなりの新しい理解や概念が生まれます。先生が子どもに知識を伝えて詰め込んでいくより、このような学び方の方が子どもたちにとって望ましく、かつ、すごい力が身に付きます。

今から50年も前に、シーモア・パパート氏がロゴというプログラミング環境を開発して、ロゴで構築主義を実践しています。また、パパート氏の弟子であるレズニック氏は、みなさんもよくご存知のスクラッチというプログラミング環境を開発しています。

プログラミング教育というと、プログラミング言語を学ぶと捉えられがちですが、実は、それよりも「プログラミングを通して何を学ぶか」ということが大切です。ロゴやスクラッチでのプログラミングは、ものすごく難しいものではなく、ちょっと勉強すればできるようになります。そして、プログラミングをしていると、「僕にもこんなことができたから、次はこれをやってみよう」というように、学習する動機が強くなっていきます。

ただし、初めて学ぶ時の失敗は必ずあります。仮に、うまくいかなかったとしても気にせずに、どんどん試行錯誤していく姿勢も大切です。一般的な暗記する勉強とは違って、自分の知っているものを駆使して何かを表現するのがプログラミングです。また、自分の表現したい世界をプログラミングで形にすることができます。小さいうちからこういった経験ができるのが、プログラミングで学ぶことの価値だと思います。

5.コンピュテーショナル・シンキングとは?

今回のタイトルにも入っている「プログラミング的思考」は、もともとは、「コンピュテーショナル・シンキング」と呼ばれている概念をベースに有識者会議で作られた言葉です。

コンピュテーショナル・シンキングは、色々な解釈がされていますが、既にコンピューティングという授業が始まっているイギリスでは、次の6つに分類されています。

1) 解きたい問題をきちんとロジカルに捉えてロジカルに解決する「論理的思考」
2) 問題を解くときにどういった手順に落とし込んだら解決できるのかを考える「アルゴリズム思考」
3) 解くのが大変な大きな問題をより簡単な部分の問題に分けて考える「部分への分割」
4) 最短での電車の乗り換えを考える場合などに、必要な数字や距離だけに注目して考える「抽象化」
5) 個別の問題について考えた解き方を他のことにも活用できないかと考える「一般化」
6) 本当にこの解決策であっているかどうか、元々やりたかったことが満たされているかを振り返って考える「評価」

これら6つのことを教えるために、イギリスでは5つのことを実践しています。

1) 手順をそのままなぞってやるだけでなく、おもちゃをいじくり回すように、とにかく体験してみる「いじくりまわし」
2) 自分たちの作りたいものを作品として表現していく「創造」
3) うまく動かなかったプログラムのおかしいところを見直して直す「デバッグ」
4) なかなか上手くいかないときに、もう少し頑張ってみようと大人達が後押しする「忍耐」
5) 自分ひとりで作るのではなく、みんなでアイディアを出して意見を集約して作る「協業」

6.親子で楽しくプログラミングを学ぼう

これまで見てきたようなコンピュテーショナル・シンキングをきちんと学ぼうとすると、とても難しく感じるかもしれません。でも実はそんなに難しいことはなくて、私達の日常生活でも考えるヒントはたくさんあります。

例えば、下図は、なじみの深い電話連絡網をヒントにアルゴリズムについて考えた例です。

先生がひとりに電話して、次のひとりに回してくださいとお願いすると、完了まで14分かかります。そこで、下部のC案のように、ふたりに電話して、ひとりが必ずふたりに回してくださいとお願いすれば、6分で完了します。このような考え方は、コンピュータやプログラミングの中で非常に有名な考え方ですが、電話連絡網という身近な例を使って学ぶことができます。

また、料理で野菜を切る場合に、普段やっている切り方以外で何かいい切り方がないか考えてみてください。
他の方法を考えてみると、下図のように色々な切り方があることに気がつきます。

ちょっと立ち止まって考えてみると、何気なくしている野菜の切り方でもアルゴリズムを身近に感じられると思います。このように日常の色々な所に考えるヒントがたくさんありますので、ぜひ色々と楽しんで学んでいただけたらと思います。

また、これまで見てきたように、子どもがプログラミングを体験できる環境がたくさん揃っています。逆に、子どもだけが学ぶのではなく、親であるみなさんもぜひ一緒に学びに参加してみてください。一緒に学ぶことが子どもとのコミュニケーションにもなると思います。ゲームを作ってそれが本当に子どもの役に立つのかと疑問を持つ方もいらっしゃると思いますが、作るためには、色々な知識を駆使しないといけないので、そういう経験をするチャンスを、子どもにぜひ与えてあげてください。

今後、コンピュータをどんどん活用していくことが求められる世の中になることは間違いありません。その世の中で、プログラミングは万国共通語だと思います。そして、コンピュータを活用して問題を解決するコンピュテーショナル・シンキングという思考法が大切で、これこそ全世代が身につけるべきリテラシーだと思います。また、プログラミングでコンピュータを自分の意のままに操れると、自分で何かを作り出す側に回れるチャンスがあります。そのために、ぜひ、みなさんに身につけてもらいたいと思っています。

プログラミングという言葉を聞くと非常に難しく感じますが、実はそんなに難しいことではありません。ぜひ、お子さんと一緒に取り組んでみて、色々なことに興味を持ってチャレンジしていただければと思います。


松林 弘治(まつばやし こうじ)
リズマニング代表
1970年生まれ。大阪大学大学院基礎工学研究科博士後期課程中退。龍谷大学理工学部助手、レッドハットを経て、ヴァインカーブにてコンサルティング、カスタムシステムの開発・構築、オープンソースに関する研究開発、書籍・原稿の執筆などを行う。2014年からフリー。Vine Linuxの開発団体Project Vine 副代表(2001年~)。ボランティアで写真アプリ「インスタグラム」の日本語化に貢献。

  • <著書>
  • 『プログラミングは最強のビジネススキルである』(KADOKAWA)
  • 『子どもを億万長者にしたければプログラミングの基礎を教えなさい』(KADOKAWA/メディアファクトリー)
  • 『パソコンがなくてもわかる はじめてのプログラミング〈1〉プログラミングって何だろう?』(汐文社、共著)他