小学校でのプログラミング教育必修化にあたり、注目されているキーワードである「プログラミング的思考」。プログラミング的思考とは何か?プログラミング的思考がなぜ重要なのか?について具体例を用いて分かりやすく解説します。
プログラミング的思考とは何か?
文部科学省によると、プログラミング的思考は以下のように説明されています。
「自分が意図する一連の活動を実現するために、どのような動きの組合せが必要であり、一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力」
(出典:文部科学省:小学校プログラミング教育の手引)
本記事では「プログラミング的思考」を、次の4つの力に要約しました。
- 物事を正しく認識する力
- 物事を分解、分類する力
- 物事の関係性を理解し、組み合わせる力
- 現状と目的を踏まえて、改善検討する力
このように整理してみると、どうでしょう?日常の社会生活における問題解決においてもプログラミング的思考が重要そうだな、と感じて頂けたのではないでしょうか!
論理的思考との違い
プログラミング的思考は、論理的思考の一部として考えられます。
論理的思考の中でも、目的達成のために手段の「効率」を重視するのがプログラミング的思考です。
- 論理的思考:
目的達成に向けて、抜け漏れなく、筋道を立てて手段を考えること。 - プログラミング的思考:
目的達成に向け、効率を重視して最適な解決策を考えること。
抜け漏れなく・筋道を立てて手段を考え、効率よりも網羅性を重視するのが「論理的思考」です。「プログラミング的思考」では、効率を重視して手段を選択します。
例えばカレーライスを作るときに、どういった手順で作ればかかる時間が一番短くなるのかを試行錯誤し組み合わせる。このような考え方が「プログラミング的思考」です。
ここからは具体例を挙げてプログラミング的思考について解説します。
プログラミング的思考の具体例 1)トマトを育てる
次に具体例を使ってプログラミング的思考を理解してみましょう。
ある子供がトマトを育てるとします。
トマトを適切に育てるための一連の行動は以下のようなフローチャートで表現できます。
このように、あたかもコンピュータに意図した処理を行わせるようなフローチャートでトマトの育て方が表現できました。このフローチャートの中には、例えば、以下のようなプログラミング的思考のエッセンスが含まれています。
(正しく認識)トマトを育てる目的、方法やその方法をとる理由を正しく認識
(分解、分類)育て方の流れを適切な大きさのステップに分解
(組み合わせ)各ステップの発生する順番、発生する条件などを踏まえて組み合わせ
(改善の検討)この表の中にはない例外が発生した場合、新しいステップを検討して追加
プログラミング的思考とは、このフローチャートを頭の中に描いて行動する力に他ならないのです。
プログラミング思考ができる子 ⇒ 美味しくトマトを収穫
プログラミング思考ができない子 ⇒ トマトが枯れる、脇芽が伸びて収穫減少等のトラブル
そして、この力が「将来どのような職業に就くとしても普遍的に求められる」ということが文部科学省からも指摘されています。
プログラミング的思考の具体例 2)社会人の仕事
私たち社会人が仕事をするときにも、フローチャートのような「仕事の進め方」を頭の中に描きますよね?それはまさにプログラミング的思考を活用している例であると言えます。
例えば、営業活動では、新規顧客獲得のための広告運用の手順、見込顧客へのフォローアップの手順、既存顧客の継続率アップのためにはニーズヒアリングや対応の進め方など。対応方法や業務の流れは、顧客の規模や販売する製品によっても違ったりしますよね。
在庫管理であれば、日々の在庫数量の確認の流れ、仕入れ発注と支払処理のフロー、これも発注品目や発注先により処理方法が異なっていたり。そして、それらの業務プロセスを見える化して効率化する社内施策が実施されたり。
他にも例を挙げればキリがありませんが、いろいろな場面でプログラミング的思考が生かされ、仕事を効率的、効果的にしてくれているんです。
語源はコンピュテーショナル・シンキング
プログラミング的思考という言葉はどこから来たのか。
1980年代にアメリカの数学者、セイモア・パパートが使った、Computational thinking(コンピュテーショナル・シンキング)が始まりと言われています。注目されたのは2000年代で、日本には計算論的思考として紹介されました。コンピュテーショナル・シンキングの中から、文部科学省が教育に必要な部分を取り出して名付けたのが、プログラミング的思考であると言えそうです。
ちなみに、英語版Wikipediaの Computational thinking では以下のように述べられています。(正確な日本語訳に自信がありませんが、ご容赦ください!)
「教育におけるコンピュテーショナル・シンキングとは、コンピューターが実行できる形式で問題と解決策が表現された、一連の問題解決手法である。それは、以下のような知的技術と実践を含む。
1)コンピューターに仕事をさせるためのプログラムのデザイン
2)世の中の事象の複雑な情報処理としての説明と解釈
この考えは、初心者向けの基本的なコンピュテーショナル・シンキングから、専門家向けの高度なコンピュテーショナル・シンキングまで幅広く当てはまる。」
プログラミング的思考について深く知るためには、コンピュテーショナル・シンキングについての理解も不可欠です。興味のある方はぜひ学んでみてください。以下のウェブサイトでは、コンピュテーショナル・シンキングについての説明に加えて、コンピュテーショナル・シンキングが注目を集めるようになったきっかけとなるJeannette M. Wing氏の論文を翻訳までしてくださっています。(コンピュテーショナル・シンキングについて)あらゆる職業でプログラミング的思考が求められる時代
一昔前は、「プログラミングができる人 = 優秀なエンジニア」というイメージがあったかもしれません。しかし、これからは「プログラミングやプログラミング的思考ができる人 = どの部門、役割においても質の高い仕事ができる人」として見られる時代になったと筆者は理解しています。
今後、プログラミング的思考を身に付けた学生が世に出てきて、幅広い業界でプログラミング的思考のできる人材のニーズが高まりを見せてきそうです。すでに社会人の皆さんも、うかうかしていられませんね!プログラミング的思考できていますか?
- カテゴリ:
- アルゴリズム
- キーワード:
- プログラミング的思考
- 論理的思考
- ロジカルシンキング