グローバル人材を目指す英語と思考のブログ

“ふつうの人”とグローバルをつなぐ英語と思考

プログラミング思考とは?-本質とアプローチについて

「これからの時代、次は何を学べばいいのだろうか?」という疑問を多くの人が持つようになっています。

 

VUCA時代、DX時代、デザイン思考など、どれも時代を象徴する言葉で、「今はこんな時代ですよ、これからはこんなことが必要ですよ」ということを伝えています。

 

「プログラミング思考」もその一つですね。今回はプログラミング思考を正しく理解し、どのようにプログラミング思考と向き合うべきかを考えていきます。

 

今回の記事は次のような悩みを持つ方々の参考になると思います。

  • プログラミング思考とは何?
  • 学校教育でも必須になるし、プログラミング塾に行かせるべき?
  • 就職には プログラミングスキルが有利?
  • キャリアアップを考えるとプログラミングスクールに通ったほうがいい?

 

「プログラミング思考」と「プログラミング」の違い

まず最初に「プログラミング思考」と「プログラミング」の違いについて把握しておきましょう。

「プログラミング思考」とは?

主なメッセージはプログラミングを行うスキルよりも「問題をロジカルに考えて解決する思考」に重点が置かれています。

文部科学省で2021年より小学校でのプログラミングの授業が必修化されました。目的は 簡単に言えば「プログラミングを通して思考力を磨く」ことです。

文部科学省による「学習指導要領解説」ではつぎのように説明されています。

子供たちが将来どのような職業に就くとしても時代を越えて普遍的に求められる「プログラミング的思考」(自分が意図する一連の活動を実現するために、どのような動きの組合せが必要であり、一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力)を育むため、小学校においては、児童がプログラミングを体験しながら、コンピュータに意図した処理を行わせるために必要な論理的思考力を身に付けるための学習活動を計画的に実施することとしている。

https://www.mext.go.jp/a_menu/shotou/zyouhou/detail/1416328.htm

小学校プログラミング教育に関する資料

小学校プログラミング教育に関する概要資料(PDF)

「プログラミング」とは? 

プログラミングという言葉とは全く無縁の私です。この記事を書くまでプログラミング言語であるPythonというプログラミング言語の読み方も知りませんでした(パイソン)。HTMLとCSSもまだよく理解できてません。 

 

「演習で学ぶ!プログラミング的思考 最高の入門書」(著者:ひぐま)に分かりやすい説明がありました。あくまで私の文系目線の見方ですが、プログラムとは下記のような作業であると理解できます。この本の演習問題は文系脳には結構難しかったです・・。

 

基本的には「自分が意図する一連の活動を実現するための手順を作成する」ことです。

この点については三つの工程に分かれてます。

1.作業を分解すること

2.物事を抽象化すること( 一般化する)

3.1と2を組み合わせて作業手順を考えること(アルゴリズムを設計する)

こう考えると、プログラミングの本質的なアプローチや作業は、ビジネスや毎日の生活で我々が普通に使っている手順に近いものであるとわかります。

 

プログラミング思考を学ぶべきか?

結論から言えば「プログラミング思考のコンセプト」を学んでおくことは必要です。今後、学習やビジネスに役立つと思います。なぜなら日々の生活やビジネスで有効な考え方の一つだからです。

 

ただプログラミング思考を身につけるために塾に行ったり、プログラミングスクールに通う必要はありません。お子さん向けであれば親の教育、ビジネスパーソンであれば思考を鍛えることで本質を十分に身につけることができると思います。

 

プログラミング思考の本質は「どのようにしたら自分の思いを実現できるか?を考える時に創造性や発想力を使う」ことです。プログラミングというアプローチにはこの創造性や発想力を使うステップが組み込まれているので、プログラミング思考が大切ということになります。

プログラミング思考で得られる3つのメリット

プログラミング思考を通して想像力を育てる

「やりたいことをどのようにしたら効率的に実現できるか?」は大人でも子供でも日頃から考えていますね。ただ漠然と考えていることが多いと思います。そこで物事を抽象化する考え方や、アルゴリズム設計など、普段ではあまり使わない思考アプローチを使うことで新しい気付きが生まれます。これは想像力や発想力を使うステップがプログラミング思考に組み込まれているからです。

物事を抽象化できる

プログラミング関係の情報で「抽象化」という言葉はよくできます。ちょっと意外ですね。抽象化とは「様々な具体的事象から共通する内容を見出し、一般化する」ことです。抽象化することを習慣化すれば、本質的なルールを導き出すことができ、解決策を考えることができます。抽象化の大切さは前田裕二さんのベストセラー「メモの魔力」でもその大切さについて書かれています。 

例としては Amazonのケースがあります。最初はインターネットで本を配送するビジネスモデルでしたが、これを「一般的な商品についても顧客は同じようなことを望んでいるのでは?」と抽象化して、大きなビジネスに発展させたことが挙げられます。

ロジカルなコミュニケーション能力が向上する

