実践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, コミュニティなどの話はすでに知っていることが多かった。