学校教育におけるプログラミング

近所の子に「教員免許あるの？」と聞かれ、「あるよー」と答えたものの、教員免許を持ってる人らしい事していないと思ったのがきっかけで、今回は学校教育から見るプログラミングについてまとめました！

# プログラミングとは
プログラミングとは、簡単に言ったら「コンピュータに指示を出す」事です。
コンピューターが読み取れるようにプログラミング言語と呼ばれる特殊な言語で指示を出して、意図した計算や処理を行うためにプログラムを作成する作業です。

# 学校教育における情報教育(プログラミング)
平成29年03月に発表された学習指導要領
情報活用能力が、言語能力、問題発見・解決能力等と同様に「学習の基盤となる資質・能力」と位置付けられました。

:::note info
学習指導要領
学習指導要領とは文部科学省が告示する教育課程の基準です。
各学校が各教科で教える内容を、学校教育法施行規則の規定を根拠に定めたもので、学校(教師)はこの学習指導要領を元に子ども達へどのような指導・教育をするのか考えて進めていきます。
:::

そのため、急速にICT環境が進められ、学校教育において、パソコンやタブレット端末など取り入れて活用する環境作りが行われ、小学校は令和２年(2020年）度、中学校は令和３年（2021年）度から全面実施。
高等学校は令和４年（2022年）度から学年進行で実施されました。

<details><summary>ICT(情報通信技術)</summary>
ICT環境整備：https://www.mext.go.jp/a_menu/shotou/zyouhou/detail/1402835.htm
</details>

<details><summary>小・中・高等学校の「情報活用能力の育成」学習ポイント</summary>
<dl>
<dt>小学校</dt>
「文字入力など基本的な操作を習得、新たにプログラミング的思考を育成」
各教科等の特質に応じて、児童がコンピュータで文字を入力するなどの学習の基盤として必要となる情報手段の基本的な操作を習得するための学習活動や、プログラミングを体験しながらコンピュータに意図した処理を行わせるために必要な論理的思考力を身に付けるための学習活動を計画的に実施することを明記。【総則】

○情報活用能力（プログラミング教育を含む）
・コンピュータ等を活用した学習活動の充実（各教科等）
・コンピュータでの文字入力等の習得、プログラミング的思考の育成（総則、各教科等）

<dt>中学校</dt>
「技術・家庭科（技術分野）においてプログラミング、情報セキュリティに関する内容を充実」
「計測・制御のプログラミング」に加え、「ネットワークを利用した双方向性のあるコンテンツのプログラミング」等について学ぶ。【技術・家庭科（技術分野）】

○情報活用能力（プログラミング教育を含む）
・コンピュータ等を活用した学習活動の充実（各教科等）
・コンピュータでの文字入力等の習得、プログラミング的思考の育成（各教科等）

<dt>高等学校</dt>
「情報科において共通必履修科目「情報Ⅰ」を新設し、全ての生徒がプログラミングのほか、ネットワーク（情報セキュリティを含む）やデータベースの基礎等について学習」
「情報Ⅰ」に加え、選択科目「情報Ⅱ」を開設。 
「情報Ⅰ」において培った基礎の上に、情報システムや多様なデータを適切かつ効果的に活用し、あるいはコンテンツを創造する力を育成。【情報科】

○情報教育（プログラミング教育を含む）
・情報科の科目を再編し、全ての生徒が履修する「情報Ⅰ」を新設することにより、プログラミング、ネットワーク（情報セキュリティを含む。）やデータベース（データ活用）の基礎等の内容を必修化（情報）
・データサイエンス等に関する内容を大幅に充実（情報）
・コンピュータ等を活用した学習活動の充実（各教科等）
</dl>
</details>

# 学習の基盤となる資質・能力
学習指導要領において掲げられている学習の基盤となる資質・能力とは「個別の知識・技能」、「思考力・判断力・表現力等」、「学びに向かう力・人間性等」の３つです。
「3本の柱」と呼ばれ、総合的にバランスよく育むことを目指し、教育課程全体や各教科などの学びを通じて、子どもたちに必要な力を身につけていくことが求められています。

<details><summary>3本の柱</summary>
<strong>①個別の知識・技能</strong>：何を知っているか、何ができるか

各教科等に関する個別の知識や技能などであり、身体的技能や芸術表現のための技能等も含む。
基礎的・基本的な知識・技能を着実に獲得しながら、既存の知識・技能と関連付けたり組み合わせたりしていくことにより、知識・技能の定着を図るとともに、社会の様々な場面で活用できる知識・技能として体系化しながら身に付けていくことが重要である

<strong>②思考力、判断力、表現力等</strong>：知っていること・できることをどう使うか
問題を発見し、その問題を定義し解決の方向性を決定し、解決方法を探して計画を立て、結果を予測しながら実行し、プロセスを振り返って次の問題発見・解決につなげていくこと（問題発見・解決）や、情報を他者と共有しながら、対話や議論を通じて互いの多様な考え方の共通点や相違点を理解し、相手の考えに共感したり多様な考えを統合したりして、協力しながら問題を解決していくこと（協働的問題解決）のために必要な思考力・判断力・表現力等である。
　特に、問題発見・解決のプロセスの中で、以下のような思考・判断・表現を行うことができることが重要である。

・問題発見・解決に必要な情報を収集・蓄積するとともに、既存の知識に加え、必要となる新たな知識・技能を獲得し、知識・技能を適切に組み合わせて、それらを活用しながら問題を解決していくために必要となる思考。
・必要な情報を選択し、解決の方向性や方法を比較・選択し、結論を決定していくために必要な判断や意思決定。
・伝える相手や状況に応じた表現。

<strong>③学びに向かう力・人間性等</strong>：どのように社会・世界と関わり、よりよい人生を送るか
上記の①及び②の資質・能力を、どのような方向性で働かせていくかを決定付ける重要な要素であり、以下のような情意や態度等に関わるものが含まれる。

主体的に学習に取り組む態度も含めた学びに向かう力や、自己の感情や行動を統制する能力、自らの思考のプロセス等を客観的に捉える力など、いわゆる「メタ認知」に関するもの。
多様性を尊重する態度と互いのよさを生かして協働する力、持続可能な社会づくりに向けた態度、リーダーシップやチームワーク、感性、優しさや思いやりなど、人間性等に関するもの。
こうした資質・能力については、学習指導要領等を踏まえつつ、各学校が編成する教育課程の中で、各学校の教育目標とともに、育成する資質・能力のより具体的な姿を明らかにしていくことが重要である。その際、子供一人一人の個性に応じた資質・能力をどのように高めていくかという視点も重要になる。
</details>

# ３つの柱から見るプログラミング教育
>「小学校段階におけるプログラミング教育の在り方について（議論の取りまとめ）」（平成28年6月16日小学校段階における論理的思考力や創造性，問題解決能力等の育成とプログラミング教育に関する有識者会議）（以下，「有識者会議まとめ」という）では，学校教育として実施するプログラミング教育において次のような資質・能力を育むとしている。

> 【知識・技能】
>（小）身近な生活でコンピュータが活用されていることや，問題の解決には必要な手順があることに気付くこと。
>（中）社会におけるコンピュータの役割や影響を理解するとともに，簡単なプログラムを作成できるようにすること。
>（高）コンピュータの働きを科学的に理解するとともに，実際の問題解決にコンピュータを活用できるようにすること。

> 【思考力・判断力・表現力等】
> ・発達の段階に即して，「プログラミング的思考」（自分が意図する一連の活動を実現するために，どのような動きの組合せが必要であり，一つ一つの動きに対応した記号を，どのように組み合わせたらいいのか，記号の組合せをどのように改善していけば，より意図した活動に近づくのか，といったことを論理的に考えていく力）を育成すること。

> 【学びに向かう力・人間性等】
> ・発達の段階に即して，コンピュータの働きを，よりよい人生や社会づくりに生かそうとする態度を涵養すること。﻿

※涵養（かんよう：自然に水がしみこむように徐々に養い育てること。）

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

出典：文部科学省「小学校プログラミング教育の手引（第三版）」
:::

簡単に言ったら、物事を考える時に目的（意図）の動作や結果を実現するためには、どのような事や順序を行えば目的（意図）した動作や結果になるのかきちんと筋道を立てて考える力のことです。 
プログラミング的思考で身につくとされる能力は「抽象化」「分解」「順序立て」「分析」「一般化」の５つあり、身につけることで、物事の「目的（意図）」を的確にとらえ、合理的に考えることができるようになると言われています。

◯コンピュータを動作させることに当てはめて考えます。
<strong>1.分解</strong>
コンピュータにどのような動きをさせたいのかという目的(意図)を明確にする
<strong>2.順序立て</strong>
コンピュータにどのような動きをどのような順序でさせればよいのかを考える
（この時に意図した一連の動きが、一つ一つの動きをつなげたものであることを理解する必要があります）
<strong>3.分析</strong>
一つ一つの動きに対応する命令（記号）が必要であることを理解し、順序立てを考えたものをコンピュータが理解できる命令（記号）に置き換える
<strong>4.抽象化</strong>
その命令（記号）の組合せをどのように改善すれば自分が考える動作により近づいていくのかということも試行錯誤しながら考えていきます
<strong>5.一般化</strong>
試行錯誤して出来た内容を整理し記事にすることで、次回の参考にしたり、他の人も見ることができるようにする。

# プログラミング的思考を育てるためには
プログラミング思考を育てるためにはプログラミングだ！と習い事を始める人もいますが、ちょっと待ってください。
家庭でもプログラミング思考を育てる事は可能です。
その日常生活で養える方法は<strong>料理</strong>だと思います。

それでは「カレー作り」を目的にどのようにプログラミング的思考を使用し、達成するのか考えていきます。

<strong>1.分解</strong>:目的達成に向けて必要な手順を分解したり、物事を分解したりする力
カレーを作るために「野菜を切る」「カレールーを混ぜる」「炒める」「煮込む」など、完成までに必要な手順を考えます。

<strong>2.順序立て</strong>:分解された手順を適切に組み合わせる必要があり、その過程で物事を組み合わせる力
カレーを作る方法を考えた後、カレーを作る手順を適切に並び替える必要があります。
例えば、「野菜を切る」→「炒める」→「煮込む」→「カレールーを入れる」と並び替えます。

<strong>3.分析</strong>:頭の中で手順を組み合わせることを通じて、物事をシミュレーションする力
カレーを作る手順を自分なりに組み立てたあとは、頭の中で手順のシミュレーションを行うことで、効率よくカレー作りを進めることができます。

<strong>4.抽象化</strong>:学習したことから大切な本質を見極めて抽象化し、他の物事に応用する力
カレー作りを行っていく中で、野菜類は炒めることによってうまみを増す効果があることが分かります。
このような経験を抽象化すると、煮込み料理では最初に野菜を炒めると甘みとコクが出せるということに気づけます。

<strong>5.一般化</strong>：カレーを作る工程を整理し、誰でも作れるようにすることを一般化
料理本が主な例です。
次にカレーを作る人は料理本を見たりネットで検索するので、より簡単にカレーを作ることができます。
このように自分の考えた手順を整理することで、物事を一般化する力が身につきます。

# 最後に
プログラミング的思考は意識すれば日常生活で発見できます。
「プログラミングは難しい」と思うのではなく、何気なく行っている日常の行動が考え方を変えることで、プログラミング思考になることがあるので、「意外と私でも出来るのでは？！」とワクワクした気持ちで楽しんでチャレンジして貰えればと思います。

難しそうだけど、プログラミングが気になるという人は１度触ってみてください！

【おすすめ本】 
・ゲームを作れるので初心者向けです

https://amzn.to/49bRdmL

【おすすめアプリ】
子供も楽しくプログラミング学習 - 『まなんでパズル』(iPhone)

https://apps.apple.com/jp/app/%E5%AD%90%E4%BE%9B%E3%82%82%E6%A5%BD%E3%81%97%E3%81%8F%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%AD%A6%E7%BF%92-%E3%81%BE%E3%81%AA%E3%82%93%E3%81%A7%E3%83%91%E3%82%BA%E3%83%AB/id1590656071

# 参考資料
新学習要領について：
https://www.mext.go.jp/b_menu/shingi/chousa/shisetu/044/shiryo/__icsFiles/afieldfile/2018/07/09/1405957_003.pdf

幼稚園教育要領、小・中学校学習指導要領等の改訂のポイント：
https://www.mext.go.jp/content/1421692_1.pdf

高等学校学習指導要領の改訂のポイント：
https://www.mext.go.jp/content/1421692_2.pdf

小学校プログラミング教育の手引(第三版):
https://www.mext.go.jp/content/20200218-mxt_jogai02-100003171_002.pdf

「第３章 プログラミング教育の推進」教育の情報化の手引き-追補版-(令和2年6月)第3章：
https://www.mext.go.jp/content/20200608-mxt_jogai01-000003284_004.pdf

教育の情報化に関する手引：
https://www.mext.go.jp/a_menu/shotou/zyouhou/detail/mext_00117.html