これは主にプログラミング作業を通しての体験ですが、プログラムを作るにはコンピューター相手に「一から十まで手順や計算方法を言語化して教える」必要があります。これをアルゴリズムと呼びます。これによりロジカルに説明する習慣が身に付きます。仕事や日々のコミュニケーションでも、状況に応じてロジカルな思考ベースで話をすることで相手に通じやすくなります。

例としてグローバルコミュニケーションでは「相手にわかるように説明する」必要があるのため、ハイコンテクストコミュニケーションをする時に役立ちます。 

ノンコードの時代に役立つ

「ノンーコード」は端的に言えばプログラミング言語を使わずにプログラミンができる方法です。たとえプログラミングができなくても、「このアイディアはデジタル技術でできそうかな?」とを考えることは DX 時代ではますます必要になっていくと思います。

では次に私たちがどのようなアプローチを取るべきかを考えていきましょう。

 

子供向け プログラミング思考のアプローチ

小学校で必修となるプログラミング教育は掛け声としてはいいと思いますが、「創造性を発揮する教育」としてあまり学校に期待しない方がいいでしょう。

学校の現場の問題というよりも、行政が今の教育体系の見直しを棚上げにして、これだけで想像力を育もうと期待するのは虫がいい話ですね。

行政にはそこまで期待できない中、やはり家庭内での教育が大事になってきます。

 

プログラミングスクールも一つの方法ですが、まず親子で一緒にプログラミングを体験してみるといいでしょう。プログラミング思考のユニークさ、例えば「ループ」(作業を繰り返す)など、独特のアプローチに触れるといいでしょう。

 

「Scratch(スクラッチ)」という子供向けのプログラミングソフトを使ってみましたが、これはプログラミングの素人でも比較的直感的に出来ますね。ただ、ウチの小4の子供にとってはそれほど刺激的ではないようでした。適性もあるので、必修科目だからといって無理やり感をだすと、創造性をはぐくむという点からは本末転倒になります。適正を見極めてあげるのも大事ですね。

 

f:id:beglobalperson:20210227071648p:plain

Scratch Homepage : https://scratch.mit.edu/

ちょっと気になったのが、児童向けのプログラミング思考の例として「料理」が多く挙げられていることです。ただ、これは段取りや同時並行作業というタスクをこなすコツですね。あまり物事を段取りよくやるとことに気を取られないほうがいいでしょう。多くの場合、創造的な発想は回り道から生まれることの方が圧倒的に多いです。

 

大人向け プログラミング思考アプローチ

普通のビジネスパーソンが、今からプログラミングを学習する必要はないでしょう。思考ツールの一つとして日常に取り入れていけば役立ちます。ただプログラムミングのことをよく知らずに「プログラムスキルよりプログラミング的思考」と言い切ってしまうのも片手落ちですね(今回の私でした)。プログラミングについてはある程度のコンセプト押さえておく必要があります。 

 

例えば前半に紹介した「演習で学ぶ!プログラミング的思考 最高の入門書」でプログラミングに必要ないくつかの重要な考え方が紹介されています。「変数」、「条件分岐」、「繰り返し」の三つですです。「変数」はXやYなどで表されるその都度変わる値です。「条件分岐」は If 関数で使われるような「もし~だったら、~何々する」分岐アクションです。「繰り返し」は文字通りその作業を繰り返すということです。繰り返しはループとも呼ばれていますが、 文系の人にはわかりづらいコンセプトですね。しかしこのような仕組みをなんとなく知ってると少しは頭が良くなったような気がします(笑)。

 

まとめ-プログラミング思考で創造と発想を習慣化する

プログラミング的思考は論理的に問題(自分のやりたいこと、解決したいこと)を解決する思考であることがわかりました。いつの時代でも必要な思考スキルの一つと言えます。

 

イーロン・マスクやマーク・ザッカーバーグがプログラミングに小さい頃から親しんできたというのは有名な話ですね。

彼らを超一流のビジネスパーソンにしたのは「何をどうしたら実現できるか」というプログラミング思考がベースにあったのも一つの理由でしょう。ただ、やはり何を実現したいかという創造力・発想力がないと何も始まりません。「プログラミング思考で考えてみる」ことは創造力・発想力を鍛える一つの方法になると思います。

 

子供のためのプログラミング教育では興味があれば自分の思い通りに動くゲームを作ったりすることで、どんどん発想力や想像力が生まれてくるでしょう。ただ、工作や対話などの実体験も合わせながら、創造性を育む環境を作ってあげる必要があります。 やはり親の環境づくりが必要となってきます。

 

普通のビジネスパーソンにとっては、プログラミング的思考を意識することで新たな切り口で問題を解くツールを手に入れることができます。

プログラミング思考で一度問題点や課題を考えてみて、それを仕事に落とし込む実装作業が必要です。

 

気を付けたい点は「実現したいことの本質を押さえておく」ことですね。既存の仕事が効率的になるツールを作るだけ、フローを作るだけではもったいないです。プラグラミング思考の本質は枠組みを変えていくことなので、本質を押さえて「なにがどうなるか?本当に必要か?」を考えていくとよいでしょう。

 

プログラミング思考はプログラマー以外の人達にも「別な視点を与えてくれる」重要な思考です。これからの時代に必要となるプログラミング思考法を体験していきましょう!