【教育課程の基礎】プログラミング教育とは何か?(小学校篇)

 このページでは、2020年度から開始される「小学校」のプログラミング教育について考えます。

ありがちな勘違い

(1)教科ではない

 「プログラミング」という教科目が増えるわけではありません。プログラミングに関する教科書もテストもありません。実は、従来の国語・算数・理科・社会等々という科目の中でプログラミングを扱うのです。
 このように、教科目を新しく作るのではなく、既存の教科を総動員して様々な資質・能力を伸ばしていくことを、プログラミング教育に限らず全般的に「教科等横断的な視点」による教育と呼んでいます。プログラミング教育は教科等横断的に扱うものです。(参考:教科等横断的な視点とは何か?)

(2)プログラマー教育ではない

 プログラマーを作ろうという教育ではありません。それは高校や専門学校の仕事です。小学校は「義務教育」であり「普通教育」の場です。まずは「人格の完成」を目指す場所であって、なにか特定の職業教育を施すところではありません。将来の職業に使えるスキルを身につけるのが目的ではありません。
 重要なことは、小学校で行なう普通教育としてのプログラミング教育は「普遍的な能力」を育てるために行なうものだということです。

そもそも普通教育とは?

 小学校で水泳を学ぶのは、水泳でオリンピックに出るためではありません。ノコギリの使い方を学ぶのは、大工になるためではありません。国語を学ぶのは、小説家になるためではありません。理科を学ぶのは、ノーベル賞を目指すためではありません。まったく同様に、プログラミングを学ぶのは、プログラマーになるためではありません。
 すべて、人間が持つ「普遍的な能力」を伸ばすために行なう教育です。プログラミング学ぶのではなく、プログラミング学ぶ。これが鉄則となります。

(3)プログラミング言語を学ばない

 プログラミング教育というと、モニターに向かってキーボードをぺちぺち打つ姿を想像しがちです。実際には、そういうふうに「プログラミング言語」を使用した活動はほとんど想定されていません。文科省が狙っているのはプログラミングによって「普遍的な能力」を伸ばすことであって、実際にプログラムを組む手続きを身につけることは目指していません。

プログラミング教育で育つ能力

 さて、それではプログラミング教育で育つ「普遍的な能力」とはなんでしょうか?

(1)論理的思考力・抽象的思考力

 プログラムは曖昧な命令を理解してくれません。自分が思ったとおりに動かすためには、物事の本質を確実に捉えて、論理的にプログラムを組み立てなければいけません。
 具体的に逐次処理や条件分岐、ループ処理やサブルーチンなどプログラミングの基本的な考え方を身につけることは、実は日常生活を論理的に考える力につながります。たとえば料理を作る工程は、プログラミングの思考とよく似ています。料理が苦手な人は、おそらくプログラミングも苦手でしょう。なぜなら両者は逐次処理(洗う→切る→水にさらす)や条件分岐(沸騰したら鍋に入れる)、ループ処理(微塵切り)など「論理的に考える力」が共通しているからです。
 逆に言えば、家庭科で料理の工程を論理的に組み立てることは、そのままプログラミング教育になるということでもあります。もちろん国語科や算数も、論理的な力を育てるという点でプログラミング教育と親和的でしょう。

(2)知識の活用

 PISAショック以降、文部科学省が学力の定義を法的に定めて「活用力」を前面に打ち出してきたのは、周知の事実でしょう(参考:「学力」とは何か)。しかし学校現場でどのように「活用力」を養うのか、具体的に授業の中に落とし込むのは極めて大変です。そんなとき、プログラミング教育が力を発揮します。授業で学習した知識がプログラミングで実際に「使える知識」であることを実感した時、子どもたちの世界は確実に広がっていくことになるでしょう。
 たとえば算数や理科の「活用」では、プログラミング教育が大きな威力を発揮することが期待できそうです。プログラミング教育とは、学校現場で教えるべき「知識」が増えたと考えるのではなく、「活用」のときに使えるツールが増えたと理解するべきものかもしれません。

(3)想像力・創造力・表現力

 プログラミングは、なんらかの最終目標がないと始まりません。その目標は他人から与えられるのではなく、自分が決めるものです。プログラミングとは、自分が思い描くものを実現する技術です。
 子どもたちは、ものを作ることが大好きです。黙って椅子に座って授業を聞いている時は死んだ魚のような目をしている子どもたちも、実際にものを作る作業では活き活きと活動します。プログラミング教育も、先生が与えた課題をこなすというだけでは、おそらくこれまでの教育と同じ失敗を繰り返します。
 プログラミング教育の強みとは、子どもたちの想像力・創造力を土台にしやすいことです。何かを表現したいという子どもたちの素直な欲求を、そのまま教育の力へと繋げやすいことです。
