全体を通しての感想
技術書は今しか読めない部分(サポートがあるとはいえ、徐々に古くなってしまう)と後で読んでも嬉しい部分があると思います。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 電卓
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, コミュニティなどの話はすでに知っていることが多かった。