プログラミング的思考が、なぜ必要か、プログラミングが、なぜ重要か

プログラミング的思考を検索すると、

プログラミング的思考を検索すると表面的で全く役に立たないものが多すぎるように感じますが、いかがでしょう。

確かに、文部省の示している「プログラミング的思考はプログラミングができることではない」と書かれていますが、それは今の世界的なデジタル競争の中では表面的すぎます。

現実的な話しとして「プログラミング的思考」とは何かを整理してみます。

  • 10年間でプログラミングコードが書ける、読める人材を飛躍的に増やす
  • プログラミング的思考をあらゆる場面で活用し無駄を省き、生産性を飛躍的にあげる
  • すべての事象をAI化し人類が新たな人類になる向かう最先端の技術の基礎を学ぶ

このような3点を目的として、日本人の全ての生産人口がプログラミングに触れるなかで、たくさんのプログラマーが育成され、そのなかから非常にすぐれたプログラマーが排出される仕組みを構築するということだろうと考えています。

この仕組みを構築する為に「プログラミング的思考」が必要だと位置づけることが正しいと思います。

この取り組みが成功しなければ日本の存在価値はなくなる「崖っぷち」にあるという認識を持たないサイトは「プログラミング的思考」から考えると無意味な存在でしかないと感じます。

恐らくは、実際に何かのプログラミング言語のコードを書いたことのない方が記事をかかれているからか、文部省の方針から外れたことは一切書かない、又は書けない方が記事をかかれているからでしょう。

まるで料理ができない方が料理本を読んで解説しているような内容が非常に目立ちます。もっともプログラミングのできる方は「プログラミング的思考」が当然すぎて逆に「解説する必要を感じない」かもしれないところが一番のすれ違う点でもあります。

大学入試合格を目指す学生に対して入試勉強に注力しない「公立の普通科高校」や目指すのはあなたの自由ですと対策を講じない学校が大半を占めるのに似ています

一方、有名私学は「合格」という目的の為のPDCAを「プログラミング的思考」で考え成果を継続して出していきます。

実際、日本の現在のプログラミング的思考の教育レベルについて

世界のなかで、現在は非常に遅れていることは間違いないのですが、

世界でのプログラミング教育の現状を報告したものを読みますとまだまだ追いつけそうです。現状はこちらです。⇒

私はプログラミングの本を読みだしたのは2016年11月9日の約3年前です。

本を購入すると片隅に購入した日を書くようにしています。現在は2019年8月ですが、見た時に自分の成長を感じることができますのでそこが面白いところです。

まだ私はプログラミングを独学して3年ですが、10年間プログラミングに寄り添っている方のサイトがありましたので一部紹介します。そういう方の記録を読むとどう取り組むべきかの参考になります。そのポイントが次の12か条で要約されています。

プログラミングとの「寄り添い方」12か条

この寄り添い方12か条が「プログラミング的思考」なのです。なにも「抽象化」「一般化」とか言いたがりますが、わざと難しくいって混乱させます。

要は、プログラミング的思考の重要な部分を「編集できていない」紹介サイトが多くて何をすればよいのかがわからず「嫌になる」サイトが多く困ったものです。一体何なんでしょうか。

【この方の結論】

「入門書を読んで端から勉強する」というのをやめること。少なくとも私なら確実に飽きる。

①興味のある対象についてのコードを書く。

②興味のある対象というものが思いつかないのであれば、仕事や生活の中で、自動化できるものを探す。

③会社の業務の多くはルーチンワークであることが多く、よく探せば自動化できるポイントはたくさんある。

④こうしたものを少しづつ自動化していく。たとえば、あるエンジニアは、上から指示された作業を完全に自動化し、一日の作業を5分で終わらせておきつつ上司には今まで通り一日の終わりに作業完了報告をし、残りの時間をネットサーフィンに当てていたという。

⑤コードを書かなくても、「これはコードで書けそうか、自動化できそうか」について常に考える。考えるだけでも、設計のセンスを磨くことができる。

