見出し画像

「プログラミング的思考」ってなに??|プログラミング的思考で身に付く力とその活用法

みなさんこんにちは!いかがお過ごしですか。
ちょうど立教大学の学園祭が終わり、秋学期も後半戦へと差し掛かってきましたね。
さて、今回の記事では「プログラミング的思考」について書かせていただきます。
記事内の文章は、わたくし大矢実穂が、そして記事内の画像は3期生ゼミ長のまりなが担当します。
ぜひ最後までお楽しみください🥰


1. 「プログラミング的思考」ってなんぞや?


  

ズバリ「プログラミング的思考」とは、
論理的思考の一部であり、「最適な方法で問題を解決する」ためにはどうすべきか試行錯誤すること。

「論理的思考」は立教大学経営学部のBLPで学んだので、経営学部生なら当然知っていますよね。
また論理的思考とプログラミング的思考を私なりに定義したものは以下の通りです。



論理的思考…目的に向けて、抜け漏れなく、
       筋道を立てて手段を考えること。

プログラミング的思考…目的達成に向け、
            効率を重視して最適な解決策を考えること。



抜け漏れなく網羅性を重視するのが「論理的思考」、手段の効率を重視するのが「プログラミング的思考」です。
例えば出かけるとき、どの作業から始めれば所要時間を一番短くできるのかを試行錯誤し組み合わせる。
このような考え方が「プログラミング的思考」です。


2. “キミ”をカレー作りで考える


 

もちろんプログラミング的思考を学ぶことでもらえる特典がたくさんあります。
それが以下の「プログラミング的思考で身に付く5つの力」です。

①物事を分解する力
②物事を組み合わせる力
③物事をシミュレーションする力
④物事を抽象化する力
⑤物事を一般化する力

では仮に「カレーを作る」という目的達成のためにプログラミング的思考を使ったとして、どのようにこれらの力が身につくのかを考えていきましょう🍛

①物事を分解する力

例えば私たちが当たり前のように作っているカレーも、作るまでの工程を分解することができます。「野菜を切る」「カレールーを混ぜる」「煮込む」「炒める」など、完成までにさまざまな手順がありますよね。

このように最初に完成した姿を想像して、その目的までに必要な手順や物事を分解する力がプログラミング的思考で身につきます。

②物事を組み合わせる力

先ほどカレー作りの手順を分解しましたが、それだけで美味しいカレーは作れません。「我が家の秘伝のスパイスを、このタイミングで入れないといけない!絶対だ!」と譲れない人もいると思います。

そんなとき必要な項目を適切に並べ替える必要があるのです。
「野菜を切る」→「炒める」→「煮込む」→「カレールーを入れる」といったように並べ替えると、美味しいカレーが作れそうな手順が出来上がります。

実際のプログラミングでも分解された手順を適切に組み合わせる作業が必要であり、その過程で物事を組み合わせる力がつくのです。

③物事をシミュレーションする力

正しい手順に並び替えたらカレー作りは成功するのか。答えは当然ノーです。

柔らかいナスや玉ねぎを先に入れてしまい、跡形もなく消えてしまった。入れたい具が多くなりすぎてカレールーが足りず、シャビシャビのカレースープのようになってしまった。そういえば光熱費を滞納していてガスを止められた、とか。

物事には予期せぬハプニングが付き物です。完璧な手順だと思っていても、それが成功するかはやってみないと分かりません。いわばシュレディンガーのカレーですね😸

しかし成功する確率を上げることはできるはず。
そんなときに私たちはシミュレーションをすればよいのです。

頭の中で手順を組み合わせ、失敗した時の代替案も考える力を身につけることで、効率よく作業を進めることができます。

④物事を抽象化する力


 

今まで説明してきた「1. 物事を分解する力」「2. 物事を組み合わせる力」「3. 物事をシミュレーションする力」を駆使したおかげで、無事美味しいカレーが作れたあなた。
カレーを作って完成することでは飽き足らず、次のステップに移っていきます。


カレー作りを何度か行っていく中で、あることに気づきます。



「あれ?野菜を最初に炒めたカレーの方が、後に炒めたカレーより美味しかったな…」

「でもカレーだけじゃなくて、肉じゃがやシチューを作ったときも野菜最初に炒めた方が美味しかった気がする。」

