コンピュテーショナル・シンキングはどこにでも - 書評「マンガでやさしくわかるプログラミングの基本」
プログラミング教育狂想曲
2020年から小学校でプログラミング教育が必修化される、というニュースが伝わって以来、さまざまなメディアがプログラミングについて取り上げるようになってきました。つい先日も「AERA」に「プログラミング思考で会議も家事も変わる」という記事が掲載されたばかりです。
「小学校の授業として導入される」のが発端なので、最初のうちは「Scratch」などを題材にした子供向けの入門記事が大半でしたが、徐々に大人たちの危機感を反映したのか、いままでプログラミングに縁がなかった大人をターゲットにした内容も増えています。
しかし、「プログラミング教育」というキャッチーなフレーズが一人歩きして、バズワードになっている感は否めません。子供向けにScratchやMOONBlockなどのビジュアルプログラミング言語を紹介し、あとは適当にプログラミングができないことへの危機感を煽っておしまい、という内容のものを、ずいぶんたくさん見たように思います。
本当に大切なのは「計算機を使った問題解決の方法を学ぶ」ことであるのは言うまでもありません。人間がクリエイティブな作業に集中するために、単なる計算や繰り返し作業はコンピューターに任せてしまおう、そのための考え方を小学校から授業に取り入れよう、というのが本来の趣旨のはずです。
身につけるべきなのは「コンピュテーショナル・シンキング」と呼ばれる、問題をコンピューターが解決できるようにするための考え方や知識です。問題を抽象化したりより小さく分解したり、あるいは一般化したりといった、ソフトウェアエンジニア(とりわけプログラマー)が普段行っているような能力が、これからはさまざまな場面で必要になってくるでしょう。
乱暴に言ってしまえば、コードを書いてプログラムを実行する「プログラミング」は、コンピュテーショナル・シンキングによって導き出された問題解決の手法を用いて、実際に問題を解決するための手段「でしか」ありません。「プログラミングができないとやばい!」と危機感を煽っただけで、実態は単なるコードの書き方をなぞるだけのプログラミング入門は、役に立たないどころか不誠実でさえあります。
「マンガでやさしくわかるプログラミングの基本」
本書はプログラミングの入門書ですが、身近で使い慣れた道具や設備もプログラムで動いている、ということを題材に、コンピュテーショナル・シンキングを身につける手助けもしてくれます。
「マンガでやさしくわかる」パート
本書はタイトル通り、ちょっと「あ〜る」や「パトレイバー」を思い出すタッチのマンガで始まります。営業職の女性が耳の長い架空の生き物と契約して、魔法少女になる...のではなく、開発者としてプログラミングを学んでいくというストーリーです。
マンガ部分は、プログラミングの初学者が感じがちなハードルを乗り越えることを通して、読者を勇気づけることに重点が置かれています。学習の合間にちょうどいい息抜きになりそうでした。
「プログラミングの基本」パート
プログラミングを実習するパートは、著者のキャリアを反映したのか、主にWeb開発をやってきた身からすると意外なアプローチが多くて、驚いたり楽しんだり勉強になったりしました。
実行環境にExcel / VBAを選び、例題として作るものがGUIの簡易電卓、というところにまず驚きました。Web開発の発想だと実行環境はChrome(などのMac / Windows両方で動くブラウザ)、言語は当然JavaScript、という構成がすぐに思いつきます。しかし冷静に考えてみたら、プログラミングを習得しようと一念発起するのは、普段Excelを使い慣れている事務職の方が多いのかもしれません。そうだとすると、一番身近なプログラミング環境としてExcelというのは理にかなった選択なのでしょう。
また、「プログラム作成シート」という開発手法も初めて知りました。「プログラム作成シート」とは、内部処理をスプレッドシートにステップ単位で書き起こし、それを元にフローチャートを書く、という使い方をするシートです。初学者にとっては、いきなりコードを書くよりも考えが整理できて理解が早い、というメリットがあるのでしょうか。
作成したプログラムをデバッグするだけでなく、「メンテナンス」として改善の工程があるところに好感を持ちました。見た目や操作性をよりよいものにしていくのは、継続的に使うプログラムにはとても重要なことです。
コンピュテーショナル・シンキングで問題解決の手法を手に入れよう
ということで、未経験のまま耳の長い生き物と契約してプログラミングを学び始めた女性は、見事プログラマーとして開発をやりとげ、プロジェクトを成功に導くのでした。
プログラミングそのもののスキルももちろんですが、コンピュテーショナル・シンキングを身につけることは、これからますます大切なスキルになっていくことでしょう。コンピューターに仕事をさせる手段を身につけることで、プログラマーの三大美徳である「怠惰・短気・傲慢」を正しい意味で理解し、人間がするべき仕事に集中する。エンジニアリング以外の職種にも、そういった人が増えてくるといいな、と願ってやみません。
(『Wife Hacks ~仕事と家族とコミュニティと~』コラムニスト kwappa)