実践Rustプログラミング入門を読みました

全体を通しての感想

  • 技術書は今しか読めない部分(サポートがあるとはいえ、徐々に古くなってしまう)と後で読んでも嬉しい部分があると思います。Rust を昔少し触って The Rust Programming Book を途中で投げ出してしまったレベル感の自分には、とてもちょうどよく最近の情報がまとめられていて、読んでよかったと思いました。
  • そのような、最近の Rust の様々な Topic を一望できる本だからこそ、今読むべき要素が強く、時間が立つ前に読むべきだとも思います。今読みましょう。
  • 個人的に、4 章でコマンドラインツールを作るところでエラー処理を丁寧に紹介してあるのがよかったです。6 章の Wasm は一度少しやったことのある人にとっては物足りない気がしました。7 章の GUI は僕が手を出しづらいと感じていた分野という理由もありますが一番勉強になりました。
  • 実践が見れて、Rust でこういうことができるんだ!とイメージが広がったのがよかったです。ありがとうございます。

今後

  • Web 周りは Wasm, Actix-web ともに触ったことがあるので別のことがしたいです。
  • 僕は中規模のソフトウェアを Rust で作りたいという気持ちがあります。しかし一方でエラーハンドリングやファイル分割、設計がよくわからず手が出せないことも多く諦めていました。今回の本の 4 章でエラーハンドリングなど、だんだん組み立てていく感覚を得たので、その感覚をもとに 7 章の GUI で使われていた iced を用いてアプリケーションを作ってみたいです。
  • 組み込みの章は飛ばしてしまったので、秋月電子で部品を買ってみます。

ただの感想

1 章 Rust の紹介

  • コラム「機械語とはなにか」で触れられている 55 8B EC 81 とは何を指すのでしょう?ちらっと例えばで出てくるのでこれは知っている人にしかわからないネタなのかと思って調べましたが、わかりませんでした。

2 章 環境構築

  • ここは Rust 周りの環境を整えたいとき(OS を新しくインストールし直したときなど)に読むとよさそうです。
  • rls が賢くてびっくりしたのですが、rust-analyzer に移っていくとのことで、今後が気になります。

3 章 文法やツール

  • The Rust Programming Language を少し読んだことがあったのですいすい読めました。
  • Trait や iterator など、いままで僕の中で曖昧に覚えていた概念がわかりやすい言葉で説明されていたので、しっくり納得しました。
  • 新しく知ったこと
    • for, loop, while にラベルをつけられる
    • macro なので、vec![]だけでなくvec!()という表記も可能

4 章 RPN 電卓

  • エラーライブラリについて触れられていたのがよかった。個人的には thiserror のほうがエラーとそのメッセージをまとめて管理できそうなので好み。
  • Rust Blog の Announcing the Error Handling Project Groupによると、これらエラーライブラリの整理が入りそう?な気がするので今後の動向に注目
  • 実行パスへのインストールが楽なこと知らなかった。Rust で CLI tool を気軽にかけるのは覚えておこう。

5 章 Actix-web

  • Actix-web の example を試したことがあったのですいすい読めた。
  • Docker に触れられているのが嬉しくて、実際ビルド周りのテクニックは知らなかったので勉強になりました。
  • musl+MySQL を試して失敗したことがあるので、musl に詳しくなりたいです。

6 章 Wasm

  • これはほぼ似たようなことをしたことがあるのでコードを読むまでにとどめました。
  • ただ、後半の wasm が優位なのは計算量が大きいタスクのときという話は面白くて、実際 web で計算量が大きいタスクって何があるだろうと思ったのですが思い浮かびませんでした。もしかして、ブラウザで走る競技プログラミング向けの Sandbox とかがあると面白いのかな

7 章 GUI

  • ここが一番おもしろかったです。
  • iced は以前友人から聞いて気になっていましたが、Elm の思想など学習コストが高そうだなと感じていたのですが、Vue.js などで State とその更新という概念は知っていたのですぐに馴染めました。
  • はじめは Windows10 に入れている VMware 上の Ubuntu20.04 で環境構築しようと奮闘していて、Vulkan がどうやっても難しいことに気づきデスクトップマシンに Ubuntu20.04 を直接入れました。やはりドライバがからむとホストで Linux が最強という気持ちです。
  • 個人的には example のつくりがよいと感じていて、機能がいろいろあってこういう関数が存在しているのかと頭にとどめておけて、これから開発するときに変に詰まったりするのをふせげそうな気がします。

8 章 組み込みシステム

  • 組み込み初心者が読んでも、ある程度メモリとかのイメージがついていればわかりやすい構成になっていて、入門としてとてもよさそうです。
  • 僕は組み込みを知らないので、とりあえず読んでから秋月電子でボードを注文しようと思います。

9 章 cargo

  • cargo って思ったよりもたくさん機能があるんですね…ベンチマークなどはたくさん出ていてこれから収束していくのかなと思いました。
  • ディレクトリ構造の例が示されていて嬉しい。

10 章 プロダクト

  • 僕は学生なので仕事でそもそも必要なことがイメージしづらいのですが、却ってこういうことが必要とされているんだ、という知識を獲得できてよかったです。

11 章 Tips

  • マクロ、賢い人が作ってくれているんだなと感じました。いやほんとよくできてる。
  • パーサーなどの話から、もしかして macro を用いて言語を作ったりすると簡単に作れたりするんだろうかと感じた。
  • panic, unsafe, コミュニティなどの話はすでに知っていることが多かった。