たとえば美術や音楽という教科とプログラミング教育を結びつけることで、これまでには不可能だった新しい創造・表現が可能となるでしょう。たとえば音楽では、小学校から「作曲」をする子どもが出てきてもいいでしょう。

(4)目標に向かって粘り強く実行する力

 自分の作りたいものを表現するといっても、なにもかも思い通りにできるわけではありません。目標を実現するためには、大きな目標を実行可能な小さな目標に分割し、着実に積み上げていくことが必要となります(スモールステップ)。
 目標を簡単に諦めてしまう子どもが往々にしていますが、それは意志が弱いというよりも、目標に向かう具体的な道筋が見えず、まず何をしていいのか分からないからかもしれません。目標を分割し、実行可能な小さな目標を少しずつ達成していけば、最終的に大きな目標に辿り着けるかもしれません。
 プログラミングとは、最終的な目標を小さな目標に分割し、着実に積み上げていく技術です。この技術は、プログラミングに使えるだけでなく、目標から逆算して今やるべきことを割り出すなど、人生の目標を達成する上でも大きな意義を持つでしょう。成功体験を積み上げることで自分自身の力に自信を持つことも期待できます。

(5)問題発見・解決能力

 プログラムは、どこか一個所でも間違っていると思った通りには動きません。しかし難しいのは、「どこが間違っているか」がすぐには分からないところです。子どもたちは、試行錯誤しながら少しずつ修正を重ね、最終的に自分の理想どおりの形を作り上げていきます。プログラムの間違いを探し出して修正する作業を「デバッグ」といいます。
 勉強ができない子どもに往々にしてありがちなことは、答えが間違っていると自分の解答を全部消しゴムで消してしまうということです。どこがどう間違っているかを考えずに、何もかもがダメだったと諦めやすいのです。しかし逆に勉強ができる子は、どこがどのように間違っていたかを検証する習慣がついています。どこが間違っていたかが明らかになれば、あとは修正するだけです。勉強ができない子は、往々にして「どこが間違っていたか」がそもそも分かっていないわけです。
 プログラミングを通じて「デバッグ」を身につけると、通常の勉強でも「どこが間違っていたか」を探り当てようとする習慣がつきます。あるいは勉強以外でも、環境にすぐ適応できる高い修正能力を身につけることが期待できます。

(6)コミュニケーション力

 プログラミングで子どもたちが目指す表現は、おそらく単なる自己満足の領域に留まることは少ないと思われます。アニメーションにしろ、ゲームにしろ、何かを表現する時には「誰かを喜ばせたい」という気持ちが土台にあることが多いはずです。プログラムとは、人と人を繋げるツールです。オンラインで海外の人々とも簡単に結びつきます。プログラミング教育を通じて英語コミュニケ―ションの必要性を実感することもあるでしょう。プログラミングを媒介として、子どもたちの世界は広がっていきます。
またプログラミングは多様な個性や才能を持った人との共同作業に結びつきやすいものです。プログラミングを通じて協働的な力を育むことが期待されています。

学習指導要領の定義

 さて、それでは各学校は具体的に何をしなければいけないのでしょうか。学校がやるべき仕事は学習指導要領にぜんぶ書かれています。小学校学習指導要領では、総則「第3の1の(3)」で、プログラミング教育が以下のように規定されています。

第3 教育課程の実施と学習評価
1 主体的・対話的で深い学びの実現に向けた授業改善
⑶ 第2の2の⑴に示す情報活用能力の育成を図るため、各学校において、コンピュータや情報通信ネットワークなどの情報手段を活用するために必要な環境を整え、これらを適切に活用した学習活動の充実を図ること。また、各種の統計資料や新聞、視聴覚教材や教育機器などの教材・教具の適切な活用を図ること。
あわせて、各教科等の特質に応じて、次の学習活動を計画的に実施すること。
ア 児童がコンピュータで文字を入力するなどの学習の基盤として必要となる情報手段の基本的な操作を習得するための学習活動
イ 児童がプログラミングを体験しながら、コンピュータに意図した処理を行わせるために必要な論理的思考力を身に付けるための学習活動

 ちなみに上記文中で「第2の2の⑴」とある個所は、以下の通りです。

