「~思考」についての探求|プログラミング教育

プログラミング教育

「プログラミング教育」における「~思考」という用語について探求してみたいと思います。

 

「論理的思考」「プログラミング的思考」「計算論的思考」の比較

論理的思考」という用語がありますが、この「思考」とはどういうものなのでしょうか?

ここでは、世の中で使われている似通った用語と比較しながら、これらの用語について解説していきたいと思います。

 

用語の揺れ

文部科学省が発信している情報を見ているだけでも、『「論理的思考」力を身に付ける』『「プログラミング的思考」の育成』などという表記があり、使われている用語が揺れています。

一方、「計算論的思考」という用語もあり、初めて接する人にとっては説明を聞く前に心が萎えてしまいそうです。

そもそも、これらの用語は同一の意味を持つものなのか、異なるものなのか、児童や我々親はどれを意識すればいいのかを考えていきたいと思います。

 

各用語の使われ方の状況

「論理的思考」に対する英語は、「Logical Thinking」という言葉があります。筆者もわりと使う用語であり、「ロジカル・シンキング」という片仮名英語も世の中で使われることが多くなってきたように思います。

また、「プログラミング的思考」と直訳されるような英語はないもよう。

一方、世界的には、提唱された歴史も含め「Computational Thinking」という言葉がよく用いられています。これを日本語に訳した場合、「計算論的思考」と呼ぶことが多いようです。

日本の教育で取り組もうとしている「プログラミング的思考」は、用語の位置付け的には、ほぼ「計算論的思考」(Computational Thinking)と考えてよい気がします。

 

参考サイト

これらの用語の関係性について、よくまとめられている先達がいらっしゃるので、筆者の認識にとても近い方のサイトを以下に紹介しておきます。

 

 

各「思考」の意味

論理的思考(Logical Thinking)

「論理的思考」は「論理に則った考え方」の意です。

辞書から言葉を考えてみると、『「論理的」は「すじ道の通ったようす」』(出典:新選国語辞典第六版 小学館)ですので、『「論理的思考」は「すじ道の通った考え方」』という意味になります。

 

プログラミング的思考

「プログラミング的思考」は、「計算論的思考」と同義と考えますので、以下「計算論的思考」にて解説することとします。

 

計算論的思考(Computational Thinking)

「計算論的思考」は、「コンピュータ科学者のように考えること」です(詳細は後述)。

わからん人にはわかるようなわからんような。。。

この意味や定義を気軽に書けないぐらい論争の起きそうな言葉ですが、ここは、あくまで日本で導入しようとしている「プログラミング教育」についての文章なので、多少ずれていてもわかりやすいように表現しようと思います。

すなわち、「計算論的思考」は、「コンピュータを使ったり、プログラミングをしたりする研究や仕事をしている人たちが、その研究や仕事において日頃やっている考え方」という感じでしょうか。

結局、「プログラミング的思考」という表現のほうが直観的にわかりやすいのかもしれません。

また、BBC発信の情報(詳細は後述)をもとにすると、「計算論的思考」とは、『ある目的や課題に取り組むにあたって、「どのような作業が必要か」「似たような作業はあるか」「どの情報や作業が必要でどれが不要か」「作業をどう組み合わせればよいか」などを考えること、または、その思考力』のような意味になります。

 

これについては、多くの人には耳慣れないであろう「計算論」という単語が敷居を高くしてしまいそうです。一方、「Computational」の元となる「compute」(計算する)から派生している「Computer」(コンピュータ)という単語なら、日本人にもお馴染みの単語なので、まあわかるようなわからんようななりにも直観的にはイメージしやすいのではないかと思ったりします。

 

計算論的思考の具体例

「ハムエッグを作る」という目的に対して「計算論的思考」で考えてみました。

「計算論的思考」とは、以下のようなことを分析し、考える力と言えます。

 

以下は一例であり、ハムエッグの作り方が必ずしも以下であると決まっているわけではありません。

 

分解(どのような作業が必要か)
  • 材料の用意
    • ハム
    • 玉子
    • サラダ油
    • コショウ
  • 調理道具/機材の用意
    • コンロ
    • フライパン
    • フライ返し or 箸
  • 調理
    • 玉子を割る。
    • フライパンに油を引く。
    • フライパンにハムを入れて焼く。
    • フライパンに玉子を入れて焼く。
    • 塩とコショウを振りかける。
    • など

 

パターン認識(似たような作業はあるか)
  • ハムも玉子もどちらも焼いて調理する。
  • ハムと玉子は同じフライパンで焼く。
  • ハムと玉子を焼く場合、ハム→玉子の順にフライパンに投入して焼く。
  • ハムと玉子はどちらも包丁やまな板を必要としない。
  • 塩とコショウはどちらも振りかける&順序は不同。

 

