はてなブログ、はてなブックマークといった人気Webサービスや、サーバ管理・監視ツールのMackerel(マカレル)などを開発・運営する株式会社はてな。同社でチーフエンジニア兼Mackerelサブプロデューサーを務めるのが松木雅幸さんです。
松木さんは、はてなのテクノロジーの中核を支えるのみならず、自身が開発したPerlモジュールをCPAN(※)にアップロードしたり、Goでライブラリを書いたり、書籍を執筆したりと、その活動領域を社外にも積極的に広げています。
彼はこれまでどんな本を読み、そこからどのような知見を得てきたのでしょうか。今回は、松木さんがおすすめする珠玉の書籍をご紹介します。
※CPAN …Perlのライブラリ・モジュールやその他のPerlで書かれたソフトウェアを集めた巨大なアーカイブ。
Webエンジニア必読の良書。『Real World HTTP ―歴史とコードに学ぶインターネットとウェブ技術』
渋川 よしき (著)
『Real World HTTP ―歴史とコードに学ぶインターネットとウェブ技術』オライリージャパン
――本日はよろしくお願いします! 1冊目の『Real World HTTP ―歴史とコードに学ぶインターネットとウェブ技術』はどんな本ですか?
松木:これは、Webエンジニアの必須知識であるHTTPプロトコル(以下、HTTP)について解説された本です。2017年6月に出版されたばかりで、かなり新しいですね。
――世の中にHTTP関連の本は山ほどありますが、この書籍が他よりも優れている点は何ですか?
松木:HTTPの“最新技術”が解説されている点です。
過去に出版されたHTTP関連の本にも名著はたくさんあります。でも、Web技術は進歩し続けているため、それらの書籍に書かれた内容は徐々に古くなっており、現代にマッチした新しい本が求められていました。
その状況でこの本が登場したことに大きな意味があったんです。これには最新版のTLSやHTTP/2などについても詳細に書かれていますし、HTTP0.9から現代に至るまでのHTTPの歴史も網羅されています。
コード例を交えながら解説されている点も素晴らしく、レベルの高いエンジニアも満足できる内容になっています。コード例がGo言語(※)で書かれている点も個人的にはポイントが高いです。
この本を読むだけでHTTPの仕様にかなり詳しくなれるでしょう。Webエンジニアにとって必読の良書だと思いますね。
※Go言語…Googleによって開発されたプログラミング言語。シンプルでバランスの取れた言語仕様であり、習得が比較的容易。メモリの使用効率が良くパフォーマンスに優れているなど、数多くのメリットがある。
人の知能はプログラミングできるか否か。『心の社会』
マーヴィン・ミンスキー (著), 安西 祐一郎 (翻訳)
『心の社会』産業図書
――次は『心の社会』。これはどんな本ですか?
松木:これは人工知能を専門とするコンピュータ科学者のマーヴィン・ミンスキーが執筆した本です。初版が出版されたのは1986年。人工知能書籍の古典です。
――30年近くも前に、人工知能の書籍が登場していたんですね!
松木:そうなんです。この本には「人間の脳内にはさまざまなプロセスが同時並行で走っていて、それらが協調することで意識や思考が生まれる。だから、その仕組みをプログラムで再現すれば人の知能をつくることができる」という内容が書かれています。
この本が出版された当時は「人の知性はプログラミング可能である」という思想そのものが相当に物議をかもしたそうです。でも、約30年前にこうした思考実験があったことには大きな意義があると、私は思います。
――マーヴィン・ミンスキーの提唱した理論は、現代でも使われているんですか?
松木:以前は、この本のように人間の内部を想像しながら思考実験をするような「内からのアプローチ」が多く見られました。
ですが最近はコンピュータの性能も飛躍的に上がり、理論も進化して来たという背景があり、コンピューターに多くの計算をさせてトライアンドエラーを繰り返しながら人間の振る舞いに近づけていく、つまりアウトプットを人間に合わせていくような「外からのアプローチ」が多くなってきていると思います。
過去と現代の人工知能研究の違いを知る意味でも、ぜひ読んでみてほしい1冊です。
世の中には毒も薬もない。『薬膳と中医学』
徳井 教孝 (著), 張 再良 (著), 三成 由美 (著), 郭 忻 (著)
『薬膳と中医学』建帛社
――次は『薬膳と中医学』。非常にユニークな選書ですが、この本をピックアップしたのはなぜでしょうか?
松木:私は中国が好きなんです。大学時代に中国語を学んでいましたし、卒業後も中国へ渡ってITベンチャーの立ち上げに関わっていました。それから料理もすごく好きで、中華料理やお菓子をつくったりもしています。
『薬膳と中医学』はその2つの要素を含んでいる本なので、自分らしい選書かなと思って挙げてみました。
――薬膳や中医学は、西洋医学とどのような点が異なっていますか?
松木:薬膳や中医学の根底には「世の中には毒も薬もない」という思想が流れています。
簡単に説明すると、すべての食べものは「体を温めるもの」「体を冷やすもの」「体を潤すもの」「体を乾かすもの」「循環をよくするもの」「循環を悪くするもの」のいずれかに分類でき、体の状態に合わせてそれらを適切に摂取すべきだという考え方なんです。
その考え方自体が非常にユニークですし、「すべてのものは、状況次第で毒にも薬にもなり得る」という発想は、さまざまな分野にも通じるものだと思っています。
問題の本質は何か、見極める。『イシューからはじめよ』
安宅和人 (著)
『イシューからはじめよ―知的生産の「シンプルな本質」』英治出版
松木:『イシューからはじめよ』は、課題解決のノウハウが解説された本です。「価値のある仕事をしたいのならば、自分が本当に取り組むべき課題(=イシュー)が何かを見極め、それに注力しなければいけない」という内容が書かれています。
――この本が優れているのはどういった点ですか?
松木:課題の実例や課題解決に役立つ具体的な手法が解説されている点です。それに、この本自体が言わばイシューにフォーカスされており、内容がコンパクトにまとまっているので読みやすいんです。
この本は、はてなのチームメンバーにもぜひ読んでほしいと思っています。同じ本を皆で読むことで読んでおくことで、メンバー全員が課題の抽出方法や解決方法の「共通言語」を持つことができますから。
大切なのは、持ち球の精度を上げること。『真っ向勝負のスローカーブ』
――『真っ向勝負のスローカーブ』は野球に関する本ですか?
松木:はい。著者の星野伸之さんは、80~90年代くらいに活躍した野球選手です。彼の特徴は、球速が非常に遅いことでした。
ストレートは125km/hくらい。球種も少なくてストレートとスローカーブ、フォークの3種類のみ。そして、スローカーブはなんと80km/hくらいでした。でも彼はストレートとスローカーブを織り交ぜて緩急をつけることで、バッターから三振を奪っていたんです。
この本には彼の野球理論が書かれているのですが、面白いのは「球種(変化球)を増やしすぎてはいけない」という考え方です。
なぜかというと、球種が多くなると練習時間が分散してしまい、1つひとつに充分な時間を割けなくなるからです。球種を増やすと、他の球種とのコンビネーションも練習しないといけない。
たとえば、カーブの後にストレート、ストレートの後のカーブ、と言う練習もやる必要があり、球種を増やすと実は掛け算で練習量が増えるというのが面白い考えだと感じました。星野さんはこの本の中で「球種を増やすよりも、今ある持ち球とそのコンビネーションの精度を上げることが重要だ」と解説しています。
それはエンジニアの仕事にも通じる概念です。色々な言語やツールを表面的に学ぶよりも、特定の分野を深く突きつめておくほうがいい。そうして培ったノウハウは、必ずその人の武器になると思います。
――なるほど。言うなれば、エンジニアとしての決め球を持っておくことが大切なのですね。
最後に、松木さんが執筆した2冊をご紹介!
――松木さん自身も、書籍を執筆した経験があるとか。
松木:そうなんです。私1人で執筆したわけではなく共著ですが『Mackerel サーバ監視[実践]入門』と『みんなのGo言語【現場で使える実践テクニック】』の2冊を出しています。
井上 大輔 (著), 粕谷 大輔 (著), 杉山 広通 (著), 田中 慎司 (著), 坪内 佑樹 (著), 松木 雅幸 (著)
『Mackerel サーバ監視[実践]入門』技術評論社
順に解説すると、『Mackerel サーバ監視[実践]入門』ははてなでMackerelの開発・運用に携わったメンバーが執筆した「Mackerelの公式説明書」のような位置づけの本です。
Mackerelはサーバー管理・監視のためのSaaSですが、元々はてなで内製、運用していたサーバー管理ツールが起源になっており、インフラ管理の中核として利用できる奥深いサービスです。この本は、Mackerelの設計思想から使い方までを網羅的に解説しているので、初心者にもわかりやすいと思います。
――『みんなのGo言語【現場で使える実践テクニック】』はどういった内容ですか?
松木:この本は、ある程度Go言語の基本を学んだ方が、その次のステップとして読むことを想定した内容になっています。
Go言語を用いてプロジェクトを始める際に、どういうディレクトリ構成にすればいいのか、どういったツールを使うべきなのか、テストの方法はどのようなものかなど、開発に必要な情報を徹底解説しています。
Go言語は最近人気が出ていますし、これから始める方も多いと思うので、ぜひ読んでもらえると嬉しいです!
――どの本もエンジニアにとって有益なものばかりでしたね。今回は丁寧な解説をありがとうございました!
取材協力:株式会社はてな