そろそろ論じられるべきプログラミング教育の種類と内容①

最近あらゆる所で「プログラミング」というワードを耳にすることが多くなりました。

「子どもへの教育」という文脈だけではなく、「ビジネスにおいて論理的思考で物事を考えるべきであり、そのためにはプログラミングが良い」というのも多いです。

robot

彼の目を見つめると急に不安に襲われるのは私だけでしょうか?

そういった背景もあり、全国各地で新しくプログラミング教室が増えています。

特に元々、英会話教室や学習塾などの別の形態だったところが、新しくプログラミング教室を始めるパターンが増えているようです。

FC(フランチャイズ)契約で、どこかの業者が作ったカリキュラムを買い取り、プログラミング教室をしている形です。コンビニみたいなものですね。

上記の形態が出てきたという事は、今年はさらに爆発的にプログラミング教室が増えると思います。

もしかしたら、後に【プログラミング教育元年】などと称される年になるかも知れません。

同時により「より良いプログラミング教育とは?」ということが論議される段階まで、プログラミングが認知される年になるかも知れません。

現在は「プログラミングってなに?」の段階なので、正直なところ、その教育内容は満足に論議されていない状態と思います。

当教室は3年目というとこですが、上記の例にもれず、まだ発展途上の段階で、常にカリキュラムは変化し続けています。

という事で僭越ではございますが、もっとプログラミング教育の理解を深めてほしいという思いから、あまり語られていない、「プログラミング教育の種類と内容」に関して触れてみたいと思います。

※下記の内容は主観による個人の意見です。

まず第一に、プログラミングと一言で言いましても、実は色々あります。

子ども向けのプログラミング教育において、一番大きな分類として

「ビジュアルベース」プログラミングか?

それとも

「テキストベース」プログラミングか?

ということがあります。

「ビジュアルベース」というのは、文字を打つのではなく、[前にすすむ][10回繰り返す]などのブロックを組み合わせて、ゲームなどを作るプログラミング方法で、特徴として視覚的に理解しやすく、タイピングがほとんど必要ありません。

そのため初めてパソコンを触るような子でも始められます。

反対に「テキストベース」というのは、主に英数字を入力し、プログラミングするもので、一般的なプログラミングのイメージといえば、この方法かなと思います。

雑な言い方をすれば、

誰でもすぐ始められる=>「ビジュアルベース」プログラミング

敷居が高い=>「テキストベース」プログラミング

という感じです。

「テキストベース」の敷居が高い原因としては、英語とタイピングが主です。

基本的にほとんどのプログラミング言語は英語で、コンピュータへの命令(プログラム)を書きますので、当然英語が読める方が良いですが、「分かれば便利」程度で、これはそこまで気にしなくても良いと思います。(小中学生に対して求めるには酷過ぎますし)

書き方を忘れたなら調べながら書きますので、使う英単語を暗記する必要はありません。むしろそういう作業に慣れる方が良いです。(プロでもリファレンス※マニュアルみたいなものなど常に検索したり調べながらプログラミングするのが普通です)

逆に、いやでも英語(アルファベット)を見慣れますので、英語学習への親和性も高いです。

(恥ずかしい話、私もプログラミングから学んだ英単語が沢山あったりします…)

それよりもタイピングが一番の障壁になると思います。

少なくてもある程度のキー配置が頭に入っていないと、一文字打つ事にキーボードからキーを探すことになるので、非常にストレスになり、「難しいからももういやだ」に繋がります。

このような問題点を無くしたのが、「ビジュアルベース」プログラミングというわけです。

プログラミング教育の際、「ビジュアルベース」なのか?「テキストベース」なのか?が一番大きな違いです。

プログラミング教室のカリキュラムのパターンとしては、

  1. 「ビジュアルベース」のみ
  2. 「ビジュアルベース」と「テキストベース」両方
  3. 「テキストベース」のみ

に分けられると思います。

両方教えている教室でも、「ビジュアルベース」のみのコース、「テキストベース」のみのコースと分けているところも多いです。(キノコードの場合は、どちらも同じコースで、成長具合と本人の興味によって変わります)

