統計学についての気軽な読み物として買ったものの、筆者の言わんとすることが全然頭に入ってこなくて上滑りし続けたので20ページくらいで読むのを断念。自分の中での統計学と筆者の中でのそれが大きく食い違っているらしくて、かつ、後者のほうに考え方を寄せる気になれなかった。無理矢理読み続けてもしかたがないので、やめ。
「周 - 理想化された古代王朝」
中国の古代王朝のひとつである周が興ってから滅びるまでについて書いた本です。殷 - 中国最古の王朝が甲骨文字をもとにして殷を知る本であるのに対して、こちらは金文をもとにして周を知る本です。有名な東周(春秋戦国)時代は後半でさらっと流すだけで、主となるのは比較的マイナーな西周です。かなり地味な内容ですが、西周時代がどんなものか全く知らなかったので楽しく読めました。最後に書かれている「祀」がどのように後の世に受け継がれたかというところが一番面白かったです。
「道路の日本史」を読んだ
道路という観点から日本の歴史を古代から現代まで振り返ったものです。古代のローマや中国を含めた諸外国の道路事情を含めたさまざまな挿話も含めて楽しめました。よいです。
「殷 - 中国最古の王朝」
中国最古の王朝である殷について、史記などの後代の文献資料ではなく殷代の甲骨文字をもとに解き明かした本です。限られた情報をもとに当時の様子を推測するさまがとてもよかったです。ここに書いている説がどれだけ真実なのか、過去を旅したくなりました。
[宣伝] 既刊同人技術書をDL販売することになりました&技術書典5に新刊を出す予定です
既刊のDL販売について
これまで筆者はフリーの編集者である風穴江さんと一緒に技術書典において"windhole"名義で同人技術書を販売してきました。その際、毎回のように「行き損ねた/買い損ねたのでDL販売をしてほしい」という声をたくさんいただいてきました。これを受けて、このたびDLMarketにおいて既刊4冊の電子版(後述の「おしながき」を参照)をDL販売することになりました。興味のあるかたは是非お買い求めください。DL販売の利点を活かして、適宜読者のみなさまのご意見の反映を含めた加筆修正をした上で再DLできるようにする見込みです。
今後は技術書典とDLMarketを以下のように使い分けていく予定です。
おしながき*1
図解でわかるMeltdown
2018年の年明け早々世間を騒がせたMeltdownという脆弱性についての解説書です。この脆弱性は前提知識さえあれば理解は決して難しくありません。しかし必要な前提知識の数が多い、かつそれぞれOSカーネル以下あたりの低レイヤのものが中心なため、一般的なソフトウェア開発者にとってはなかなか敷居が高いのが実情です。
本書はレイヤを問わずあらゆるソフトウェア開発者のためにMeltdownおよびその理解に必要な前提知識をひっくるめて図解しています。「この脆弱性について興味はあったもののなんだか難しそうなので手付かずだった。最短距離で手っ取り早く理解したい!」というかたにおすすめです。
Btrfsの薄い本
BtrfsというLinuxのファイルシステムについての解説書です。Linuxのファイルシステムといえばext4やXFSが有名です。Btrfsはこれら2つと同様の使い方もできますが、通常「Linuxのファイルシステム」と言われて普通の人が思いつくものとは大きく異なる豊富な機能を備えています。Btrfsはまた多くのLinuxディストリビューションで実際にサポートされています。
本書はこのファイルシステムが一体どういうものなのかという概要を書くと共に、それを読んでさらに興味が出たかたむけに使い方、トラブルシューティングから歴史までを説明しています。ファイルシステムについて新しい知識を得たいかた、刺激が欲しいかたにお勧めです。きっと「こんなことができるの?」と思うはずです。
近いうちに対象カーネルバージョンを更新すると共に新圧縮アルゴリズムzstd、および一般ユーザによるスナップショット操作についての記述を追加予定です。
カーネルモジュール作成で学ぶLinuxカーネル開発の基礎
Linuxカーネルを自分で改変するためには覚えておかなければならない作法があります。これらの作法は一旦わかってしまえば大したことはないのですが、やたらと数が多いので参入障壁が高いです。本書ではそのお作法をカーネルモジュールの作成という方法を通して学びます。まずは単純な機能を追加してから次第に複雑な機能を作り込んでゆくというインクリメンタルな説明方法になっているので、カーネルになじみのないかたにもとっつきやすくなっています。お作法のうちの大して重要ではないところについては自動化して飛ばすツールを紹介しているのもポイントです。
「Linuxカーネルをいじってみたいけど、何をすればいいのかさっぱりわからない」というかたにおすすめです。
近いうちに対象OSをUbuntu 16.04からUbuntu 18.04に更新予定です。
Linuxカーネルで学ぶC言語マクロテクニック(既刊。電子のみ)
Linuxカーネルのソースを読むにあたっての大きな障壁のひとつがトリッキーなC言語マクロたちです。本書はこれらのうちの多く使われていて、かつ初見殺しなものを抜粋して解説しています。これからLinuxカーネルソースを見てみたいというかた、およびC言語マクロ黒魔術の世界をのぞいてみたいかたにおすすめです。
近いうちに内容を追加する予定です。
技術書典5の新刊
10/8に開催される技術書典において新刊を出す予定です。
タイトルは「Ryzen SEGV Battle」です。この本は2017年に発売されたAMDのプロセッサRyzenの一部に存在した問題を、筆者を含む同問題に遭遇した人たちが一丸となって解決した話について物語調にまとめた本です。純粋に読み物として楽しんでいただいてもいいですし、トラブルシューティングの参考に使っていただくこともできるかと思います。カーネルやハードウェアなどの低レイヤの用語がたくさん出てきますが、適宜解説をつける予定です。乞うご期待。
おわりに
DL販売の諸手続きについては私は何もやっていなくて風穴さんがすべてやってくれました。この場を借りて御礼申し上げます。
*1:
「リーダブルコード」を読んだ
読みやすいコードを書くにはどうすればよいかというテーマを扱った本です。奇をてらったものはなく、順当なことが書いてありました。人に見られることを前提としたコードを書いたことがないかたは読んでみるとよいかもしれません。
本書は一度ざっと読んだ上でコーディング経験を積んでしらばくしてからまた読み返して…というのを繰り返して自分なりのスタイルを身につけるという使い方がよさそうです。なぜかというと、サンプルコードが非常に短いものばかりなこともあってコーディング経験が浅い人が本書をいきなり読んでも多分ピンと来ないからです。もう一つ言うと、人によって「リーダブル」の定義は違うので、単に本書の内容をうのみにするのではなく、筆者の考えかたをもとに自分のスタイルを身につけるとよいと思います。自分以外の誰かが書いたコードを読みながら、それがこの本、あるいは自分から見て「リーダブル」かどうか、そうでないとしたらどうすれば「リーダブル」になるのかを考えてみるのも面白いかもしれません。
最後に、本書そのものの内容ではないのですが、「これから書くコードは全部リーダブルにせねばならない」などという考えにとらわれるとプログラミングがつまらなくなってしまうので、楽しくプログラミングをしつつ徐々によいコードを書けるようにしていけばいいと思います。