プログラミング的思考 -1

今回は小学校段階へのプログラミング体験導入のために議論された「プログラミング的思考」について,情報収集から始めてみたいと思います。

【ポイント】

「プログラミング的思考」とは

○有識者会議による造語(新語)である。
○プログラミングと論理的思考の関係を整理して提言したものである。
○コンピュテーショナル・シンキング(Computational Thinking)の考え方を踏まえつつも,別のものである。
○言語能力の育成に向けた国語教育等の改善・充実を前提としている。
○コーディング学習から距離を置く意図が含まれている。
○各教科等で育まれる論理的・創造的な思考力と大きく関係する捉え方である。
○小学校におけるプログラミング教育が目指していることの一部である。

  • 「子供たちが、コンピュータに意図した処理を行うよう指示することができるということを体験しながら、身近な生活でコンピュータが活用されていること」
  • 「問題の解決には必要な手順があることに気付くこと」
  • 「各教科等で育まれる思考力を基盤としながら基礎的な「プログラミング的思考」を身に付けること」
  • 「コンピュータの働きを自分の生活に生かそうとする態度を身に付けること」

○「学習指導要領」では用いられず、「学習指導要領解説」で用いられている。

【定義】

自分が意図する一連の活動を実現するために、どのような動きの組合せが必要であり、一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力

【参照資料】

20160616「小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)」[PDF](文部科学省)小学校段階における論理的思考力や創造性、問題解決能力等の育成とプログラミング教育に関する有識者会議

 

プログラミング教育とは、子供たちに、コンピュータに意図した処理を行うよう指示することができるということを体験させながら、将来どのような職業に就くとしても、時代を超えて普遍的に求められる力としての「プログラミング的思考」などを育むことであり、コーディングを覚えることが目的ではない。

 

国語教育等において、語彙を豊かにすること、情報と情報の関係性を論理的に捉えるなど情報を多角的・多面的に精査し、構造化する力などが、発達の段階に即して系統的に育成されるよう、小・中・高等学校を見通して教育内容の充実を図ることが検討されている。プログラミング教育を含む全ての教育の前提として、こうした言語能力の育成に向けた国語教育等の改善・充実を図っていくことが不可欠である。

 

○こうした「プログラミング的思考」は、急速な技術革新の中でプログラミングや情報技術の在り方がどのように変化していっても、普遍的に求められる力であると考えられる。また、特定のコーディングを学ぶことではなく、「プログラミング的思考」を身に付けることは、情報技術が人間の生活にますます身近なものとなる中で、それらのサービスを受け身で享受するだけではなく、その働きを理解して、自分が設定した目的のために使いこなし、よりよい人生や社会づくりに生かしていくために必要である。言い換えれば、「プログラミング的思考」は、プログラミングに携わる職業を目指す子供たちだけではなく、どのような進路を選択しどのような職業に就くとしても、これからの時代において共通に求められる力であると言える。

 

○また、「プログラミング的思考」には、各教科等で育まれる論理的・創造的な思考力が大きく関係している。各教科等で育む思考力を基盤としながら「プログラミング的思考」が育まれ、「プログラミング的思考」の育成により各教科等における思考の論理性も明確となっていくという関係を考え、アナログ感覚を大事にしていくことの重要性等も踏まえながら、教育課程全体での位置付けを考えていく必要がある。

 

「プログラミング的思考」(自分が意図する一連の活動を実現するために、どのような動きの組合せが必要であり、一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力)[5]

[脚注5]いわゆる「コンピュテーショナル・シンキング」の考え方を踏まえつつ、プログラミングと論理的思考との関係を整理しながら提言された定義である。

 

小・中・高等学校を見通した充実が図られる中で、小学校においては、身近な生活の中での気付きを促したり、各教科等で身に付いた思考力を「プログラミング的思考」につなげたりする段階であることを踏まえた、小学校教育の特質に即した在り方が必要となる。

 

