『教養としてのプログラミング講座』
清水 亮(著)
2014年
中央公論新社
☆☆
「中公新書ラクレ」の「489」。読み物としてのプログラミング講座、なのだが…。
「コンピュータ・プログラミング」というものがいったいどういうものなのか「興味はあるが、チャレンジする気はない」というような読者を対象としたプログラミング読本。「する気もある」という読者には…、向かないと思う(一応第4章として、WEB上のヴィジュアル・プログラミング環境「MOONBlock」でのプログラミングに関する記述はあるのだが…)。著者としては、本書をIT産業に携わっているプロにも楽しめるような本にしたかったようで、職業プログラマならではの深い洞察に触れられるのではないかと楽しみにしていたのだが…、正直期待外れだった。むしろ、久々にツマラナイ本だった(涙)。
全5章構成。「プログラミング」という概念は、単にプログラミング言語でコンピュータ・プログラムを書くという狭い意味に限定すべきものではなく、日常生活における全てに「プログラミング」要素が含まれている、だから「プログラマの思考法」を身に付ければ、実生活にいくらでも応用が効くのだ、というようなことを熱く語っている本なのだが…、どうも著者の想いが空回りしているような気がする。本書のモトになっているのは、大盛況だという「ゲンロンカフェ」での講座「ノンプログラマー・プログラミング入門」や、成蹊大学での経済学部の学生を相手にした講義・演習。と言うことは…、その場でオーディエンスを魅了する話術やプレゼン力はあるが、1冊の本を構成するだけの文章力がない、ということなのだろうか…? 内容そのものというより、まとめ方・編集方針が悪い?
正直、著者が「教養」という言葉をどういう意味で用いているのかよくわからない。プログラミングについての著者の考えを断片的に並べただけのような本なので、「お話としてのプログラミング講座」というコンセプトならまだわかるのだが…。ただ、「お話」でいいのなら、例えば池上彰の方が面白い「お話」を聞かせてくれるだろう。池上彰にはできない「プログラマの思考法」「プログラマの見ている世界」を見せてくれる、というのが本書のウリのハズなのに…、それが見えてこないのだ。
更に言ってしまえば、本書で「プログラマの思考」として取り上げられているものは表層的なものに終始していて、この人、本当にプログラマなんだろうか?という印象(本人の弁によれば、6歳でプログラミングを始め、キャリアはおよそ30年。ただし、職業プログラマとしての職歴は4〜5年、だそうだ)。スティーブ・ジョブスやビル・ゲイツの見ている世界がこんなものであるハズがない。おそらくプログラマと一口に言ってもいろんなタイプの人がいるのだろうが、著者自身は企画力やその実現力、組織作り、異業種とのコラボレーション、といった領域で特に能力を発揮している人なのではないかと思う。
だいたい「プログラミング」という言葉をあまりに多義的に使い過ぎているのだ。著者にとって「プログラム・プログラミング」とは、
・明確に定義された作業指示書
・作業を効率的に行う「巧いやり方」
・作業を標準化・自動化する仕組み
・他者を従わせるための社会制度(慣習・法律・政治・宗教を含む)
・他者を思い通りに動かす心理的テクニック
までを含む幅広い概念であるようだ。それはそれでいいのだが…、それを整理せずに、これもプログラミング、あれもプログラミング、と思い付くままに並べるような本なので、結局「全てはプログラミング」というまとまりのない本になってしまっている。これでは「全ての道はプログラミングに通ず」と言ったところで(言ってないが(笑))、説得力はまるでない。そもそも「全てがプログラミング」なのだから。
残念ながら著者はまだ若い。若過ぎる。文章自体は読み易いが、(「教養」という言葉の使い方1つを見ても)自分の言葉が自分の言いたいことをどれだけ精確に言い表しているかについて、案外鈍感な人なのかもしれない。あるいはこれは読み易さへの配慮なのかもしれないが、著者の頭の中にある論理構造をそのまま文章として書き表していないような気がする。頭の中は論理的でも、書き出されたものは論理的ではない。そういう文章を読み続けていると、少しずつ少しずつストレスが溜まる(しかも、読み易いからスイスイ読めて、どんどんストレスが溜まる、という皮肉(笑))。持ち出してくる例はどれも微妙にピント外れだし、そもそも主旨がズレているものも多い。大事なことと大事じゃないことの扱いに差がないため、論旨が見えにくくなってしまっている(プログラミングの例えで言えば、全くインデントしていないコードのよう)。著者が技術者としての経験と直観で見抜いた「プログラミングの本質」をこれまでプログラミングとは無縁に過ごしてきた読者に伝えることは到底できていないのではないかと思う。むしろ、自分の視点から見えている風景を他者に伝わるように言葉で表現することが苦手なタイプの人にすら見える。章末コラムの「コンピュータの誕生と進化」も付け焼刃的でハッキリ言って底が浅いし…。言葉に含蓄や深みというものがなく、「教養のない著者による『教養としてのプログラミング講座』」といった印象。…さすがに言い過ぎかな。言い過ぎじゃないんだよな…。
いや、まぁ言いたいことはわかるのだ。人類が歴史的に直面してきた(あるいは、人々が日々直面している)多くの課題を克服するために、人類(人々)はそれこそ歴史的に様々な「巧いやり方」を編み出してきた。プログラミング技術もまさにそうした「巧いやり方」として発展してきたものの内の1つなのだし、また他の「巧いやり方」のエッセンスを意図的に採り入れたりもしている。確かに著者の言う通り、プログラミング技術は「人類の叡智」の結晶のようなものだ。だからこそ、プログラミング技術として抽象化されている「原理」の観点から我々が日々直面している具体的な課題を見てみれば、その具体性が捨象され、問題の論理構造とその効率的な解決策が見えてくる(あるいは、解決の本質的な難しさが見えてくる)。「原理」として一度抽象化されているおかげで、却って具体的な事例に当て嵌めやすくなる(それが「『理論』という色眼鏡をかける」ということだ)。そういう見方ができるようになると、これまでコンピュータ・プログラミングの世界に特有な、他に応用しようのないテクニックとしか思えなかった様々な技術が、本来誰にとっても有用な強大な武器であったことに改めて気づくことができるのだ。だから今こそ、「教養としてのプログラミング・スキル」を誰もが身に付けましょう、と、そういうことを言いたいんだと思うんだけど…。
逆なんだよな、と感じる。僕の考えでは、この世の様々な「巧いやり方」の原理を応用するかたちでプログラミング技術が発展してきたのだと思うのだけど、著者の言い方だと、プログラミング技術が高度に発達して、それによって初めて現実世界の様々な問題解決に応用可能になったと考えているように見える。両者の間に本質的な類似性や関連性があることには同意するが、視線の方向が逆向きなのではないかと感じる。プログラミング技術における「プログラマの思考法」を見たってしょうがない。プログラマの思考法で「世界」を見る、その「世界を見る目」がまだまだ甘いのではないかと思う。
本文180ページ程度。

0