2 教科等横断的な視点に立った資質・能力の育成
⑴ 各学校においては、児童の発達の段階を考慮し、言語能力、情報活用能力(情報モラルを含む。)、問題発見・解決能力等の学習の基盤となる資質・能力を育成していくことができるよう、各教科等の特質を生かし、教科等横断的な視点から教育課程の編成を図るものとする。

 総則の記述をまとめると、プログラミング教育とは「教科等横断的な視点」によって育成するべき3つの資質・能力のうちの一つである「情報活用能力」を育成するための手段です。(他の2つは、言語能力と問題発見・解決能力)。
 そして具体的に学校がやるべきこととしては、(ア)タイピングの技術(イ)実際のプログラミングの2つが定められています。これは学習指導要領に記載された以上、あらゆる学校で最低限は実現しなければいけない事項です。

 また、学習指導要領では、各教科(算数と理科のみ)および総合的な学習の時間でもプログラミングという言葉が見えます。
 たとえば、算数では以下のように示されています。

2 第2の内容の取扱いについては、次の事項に配慮するものとする。
⑵ 数量や図形についての感覚を豊かにしたり、表やグラフを用いて表現する力を高めたりするなどのため、必要な場面においてコンピュータなどを適切に活用すること。また、第1章総則の第3の1の⑶のイに掲げるプログラミングを体験しながら論理的思考力を身に付けるための学習活動を行う場合には、児童の負担に配慮しつつ、例えば第2の各学年の内容の〔第5学年〕の「B図形」の⑴における正多角形の作図を行う学習に関連して、正確な繰り返し作業を行う必要があり、更に一部を変えることでいろ
いろな正多角形を同様に考えることができる場面などで取り扱うこと。

 なるほど、5年生で「正多角形」を扱う時にプログラミングの出番となるようです。
 また、理科では以下のように示されています。

2 第2の内容の取扱いについては,次の事項に配慮するものとする。
⑵ 観察、実験などの指導に当たっては、指導内容に応じてコンピュータや情報通信ネットワークなどを適切に活用できるようにすること。また、第1章総則の第3の1の⑶のイに掲げるプログラミングを体験しながら論理的思考力を身に付けるための学習活動を行う場合には、児童の負担に配慮しつつ、例えば第2の各学年の内容の〔第6学年〕の「A物質・エネルギー」の⑷における電気の性質や働きを利用した道具があることを捉える学習など、与えた条件に応じて動作していることを考察し、更に条件を変
えることにより、動作が変化することについて考える場面で取り扱うものとする。

 なるほど、6年生の「電気」を扱うところでプログラミングの出番ということのようです。
 そして「総合的な学習の時間」では、以下のように示されています。

2 第2の内容の取扱いについては、次の事項に配慮するものとする。
⑶ 探究的な学習の過程においては、コンピュータや情報通信ネットワークなどを適切かつ効果的に活用して、情報を収集・整理・発信するなどの学習活動が行われるよう工夫すること。その際、コンピュータで文字を入力するなどの学習の基盤として必要となる情報手段の基本的な操作を習得し、情報や情報手段を主体的に選択し活用できるよう配慮すること。
⑼ 情報に関する学習を行う際には、探究的な学習に取り組むことを通して、情報を収集・整理・発信したり、情報が日常生活や社会に与える影響を考えたりするなどの学習活動が行われるようにすること。第1章総則の第3の1の⑶のイに掲げるプログラミングを体験しながら論理的思考力を身に付けるための学習活動を行う場合には、プログラミングを体験することが、探究的な学習の過程に適切に位置付くようにすること。

 どうもこれだけ読むと、タイピング技術の習得に関しては、算数や理科の時間ではなく、「総合的な学習の時間」に行なうことを想定しているように読めてしまいますね。プログラミング教育が入ってくることで、どうやら各学校は「総合的な学習の時間」の全体的な構想に頭を悩ませる必要が出てきているようです。
 とはいえ、総合的な学習の時間を単にタイピングの訓練のみに費やすのは、少々もったいない気がします。プログラミング教育が「普遍的な資質・能力」を伸ばすものであることを踏まえて、創造的・独創的な実践が現われてほしいものです。
 ちなみに算数の「正多角形」と理科の「電気」でどのようにプログラミングを入れ込むかは、様々な実践事例が指導案と共に出てきているので、参考事例には事欠かないでしょう。

