プログラミング教育で論理的思考力を育てるとはどういうことか?

Pocket

小学生の女の子

はじめに

 みなさま、こんにちは。代表の小林です。いつも書いている内容とは少し違った内容で、書いてみたいと思います。プログラミング教育で期待される効果の中に、「論理的思考力を育てる」というのが、あると言われています。今回は、ある著書を引用しつつ、論理的思考について述べてみたいと思います。

論理的思考とは?

 そもそも、「論理」とはなんでしょうか?小学館のデジタル大辞泉によると次のように書かれています。

ろん‐り【論理】
1 考えや議論などを進めていく筋道。思考や論証の組み立て。思考の妥当性が保証される法則や形式。「―に飛躍がある」
2 事物の間にある法則的な連関。
3 「論理学」の略。

この意味から考えますと、「論理的思考」とは、「考えや議論などを進めていく筋道を作っていく思考法」ということになるでしょうか。

面白い本を見つけました。「消える学力、消えない学力 —算数で一生消えない論理思考力を育てる方法(田中保成著)」。この方は、学習塾を主宰している方で、30年以上の小学生への算数の教育経験からこの著書を書かれています。算数で論理思考力を身に着けていくための学習方法が書かれている本です。この著書の中で、論理思考力とは「わからないものに対して、これまで蓄積した知識を総動員して理解しようとする主観的な能力」と書いています。そして、具体的には、次の10個の力を上げています。

  • 情報収集力 算数の問題を解くために知識(道具)を多く持つ力
  • 検索力   問題を解くために必要となる知識を呼び出す力
  • 構成力   知識を関連付ける力
  • 分解力   複雑な問題を単純なものに分解する力
  • 具体化力  具体的に数字を当てはめてイメージを強くする力
  • 視覚化力  視覚的に捉える力
  • 発想力   視点を変えて新たな発想を得る力
  • 推理力   いろいろな場合を分けて考える力
  • 洞察力   規則性を見つける力
  • 直感力   問題では直接的、間接的に与えられていない条件を自分で見つけ出す力

個人的な経験上もそれなりに思い当たることもあり、ここで列挙されている内容はぜひ抑えていただきたい力ではないかと思います。

プログラミング教育と論理的思考との関係性

 どうすると算数で思考法が身につくかに関しては、実際に著書を読んでいただければと思いますが、ここではプログラミング教育との関連性について書いていきたいと思います。

多くの知識を持つこと

 10個の力でも挙げられている「情報収集力」がこれに当たりますが、知らなければ考えようにも考えられません。もちろん、Google に代表される検索エンジンという便利なツールはありますが、これもあくまで知っている知識をベースに検索をするため、知らなければ検索ワードすら思いつきません。プログラミングをする上では、命令や基本的な構文を理解する(知識として身につける)ところがその部分に当たります。例えば、「ある条件のときにだけ命令を動かしたいときに何を使うか?」と聞かれたときに、答えられるかどうかということです。

知識を見つけ出して関連付ける力

 10個の力では、2つに分けて書かれていますが、一連のプロセスとして通常は考えるのではないかと思います。(筆者が分けているのは違う理由があるのですが、ここではそれは省略します)プログラミングにおいては、作る動作に対して、具体的な命令として何を当てはめるといいかを考えるということかと思います。例えば、「ネコがねずみを追いかけて、ネコがタッチしたら「にゃー」となくプログラムを作りなさい」という課題があったとします。「ネコがタッチしたら「にゃー」となく」を作るときに、「ある条件に当てはまるときだけうごかすのだから、if 文(もし○○なら)を使えばいい」と言った具合に、知っている知識を結びつける事を言います。

問題を小さい問題に分解する力

 10個の力では分解力としてますが、この力はプログラミングにおいても多く出て来る力です。ある複雑な動作を実現するときに、すべての機能を一度に書こうとしてもなかなかうまくできません。そのため、単純な機能に分解して、それぞれを組み合わせて複雑な機能を実現します。切り出し方や区切り方などは何度も作っていくことで身についていきます。
 また、10個の力で言う推理力も、ある意味、問題を分解するのと近いです。いろいろな場合に分けて考えることで、その場合に応じた性質や内容を分けて考えられるからです。