○小学校におけるプログラミング教育が目指すのは、前述のように、子供たちが、コンピュータに意図した処理を行うよう指示することができるということを体験しながら、身近な生活でコンピュータが活用されていることや、問題の解決には必要な手順があることに気付くこと、各教科等で育まれる思考力を基盤としながら基礎的な「プログラミング的思考」を身に付けること、コンピュータの働きを自分の生活に生かそうとする態度を身に付けることである。

○中学校や高等学校の段階では、簡単なプログラムの作成や、コンピュータの働きの科学的な理解などを目指し、技術・家庭科や情報科において構造化された内容を体系的に学んでいくことが必要となる。一方で、小学校におけるプログラミング教育が目指す、身近な生活の中での気付きを促したり、各教科等で身に付いた思考力を「プログラミング的思考」につなげたり、コンピュータの働きが身近な様々な場面で役立っていることを実感しながら自分の生活に生かそうとしたりするためには、学級担任制のメリットを生かしながら、教育課程全体を見渡した中で、プログラミング教育を行う単元を各学校が適切に位置付け、実施していくことが効果的であると考えられる。

 

[脚注8]順次、分岐、反復といったプログラムの構造を支える要素についても、それを知識として身に付けることは中学校教育の指導内容に盛り込まれている。小学校教育では体験の中で触れるということで十分であり、それ自体を教え込んだり、知識として身に付けることを指導のねらいとしたりする段階ではないと考えられる。一方で、小学校での学習を通じてプログラミングに興味を持ち、プログラムの構造を支える要素についても詳しく知りたいという知的欲求を抱いた子供たちが発展的に学ぶことのできるよう、民間とも連携して多様な学習機会を整えていくことが求められる。

 

【算数】

(中略)
・しかしながら、私たちが計算するときには、プログラミングで表現しなくても、人間の文明が生み出した遺産である「筆算」で計算することができる。小学校で筆算を学習するということは、計算の手続を一つ一つのステップに分解し、記憶し反復し、それぞれの過程を確実にこなしていくということであり、これは、プログラミングの一つ一つの要素に対応する[12]。つまり、筆算の学習は、プログラミング的思考の素地(そじ)を体験していることであり、プログラミングを用いずに計算を行うことが、プログラミング的思考につながっていく。

・算数において、プログラミングの体験をどこに位置付けていくかについては、こうしたことを踏まえながら、効果的な場面を考えていかなければならない。例えば、図の作成等において、プログラミングを体験しながら考え、プログラミング的思考と数学的な思考の関係やそれらのよさに気付く学びを取り入れていくことなどが考えられる。
(後略)

[脚注12]コンピュータ科学等でも用いられる「アルゴリズム」とは、筆算といった計算の手続も含む、問題を解決する手順を定式化して表したものを指す。筆算は数学の歴史の中で初期から存在したものではなく、長い年月をかけて人類が生み出したアルゴリズムであり、そうしたものを生み出す人間の数学的な思考が、人工知能の動きや働きなどを支えるおおもととなっている。これからの算数では、筆算が所与のものではなく、こうした意義を持つものであることなどを学ばせることも重要ではないかと考えられる。

 

○また、プログラミング教育を行う単元に最大限の効果を発揮させるには、「プログラミング的思考」が国語[14]や算数等で身に付ける論理的な思考力とつながっていることや、社会科における社会の情報化に関する学習など、各教科等における学びとのつながりを教員自身が認識し有機的につなげていけるようにすることが求められる。新しい教育課程の議論の中で、こうしたプログラミング教育と、それにつながる各教科等の学びとの関係性が分かりやすく示されていくことを期待したい。

[脚注14]説明文を読んでその構造を捉えることなどは、フローチャートの作成につながる力であり、こうしたつながりを意識することが重要である。一方で、国語においては、自らの頭脳を使って思考し表現する言語活動を通じて、情報を多角的・多面的に精査し、構造化する力等を育むことが重要であり、こうした国語の本質的な学びとして、プログラミングを体験することを位置付けていくことは、言語能力の確かな育成の観点からも、慎重に考える必要がある。

 —