まとめ

 これまでの教育は「読み・書き・ソロバン」と言われてきましたが、これからは「読み・書き・コンピュータ」という時代がやってきそうです。コンピュータを使う能力は、もはや特別なものでも何でもなく、基本的な「リテラシー」として理解するべきものです。基本的なリテラシーであるのなら、それは普通教育の場である小学校で習得すべきものとなります。
 そしてコンピュータを使う能力とは、具体的にソフトウェアを扱う知識の集合ではありません。ソフトウェアは日進月歩、十年後にはOSレベルでまったく別のものになっているため、個々の知識を身につけてもあまり意味はありません。身につけるべき能力とは、目標を立て、論理的に思考し、実行可能な行動に分解し、着実に遂行し、問題点を洗い出し、解決し、結果を目標に照らして評価する、一連の思考力・判断力・表現力です。その力は、これまでの学校教育でも育成してきたもののはずです。
 プログラミング教育を、余計な負担が増えたと考えるのではなく、これまでの教育のあり方をより良くするためのありがたいツールとして考えていきたいものです。

参考文献

超々初心者向け

■石戸奈々子『プログラミング教育ってなに? 親が知りたい45のギモン』Jam House、2018年

 主に保護者向けに書かれたプログラミング教育の案内書です。右も左も分からない超初心者にお薦めの本です。プログラミング教育がどうして必要なのか、何を学ぶのかなど、保護者が抱きがちな疑問に対して簡潔に答えています。またプログラミング教育の初歩の初歩を知りたい現場の教師にとってもおそらく有益で、「社会に開かれた教育課程」とか「教科等横断的」など新学習指導要領のキーワードと絡めながら理解することができます。

■石戸奈々子監修『図解 プログラミング教育がよくわかる本』講談社、2017年

 基本的に保護者向けに書かれている本ですが、プログラミング教育について右も左も分からないような先生にとってもたいへんありがたい本になるでしょう。たいへん易しく、分かりやすくプログラミング教育の意義が書かれています。上の本は入口に立つまでを扱っていますが、こちらの本は扉のくぐり方まで扱っている感じです。

初心者教員向け

■松村太郎、山脇智志、小野哲生、大森康正著『プログラミング教育が変える子どもの未来―AIの時代を生きるために親が知っておきたい4つのこと』翔泳社、2018年

 多彩な著者による、多角的・多面的にコンピュータ教育の現在が分かる本です。学習指導要領の内容やプログラミング教育導入の経緯も分かりやすく示され、「社会科」でのプログラミング教育の指導案も載っていたりするなど、教員にも大いに参考になるだろう本です。

保護者向け

■石嶋洋平著・安藤昇監修『子どもの才能を引き出す最高の学びプログラミング教育』あさ出版、2018年

 主に保護者に向けて書かれている本です。単に子どもがプログラミングを覚えるだけでなく、普遍的な能力を伸ばせることを様々な角度から主張しています。
民間コンピュータスクールを推奨している本なので、学校の教師にとってはあまり参考にならない本かもしれません。

■竹内薫『知識ゼロのパパ・ママでも大丈夫!「プログラミングができる子」の育て方』日本実業出版社、2018年

 プログラミング教育に限らず、数学教育のありかたなど新時代の教育の方向性が平易に説かれています。
保護者にとっては将来に向けて確かな指針を与えてくれるような内容かもしれませんが、逆に、学校や教師に対して絶望していることを前提に書かれている本なので、学校関係者が読んだら落胆しかないかもしれません。発憤材料としましょう。

小学校教員向け

■小林祐紀・兼宗進・白井詩沙香・臼井英成編著監修『これで大丈夫! 小学校プログラミングの授業 3+αの授業パターンを意識する 授業実践39』翔泳社、2018年

 小1~小6までの大量の各教科指導案が示されるだけでなく、実際の授業の展開も具体的に分かり、さらに専門家からのアドバイス等もあって、プログラミング教育をどこから初めていいかわからない現場の教員にとってはたいへんありがたい本でしょう。

上級者向け

■ヘレン・コールドウェル、ニール・スミス『ある日、クラスメイトがロボットになったら!? イギリスの小学生が夢中になった「コンピュータを使わない」プログラミングの授業』学芸みらい社、2018年

 イギリスで実践された事例が紹介されている本だけど、日本よりかなり進んでいるので、プログラミング教育の初歩が分かっていない人が読んでもあまり参考にならなさそう。とはいえ、ある程度わかってきたときに読むと、プログラミング教育の奥深さが伺える内容ということでもありますね。