してプログラミングを含む「情報I」という科目が新設されることになっています。10年先の状況すら予測することが難しい現代で、未来ある若者が身につけるべきはIT技術であるという時代の到来です。プログラミングの必修化を行っても、実際に役立つ技術を身につけるには難しいのではないか?質・量ともに十分な教員の確保は可能なのか?といった懸念事項はありますが、ここではプログラミング必修化に対する私見を綴っていきたいと思います。読み書きそろばんしながらプログラミング読み書きそろばんプログラミングプログラミング必修化となった経緯は、次のような方針によるものだそうです。安倍晋三首相は「AIやビッグデータなどのIT、情報処理の素養はこれからの時代の『読み書きそろばん』」とした上で、「大学入試において国語・数学・英語のような基礎的な科目として情報科目を追加し、文系・理系を問わず学習を促していく」と述べた。文系の生徒もプログラミング教育の対象となるのですね。プログラミング必修化は、プログラミング教育を受けた若者を将来雇用することになる企業側からすると、願ってもないことかもしれません。巷でたびたび話題となる「パソコンの操作ができない新入社員が入ってきた」という事態は防ぐことができるでしょう。https://otonanswer.jp/post/39023/高校でのプログラミング必修化に意味はない?これからの時代、IT技術が重要な価値を産む場面はどんどん増えていくでしょう。IT技術は文系理系問わず持っていた方がいいですし、高度な技術を身につけることができれば引く手数多であることもまた事実です。私は、高校生の段階ではプログラムを学ぶ必要はないと考えています。いえ、正確に言うと、プログラムもいいですがまず国語・数学・英語といった基礎的な科目をしっかり勉強しましょうということです。プログラミングスキルはいつでも身につけることができます私は、プログラムを書くことが業務内容の多くを占めるような生活を送っていますが、高校時代にはプログラミング教育は受けていません。大学時代にはプログラムの授業がありましたが、在学中ずっとプログラムを書き続けるような状況だったわけでもなく、プログラムを書く機会は多くなかったため、たいしたスキルを身につけることができずに大学生活を終えました。私にとって、プログラミングは業務上必要となったことにより身につけた技術なのですが、それにも関わらずプログラミングを仕事にできています。いうことはつまり、プログラミングは社会に出て必要になってから身につければよい技術だということなのです。マスマスターの思考回路もちろん意欲的にプログラミングを学習したい方は、どんどん学習しましょう。若いうちにプログラミングをしてはいけないという趣旨ではありません。基礎科目の習得によりエンジンを強化しましょうプログラミングは若いうちから学ばなくても、いつでも習得することが可能だと私は思っています。いった従来からある基礎的な教育科目を大人になってから身につけることは、プログラミングを習得するよりも難しいものと思われますし、しかもこれらはプログラミングを書くうえで欠かせない基礎となります。車に例えると、従来からある基礎的な教育科目はエンジンであり、プログラミングは運転手といったところでしょうか。学校の勉強をして何の意味があるの?と誰しも思ったことがあるかと思いますが、基礎的な科目を学習することはエンジンの強化に相当します。エンジンをいくら高性能にしても、エンジン単体では何の役にも立たないことと同じように、学校の勉強には意味がないように感じられてしまうのでしょう。本当に重要なのはエンジンです。読み書きそろばんができてからプログラミングプログラムは大前提として、たまたま動くということはなく、書いた通りに従順に動きます。どのような挙動を期待するのか、何を作りたいのか、それを達成するために論理的にプログラムを記述していく必要があるのです。学校の勉強も同じです。テストの問題は選択式回答などでたまたま正解できることがありますが、自信を持って答えた問題の回答は必ず、論理的に考えるという過程を経ています。よって、プログラミングに必要な論理的に考える訓練は、従来の基礎的な科目の学習において行われているのです。プログラミングでは論理的思考を大前提とし、各教科で学習した総合的な力が要求されることとなります。各教科とプログラミングとの関係について見ていきましょう。国語とプログラミング国語では論理的な思考をするうえで欠かすことのできない「言語」を学びます。自然言語と同様にプログラミングにも何種類もの「言語」が存在し、この言語ではこう記述しましょうということがルールとして決まっています。何種類ものプログラミング言語を扱えることに、特段の利点はない(扱えた方がいいですが、1つの言語を扱うことができれば他の言語の習得は容易です)ので、それと同様にまずは母国語である国語を正しく使いこなせるようになりましょう。それがプログラミングにおける「言語」を理解するうえでの基礎となるはずです。数学とプログラミング数学では「言語」と並び、論理活動の基礎となる「数字」を扱います。基礎的な計算力がなければ、「数字」を扱うプログラムを作成することが難しいことは想像に難くないでしょう。数学で学習する関数や数列に関する知識は、それほど高度でないプログラムでも必要となる機会は少なくありません。大学で学習する線型代数学の知識など、ゲームプログラミングには欠かせない数学の知識も存在します。英語とプログラミングプログラムは基本的には日本語ではなく、アルファベットを用いて記述します。プログラムを読むことになる他人(または後で見返すときの自分)のために、意味がわかりやすいように英語でプログラムを記述していくこととなります。これについては、英語それ自体に対する文法を把握していなくても問題ありませんが、単語は多く知っておいた方が書くのも読むのもとても楽になるでしょう。プログラミングに関するマニュアルやトラブルシューティングが英語の情報しかないような場合もありますので、これに対応するには相応の英語力が必要となります。マスマスターの思考回路このように、プログラムを書く際には、様々な知識を総動員する必要があるのです。どれか一つでも欠けてしまうとプログラムを正常に動かすことができず、投げ出してしまうという自体が危惧されます。それだけにプログラムよりもまず、基礎的な科目をしっかり勉強することが大切だと私は考えます。数学とプログラミングの関係をより詳しく当ブログの特性上、数学についてはプログラミングとどのように関連するかもう少し深く掘り下げたいと思います。実のところ、業務にもよりますが、高度な数学的知識が要求されるようなプログラムを開発する機会というのは多くありません。一般の仕事において、学校で習った知識そのものを使う機会が多くないであろうことと同じです。数学そのものに関する知識が必要となることももちろんありますが、数学においてプログラミングに本当に役立つのは、思考力や忍耐力であると考えています。プログラミングでは、一行ずつ地道に動作を確認していく姿勢が要求され、それには強い忍耐力が必要となります。どこも間違っているであろう箇所が見当たらないにも関わらず、正常に動作しない場合もあり、原因の特定には深い思考力が要求されます。正常に動作しないのですから、どこかに必ず原因があるはずです。同じ動作が期待される別の記述に変えてみようとか、無関係に見える部分を削除してプログラム全体を簡易化するとか、状況に応じてとるべき対処方法は、忍耐強く思考することによって見えてきます。これは数学の問題で行き詰まったときに、別の解法を試してみようとすることと全く同じです。数学の問題での試行錯誤の経験は、プログラミングにおいても必ず活かされるでしょう。プログラミングには同じ動作をするプログラムでも、書き方の良し悪しというものがあります。数学の記述式回答においては論理的な構成となっているか、説明に過不足がないかといったように、その書き方自体も重要となります。そのような回答を書き上げる訓練が、良いプログラムを書く実力を身につけることに直結するでしょう。数学そのものの知識よりも、数学において培う論理性がプログラムを書くうえでの一番の基礎になります。ここまでは数学的知識自体が深く要求されない場合においての数学とプログラムの関係についての話となったのですが、冒頭の引用にある通り、政府はAIやビッグデータを扱える技術者の育成を目指しています。いった知識が必要とされるのです。マスマスターの思考回路プログラムは人間が考えたことを具現化し、コンピュータに実行させるための手段に過ぎません。本当に必要なのは、プログラム自体でなく高度な知識をもった人材だと私は思います。読み書きそろばんしながらプログラミングさて、プログラミング必修化は決定事項なので、高校生の皆さんはプログラミングの教育を受けなければなりません。これからの時代、IT技術は今にも増して普及し、同時にIT技術者の需要も増え続けます。IT技術はそれを使いこなすための基礎的な力があってこそのものなのです。履修教科が増えることにより必然的に負担が増えると思われますが、決して基礎教科の学習がおろそかなものとならないことを願い、プログラミングにも親しんでもらえると良いかと思います。数IIIプロフィール-このサイトの記事を書いている人-某国立大工学部卒のwebエンジニアです。学生時代に塾講師として勤務していた際、生徒さんから「解説を聞けば理解できるけど、なぜその解き方を思いつくのかがわからない」という声を多くいただきました。授業という限られた時間の中ではこの声に応えることは難しく、ある程度の理解度までに留めつつ、繰り返しの復習で覚えてもらうという方法を採らざるを得ないこともありました。本ブログでは「数学の問題を解くための思考回路」に重点を置いています。それらを通じて自らの力で問題を解決する力が身につくお手伝いができれば幸いです。公式ではない必須知識です。導出方法を重視した公式集です。