日頃Webアプリケーションを作成しているのですが、もう少し低レイヤのことを知りたくなりました。
コードを書きながら進めたほうが理解が早いだろうと思ったので、何か良い本がないかを調べたところ、書籍「Rustで始めるネットワークプログラミング」がありました。
著者の方のBlogには目次や対象読者などが詳しく書かれており、自分が知りたい低レイヤ方面だったため、ちょうど良さそうでした。
「Rustで始めるネットワークプログラミング」を出版しました。 - teru_0x01.log
また、Rustもさわってみたかったので、この本を写経することにしました*1。
内容は、Blogでもふれられている通り、Rustの文法についてはほぼ記載がありませんでした。
とはいえ、この本に期待していたのは「Rustでネットワークプログラミングする時の書き方やライブラリを知ること」だったので、特に問題ありませんでした。
文法は手元に
などのRust本を置いておき、必要に応じて参照するようにしました。
一方、期待していた「Rustでネットワークプログラミングする時の書き方やライブラリを知ること」には満足しました。
ソケット通信から始まって徐々に題材が深くなり、Webサーバを作り、最後にはRFCを読み下しながらDHCPサーバを作るなど、題材も豊富でした。
Rustの書き方についても、例えば、個人で進めると悩むような ?
演算子の使用例があり、こんなふうに使うんだと体感しました。
Rust のエラーハンドリングはシンタックスシュガーが豊富で完全に初見殺しなので自信を持って使えるように整理してみたら完全に理解した - Qiita
他にも
- mut
- &
- ブロックを値として扱う
- 戻り値と末尾セミコロン
- Cargoの使い方
なども普通に使われていました。
言語をさわり始める時に、言語仕様をまとめたドキュメントを読むよりも、何かを作っていくほうが言語を理解しやすい自分にとっては、とても合っていた書籍でした。
とはいえ、まだまだ理解したとはいいがたいので、写経の内容を振り返りつつ、色々と手を動かしていこうと思ったのでした。
https://github.com/thinkAmi-sandbox/syakyo-starting_network_programming_with_rust
良い本をありがとうございました。
*1:実際に写経したのは8月頃ですが、記事にできてなかったので忘れないうちに書いておきます