視覚的に捉える力

 10個の力で挙げられていた、「具体化力」「視覚化力」というのは、私の感覚では根っこは同じものです。具体例で視覚的に考えることで、こういうときにはどうなるか、といったことを考えることができます。教室で受講している子供に対しても、まずは絵で書いてみよう、まずは紙に書いてみよう、ということを勧めています。これは視覚的にものを捉えるためです。

発想力

 これは、算数での話と同じようなものですが、ある方法を考えたとして、実際に試してみるとうまくいかないといったことはよくあるかと思います。そういう場合に、違う見方で整理し直すといい方法が見つかるということがあります。これはプログラミングの場合でも、ある動作を作る方法はいくつも存在するなかで、いろいろな方法を試して知ることで身についていきます。

一般的な性質を見つける力

 10個の力では、洞察力と書いているのですが、規則性や性質を見つけていく力のことを指しています。プログラミングにおいても、あるプログラムとまた別のプログラムで同じような処理をするようなケースは多くあります。こういった場合に、共通する部分を抜き出し、どこでも利用できるような機能(部品)として作り直します。(これをライブラリ化といいます。)共通化された部品をうまく組み合わせてより高度なプログラムを作ることができてます。

直感力

 直感力は、いろいろなことを考えてきた経験があってはじめて生まれてきます。ある問題を解く際に幾つかの筋道があるとしたときに、感覚的にこの方法が良さそうだ、と思うということです。特に算数やプログラミングなどに限らず、多くの経験をできるだけ早い段階から積んでいくことで、直感力が養われていきます。

上記に書いたような力が、繰り返し自分で考えて作っていくことで身についていくということです。

「算数だけでいいのでは?」という疑問に対して

 ここまで読んでいくと、「じゃあ、算数を勉強していれば十分ではないですか?」という疑問が出てくると思います。もちろん、論理的思考力を身につけるという観点で、算数、数学の勉強というのは重要です。コンピュータと数学は密接な関係にあり、大学以上のレベルでコンピュータを理解していくときには数学の知識は必須です。コンピュータを専門としない場合においても、理系の分野以外の経済、マーケティングなどにおいても、統計などの数学の力は役に立ちます。そのため、ぜひ算数・数学の勉強をしていただきたく思います。
 ただ、プログラミング教育は、論理的思考を伸ばすことだけに主眼があるのではありません。重要なのは、コンピュータのない生活は今や存在しないことから、コンピュータを理解している人とそうでない人では、圧倒的な差が開くという点です。デジタル・ディバイドなどの言葉もあることからわかるように、知らなくても生きてはいけるでしょうが、確実に差は開きます。少なくとも私が子供だった時代(昭和)とは、その点が異なります。昭和の時代のアナロジーで考えたとしても、冷蔵庫、洗濯機、車などを持つものと持たざる者では、自分が自由に使える時間が圧倒的に違っているのと同じです。そのため、「算数だけでいいのでは?」という疑問に対しての私の答えは、Noです。これからの時代では、必須のスキルといって良いと考えています。

最後に

 今回は、プログラミング教育と論理的思考について書きました。プログラミングってなに?という感じでなかなか伝わらないところも多く、日々苦慮してますが、今回の記事がその一助になればと思っています。記事に書いたように、プログラミングを学習することで論理的思考を身につける訓練になります。また、論理的思考を身につけるという観点以外でも、「算数で身につけた知識もプログラミングではこういうふうに使うのね!」といったこともあり、相乗効果はあるといえます。別記事のスクラッチの解説など見ていただければわかりますが、座標、角度など算数で使っているような考え方は普通に出てきます。コンピュータの色の表現は光の三原色がベースです。人間が得てきた知識体系をうまく活用して、組み合わせて発明されたのがコンピュータなのです。
 私としては、これからの時代にあった教育に関してぜひ考えていきたいと思っています。ご意見いただければ幸いです。


東京都文京区小石川で小学生、中学生、高校生を対象としたプログラミング&ロボット教室を開校しています。コース概要のページで説明しております。創造性や協調性などこれからの時代に必要となる素養を育てるコースです。ご興味ありましたらぜひお問い合わせください。また、ワークショップも定期的に開催しています。こちらのワークショップのページにて内容をご確認ください。

お問い合わせはこちら!

問い合わせをする

Pocket

この投稿へのコメント

コメントはありません。

コメントを残す

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

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL