2020年から「プログラミング教育」が必修化されるというニュースが度々報じられていますが、これに対して懸念を示す人が少なくありません。そういった雰囲気に押されてか、エンジニアの方でもプログラミング教育への懸念を発言する人が多いです。

しかし、エンジニアの方がプログラミング教育に対して発言している懸念や批判の多くは単に実際の制度や取り組みについての情報不足から来ているように思えます。 今回はエンジニアの人にこそ知ってほしい現在進んでいるプログラミング教育の制度と取り組みをまとめます。

TL; DR

  • 日本の学校教育の仕組み
  • 「プログラミング」という教科が出来るのではない
  • 学校でのプログラミング教育はすでに行われている
  • IT業界やコミュニティの意見は取り入れらている
  • プログラミング教育に貢献する方法

日本の学校教育の仕組み

今回、プログラミング教育が必修化されるというニュースの根拠は文部科学省が定めている「学習指導要領」という基準の改定です。学習指導要領は約10年おきに改定され、全国どの学校でも一定の水準の教育が受けられるようにしています。例えば各年次で取り扱う内容や分量などが定められているので、ある時点で別の地域の学校へ転校したりしたことで「掛け算」を習わないといった事が無いように努力しています。

たとえば現行の学習指導要領、小学校の算数、第三学年を見ると次のようになっています。

1 目標
(1) 加法及び減法を適切に用いることができるようにするとともに,乗法についての理解を深め,適切に用いることができるようにする。また,除法の意味について理解し,その計算の仕方を考え,用いることができるようにする。さらに,小数及び分数の意味や表し方について理解できるようにする。
(2) 長さ,重さ及び時間の単位と測定について理解できるようにする。
(3) 図形を構成する要素に着目して,二等辺三角形や正三角形などの図形について理解できるようにする。
(4) 数量やその関係を言葉,数,式,図,表,グラフなどに表したり読み取ったりすることができるようにする。

みての通り、文部科学省が告示するのはかなりハイレベルな基本設計的な内容になっており、これを元に教科書会社が各教科の教科書を独自に作成します。作成された教科書は検定を受け合格すると学校が採用できる教科書のラインナップに加わります。 通常は検定に合格した教科書の中から各学校が使用する教科書を選定します。また同じ教科書を使ったとしても、実際に教える教師によって教え方や、どの程度教科書から離れるかも変わってきます。

このようにいくつかのステップを経て、学校で教える内容は決まります。ですので実際の現場の状況というのはかなり幅が出てくることになります。ほとんどの人は人生の中でかなりの時間を学校で過ごすので、自分自身が就学していた時の経験の印象が強く働きますが、就学経験から制度やマクロの状況をリバースエンジニアリングするのは不可能に近いです。

JSONやmarkdownを扱うライブラリを想像してみてください。どれもハイレベルでは同じものですが、実装や挙動はかなり違いますよね? とあるライブラリの中での実装例を元にしてJSONそのものや、markdownについて議論しても話が噛み合わないかと思います。学校の教育に関する議論は個人の体験を元にした現場レベルでの話と全国の学校というマクロ視点を適宜分けて考える必要があります。

この記事は学習指導要領を中心とした制度、ガイドラインの話です。

「プログラミング」という教科が出来るのではない

プログラミング教育が必修化される、というと「国語算数理科プログラミング」のような教科が出来ると思う人が多いと思いますが、これは明確に間違いです。2020年から小学校で始まるプログラミング教育は「総合的な学習の時間」「理科」「算数」「音楽」「図画工作」「クラブ活動」などの中で部分的に行われます。また学習指導要領ではあくまで例示に留められており、 各学校が実態に即した形で実施できるようになっています。公表されている例では下記のようなものがあります。

  • 算数 第5各年
    • プログラミングを通して、正多角形の意味を基に正多角形をかく場面
  • 音楽 第3学年~第6学年
    • 様々なリズム・パターンを組み合わせて音楽をつくることをプログラ ミングを通して学習する場面
  • 理科 第6学年
    • 身の回りには電気の性質や働きを利用した道具があること等をプログ ラミングを通して学習する場面

作図やDTM、電子工作のような教科の中で比較的独立したトピックとして出てくるようなイメージですね。

またプログラミング教育が「コーディング」ではない事も明言されています。

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

プログラミング教育に関する議論で言語やエディタ、ツールなどについて「COBOLでも教えるんじゃないのか?」というような指摘はほぼ無意味でクソリプであると言えます。あくまでそれぞれの教科の中の1トピックとして出てくる事になるので独立性の高いタブレット教材や、Scratchのようなブロックを使った環境、また「アンプラグド」と呼ばれる実際にはコンピューターを使わない方法での実施も想定された形になっています。 実際の所はすでに学校に導入された機器で実施できるのか、なんらかの教材を購入して実施するのか、外部の団体に依頼して実施するかなど柔軟に対応するのでしょう。

学校でのプログラミング教育はすでに行われている

今回特に話題になったのは小学校からプログラミング教育が行われるようになったからですが、実はすでに中学校や高等学校ではプログラミング教育と呼ばれるものはすでに実施されています。実は小学校でも明記されていないので学校の任意での実施は可能です。

現行の学習指導要領では次のようになっています。

中学校 技術・家庭科(技術分野)

• 「プログラムによる計測・制御」が 必修

中学校、技術家庭に定められているプログラムによる計測・制御はセンサーやアクチュエーターをプログラムで制御する事を想定しており、フローチャートを書くものやVisual Basicを使った実践例などがあるようです。ちなみに「プログラムによる計測・制御」が単元名になっており検索するとさまざまな事例が出てきて感動します。

高等学校の内容はさらに高度です。学習指導要領を見てみましょう。

情報産業と社会,課題研究,情報の表現と管理,情報と問題解決,情報テクノロジー,アルゴリズムとプログラム,ネットワークシス テム,データベース,情報システム実習,情報メディア,情報デザ イン,表現メディアの編集と表現,情報コンテンツ実習

情報という科目は「社会と情報」「情報の科学」の2つに別れた選択必修となっておりインターネットの活用に代表されるような利用者側の内容とより専門的な計算機科学入門的なものに分類されています。高等学校の情報の内容はすでに社会人で情報科を履修した事がない人であれば十分に有意義な内容かと思います。 学習指導要領を見るとアルゴリズムやデータベース、はては文字コードについての言及もあります。

IT業界やコミュニティの意見は取り入れられている

プログラミング教育はIT業界を知らない、「素人の役人」だけが決めているという先入観はないでしょうか?教育オタクでないと気が付きにくいですが、有識者会議にはエンジニアの方が想像しやすい団体や企業からも参加者が募られ議論されています。

現在、進んでいるプログラミング教育に関する有識者会議の参加者の中でアカデミック外からの参加者は次のような方です。

伊佐山 元 株式会社WiL 共同創業者CEO
石戸 奈々子 NPO 法人CANVAS 理事長
礒津 政明 株式会社ソニー・グローバルエデュケーション代表取締役社長
上野 朝大 株式会社CA Tech Kids 代表取締役社長
隅井 淳一 ヤマハ株式会社事業開発部SES 事業推進グループ企画担当次長
利根川 裕太 一般社団法人みんなのコード代表理事
中川 哲 日本マイクロソフト株式会社業務執行役員シニアディレクター エンタープライズ事業改革担当兼文教戦略担当

直近の有識者会議ではサイバーエージェント傘下、CA Tech Kidsの上野委員が活発に発言しています。

やはり何をやるかということとセットでなければ、最低限どういう環境が必要かということは全く考えられないと思うんですね。ですので、逆に、最低限ではなくて、理想というところから考えるとするならば、私は1人1台のノートパソコンであるというふうに考えております。1つ、タブレット端末ではないというのがポイントでありまして、タブレット端末というのは、プログラミングに必ずしも最適ではないデバイスだと認識しております。もちろん、プロも、タブレット端末でプログラミングをやっている人というのはおりませんで、入力に適した端末ではないものですから、やはりコンピュータに話しかける入力が必要ですので、タブレットよりはパソコンの方が望ましかろうということは、1つ思っております。

同じく、みんなのコードの利根川委員の発言も引用します。

まず1つ目、それほど大きな点ではないのですが、アンプラグド系の教材について、こういった教材、雨が降ったら傘を持っていくとか、音楽ですとか、兼宗先生がかねてから御研究の内容等あって。ただ、このアンプラグド系、非常に教育的な効果等あるとは思うんですけれども、指導者の人が分かっていないままこれをやると、適切でない理解を形成する可能性があるかなと考えておりまして、アンプラグド系は、あくまでハードの不足についての解決になるものですけれども、指導者不足と指導力の課題についての解決ではないという点については、御指摘させていただきたいかなと考えております。 2つ目が、堀田主査からもありましたように、学校外でどういう取組をというところですね。ちょっと手前みその部分はあるんですけれども、プログラミングって、よく言われるのは、一見難しそうだけれども、やってみるとできたというのがよく言われておりまして、石戸さんのところのPEGですとか、我々の推進しているHour of Codeなど、まず学校の先生方にプログラミングやってみましょうというところの支援は社会全般で進んでいるのかなと考えています。

あくまで一例ですが、プログラミング教育をなるべくよい形で実施する為の発言がITの専門家の視点から行われています。この会議は一般の傍聴も可能ですし、委員の方にはSNSを活用している方もいますのでエンジニアの声を届ける道はきちんと開かれています。

プログラミング教育に貢献する方法

プログラミング教育の必修化に際しては外部の団体やワークショップとの連携が必要である事が想定されています。エンジニアの方であれば内容面においては即戦力ですので、プログラミング教育に関するコミュニティに参加したり、ワークショップを手伝うボランティアをする事でプログラミング教育に貢献する事ができます。

ここまで述べてきたようにプログラミング教育はエンジニアにすら十分認知されておらず、まずは情報にふれることが第一歩かと思います。その上で興味があれば、勉強会などに参加するのと同じようにコミュニティに参加してみてはどうでしょうか。 コミュニティに参加するのは難しい場合はCode.orgやScratchのような人気のある教材を触ってみてください。エンジニアの方であれば1時間も遊べば近所の子供や親戚の子供の相談に乗れる事でしょう。

その他参考資料