ただ調べる限り、「テキストベース」のカリキュラムがある教室は少なめと思います。特に最近増えているのは「ビジュアルベース」の教室のようです(おそらく教えれる人材が不足しているため)

「で、どっちが良いのよ?」

という話ですが、これは【プログラミング教育に何を求めるのか?】によって変わってくると思ってます。

例えば、「将来プログラミングが出来た方が、職の自由が広がる」という目線であれば、当然「テキストベース」になります。

理由は単純で、プロの世界で「ビジュアルベース」のプログラミングをする事がないからです。(デザイン的な部分など局所的に使うことはありますが、あくまで「テキストベース」が出来る前提です)

「じゃあ「ビジュアルベース」はただのお遊びなん?」

または、

「テキストベースを学ぶには基礎技術(タイピング・英語)が足りないから、仕方なくビジュアルベースなん?」

というと、そうではないと考えます。

なぜなら、プログラミング教育の目的は「プログラミング技術を覚える」だけではないからです。

ここで最初に出てきたキーワードである「論理的思考」の話になります。

言わば「思考方法」「考え方」を学ぶために「プログラミング教育」ということです。

この「論理的思考」は学問、ビジネス問わず色々な分野、または日常生活においても有用な考え方です。

キッズのうちからプログラミングを学ぶ意味は、実はこちらの方が重要と思います。

(他にもモノ作りの大切さ、発想力、主体性など、プログラミング教育が注目される要因は多岐に渡りますが、今回は割愛します)

実際に、学校教育においても2020年からプログラミングが必修化される本来の目的は、プログラミング(IT)技術者の育成ではなく、「倫理的思考力を育成する」のが目的とされています。

これは当然の話で、例えば「英語を習うのは将来の役に立つ」というのは誰しも同じ考えだと思いますが、とはいえ別にみんなが将来、海外移住や、翻訳家を目指しているわけではないでしょう。

むしろビジネスマンへのアンケートで「1年以内にカンタンな単語を含め、業務で英語が必要なことがあったか?」という統計で、「必要になった」と答えた人は2割だけだったそうです。

社会人以外も含めると、日本人で英語を必要とする人は1割程度と言われています。

つまり、大多数の日本人にとって、英語は必要ではないのです。

だから英語は学ばなくてもいいか?かと言うと、当然そんな事はありません。

英語を学ぶことで将来の可能性は間違いなく広がりますし、「異文化に触れられる」という副次的な要素によって得るものも多いはずです。

プログラミングも同じことが言えます。

「プログラマー育成」のためだけに、世界中でプログラミング教育が盛んなわけではありません。(プログラマーは年々人材不足が顕著になっていますので、そういう意味合いも大いにありますが)

「論理的思考力を育成する」ことがプログラミング教育の大前提とすら言えます。

そのことから言うと、「ビジュアルベース」のプログラミングは非常に効率的です。

直感的に操作できるので「思考」に集中できます。

また教材にもよりますが、有名なScratch(スクラッチ)などは、「ビジュアルベース」とはいえ、かなり複雑なプログラミングが出来るものもあり、決して「お遊び」のレベルではないものも作れます。

反対に「テキストベース」の場合はというと、色々なルール、制約も多く「論理的思考」に集中できないことも多くあります。

この点が認知されるのが、プログラミング教育の第一歩ではないかと思います。

※ただし、「テキストベース」プログラミングの場合はプログラミングだけでなく、それに付随する、ITの知識(WEB、サーバ、ネットワーク、セキュリティ)も学べますし、言語にもよりますが、抽象的な概念など「ビジュアルベース」ではなかった考え方など、見えなかった景色も見れますので、やる気が続く限りは「テキストベース」も学ぶべきと考えています。

そして、「テキストベース」か?「ビジュアルベース」か?以外にも、プログラミング教育について、非常に重要な点があります。

それは

「何を目的としたプログラミングなのか?」

です。

プログラミングとはあくまで目的を叶えるための手段です。

基礎的な部分は同じとはいえ、目的によって”プログラミング”というものの見え方は違ってきます。

