「文系親」が子どもにプログラミング教育を学ばせるのは無理なのか【現役エンジニアのひとりごと】

「最近は子どもの習い事にはプログラミング教育がいいらしい。でも、実際のところはどうなんだろう?」 ……。某私大文系卒の大手企業に務めている、とても教育熱心なご夫婦からそんな質問を受けました。はたして“文系親”が、自分の子どもにプログラミング教育を上手に勧めることはできるのでしょうか?某IT系企業エンジニアを務める筆者が答えます。

プログラミング教育は本当に必要か

先日、春から小学生に上がる子どもをもつ友人の男性から、こんな質問を受けました。

「子どもに習い事をと思っているのだけど、最近はプログラミング教育がいいらしいよね。でも、実際のところはどうなんだろう?」

この友人夫妻は、ともに都内の某私大文系学部卒。ある大手の企業に務めていて、とても教育熱心なご夫婦です。お二人とも総務系の仕事をしており、普段からパソコンでメールやネットはしているものの、あとは仕事でエクセルやパワポくらいしか使わないとのこと。ごく一般的なPCユーザーだと思いますが、たしかにいきなり「これからはプログラミング教育が必修だ!」と言われても、どうすればいいかわからなくて当然です。

実際、プログラミング教育を子どもに学ばせて、本当にためになるのでしょうか。また、プログラミングの世界に縁がない、いわゆる「文系親」が子どもにプログラミングを学ばせることはできるのでしょうか。

ちなみに私は普段、某IT系企業で「iOSアプリ」「Androidアプリ」「サーバー」「Webアプリ」と幅広い受託開発を行なっているエンジニアです。普段はSEとして顧客の会社にシステム開発を提案しにいくこともあれば、プロジェクトリーダーをしながら自分でiOSやAndroidなどのプログラミングをすることもあります。

友人からのこの問いに、どう答えていいのか少し迷ったので、自分なりに整理してみることにしました。

そもそもプログラミングを学ぶ目的ってなんだろう

あくまでも筆者の考えですが、プログラミング教育で使われるScratchなどの教育用プログラミング環境を学ぶだけでは、世の中の多くのWebシステムやIoT関連のプログラミング、スマートフォン用アプリなどの仕組みなどがすぐにわかるようにはならないでしょう。またプログラミング教育を学びさえすれば、すぐに基礎的なシステムの設計やコーディングができるようになるわけではなく、もちろん実践で使えるようにもなりません。

それは、ブロックや積み木で家をつくれた人が、実際の家をつくれないのと同じようなものだと思います。プログラミングも、実際に人が使うためのプログラムをつくるには、プログラムが動く仕組みを理解する必要があり、またスマートフォンやWebサイトなど、それぞれの特性にあったつくり方を理解する必要があります。

さらに、世の中にはたくさんのプログラミング言語が存在しています。1つのプログラミング言語ができるようになっても、そのプログラミング言語が自分のやりたい開発に使えるとは限りません。

ひと言で「医者」と言っても、内科医や外科医などさまざまな専門医がいるように、プログラマーの中にもiOSエンジニアやWebエンジニアなど、さまざまな専門エンジニアがいます。それぞれ専門性が高いため、1つのプログラミング言語だけで、すべての開発ができるわけではないのです。

では、成長期の子どもにとって、なにをすれば「プログラミングのセンス」を身につけることができるのでしょうか。いちプログラマーとして、そもそも「プログラミングを学ぶ」とはなんなのか、あらためて問い直してみることにしました。

これは私個人の見解ですが、結論からいうとおそらくそれは「課題解決力や論理的思考を身につけること」ではないでしょうか。

「論理的思考力」は、遊びのなかでこそ学ベるもの

そもそも論理的思考力とは、ある結果に対して「なぜそうなったのか」を説明できる能力、または「ある結果をもたらすためにはどうすればいいのか、理解して組み立てられる力」だと私は考えます。

この論理的思考力こそ、プログラミングをするときに必須のスキルです。プログラミング言語自体は世の中にいくらでも存在しますが、それらを習得する前に論理的思考力がなければなりません。極端に言えば、論理的思考さえできていれば、世の中のどんなプログラミング言語でも操ることすら可能だと言えます。

それは、なぜなのでしょうか。

まずプログラミングでは、「求める結果(課題)」があります。その、求める結果(課題)に対して、どうやったらたどり着く(解決する)のか、あるいは求める結果にたどり着かないのはなぜだろう? と考えを巡らせることが最初の一歩なのです。

たとえば子どもが、友達とボールで遊んでいるとします。遊んでいる途中でボールが高い木に引っかかってしまったとしましょう。

このボールを取りたいという課題があったときに、

  1. どうやったらボールが取れるか?
  2. 自分の身長が高くなれば取れるだろうか?
  3. そのためには友達に肩車してもらおう
  4. それでもまだ届かない。その原因は友達の身長と自分の身長を足しても届かない位置にボールがあるからだろう
  5. だから、身長の大きな大人を呼んできて肩車してもらえれば、結果としてボールまで手が届くんではないだろうか

そう、筋道立てて考えを巡らすことができるでしょうか。

子どもたちにとっては、この思考プロセスこそが非常に大切なのではないかと私は考えます。子どもたちにその課程を経験させてあげることは、おそらく論理的思考力の向上につながります。[Office6]

