『センスメイキング』(プレジデント社)を手にした。
実はほぼ同じ主張をしている同じ著者の本『なぜデータ主義は失敗するのか?』(早川書房)を少し読んだことがあった。
簡単に書けば,データサイエンスといった自然科学的な手法に圧倒されるばかりでなく,人文社会科学的なセンスメイキングもお忘れなくという主張である。もう少し踏み込んで書けば,センスメイキングの方がより重要だということだ。
実はどちらの本にも,プラグマティズムの創始者として知られるチャールズ・S・パースが整理した「アブダクション abduction」(仮説形成)のことが触れられている。これは推論方法の一種で,よく知られている「帰納法」(induction)と「演繹法」(deduction)に並ぶ第3の方法とされている。
もともとは近代科学の方法を探究していたベーコンによって,単純枚挙による帰納法ではない「真なる帰納法」として模索されていた手法であり,その日本語訳が想起させるように,問題に対する仮説を形成した上でそれを検証するというものだ。単なる帰納法とも演繹法とも違う。
それで宿題を思い出した。
—
以前,ブログに「プログラミング的思考と論理的思考」を書いた。
そこで「問題解決に際して,帰納的思考を展開するのか,演繹的思考を展開するのか。そういう観点からプログラミング的思考と論理的思考を位置づけて論じること」もできるかも知れないと書いて,そのままにしていたが,ここに「アブダクション」(仮説形成)が登場する展開になるであろうことは容易に想像がつく。
端的に書けば,プログラミング的思考とはアブダクション(仮説形成)による思考のことである。
「プログラミング的思考」なる言葉を持ち出した人々が意図しているのは,プログラミング的思考の育成によってアブダクションにもとづく思考方法や手法が育成されることだといえる。
ところが,そのことを明確に意識して論じたものがほとんどないため,プログラミング的思考を論理的思考として検討する際に,帰納法的に捉えたり,演繹法的に捉えたりする視点が混在してしまい,議論が迷走してしまうのである。
たとえば,プログラミングにおける「順次」「分岐」「反復」という要素について,これらを用いてアルゴリズムを考えることが重要であるといった理解は,プログラミング的思考の演繹的な部分だけを見ているだけに過ぎない。
また,意図する動きを実現する方法に[いくつかの模範解答があると考えて、それらから記号や組み合わせを学ぶといった捉え方も帰納的な部分を試みているに過ぎない。]正解はないのだからどんな命令や記号でもよい,といった多様な方法を許容するという考え方は,逆に単純枚挙な(帰納的)態度が行き過ぎたものにも似たように捉えられる。コンピュータプログラミングには,計算処理コストなどの現実的な制約が存在する。(訂正:当初書いた内容だと、むしろ「真なる帰納法」に」近いものになってしまうことに気づく。アブダクションは発見の方法であり、仮説をどんどん形成することにこそ意味があるのだから。)
ここに第3の方法である「仮説形成」手法がプログラミング的思考を指向する際の基調になり得る余地が見出される。
もともと,教育学でお馴染みのジョン・デューイによる問題解決学習に関する言説を見れば,プラグマティズムの考え方があり,よってアブダクションの考え方も自ずと反映されている。問題解決としてのプログラミング的思考にそれを重ね合わせる考え方もそれほど目新しいものではないだろう。
しかし,いまだ「プログラミング的思考」にまつわる論説や議論において,明確な特性を示しえていない状態が続いているため,プログラミング的思考を「どのように扱うのが妥当であるか」の基準を個々の教員に持たせられないでいる。
ここではっきりと「プログラミング的思考とはアブダクションによる思考である」と措定し,問題解決の文脈で展開されてきた仮説形成と検証の蓄積を土台にしてコンピュータや情報通信技術の課題に取り組んだ方が,同じ悩むとしてももっと明確に悩めるのではないかと思う。