ローファイ日記

出てくるコード片、ぼくが書いたものは断りがない場合 MIT License としています http://udzura.mit-license.org/

読んだ: 詳解 Rustアトミック操作とロック

www.oreilly.co.jp

ちょっとしたご縁があり読む機会がありました。感想を残しておきます。あと、1ヶ月に1回は技術ブログ記事書かな〜ということで...*1

最初に全体的な感想を残しておくと、この本は僕のように漠然と型を書き、 Clone::clone() を呼び、深く考えずに Rc<RefCell<T>> なメンバを増やしていたようなRustプログラマが次のステップに行くに当たって、重要なことが書かれているように思います。

一読で全てを理解するのは難しいのでは?とも思うのですが、マイルストーンとなる本なのは間違いないと思います。

『詳解 Rustアトミック操作とロック』はRust標準ライブラリのメンテナMara Bosが著しました。Rustで並行プログラミングに必要な道具を作ることを通して、Rustらしいプログラミングとは何かを学ぶ本だと思っています。

この本を手に取る前に、前提としてスピンロック、Mutex、チャネルのような並行プログラミングの基本的な道具の知識はあった方がいいと思います。僕はGo並行本を読み返したりしました。とはいえ、基本概念は本書でも解説をしており、メモリオーダリングなどについては雰囲気もわからんという状態でしたが、なんとかキャッチアップできた気がします。なのできっちり並行プログラミングについて理解していない状態でも読み始められます。

そして、この本ではスピンロック、チャネル、Arc、Mutex/ロックといった並行プログラミングの基本的な道具を... 自作していきます。そして自作を通じて、Rustの言語機能がどのようにこういった低レイヤプログラミングに役に立つのかを理解していく、という構成です。

個人的には以下のような内容に学びがありました。

  • 雰囲気で理解していたメモリオーダリングとは?
  • PhantomeData って存在は知ってたけどいつ使うの?
  • アトミック操作の各種API
  • Rustのコンパイラーヒント std::hint
  • 「一つしかないこと」を保証するためにRustの所有権を使うパターン

などなど...。これらの内容をWebの断片的な情報で学ぶのは難しそうに思います。

全体を通して「原理原則を大事にする」「手を動かして理解する」という姿勢が一貫していて、読んでいて非常に気持ちがいい本です。また、翻訳もこなれていて十分読みやすいかなと思います。

また、そこまで分量が多くなく、むしろ何度も丁寧に読むような本かなと思いました。Rustと親しくなりたい人はぜひどうぞ。

(表紙絵がヒグマなのもめちゃくちゃいいですね)

*1:今月は会社の方には書いたんですよ: https://tech.smarthr.jp/entry/2025/05/19/122754