私は、子どもたちにとって失敗と成功を繰り返し体験することに最適なのは、「遊び」のなかにこそあるのではないかと考えています。遊びのなかでこそ短いスパンで求める結果にならなかった「失敗」と、求める結果になった「成功」を繰り返し体験することが可能だからです。

子どものうちから、失敗と成功を短いスパンで経験する。すると、失敗は目的を達成するための過程なのだと認識するようになります。「自分の立てた考え方の道筋が、求める結果につながっているか」を試行錯誤することができるということです。

なによりも遊びですから、点数や成績表は関係ありません。木登りでもごっこ遊びでもなんでもいいですが、子どもが楽しいと感じる遊びを通してこそ「失敗を恐れず成功に到達する力」を養えるのではないかと思います。

「論理的思考力」って小学生で学ぶ主要5教科では学べないの?

この仕事をしていると、報告のためのレポート文章がおかしな人は、プログラミングも変なプログラムを書くことが多く、逆に文章がわかりやすい人は、すごくいいプログラムを書く傾向があることがわかります。

これはあくまでも持論ですが、まずプログラミングを学ぶ前に、国語と算数をしっかり勉強するべきではないでしょうか。小学生の主要5教科のなかでも、特に国語と算数は論理的思考に大切な2つの要素を学べます。

たとえば国語のテストでは、こんな文章問題が出題されていましたよね。

「太郎くんはなぜ悲しいと思ったのか、答えなさい」

この問いの文章のなかでいちばん大切なのは、「なぜ」を考えることです。「太郎くんは悲しいと思った」の部分は結果です。結果に対して、「なぜなのか?」をコトバにして考えるのは、論理的思考力を鍛えるためのひとつの訓練となります。

また、算数の授業やテストでも、こんな文章問題が出されていたと思います。数学の文章問題では、問いに対して「どうやって算出する?」を考えますよね。

たとえば、

「太郎くんのクラスは40人です。このうちクラスで運動系のクラブに入ったのは10人で、文化系のクラブに入ったのは15人でした。クラブに入っていないのは何人か答えなさい」

こうした問いを前にして、答えである「クラブに入っていない人数」をどうやって算出するかを考えるのが、論理的思考の2つめの要素となるはずです。この「どうやって?」を考える道筋の訓練は、プログラミングという行為の基礎になってくるのです。

私は小学生時代、国語と算数が得意でした。なので、仕事をはじめるまでプログラミング言語には一切触れてきませんでしたが、そんな私でも、1年目には1つのプログラミング言語を覚え、4年目にはObjective-CやSwift、Java、JavaScript、PHPといった5種類のプログラミング言語を使いこなすくらいまでには成長することができました。

この『バレッド(VALED PRESS)』のようなメディアでこんなことを書いてしまっていいのか少し迷いますが、小学生で学ぶ主要5教科だけでも、論理的思考力を学ぶことは可能でしょう。特に小学校レベルでは国語と算数。この2つの科目をきちんと理解していれば、将来プログラミングを知らずにIT業界に入ったとしても、すぐに活躍できると思います。

「文系親」が子どもにプログラミングを学ばせるのは無理なのか

では、プログラミングをまったくわからない文系親が子どもにプログラミングを学ばせるのは無理なのでしょうか? 結論から言うと、もちろんそんなことはないですし、そもそもこの「文系」と「理系」に分けて考える発想そのものが無意味だとすら思います。

プログラミング教育で教えたい要素が「論理的思考力」だとすると、この能力に文系理系などの区切りをつける必要はないはずです。どんな教科であっても「どうすれば解決できるのか?」を考えるクセは身につけることができるでしょうし、そもそも義務教育をちゃんと受けている親世代であれば、実はすでに身についているスキルなのです。

ということで、「子どもにプログラミングを教える」ことはできなくても、「問題を解決するためにどうやって考えたらいいか?」を教えることは、文系理系問わず可能なのだということを声を大にしてその友人にお伝えしたいなと思います。

文系だからこそ子どもたちに伝えられるもの

そうそう。文系と理系を分けて考えること自体がナンセンス、という話をしたばかりでこれを言うのもなんなのですが、この人すごい優秀だなと感じさせる文系出身者(あくまでも筆者の主観です!)が、自然と身につけていると思える素養があります。

  • なにか課題や問題があったときに細かいディティールにはまらず、全体を大きく捉え直す「そもそも思考」ができる
  • 問題を正解か不正解かにすぐ判定せず、あらためて問題のコンテクスト(分脈)を読み解いたり、複数の視点から解決を導くようにする

いずれも「いつもコトバを操ることが上手だな」「いつも会議で言いくるめられちゃうんだよな」と感じさせられるわけですが、論理的思考力とはつまりコトバを操る能力でもあるわけで、こういう思考法がセンスとして身についている人はやっぱり強いなと思うわけです。

こういったセンスは、きっと小学生くらいのうちに家庭での会話の中などで自然と培ったものなのではないかなと思います。知的な基礎体力は、小さいうちから蓄えないと身につかないものだと思いますが、それはきっと親との何気ない日常の会話の中にこそ、その種があるはずです。

モバイルバージョンを終了