「…つまり煮込み料理全体で最初に野菜を炒めると甘みとコクが出せる、ってコト?」


…素晴らしい気づきですね😁
カレーだけにとどまらず、肉じゃがやシチューなど他の煮込み料理にも通ずる秘訣を発見しました。
このようにプログラミング的思考では、学習したことから大切な本質を見極めて抽象化し、他の物事に応用する力が身につきます。

⑤物事を一般化する力

自分にとって満足できるカレーが作れるようになったら、「この美味しさを他の人にも知ってもらいたい!」と思うかもしれません。

そんなときあなたは、いわゆるレシピ本のようにカレー作りの工程を整理し、誰でも作れるように一般化する必要があります。
あなたのレシピを教えてもらった人はそれ通りに作業を進めればよいので、より早く・容易に美味しいカレーを作ることができますね。

このように自分の考えた手順を整理すること、物事を一般化する力が身につきます。


3. いざ使わん!プログラミング的思考!!

プログラミング的思考と、身に付く5つの力を長々とご紹介してきましたが、それを活用できなかったら意味がありませんよね…。
ということで、ここからはプログラミング的思考は具体的にどのような場面で使えるのかを考えていこうと思います💭

例① 生成系AIの活用

昨今ChatGPTなどの生成系AIが注目されています。誰でも簡単に利用できることから活用している方も多いでしょう。

そんな生成系AIに欠かせないものが「プロンプト(ユーザーが入力する指示や質問)」です。
こちらの入力内容でAIが提案する内容も変わってくるので、極めて重要であると言えます。誰でも簡単に使えても、全員が”上手に”使えるとは言っていません。
そんなときにプログラミング的思考が遺憾なく発揮できます。

 

こちらは3期生の大地が作成したプロンプトです👨🏻‍💻
全体的に明確な表現で詳細に指示が出されていて、AIが理解しやすいプロンプトになっていることが見てとれるかと思います。

プロンプト作成で大事になってくるのが、プログラミング的思考で身に付く力の1つである「物事を分解する力」です。

AIに「自身が自覚している酒耐性と飲酒量から翌日の健康状態の予測をしてください。」と目的だけ伝えても、情報不十分のため自分が望むような出力をしてくれません。
そのため目的を達成するために必要な手順を分解して、細かく指示を出す必要があるのです。大地のプロンプトを見てわかるように、役割設定や出力条件、事前情報などAIにより良い応答をさせるためのテクニックが散りばめられています。

例② 「役割分担」というリーダーシップの発揮

舘野ゼミはリーダーシップを学べるゼミでもあるので、「役割分担」にも役立てれることをご紹介します。

 

例えば学校行事でグループメンバーとお昼ご飯を作ることになったとしましょう。(奇しくもまた料理に関する例になってしまいました…)
メンバーの料理の技量はバラバラですが、「全ての人材を効率的に使っていきたい…」と思ったら、プログラミング的思考の出番ですね!

手先が器用なリョウタくんと、家庭で料理の手伝いをよくするミサキちゃんに食材を切ってもらう。
レシピ通りに作りたいケイゴくんは、調味料を量ってもらう。
料理が壊滅的にできないカエデちゃんも一緒に料理してもらいたいから、お鍋をゆっくり混ぜてもらう。
で、コミュニケーションが得意な僕はグループの様子を見つつ、先生にアドバイス貰いに行こう!

といった要領で、「みんなで楽しく、美味しい料理を作る」と目的達成のために、すべき事を細分化し、手元にある人材を上手く活用することができました。
もしこれで役割分担が失敗してしまっても、また誰かと料理をする機会があったら前回の失敗をふまえて事前にシミュレーションを行うことも可能ですね。

このように役割分担というリーダーシップを発揮したいときにも、プログラミング的思考は使えるのです。


4. 終わりに

今回は「プログラミング的思考」について書かせていただきましたが、みなさんいかがだったでしょうか。
プログラミング的思考はとても汎用性が高いので、ぜひみなさんの日常に取り入れてみてください!


長い文章を最後まで読んでくださりありがとうございます。
次回の投稿もお楽しみに。良い1日を〜👋🏻

この記事が気に入ったらサポートをしてみませんか?