すべての人にプログラミング学習が必要な理由を知る

こんにちは!
フリーランスエンジニアのかたやまです。

このサイトは、プログラミング学習の第一歩を、どこよりも優しく解説することを目的としています。

「はじめの3ステップ」シリーズでは、プログラミング学習を始める方に向けて、必ず知っておいてほしい3ステップを解説します。

ステップ1に続き、今回はプログラミング学習のステップ2に行きましょう!
※ステップ1は、こちら
※ステップ3は、こちら

今回は、プログラミング学習がすべての人に必要な理由を深堀りしていきます。これを理解することで、プログラミング学習を行う上でのモチベーションアップになります。また、習得後の未来像を具体的に思い描けるようになります。

日本国内の事例だけでなく、スティーブジョブズやオバマ元大統領の発言、他国のプログラミング教育についても着目していきます。さらに、プログラミングを学ぶと、どんな力がつくのか?それはなぜすべての人に必要なのか?などを見ていきます。ぜひ、お楽しみください!

日本の小学校でプログラミング授業が必須に

2020年度から小学校におけるプログラミングの授業の必須化されました。
なぜ文部科学省は、すべての小学生にプログラミング教育が必要だと考えたのでしょうか?
それは、この先誰もが学ぶべき考え方であり、この先の時代に不可欠という考えが世界中で広まっていることが背景としてあげられます。

私も誰もが学ぶべき思考であるという考えには強く賛同します。
ただし、今の教育目標は非常にゆるく、世界との温度差は否めません。

小学校におけるプログラミング教育を必修化するといっても、コンピュータに関する新しい教科が設けられるわけではありません。
算数や理科など既存の教科の中で、プログラミングを取り入れた学習が実施されることになり、何年生の、どの教科で、どんな内容を何時間学習するのか、といった具体的な中身については各学校が判断するのが現状です。

しっかりと子どもたちに、プログラミング思考が行き届くのか?という不安はありますが、プログラミング思考を学び、周りに教えることで日本は前に進むことができると思います。

プログラミングの重要性は、世界で叫ばれている

日本で注目され始めたプログラミングですが、世界でもその重要性は叫ばれています。ここでは、スティーブジョブズやオバマ元大統領の言葉や、各国の取り組みを見ていきましょう。

スティーブジョブズ

Appleの創業者であるスティーブジョブズは、過去のインタビューですべての人にプログラミングが必要だということを語っています。

全ての人が、プログラミングができるようにならなければいけない。
なぜなら、「考え方」がわかるようになるからだ。ロースクールに行くようなものだよ。全員が弁護士になるべきだとは言わないけれど、現実にロースクールに通うことは人生に役立つはずだ。
一定の方法で物事の考え方を学べるからね

