[第4回] 達人出版会 高橋征義の ITエンジニア向けおすすめブックガイド
みなさんこんにちは、高橋征義です。
前回から間が空いてしまってすみません。今回は少しタイトル数を減らしてお届けします。
圏論の歩き方委員会編『圏論の歩き方』(日本評論社)
かなり異色の圏論の本です。
圏論と言えば、関数型言語、特にHaskellと関係がある分野として名前があがり、最近Haskellも気になるしと思って何か本でも読もうかと「働く数学者のための圏論本」ことS.マックレーン『圏論の基礎』(丸善出版)辺りを手に取ったものの、まったく分からず辛い思いをされていた方も少なからずいらっしゃると思います(念のため解説しておくと、「働く〜」というタイトルは原題『Categories for working mathematicians』の直訳というか誤訳です)。
その理由として第1にあげられるのは、圏論についての本や記事ではそれなりの数学の知識が要求されるためです。働く数学者の方にとっては特に説明のいらないごくごく当たり前の数学術語も、大学で情報数学と工業数学をちょっと学んだ程度のプログラマにとっては全く意味不明なことも少なくありません。だいたい数学者が例に挙げる「具体的な例」というのも「要素が3つしかない群」とかだったりして、いやそれ具体的じゃなくて抽象的ではと思ってしまうわけです。とはいえプログラマにとっては「N個までの要素が格納可能な、pushとpopのメソッドがあるスタックのクラスStack」はすごく具体的なものに見えるので、この辺はほんとにジャンルの違いとしか言いようがありません。
まあそんなわけで数学方面の方が書かれた圏論の本は、数学の素養がないITエンジニアにはとても辛いわけですが、そんな状況を一変させるかもしれない本がついに現れました。それが本書『圏論の歩き方』です。
本書は数学の基礎がまったくなくても大丈夫……とは言い切れないのですが、あまり大学の数学科レベルの数学力はなくても、とりあえず気軽に読み進めようと思えるくらいには親しみやすい文体で書かれています(もっとも、読み進められるだけで理解できるかどうかはまた別の話です)。少なくとも「読み流しても大丈夫」「(この場では)厳密じゃなくても雰囲気で語ってもOK」という配慮がそこかしこに感じられます。なんか数学が得意な人たちが、学食とか大学近くの喫茶店に集まって気軽に雑談してるような雰囲気、というと、通じる人には通じるかもしれません。そんな感じの本です。
プログラミングと関係があるのは第4章のプログラム意味論のところや第5章のモナドのところでしょう。とはいえ、圏論の基本概念は第1章〜第3章でも出てくるので、ななめ読みでもいいから読んでおくことをお勧めします。ちなみに第6章もモナドの話ではありますが、正直よく理解できてないのであまり深くは触れません。とはいえ、途中でよくわからなくなったひとも、第8章・第16章の座談会を読んでみると、数学の人が思っている圏論についての考え方がわかって興味深いです。
圏論を勉強してるけどなんかしっくりこないので使ってる人の感覚を知りたいという人はもちろん、これまで圏論に興味がなくもないけど本格的に勉強する気力がなくて敬遠していた方も、せっかくなので本書でその雰囲気を味わってみることをお勧めしたいです。
編集 : 圏論の歩き方委員会
出版社: 日本評論社
発売日: 2015/9/9
出版社ページ http://www.nippyo.co.jp/book/6936.html
遠藤侑介『あなたの知らない超絶技巧プログラミングの世界』(技術評論社)
遠藤侑介さんと言えば、RubyのコミッターやBenjamin C. Pierce 『型システム入門 −プログラミング言語と型の理論−』(オーム社)の訳者の一人としてもよく知られている方ですが、IOCCCでの入賞歴でも超有名な方です。とはいえ「IOCCCを知っている人の間では超有名」という若干ニッチな留保がつくのですが、とにかくすごい人なのです。
どうすごいかは、本書で紹介されているプログラムをみると一発でわかります。
例えば「Quineリレー」(http://d.hatena.ne.jp/ku-ma-me/20141225/p1)。これは、「自分自身を出力する REXX プログラムを出力する Ratfor プログラムを出力する R プログラムを出力する (...略...) を出力する Scala プログラムを出力する Ruby プログラム」です。これはつまり、まずプログラムをRubyで実行すると、その結果としてScalaのプログラムが出力され、そのScalaプログラムをScalaで実行すると、今度はSchemeのプログラムが出力され、それをSchemeで実行すると……というのを100言語分繰り返すと、元のRubyのプログラムが出力される、というものです。理解できましたか?
もう一つ例をあげると、「山の手Quine」(http://d.hatena.ne.jp/ku-ma-me/20091130/p1)。これは、一種のASCIIアートになっているRubyスクリプトで、最初は「東京」から始まり、それを実行すると「有楽町」という単語を表すRubyスクリプトになり、それを実行すると今度は「浜松町」という単語を表すRubyスクリプトになり…というのをJR山手線の各駅について繰り返した挙句最後には一周して「東京」に戻る、というプログラムです。まあ、ひとことで言えば変態(ほめ言葉)という感じのプログラムですね。
このような、すごい発想のプログラムだけれど実際の計算そのものは実生活や業務ではまったく役に立ちそうもないプログラムを、本書では「超絶技巧プログラミング」と読んでいます。この超絶技巧プログラミングの世界を紹介している本なのです。
本書の前半では、このような超絶技巧プログラムが多数紹介されています。そのプログラムも驚くべきものですが、どうしてこういうプログラムを思いつくのか、その発想力にも驚くところでしょう。
さらにすごいのが本書の後半で、ここでは超絶技巧プログラムを作るための方法が惜しげなく披露されています。簡単にできるASCIIアートのための手法から、さらには音や画像までも対象にして超絶技巧プログラミングの真骨頂が明かされます。
本書さえ読めば誰でも簡単に超絶技巧プログラミングできるようになる、とまではいかなくても、その入口は垣間見ることができるのではないでしょうか。お勧めしたい一冊です。
著者 : 遠藤侑介
出版社: 技術評論社
発売日: 2015/9/25
出版社ページ http://gihyo.jp/book/2015/978-4-7741-7643-7
戸将平,馬場雪乃,里洋平,戸嶋龍哉,得居誠也,福島真太朗,加藤公一,関喜史,阿部厳,熊崎宏樹『データサイエンティスト養成読本 機械学習入門編』(技術評論社)
最後にご紹介するのは『データサイエンティスト養成読本』シリーズの最新刊、機械学習入門編です。
本書は『データサイエンティスト養成読本』『データサイエンティスト養成読本 R活用編』と出ているシリーズの3冊目で、機械学習についての基礎から最近話題の深層学習についてまで解説しています。大きく分けると第1部は解説、第2部はプログラミングという感じになっていて、論文は読めないけどコードは読める、という人でも背景から理解しつつコードもあって満足できるようになっています。
あまりこのシリーズをちゃんと読んでなくて(まじめに読んでたのはR活用編のJuliaのところくらいだったような……)、加えて機械学習にも詳しくない門外漢ながらも改めて思ったのは、「データサイエンティスト」という切り口でした。深層学習は「人工知能」という昔なつかしいバズワードと共にむやみに注目されている分野ですが、このジャンルもアカデミックな知識とガチのプログラミングの両方がハードルになっているのに加え、急速に注目を集めているせいもあって何をどこまで追いかければいいのかよく分からなくなる、という点が今ひとつとっつきづらい印象があります。そんな中、データサイエンティストという切り口では、ビジネスとの関わりというはっきりした目的意識を持っているため、アカデミックにもプログラミングにも対しても、いい意味で深入りしすぎないけど必要なところはちゃんとやる、というところがあるようです。
もっとも、この手のムックの性質上、どうしても広く浅くというきらいはあって、本書も少し駆け足気味のところもありました。この辺は良し悪しで、最近の情報を手広くまとめてくれてるからそこはそれで、という割り切りも必要でしょう。
「データサイエンティスト」というロール自体は昨年空前のブームを迎え、今年は少し落ち着いたようにも感じられますが、本格的な普及期に入ったとも言えるでしょう。アプリケーション開発者やインフラエンジニアともまた違った、プログラミングを武器とするエンジニアのロールとしても、改めて注目が集まることを期待したいです。
著者 : 比戸将平,馬場雪乃,里洋平,戸嶋龍哉,得居誠也,福島真太朗,加藤公一,関喜史,阿部厳,熊崎宏樹
出版社: 技術評論社
発売日: 2015/9/10
出版社ページ http://gihyo.jp/book/2015/978-4-7741-7631-4
おわりに
そういえばコンピュータ書ではないので本欄では紹介しませんでしたが、唐木元『新しい文章力の教室 苦手を得意に変えるナタリー式トレーニング』(インプレス)が面白かったです。本書で紹介しているのはWeb媒体でのニュース記事の書き方で、技術文書の書き方とは異なるところもありますが(例えば本書では「重複」が嫌われていますが、技術文書ではむやみに変化をつけられるより敢えて単調な繰り返しの方が好まれることも多い等)、読み物寄りの文章を書く際には参考になることもあるかと思います。興味のある方はどうぞ。
それではまた来月お会いしましょう。