⑥一度に大きなことをやらず、小さいものから実装すること。例えば「文字列を変換するだけ」「http getリクエストを投げて取得するだけ」など。

⑦こうした小さいコードを組み合わせれば、そのうちもっと大きなプログラムもさっと書けるようになる。

⑧コードの再利用方法について常に心がけること。ワンライナー(1行だけのコード)や使い捨てのコードを書いているのであれば、それを再利用できるように書くにはどうすればいいかを考えること。

上記に関連するが、保守性の高いコードを書くよう心がけること。特にワンライナーなどは3ヶ月後の自分が読んでも全くわからない。

⑪3ヶ月後の自分にも理解できるようにするにはどうすればいいのか考えること。ドキュメントを書いてもいいし、インタフェースを工夫してもいい。

⑫ネットで話題になっているプログラムやシステムを、自分が得意な言語で再実装してみる。例えば「Rubyで◯◯した」といった記事が話題になっているのであれば、それをPythonで再実装してみる。完全移植でなくても、一部の機能だけでもいいし、品質を気にしなくてもいい。

https://shiumachi.hatenablog.com/entry/2017/06/01/230731

なぜプログラミングが必要なのか?

なぜ今、小学校を含めた初等中等教育段階で、子どもたちがプログラミングに関わる学習活動をする必要があるのでしょうか。われわれは、次のような3つの理由があると考えています。

1.コンピュータは「使う」から「指示」する時代に

最近はあらゆることがスマートフォンできますが、それらのDATAがBIGデーダとして蓄積され個人のあらゆる指向が得点化や分類され、更にその分析力は現在の何千から何万倍にもなると言われています。

現在ある既存のアプリケーション・ソフトでなくアプリケーションを組み合わせたり、一から自分でアプリケーションを作る時代に突入したと言えそうです。

そのコンピュターへ指示することをプログラミングと言います。「プログラミング的思考」は、コンピュターの好きな論理的思考をより正確に理解する手段です。

プログラミングのポイントは「繰り返し」する部分を「場合分け」して指示する仕組みを論理的にプログラミング言語の文法に合わせて考えることです。

但し、現在の中学2年生までの数学の知識があれば殆どの事は指示内容を「一般化」した数式を組みたてできますので、年齢に関係なくいつから始めてもできる内容ですが、小学校から遊びながら学ぶの一番らくで良いと思います。

小さいときに覚えたものは、頭の芯で記憶できて応用が利きますので、兎に角遊びながら「指示したことが予定通り動く事」を体感させる事をお勧めします。

2.情報を創り出すことから発信できるプログラミングが重要に

なんでもググれば情報が獲得でき、たくさんの情報が氾濫し、逆に同じようなコピー情報が掲載され、うんざりすることも多くなりました。

もう情報を集めるINPUT優先から自ら考えて発信OUTPUTできることに優先度が変化したと言えそうです。与えられた問題を解くことから、新たな問題点を発見し解決しDATA化し動かす一連の流れを一貫して実行できる力が社会人では要求されます。

仕事の殆どには問題点に対する正解はありません。あるのはただPDCAを回すことで、よりベストな結果を求めその成果を世の中に発信することしかないわけです。

学生の時のように出された問題を解くことから自ら発信することへ教育がシフトしたことは非常に合理的な変化だと感じます。

3.論理的思考を使ってプログラミングできることが重要に

プログラミングは、論理的思考の塊です。コンピュータは論理的思考を順番に食べて走るのが非常に得意です。

逆に順番が指示されなかったり、1つでも単語が間違っていたりするといきなり思考停止となりますので、十分な論理的事前の準備が大事であることは社会人の本来は共有事項であるはずです。

しかし、社会人でも仕事の効率が悪い方は多いのが現状で、常にプログラミング的思考によって、PDCAを回す人材が増えれば社会全体がスッキリしていきます。

このPDCA速度を凄まじく速めるAIを使いこなす時代が20年先にはくると言われていますので、十分にプログラミング自体に慣れ親しまれることがお勧めです。