kuwana-kbの開発/学習ブログ

プログラミング、クラウドインフラのWeb開発/学習ブログ

「The Rust Programming Language」 書評

こんばんは、 kuwana-kb です。

前回の書評からしばらく時間が空いてしまいました。 転職してしばらくドタバタしていたのですが、ようやく落ち着いてきました。 新しい職場では Rust を使っています。 Rust のキャッチアップのため「The Rust Programming Language」を読んだので書評したいと思います。

この本の紹介

f:id:kuwana-kb:20190926231552p:plain
The Rust Programming Language(日本語訳)

この本は、 Rust プロジェクトの公式ドキュメントであり、Rust の入門書です。Rust コミュニティでは「The Book」という呼称で親しまれているようです。 上に貼られているキャプチャをご覧のとおり、本書は Web 上で無料で公開されています。 元は英語の本ですが、有志によって翻訳された日本語訳もあります。 また、ブラウザ上で HTML で読むことができるのに加えて、 PDF で電子書籍としても読むこともできます。 内容はとても充実していて、質もさることながら量も多いです。 PDF に変換するとおよそ550ページに及びます。

原本: https://doc.rust-lang.org/book/
日本語訳: https://doc.rust-jp.rs/book/second-edition/

なお2019年現在、日本語訳は 1st Edition(v1.6, v1.9) と 2nd Edition が存在します。 言語仕様がアップデートされているため、 2nd Edition を読む方が良いでしょう。

ざっくり3行でいうと

  • Rust 入門におすすめできる1冊
  • 言語仕様以外の学びもある
  • 一部理解するのが難しい章もあったが、全体的にとても満足

この本の3つのポイント

1. Rust 入門におすすめできる1冊

本書は、 Rust 入門におすすめできる1冊です。解説は丁寧で、背景の説明もしっかりしています。 なぜそういう仕様なのか、なぜそういう名称なのかなどの疑問に答えてくれているので腹落ちします。 Rust を理解する上で難しいといわれる「所有権」や「ライフタイム」などについてもしっかりと説明がされていました。

この本は、細かな言語仕様を網羅的に解説しているわけではありません。例えば基本型や演算子の一覧だとかを1つ1つ細かく見ていくようなことはしていないです(付録としてはついてますが)。 どちらかというと各章で取り扱う概念を身に着けるために、実際にコードを書きながらトライアンドエラーを繰り返す形になっています。

2. 言語仕様以外の学びもある

本書を読んで驚いたことは、Rust の言語仕様以外の解説も充実している点です。 例えば、コンピュータの基礎知識で「スタックとかヒープはもちろん知ってるよね!」という感じで置いてけぼりにされることはなく、解説コラムがあります。 実際に「4. 所有権を理解する」ではスタックとヒープを、「12. 入出力プロジェクト:コマンドラインプログラムを構築」ではリファクタリングの方法やテスト駆動開発のやり方を実践的に解説しています。

他にも Rust におけるオブジェクト指向プログラミングの技法や Web サーバ構築を通じたシングルスレッド・マルチスレッドの解説もありました。

3. 一部理解するのが難しい章もあったが、全体的にとても満足

一部理解するのが難しかった部分もありました。 具体的には、「15. スマートポインタ」と「19. 高度な機能」の箇所です。 Rc<T>RefCell<T>unsafe とかですね…。 これはこの本の問題というより、私のレベルだったり言語仕様に起因することな気がしますが…。 実際、私のメモリ周りのイメージがあやふやなのがいけない気がしています。

まとめ

一部難しい箇所はありましたが、「The Rust Programming Language」は入門書としておすすめできる書籍です。 Rust 関係なく、純粋なプログラミングの教科書としても良いくらい素晴らしい出来だと感じました。 これがネット上で無料で読めてしまうなんて… Rust コミュニティのみなさん、本当にありがとうございます。

ちなみに私はまだ読めていないのですが、「実践Rust入門」という書籍も Rust コミュニティ内でよく話題になります(というか専用のSlackチャンネルがあります)。 「The Book」を翻訳された方が書いているそうで、そのうち読んでみたいと思っています。気になる方はぜひ手にとってみて感想を教えていただけると嬉しいです。

実践Rust入門[言語仕様から開発手法まで]

実践Rust入門[言語仕様から開発手法まで]