これからRustを勉強したいエンジニアにおすすめしたい参考書や教材を紹介します
こんにちは、加藤(@tomo_k09)です。
PharmaXではバックエンド・フロントエンド開発やスクラムマスターなどをやっています。
PharmaXが提供しているサービスでは、バックエンド開発に主にRuby on Railsが使われていますが、一部の機能はRustで開発されています。
このような理由からRustの経験が浅かった私もコツコツとRustの勉強をしており、
少しずつ学習方法に関する知見が溜まってきました。
そこでこの記事では、Rustをこれから学びたいという方向けに、おすすめの書籍や教材について紹介します。
新しいプログラミング言語はどのように学ぶと良いか
私は新しい言語を学ぶとき、まず基本的な文法やどんな特徴を持った言語なのかをひと通り勉強しています。
そしてその言語の概要をつかんだあと、実際に簡単なアプリケーションの実装をはじめて、分からないことがあったらリファレンスを読んで知識を補完していくことが多いです。
私はRustも同じように勉強にしていて、まずはRustという言語の概要について学び、その後アプリケーションを実際に作りつつ、リファレンスを参照して足りない知識を補っていきました。
このような流れで勉強していない方もいるかと思いますが、この記事ではRustの概要を学ぶのにおすすめの教材とアプリケーション実装のお供におすすめの教材の2つに分けて紹介できればと思います。
Rustの概要を理解するのにおすすめの教材
まずはRustの概要を理解するのにおすすめの教材を紹介します。
基礎から学ぶRustプログラミング入門
おすすめポイント
◆ Rustの特徴・文法など概要をさらっと学びやすい
◆ 1つ1つの動画が短くてスキマ時間に視聴しやすい
最初におすすめしたいのが『基礎から学ぶRustプログラミング入門」というUdemyの講座です。
私にはもうすぐ2歳になる子どもがいて、業務時間外はどうしても子どものお世話をすることになり、勉強のためにまとまった時間を確保するのがけっこう難しい状況です。
しかし、この講座はほとんどのコンテンツが5分くらいで視聴できるようにまとまっており、ちょっとしたスキマ時間に勉強できてとても助かりました。
もちろん解説もとても分かりやすいです。
Rustの言語仕様や文法をさらっと学ぶのにとても良い教材でした。
最初にこちらの教材で全体感を把握してから、これから紹介する書籍で勉強するのが個人的にはおすすめです。
コンセプトから理解するRust
おすすめポイント
◆ なぜそのような言語仕様になっているのかを詳しく解説されている
◆Rustがどのようにメモリ安全性を担保しているかの解説が分かりやすい
Rustはメモリ安全性や、スレッド安全を保ちつつ、パフォーマンスの高いプログラムを開発できる点が支持されている言語です。
このようなRustの能力を最大限に引き出すには、所有権やライフタイム、ジェネリクス、トレイトといったRustの仕様を深く理解する必要があるのですが、Rust初心者にとってこれらを理解するのが少し難しいことがあります。
『コンセプトから理解するRust』では理解するのが難しいと言われているRustの言語仕様を、他言語のコードとの比較を通じて深く理解することを目指して書かれているのが特徴です。
特に初学者にとってはRustがどのようにメモリ安全性を担保しているのか理解しにくいですが、所有権やライフタイム、借用をはじめとするメモリ安全性を担保する仕組みを分かりやすく解説してくれています。
Rustのコンセプトを理解することは、Rustのポテンシャルを引き出せる優れたコードを書くことにつながります。
Rustをしっかりと学びたい方は、ぜひお手に取ってみてください。
Tour of Rust
おすすめポイント
◆ 環境構築不要でブラウザからRustの勉強をできる
◆ Rustの概念が簡単かつ簡潔に説明されている
Tour of Rustは、Rustの基本的な文法や言語仕様について簡単かつ簡潔に説明されていることが特徴です。
「ガッツリRustを学びたい」という方には向いていないですが、ひと通りRustについて学んだ後に軽く復習したいという人に向いているかと思います。
ブラウザで実際のコードを動かされるも個人的な推しポイントです。環境構築不要でRustに触れらるので、学習ハードルがとても低いです。
サクッとRustの概要を理解したいという人は、まずこの資料に目を通してみると良いかもしれません。
Rustでアプリを作る際に参考となる教材
次にはRustでアプリケーション実装するお供におすすめの教材を紹介します。
Webアプリ開発で学ぶ Rust言語入門
おすすめポイント
◆ RustでAPIを実装するハンズオンをできる
◆Webアプリケーション開発に必要なフレームワーク・ライブラリに関する解説がされている
名前の通り、Webアプリ開発(ToDoアプリの開発)を通じてRustについて学ぶことができます。フロントエンドはReact、バックエンドがRustのアプリケーションです。
この書籍で特に良いと思った点は、フレームワークやライブラリなどの解説がされているという点です。
例えば、Rustのフレームワークではaxumやactix-webなどが有名ですがそれぞれどのような特徴があるフレームワークなのかや、webアプリケーション開発に欠かせないSQLライブラリ(sqlx、diesel)についても触れられています。
この本を読めば、どのようにRustでAPIを実装できるのかイメージがつくことでしょう。
GitHubからサンプルコードをダウンロードできるので、特に詰まることなく勉強できるのではないかと思います。ただ、ところどころtypoがあるので、以下の正誤表を確認しつつ読み進めることをおすすめします。
Rust by Example
おすすめポイント
◆ サンプルコードが豊富で、どのように実装すれば良いのかイメージがつきやすい
サンプルコードがたくさん紹介しされていて、写経しつつRustの概要を学びたい方におすすめの教材です。
私の場合は、特にエラーハンドリングの書き方を参考にしていました。「こういう実装をしたいんだけど、どのように書くのがスタンダードなのか知りたい」という時に、Rust by Exampleを読んでみると良いと思います。
ただし、文法の解説などは詳しくされていないので、ある程度Rustの文法を学んだ後に写経すると勉強効率が良いでしょう。
The Rust Programming Language
おすすめポイント
◆ 公式から出ているRustの入門書
◆ 解説が丁寧
公式から出ているRustの入門書です。
公式というだけあって解説がとても丁寧なのが特徴です。
解説がとても丁寧であるがゆえに、文量が多くてサラッと全体感を把握するには向いていないかもしれません。
一応、入門書らしいのですが、私からすると「本当に入門書なのか?!?!?」というレベルで情報量が多かったので、最初から最後まで目を通すのはけっこうハードルが高いかと思います。
私は隅から隅まで読むというより辞書的に使っていて、理解が不十分だなというところをつまみ食いして読んでいました。自分が疑問に思ったことは、たいていこの教材をよく読んでみると答えが書いてあることが多かったです。
LINE botを題材に学ぶRust Webアプリケーション開発
この前、技術書典で出展した私が一部執筆した本です。
タイトル通り、LINE botをRustで実装する本で、アーキテクチャなどにも言及しているので、ある程度Rustを学んだ後に、ぜひ手に取ってみてください。
追記
問題を解きながら、Rustを学べるツールもあるそうです。(yutkatさん、コメントありがとうございます!)
おわりに
今回はRustビギナーにおすすめの書籍・教材を紹介しました。
今回ご紹介した書籍・教材を一通り学びば、ある程度の基礎力はつくのではないかと思います。
他にも素晴らしい書籍・教材はあるかと思いますが、参考になれば幸いです。
PharmaXエンジニアチームのテックブログです。エンジニアメンバーが、PharmaXの事業を通じて得た技術的な知見や、チームマネジメントについての知見を共有します。 PharmaXエンジニアチームやメンバーの雰囲気が分かるような記事は、note(note.com/pharmax)もご覧ください。
Discussion
この問題解いて、動かしながらRustを学べるツールも便利なのでおすすめしておきます
おおおお、こういうツールがあるのですね!
ありがとうございます!