ぼくのRust勉強記録

2020年頃からRustの勉強をはじめました。

元々は競技プログラミングC++を使っていましたが、TwitterでRustを使って解いている人を見かけて自分もC++からRustに乗り換えようと思ったのがきっかけです。

ただ、競技プログラミングでは結局Rustは使っておらず(C++に慣れすぎて乗り換えられなかった)、業務でも使っていないため、Rustの勉強は単なる自己啓発の状態です。

それでも、Rustの言語仕様に触れ実際にコードを書くことは、一プラグラマとして非常に楽しい取り組みです。

以上のように、私はまだまだ大したことないRusteceanです。Rustの言語仕様について深い考察ができるわけもないので、本記事は私が使っているRustの勉強教材を記録していくだけのまとめ記事です。誰かの参考になれば幸いです。



もくじ



The Rust Programming Language (TRPL)

doc.rust-jp.rs

何はともあれまずはTRPLを読みました。網羅的で素晴らしい教材です。無料なので読まない手はないです。手元でサンプルコードを写経しつつ本文を読む、といった感じです。

ただ、全ページが日本語訳されているのですが一部すーっと頭に入ってこない文章もあり、特に初心者の私には所有権・ライフタイムあたりの内容は難しく感じました。納得できるまで何度も読んで手を動かすのが良いかもしれません。



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

Web上のTRPLだと付箋とかメモとか残しづらいため、TRPLを一通り読んだあとに言語仕様が網羅的に解説されていそうなこちらの本を読みました。

ただし、すべての章を読んだわけではなく、自分の理解が足りていないテーマの章を中心に読みました。具体的には「5章 ユーザー定義型」「7章 所有権システム」「8章 トレイトとポリモーフィズム」あたりを何度も読んでいる感じです。



Tokioチュートリアル(日本語訳)

zenn.dev

一通り言語使用を学んだので、チュートリアルなどを写経してコードを書く・読む量を増やそうと思い、Zennで日本語訳されているTokioチュートリアルに取り組みました。

ただ、Tokioのような非同期ランタイムの仕組みの理解は私のレベルではまだまだ難しく感じたため、途中で中止しました。もう少しRustに慣れてきたら再開しようと思っています。



コマンドラインの to-do リスト プログラムを作成する

docs.microsoft.com

Micorsoftが用意している「Rust の最初のステップ」というRustを勉強するための教材の一部です。実際にtodoリストを管理するCLIツールを作成します。それほど難しくなくさくっとできるのでおすすめです。



苦しんで覚えるC言語

9cguide.appspot.com

RustはC/C++に代わるシステムプログラミング言語を目指しているということもあるので、C言語にも触れておくことがRustを理解する助けになると思い、こちらのWebサイトをざっと読みました。

私はITとは無縁の文系大学を卒業しているので学生時代にCには一切触れておらず、かつ業務でもCは使ったこともありません。そのため、自分でメモリ操作をガッツリするようなコードは書いたことはなく、C言語の苦しみを身を持って体験していません。Cをガッツリ書いて苦しんできた人がRustを始めると感動するのかもしれませんね。



C++入門 AtCoder Programming Guide for beginners (APG4b)

atcoder.jp

Cと同じ理由で、Rustを勉強するにあたりC++についてもざっと勉強しておくと良いかと思っています。 私はAtCoderC++に触れるきっかけでした。AtCoderが提供しているこの教材はわかりやすく、学んだ知識を問題を解くことを通して身につけることができます。

ただし、クラスやスマートポインタなどAtCoderであまり使われないようなC++の仕様についてはそれほど詳しく書かれていなかったと思います。このあたりは個別に調べてキャッチアップするのが良さそうです。



すごいHaskellたのしく学ぼう

こちらもRustと直接関係ありませんが、Rustを学ぶにあたり関数型プログラミングを勉強するのはためになるかと思います。関数型プログラミングといえばHaskell…ということでこちらの書籍を購入しました。分厚い本でがっつりHaskellの勉強をするのはかなりハードルが高そうなので、初心者にもとっつきやすそうな書籍を選びました。

まだ積読状態です。。