コーディング教育を考える_2016.12

コーディング教育を考える
「プログラミング教育」は「コーディング教育ではない」と前回の記事に書きました。今回は、プログラミング教育における「コーディング」の意義について考えてみましょう。

 

◆それでもコーディングは大事、でも……

前回の記事では、プログラミングを「マンガの制作」に例えました。その例ならばコーディングは「実際に清書をすること」に当たります。当然のことながら、「マンガ」という作品に仕上げるためには実際に絵を描く作業が欠かせません。プログラミングでも、製品としてアプリを出すのであればコーディングは絶対に欠かせない作業ですから、ある段階での「コーディング教育」は欠かせないものです。

しかし一方で、学校現場での「コーディング教育」にはある種の難しさがあるように感じています。ひとつには教員のスキルが挙げられますが、これは時間が解決することでしょう。後述するように、必ずしも最新の言語事情に精通している必要はないと考えていますので、一定の専門教育を行った教員が増えてくれば解決する問題です。考えなければならないのは「授業時間」の問題です。現在でも、作品の「完成」までに一定の時間を要する美術や技術などの実技教科では課題としてあるのでしょうが、生徒個々人のバックグラウンドによって仕上げられる作品には差が出てきます。また、仕上げるための時間も大きく異なり、得意な生徒は必要以上に凝ってしまって完成しないことがあるでしょうし、苦手な生徒はそもそも完成させられないまま提出することもあるでしょう。授業内ではコーディングの実習のみに時間を割くことはできません。少なくとも現行の指導要領で「コーディング教育」を導入するのは大変なことです(そんな中でも実践を重ねられている先生方の努力には敬服します)。

 

◆アクティブ・ラーニング

その点、自学であれば時間の都合は自分でつけられます。コーディングに要する時間は自身の趣味の時間としてとることができますし、これまでにプログラミングスキルを身につけてきた人たちはそのようにしてきたはずです。ですが、これと同じことを授業内で行うのは無理な注文です。それでは、解決策としてどのようなことが考えられるのでしょうか。

その解決策のひとつは、間違いなく「アクティブ・ラーニング」でしょう。文部科学省が「教員による一方向的な講義形式の教育とは異なり、学修者の能動的な学修への参加を取り入れた教授・学習法」と説明しているこの学習法、たとえば協働的な学びを通じ、理解し理解し合うこと。主体的に取り組み「自分なりの理解」をし、授業を通して学びを深めていく。コーディング教育を行うには、このような学び方が欠かせません。ただし一歩間違えると、単に「やり方」だけを学ぶことになってしまい、それではコーディング教育の意味がありません。プログラミング教育においてコーディングを扱うとき、最悪なのは「生徒が単に『やり方』めいたものだけを覚えて終わる」ことです。そうなってしまうのであれば、コーディング教育など行う必要はありません。「体験」のためであったとしても、「プログラミングとは難しいことをやるものだ」という印象を与えるだけになってしまいます。

 

◆『やり方』を覚えることの問題点

「文字を表示するやり方を教えて~」「print(“aa”)のaaの部分を好きな文字に変えれば文字が出るらしいよ。」コーディング教育が行われている場面で、生徒同士はこんな会話をするのかもしれません。しかしこの「やり方」を覚えることに何の意味があるのでしょうか。プログラミング言語が変わればprintがprintfという命令に変わることがあります。カッコの中は” ”で囲むのではないかもしれませんし、そもそも全ての人がコーディングに関わる保証はどこにもありません。今後コーディングの需要は増えていくにしても、必要になればその場で覚えればよいことです。それよりも覚えなければならないことはたくさんありますし、必要もないのに覚えても忘れてしまいます。──こうした問題点は、「プログラミング教育」に対する批判で多く挙げられるものです。確かにこうした批判は間違っていません。ただし、「プログラミング教育」がコーディング教育のことであり、コーディング教育の目的が「コーディングの『やり方』を覚える」ことであれば、の話ですが。

 

◆コーディング教育で何を学ぶか

ここでもう一度、プログラミングを「マンガの制作」に例えてみましょう。コーディングとは「下書き状態のマンガを清書すること」だと書きました。ここで求められる能力は何でしょう。もし、ドラえもんを本物そっくりに描ける人がこの作業を担当するとしたら、うまく作業できるでしょうか。
答えはイエスであり、ノーでもあります。きちんとデザインの基本を学んできた人であれば、きれいな線も描けるでしょうし、スクリーントーンも適切なものをきちんと使えるでしょう。一方で、単に「ドラえもんの描き方」を知っているだけの人ではだめでしょう。もちろん、「ドラえもんの描き方」や「ピカチュウの描き方」などをたくさん覚えて、その結果として絵が描けるようになった人もいるかもしれません。しかし「学校」という場で時間を取って教えるのであれば、やはりデザインの基礎なのではないでしょうか。もっと言えば、実践を伴ったデザインの基礎、でしょう。とはいえ理論(=デザインの基礎)だけでは絵が描けるようにはなりません。実践(=実習)とあわせて理論を学ぶことが大切です。

当然、コーディングでも同じことがいえます。先ほどの「文字を表示するにはprint(“aa”)のaaの部分を変える」という「やり方」は、ドラえもんの絵描き歌を覚えるようなものです。それではドラえもんが描けてもピカチュウを描けないのと同様、ある特定の場面では使えても状況が変わると役に立たなくなります。実習のためにはある特定の言語を使うことになりますが、「言語」そのものを学ぶのではなく、その言語を通じて「コーディングとは何か」を学ぶ必要があります。
もちろん、専門学校などで特定の言語を学ぶ、という場面もあります。その場合は、すでに身につけたであろう(あるいは、身につけつつある)「コーディングとは何か」をベースとした授業が行われるはずです。「コーディングとは何か」という質問には簡単には答えられませんが、それらしい言葉で答えるのならば「コンピュータの融通のきかなさを知る」こと、そして「融通のきかないコンピュータにどのように指示を与えるか」ということでしょう。ですから、教える側が特定の言語「を」教えるのではなく、特定の言語「で」プログラミングを教えるのであれば、その言語は何でもよいのです。そうした感覚を身につけているのであれば、新しい言語を習得する労力は著しく下がります。公教育での、そしてZ会のような公教育をサポートする教育では、このような観点でのコーディング教育が求められるはずです。その意味では、最新の言語事情は知らなくとも、プログラミングの基礎基本を押さえている教員が求められます。
「最先端」は、それが最先端と認識された瞬間に過去のものになる運命を背負っています。ですから、「最先端」を常に求めるのは、学校の教育現場では非常に難しいでしょう。ですが、繰り返しになりますが、「最先端」である必要はないのです。基礎基本を押さえているほうが大事なのです。

「背景を理解すること」は、プログラミングのみに必要なのではありません。本来は数学だって英語だって同じはずです。英語の文法も、本来は理解を助けるためのもののはずです。文法だけ理解しても英語は使えるようになりませんが、文法の理解があれば難しいことにも入っていけるはずです。プログラミングも同じ。「コーディングの背景」を理解するだけでは使えるようになりませんが、こうしたものがあることで、理解も早まり難しいこともできるようになるのです。

お問い合わせボタン

 

~最新の情報をお届けします~

ミライ研究室専用LINE、Z会の無料メールマガジンで最新の情報をお届けします。