プログラミング教室が教えるプログラミングの目的は、大別すると以下になります。

  1. 「ロボット」プログラミング → ロボットを動かす目的
  2. 「ゲーム」プログラミング → ゲームを作る目的※
  3. 「WEB」プログラミング → WEBサイトを作る目的
  4. 「アプリ」プログラミング → スマホのアプリを作る目的(スマホのゲームアプリ含む)

※「ゲーム」に関しては、スマホアプリのゲームもあるので、ややこしいですが、ここではスマホアプリ以外のゲームを「ゲーム」カテゴリーとします。

それぞれの目的の中でも、様々なアプローチ(ビジュアルベースか?テキストベースか?どんな言語か?)があるのですが、それよりも個人的に「いつか言わないと」と思っていた事があります。

今回は、声を大にしてそれを言ってみようと思います。

それは、

「ロボット」プログラミングはプログラミング学習にはあまり良くない。

という事です。

※個人の感想です。

かなりクレームが来そうな内容なのですが、言い訳すると「良くない」とは「悪い」という意味ではなく、「効率的ではない」という意味です。

先ほど「ビジュアルベース」「テキストベース」で触れましたが、論理的思考の育成に着眼点を置くと、出来る限りプログラミング(論理構築)だけに集中出来る方が良い事は明らかです。

ただし、ロボットの場合はそうは行きません。

仮に同じプログラムが設定されたのロボットが複数あったとします。

本来ならばみんな同じように動くと思いますが、ロボットの場合そううまくは行きません。

「パーツが少しズレている」「モーター古くなってヘタっている」「地面が少し傾いている」などのプログラミング以外の要因で、ロボットが動く”結果”はまったく変わってしまうからです。

例えば、仮に完璧なプログラミングをしたとしても、それ以外の要因の占める比重が大きいために、”結果”としては失敗になってしまうことも多く、逆にプログラムは間違っているはずなのに、たまたまうまくいってしまうこともあるのです。(この方が質が悪いですね)

つまりロボットの場合は、プログラミングの良し悪しが”結果”と結び付かないことが非常に多いのです。

また、単純にロボットを動かすためには当然ロボットを組み上げる必要があるため、その分の時間が余分にかかります。

お手本を見ながら作る学び方で、さらにはカンタンなロボット作成でも1時間程度は平気でかかります。

もし自分で1から考えたオリジナルロボットであれば、その数倍は”組み立てるだけ”で、かかります。(なので完全に「オリジナルロボットを作れる」という教室は少ないです。基本的にお手本通りに作り、自分で考えるのはアレンジ程度です)

逆に「ロボット」以外のプログラミングであれば、物理的に組み立てる手間はなく、プログラミングに集中できますし、”結果”とプログラミングの良し悪しが一致していますので、論理的思考の育成(プログラミング学習)に集中できます。

(どの分野でも見た目に凝ると、純粋なプログラミング以外に画像編集などの時間が取られますが、それはロボットも同じです)

また、ロボットにも色々ありますが、基本的に他の分野と比べて、プログラム自体が非常に単純です。

そのためロボットだけでプログラミングを学んでも、他の分野のプログラミングは理解しづらいと思います。

なので、プログラミング教育という文脈での「ロボット」というのは、教材としてあまり適していないと思っています。

※私自身はロボットに恨みはありませんのであしからず。10代の頃アイザック・アシモフを読み漁っていたので、むしろロボットは大好きです。

つまりロボット作りはあくまで「ロボット工学」として学ぶべきもので、プログラミング教育としては適してない、と思っております。

(ロボット工学自体は、非常に学ぶ価値の高いことであるとは付け加えておきます)

最近の、

プログラミング教育が話題 => ならばロボットプログラミングがオススメ!

みたいな傾向はいかがなものかと思っていますし、誰かがはっきり言うべきと思いましたので、この場を借りて言わせて頂きました。

(実際、色々なプログラミングしてきた人なら、皆さんわかっていると思いますが)

もちろん「子どもの興味を引きやすい」という意味でロボットプログラミングから入る、というのはとても良いとも思っています。

(というか、当教室キノコードでもロボットプログラミングをやっています。ただし、上記のことから、興味がロボット作りに強く向いている子以外は、カリキュラムにはしていません

長くなったので、続きは後日にさせて頂きます。

子どもの教育関連ブログはこちら

  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です