実践Rust入門

はじめに

著者の皆様から本書をいただきました。本当にありがとうございます。

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

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

本の大まかな構成は次の通りです。

  • 第1部基礎編:Rustの特徴や文法
  • 第2部実践編:パーサパッケージWebアプリケーションFFIの実践的な使い方の例と解説

全体を通して、動くサンプルコードで学べるようになっている点が、本書の大きな特徴だと思います。 println!かテスト(assert!, assert_eq!マクロ)ですぐに動作を確認できるコードが多いです。

また、Rustに入門するにあたり、エラーとの格闘はつきものですが、 本書では、こう書くと、このようなエラーが出て、その理由はこうで、直し方は〜、というエラーの解説まであり、入門者に親切な作りになっています。

Rust入門のための1冊として、自信を持って推奨することができます!

以下、個人的に特筆したいと思った2点について書きます。

  • なぜRustなのか?
  • FFI

なぜRustなのか?

第1章では、Rustの特徴が記載されています。 その中には、なぜRustなのか?という節があります。

  • 1-4 なぜRustなのか?
    • 1-4-1 トップクラスのパフォーマンス
    • 1-4-2 安全なシステムプログラミング言語
    • 1-4-3 生産性を高めるモダンな機能
    • 1-4-4 シングルバイナリ、クロスコンパイル
    • 1-4-5 他言語との連携が容易

Rustを導入していく際に、説得材料にできるような内容がまとめられています。 私個人でも、なぜRustが良いのか、という部分は資料を集めに時間をかけたため、Rust普及活動したい方がそこにかける時間が減らせる本書が出たことは、非常に意義深いです。

FFI

C言語との連携について書かれた章です。 現状、同様の日本語ドキュメントはないと思います。

私が主に活動している組込みに限らず、C言語の資産を活用することは避けて通れない道です。 C言語との連携の話をすると、多くの場合「unsafe地獄にならないですか?」という質問を頂きます。

章の冒頭に書かれている通り、RustとC言語の橋渡しを作ることは、Rust単体やC言語単体のプログラミングよりも困難なことが多々あります。 動的確保したメモリを、RustとC、どちらで解放するか、を意識しながらラッパーを書く部分など、慎重な設計が必要で、デバッグも難しいです。

ただ、1度unsafeを閉じ込めたAPIが作れると、Rustらしい安全で生産性の高いコードを記述することが可能になります。 FFIの章では、Rust風のラッパAPIを作っていく手順が丁寧に説明されており、多くのRustユーザーにとって有用な内容になっています。 本書で書かれているレベルのことができるようになるまで、自分で色々調べたり、試行錯誤が必要だった状況が大幅に改善されると思います。

他の書評など

私は興味のある部分がニッチですので、ここだけでは判断できない!という方々は、ぜひ他の方の書評を読んで頂ければ、幸いです。

  • 著者の一人であるκeenさんの記事

keens.github.io

  • Rust勉強会でよくLTされているyukiさんの記事

yuk1tyd.hatenablog.com

  • Rust LTなどを主催されているdorayakikunさんの記事

medium.com