共訳した本、「入門eBPF」の宣伝

12/9に「Learning eBPF」という本の和訳版、「入門eBPF」という本をudzuraさんと2人で翻訳しましたので宣伝しておきます。

原著はこちら

和訳版はこちら

どういう本か

Linuxカーネルの機能の一つであるeBPFについての入門書です。ユーザはC言語Pythonなどでプログラムを書いて、それをカーネル内に読み込んで実行させるという機能です。カーネルコードに手を入れたりカーネルモジュールを作ったりせずにカーネルの情報を取得したり、ネットワーク周りの一部カーネル機能についてはカーネルの挙動を変更したりできます。著者はeBPFを使い倒していることで有名なCiliumプロジェクトのメンバーであるLiz Riceさんです。

本書を読むのに必要な知識

上述の通りeBPFを使うにはプログラミングをする必要があるので、なんらかの言語でのプログラミング経験があると思います。とくにC言語の知識があるとよいでしょう。文中でC言語についての簡単な解説があるので、C言語の経験がなくてもなんとなく理解できるようにはなっています。

カーネルの中身とはいかないまでもシステムコールが何であるかといったカーネルとユーザ空間のインタフェースについての知識はある程度必要だと思います。そこがまったくわかっていないとeBPFの意義がそもそも理解できないと思います。

推しポイント

本書のタイトルには「入門」が入っています。ここでいう入門には2つの意味があります。

  1. 「eBPFとはどういう機能なのか、どうやって使うのか」という意味での入門
  2. 「どういうしくみで動いているのか」についての入門です。

1については序盤の章でハンズオン形式で丁寧に説明してありますので、eBPFについて全く知らないかたでも「なるほどなあ」とコードを打ち込みつつ進められるかと思います。「こんなことができるのか…」ということを感じていただければいいかと思います。本書はあくまで基本的な使い方を説明しているだけで実用的なeBPFプログラムを書く方法を説明をしているわけではありませんが、そのようなプログラムを書きたいかたに向けて豊富にリンクが張られているので、参考にするとよいでしょう。日々ものすごい速度で開発が進んでいる、かつ、マニアックな機能だけに、リンク先は書籍ではなくWebサイトが中心です。

2については、実行ファイルの構造などの低レイヤあたりの知識がないと読みこなすのがなかなか大変ですが、eBPFの実行環境がいかに凝ったことをしているかがわかるので、楽しく読めるかと思います。「ユーザが書いたプログラムをカーネルの中で実行させるなんて危ないのでは…」という疑問を持っているかたは、ぜひ検証器(verifier)やしくみを見てください。余談ですが、eBPFのしくみについて書かれている章はLizさんの筆が乗っているのがわかり、筆者のeBPFについての愛が伝わってきて、見てるこっちまで楽しくなってきます。

補足

発売日当日にイベントを開催して本記事と似たようなことをしゃべっているので、そちらもどうぞ。

www.youtube.com

おわりに

技術的にアツくて高度な本なので、eBPFを使い倒したいかたもそうでないかたも、ぜひごらんください。

おわり