抽象化(注目すべきところや省けるところはないか)
  • コンロは加熱できればなんでもよい。
    • ガスコンロでも、IHクッキングヒーターでも、ラジエントヒーターでもよい。
  • フライパンは使用するコンロに対応していればよく、材質は不問である。
    • コンロがIHクッキングヒーターの場合、IH対応であれば鉄、ステンレスのいずれでもよい。
  • ハムの枚数、玉子の個数はお好みでよく、調理工程においては、焼く際の順序関係だけが重要であり、個数には大きく依存しない。

 

アルゴリズム(作業をどう組み合わせればよいか)
  1. 材料、調理道具/機材を用意。
  2. フライパンをコンロに載せる。
  3. フライパンに油を引く。
  4. コンロでフライパンを加熱する。
  5. フライパンにハムを入れて焼く。
  6. 同じフライパンに玉子を割り入れて焼く。
  7. 焼き具合をチェックする。
  8. 火が通っていなければ、「焼き具合をチェックする」に戻る。
  9. 火が通っていれば、焼けたハムエッグに塩とコショウを振りかける。
  10. フライ返しを使って、ハムエッグをフライパンから皿に盛り付ける。

※ゴミの処分、調理道具の洗浄などはここでは省略。

 

どうでしょうか?

「忙しくてこんなこと考えてられへんわ!」「こんなことを考えながら作ってたら美味しくないわ!」という印象が勝つかもしれませんが、実際は、ハムエッグを作ったことがある多くの人が、暗黙のうちに考えたり、やったりしていることだと思います。

ただ、こういうことを分析したり、考えて調理することで、「調理」という範疇だけでも、以下のような場合に、より効率よく作業ができる可能性があります。

  • 複数の料理を調理する。
  • レシピをアレンジして調理する。
  • 複数の家電を並行して使って調理する。
  • 洗いものをしながら調理する。
  • 別の家事をしながら調理する。

なお、もっと細かく分析していくならば、以下のようなことも考慮できるかもしれません。

  • 鉄やステンレスのフライパンの場合には・・・
    • 「コンロでフライパンを加熱する」と「フライパンにハムを入れて焼く」の間に「煙が出るまで待つ」があったほうがよいかもしれない。
    • コーティングされたフライパンの場合には、「コンロでフライパンを加熱する」と「フライパンにハムを入れて焼く」は逆のほうがよいかもしれない。
  • より美味しいハムエッグを作るためには・・・
    • 調理前に玉子を常温に戻しておいたほうがよいかもしれない。
    • 玉子の割り入れ方について「フライパンにより近い高さで」など条件が入るかもしれない。
  • 塩とコショウについては・・・
    • 人によっては醤油であるべきかもしれないし、盛り付け後にかけるべきかもしれない。
    • レシピの材料や工程には、これらを包含する「調味料」という単語を用いるほうが、より汎用的になって、万人がわかりやすいものになるかもしれない。

 

ソフト開発したり、家電の開発したりするときは、開発者がずっとこんなことを考えながら作っているかと思います。

 

計算論的思考を深く探求(さらに興味ある人用)

Wing氏のエッセー「Computational Thinking」

「計算論的思考(Computational Thinking)」の定義は、人によって差異がありますが、Wing氏のエッセー「Computational Thinking」が有名で、その文中に書かれている表現がいろんな人の指標になっています。

日本語訳は、こちら

原文の文中に、「Thinking like a computer scientist」という表現があります。上述の「コンピュータ科学者のように考えること」という解釈はこれに準じました。

 

本エッセーの内容は、「コンピュータ科学者」またはそれに近い人にとっては、「わかるわかる」ということも多いですが、技術的な用語も多いですし、特に序盤は思いをががーっと並べて書いてある感じなので、「今から勉強しようと考えてる人」などにとっては、なかなか読解が大変だと思います。健闘を祈ります!

 

BBC(英国放送協会)の解釈

情報教育が進んでいるイギリスでは、イギリスの公共放送局であるBBCが「Computational Thinking」の基本的な考え方を次のように定義付けています。

 

計算論的思考(Computational Thinking)の4つの礎石
  • Decomposition(分解)
    • 複雑な課題や仕組みをより小さくより扱いやすい部品に分けること。
  • Pattern Recognition(パターン認識)
    • 課題間や課題内において類似点を見つけること。
  • Abstraction(抽象化)
    • 重要な情報だけに絞って、不要な詳細部分を無視すること。
  • Algorithms(アルゴリズム)
    • 一歩一歩課題の解決策を導き出したり、課題解決に必要なルールを作りだすこと。

(出典&参考:What is computational thinking? – Introduction to computational thinking – KS3 Computer Science Revision – BBC Bitesize

 

上述の「BBC発信の情報」は、これを指しています。

ICT CONECT21主催のシンポジウム(2017年9月)(以下リンク)でも講演者が同礎石を解説しています。

 

タイトルとURLをコピーしました