スティーブジョブズ(https://www.youtube.com/watch?v=UaA1PbyS8BA)

オバマ元大統領

教育に熱心だったアメリカのオバマ元大統領も以下のように、重要性を語っています。世界をITでリードし続けるアメリカは、さらに発展していくことが予想されます。

プログラミングを学ぶことは、みなさんの将来にとって重要なだけでなく、アメリカにとっても重要です。
アメリカが最先端であるためには、プログラミングや技術をマスターする若手が必要不可欠です。
新しいビデオゲームを買うのではなく、作ってください。
最新のアプリをダウンロードするのではなく、設計してください。
それらをただ遊ぶのではなく、プログラムしてください。
誰もがプログラマーとして生まれたわけではなく、少しのハードワークと数学と科学を勉強していれば、プログラマーになることができます。
あなたが、誰であっても、どこに住んでいてもコンピューターはあなたの将来において重要な役割を占めます。
あなたがもし勉強を頑張れば、その未来は確かなものとなるでしょう。

オバマ(https://www.youtube.com/watch?v=JDw1ii7aKwg)

イギリス

ここからは各国の取り組みを見ていきます。

イギリスでのIT教育はなんと1990年代から始まっています。
2013年からはアルゴリズム(問題を解決するための方法や手順)の理解やプログラミング言語の学習に力を入れています。
国の教育方針によると、「世界のIT革命への積極的な参加ができるレベルまでITリテラシーを獲得できるようにする」ことを目的としているようです。

ロシア

ロシアは世界で唯一、小中高でプログラミング教育を必修化しています。
2009年から初等教育(日本でいう小学校にあたる年齢)にプログラミングの授業が導入されました。
アルゴリズムの学習や図形を描いたり、データの集計・分析をしたりしています。

エストニア

エストニアではプログラミング教育推進プログラムが2012年から開始されました。
1~12年生でプログラミングの授業を選択できるようになっています。
エストニアがプログラミング教育を開始した背景には、IT人材不足があります。
エストニアは国家単位でIT政策に力を入れており、ブロックチェーン技術を活用して行政サービスが運営されており、世界最先端の電子国家として注目が集まっています。

シンガポール

シンガポールは、90年代にはIT分野の教育を導入していたと言われています。
2014年には、ソフトウェアプログラミング教育を開始しています。
シンガポールはScience(科学)、Technology(技術)、Engineering(工学)、Mathematics(数学)の総称「STEM教育」に力を入れており、国防費と同じくらいの国家予算を教育に当てるなど、国をあげて教育に取り組んでいます。

プログラミングが必要な3つの理由

このようにプログラミングの重要性は、日本だけに留まらず、世界で叫ばれています。
では、なぜプログラミングはこれほどまでに重要視されているのでしょうか?
その理由は3つ存在すると考えられます。

1.加速するエンジニア不足

プログラミングが重要視される理由の1つに、エンジニア不足の深刻化があげられます。
経済産業省の「IT人材の最新動向と将来推計に関する調査結果」では、日本国内で2020年に36.9万人、2030年には78.9万人のIT人材が不足すると予測されています。
また、アメリカでプログラミング教育の推進を進めるNPO法人のCode.orgの調査では、2020年には40万人のプログラマーが足りなくなると説明しています。

日本の場合、少子高齢化による働き手の減少により、この問題は深刻化すると思います。人材確保のためにも、国をあげてエンジニア不足は解消しなければいけない課題となっています。

2.日常生活に増え続ける大量のプログラミング

プログラミングが重要視される理由の2つ目は、プログラミングが関わるモノが増え続けていることです。
1つ目の理由では、作り手の減少について説明しましたが、2つ目の理由では、作るものについて取り上げます。

今やすべてのモノがインターネットに接続され、複雑な機能をもった電子機器が増加しています。掃除機はロボット掃除機になり、声だけであらゆる電子機器が操作できるようになりました。ものだけでなく、スマホゲームやWebサイト、アプリなども増え続けています。最近話題のIoT(インターネットに繋がっているもの)は、今は1人あたり平均2台(携帯とパソコン)ですが、2040年には1人あたり平均1000台所持するようになるという未来予想もあります。

作るべきものが多いほど、プログラミングができる人材も求められるようになります。

3.第4次産業革命と正解のない時代を生き抜く力

3つ目の理由は、この先の時代に不可欠なスキルだからです。
今の時代は、VUCAという正解のない時代と言われています。
VUCAとは、Volatility(変動性・不安定さ)、Uncertainty(不確実性・不確定さ)、Complexity(複雑性)、Ambiguity(曖昧性・不明確さ)という4つのキーワードの頭文字から取った言葉の用語で、今の時代を表している言葉と言われています。
今後、世界はより不安定で不確実で複雑なものになっていきます。昔のように大企業に入れば安心といえる時代ではなくなってしまいました。

また、5G、AIの発達によって、業界自体が無くなる可能性もある不安定な状況です。「第4次産業革命」は、IoTやAI(人工知能)により、産業の形が大きく変革していくことを指します。

この複雑さを乗り越えるためにもプ、ログラミングで身につく「問題解決能力」や「論理的思考」はすべての人に必用な能力と言えます。

文部科学省もこの流れについて、以下のように述べています。

今後の社会の在り方について、とりわけ最近では、「第4次産業革命」ともいわれる、進化した人工知能が様々な判断を行ったり、身近な物の働きがインターネット経由で最適化されたりする時代の到来が、社会の在り方を大きく変えていくとの予測がなされているところである。こうした変化は、様々な課題に新たな解決策を見いだし、新たな価値を創造していく人間の活動を活性化するものであり、私たちの生活に便利さや豊かさをもたらすことが期待されている。その一方で、“人工知能の進化により人間が活躍できる職業はなくなるのではないか”“今学校で教えていることは時代が変化したら通用しなくなるのではないか”といった不安の声もあり、それを裏付けるような未来予測も多く発表されているところである。教育界には、変化が激しく将来の予測が困難な時代にあっても、子供たちが自信を持って自分の人生を切り拓き、よりよい社会を創り出していくことができるよう、必要な資質・能力をしっかりと育んでいくことが求められている。

文部科学省「小学校段階におけるプログラミング教育の在り方について」

プログラミングを学ぶことで、今後の時代に必要な人材となれるでしょう。

プログラミングを学ぶと身につく3つのスキル

プログラミングの必要性について知ったあとは、プログラミングを学んだあとの未来像を具体的に想像できるようになりましょう。

未来像を見る前に、まずはプログラミングに必要不可欠な「プログラミング思考」の定義を考えていきましょう。
プログラミング思考とは、目的やゴールから逆算し物事を順序立てて考え、結論を導き出し、実行することです。つまり、プログラミング思考を学ぶことは、目的やゴールを達成するために欠かせない考え方ともいえます。

これだけ聞くと、プログラミングの話ではなく、目標達成の話?と思うかもしれません。ただし、これらの考え方はプログラミングを行うために必須な考え方であるため、プログラミング思考と呼ばれています。ステップ1でも最初に学習すべきこととして、解説しました。

文部科学省が注目しているのも、プログラミングやコーディングではなく、プログラミング思考です。
以下のように明確に定義されています。

プログラミング教育とは、将来どのような職業に就くとしても、時代を超えて普遍的に求められる力としての「プログラミング的思考」などを育むことであり、コーディングを覚えることが目的ではない。
プログラミング教育の実施に当たっては、コーディングを覚えることが目的ではないことを明確に共有していくことが不可欠である。

文部科学省「小学校段階におけるプログラミング教育の在り方について」

では、このプログラミング思考を身に付けることができた場合、どんなスキルが身につくのかもう少し詳しく見ていきたい思います。
私が考えるスキルは大きく3つです。問題解決能力と論理思考、そして粘り強さです。

1.問題解決能力

まず、1つめの身につくスキルは、問題解決能力です。

プログラミングは常に問題解決の繰り返しです。達成すべき課題や解決すべき問題と向き合って、問題解決に必要なステップを繰り返し経験することができます。プログラミングを学ぶことで、目的やゴールから逆算し、物事を順序立てて考え、結論を導き出し、実行するという問題解決能力が身につきます。

私もエンジニア業務のほとんどが、問題解決作業だと実感しています。お客さまの実現したいシステムを作るために、どのような仕組みであれば実現できるのか?問題が発生する可能性はあるか?最適な答えは何だろう?と常に考えています。また、問題が発生したら迅速かつ丁寧に対応するなど、日々問題解決を行っています。

学校教育のときは、あらかじめ答えの決まっている問題がほとんどだったため、理解力や暗記力が必要でしたが、今後はAIが解決できるようになります。未来は答えのない問題だらけです。問題解決能力はより重要になると思います。

2.論理的思考

2つめの身につくスキルは、論理的思考です。

論理的思考とは、物事を体系的に整理し、矛盾や飛躍のない筋道を立てる思考法のことを言います。論理的思考ができる人は、ものごとを中途半端な状態で放置することが決してありません。「抽象的な言葉」を「具体的な言葉」に変換する力があります。

プログラミングには、「言われた通りに動くが、言ったこと以外はやらない」という特徴があります。つまり、「明確な指示」が必要不可欠です。

明確な指示をするためには、具体的に、漏れなく考える必要があります。
例えば、おつかいの場合でも以下のような「あいまいな指示」では、人には伝わっても、コンピュータには伝わりません。

【あいまいな指示】
スーパーで、りんごを買ってきて!

この指示では、どこのスーパーに行けば良いのか、分かりません。スーパーに着いたとして、たくさんの種類があるりんごの中から何を選択して良いか分かりません。何個買えば良いかも分かりません。一方、以下のように明確な指示ができれば、迷いなく購入することができます。

【明確な指示】
ここから一番近いスーパー〇〇〇で、ジョナゴールドという品種で一番手前に置いてあるリンゴを1つ買ってきて。もし、ジョナゴールドが無かったら、店員さんがオススメする品種のリンゴを1つ買ってきて。

少し口うるさい感じの指示ですが、コンピュータへの指示はこのように明確である必要があります。この指示があいまいな場合に、コンピュータが意図しない動き(バグ)をすることがあります。

プログラミングは明確な指示が必要です。いかに漏れなく、ダブりなく伝えることができるかが重要になります。このようにプログラミングを通じて、ものごとを論理的に解決する力が身につきます。

3.粘り強さ

3つめの身につくスキルは、粘り強さです。

粘り強さとは、難しい問題にぶち当たっても、逃げずに解決のために努力できる精神です。

プログラミングの作業は、基本的にトライアル&エラーでやっていくしかありません。問題が起こらない日はなく、問題が起きたら、徹底的に向き合うこと以外、解決の道はありません。難しい問題にぶち当たっても、逃げずに解決するための粘り強さや、解決への向上心・探求心・好奇心が必要です。

ただし、若者の粘り強さは減ってきているという研究があります。理由はSNSの使用によって、すぐに結果(いいね!)を求める人が大多数となったからだと言われています。すぐに結果はでない大きな目標であっても、粘り強く向かって走り続ける能力は、今後ますます貴重になると思います。また、日常のあらゆるシーンで役にたつことができます。

次のステップへ

今回は、すべての人にプログラミング学習が必要な理由を知ることができました。
プログラミングの人材がこの先、必要とされるということだけでなく、プログラミング思考のできる人材がこの先の時代で活躍することができるということを解説しました。

「はじめの3ステップ」シリーズ 最後のステップでは、いよいよプログラミング学習を始めます!まずは、プログラミング思考の大原則となる3つのルールを理解して、プログラミング思考を身に付けていきましょう。

【ステップ3】たったこれだけ!3つのプログラミング基本ルールを知る

はじめの3ステップカテゴリの最新記事