見出し画像

プログラミング言語「rust」のおすすめ学習教材

はじめに

今年(2022年)の7月からrustを用いた研究開発をしています。

本記事ではrustを学習する上で良かった教材を紹介します。

rustはC++と同じコンパイル方式のプログラミング言語でありながら、C++よりもメモリを安全に管理することができるという特徴を持っています。

pythonのようなメモリの変数を管理するスマートポインターは備えておらず、代わりにrust特有の変数の所有権システムによりメモリー管理を行い高速かつ安全にプログラムを実行することができます。

通常、C++などではメモリに関するエラーはプログラミングを実行しつつデバッグするのが一般的です。

rustでは、変数の所有権システムによりメモリエラーの起こる可能性のある変数割当をコンパイル時に発見することができるため、プログラムをコンパイラーに通すことができれば、メモリエラーが起こる可能性を極力抑えることができます。

メモリーエラーは特にマルチレッドプログラミンやネットワークプログラミングで起こりやすいのですが、rustを用いるとメモリエラーがコンパイル時に発見できるため、これらが目的のプログラミングに特に向いています。

以上のrustがもつ特徴により、rustの所有権システムを理解することが、プログラミングをする上での最重要事項になるのですが、なかなか理解することが難しい仕様になっています。

特に、変数の使われ方(構造体、関数への変数の渡し、ループ、マルチスレッドなど)に応じて、rustの特有の規則により変数の所有権が移動するので、どういう場面で変数の所有権が移動するのかを理解することが重要になります。

そこで、本記事では私がrustを学習する上で実際に用いた教材を紹介します。

私のrust以外のプログラミング歴はC++歴10年以上、ruby歴10年以上、python歴約3年です。

確かにrustはC++などのプログラミング経験があった方が習得しやすいのですが、経験がなくてもここで用いる教材はrustを学習する上で理解しやすいのではないかと思います。

書籍

手を動かして考えればよくわかる 高効率言語 Rust 書きかた・作りかた
クジラ飛行机  (著)

rustを学習する際に最初に読んだ本です。

twitterのタイムラインでおすすめ本として流れてきたので読んでみました。

特徴としてpythonと比較しながらrustを学習することができます。

確かにわかりやすいのですが、pythonはそれほど得意な方ではなかったので必ずしもこの本でなくても良いとおもいました。

pythonが書ける人におすすめの本です。

プログラミングRust 第2版 
Jim Blandy (著), Jason Orendorff (著), Leonora F. S. Tindall (著), 中田 秀基 (翻訳)

Rustにおける標準的な本です。

決して易しい本ではないけど、読み込むと理解できる。

プログラミングをしていてわからないことが出てくるたびに繰り返し読みました。

詳解Rustプログラミング
Tim McNamara (著), 吉川 邦夫 (監修, 翻訳)

Webアプリ開発で学ぶ Rust言語入門
佐藤昭文 (著)

上記2つは軽く読んだ程度です。

手を動かして考えればよくわかる 高効率言語 Rust 書きかた・作りかた」を読んで基本的な文法はわかったあとだったので自分の理解の確認のために読みました。

並行プログラミング入門 ―Rust、C、アセンブリによる実装からのアプローチ
高野 祐輝 (著)

並列プログラミングをrustで学習できる本です。

難しかったため途中までしか読めていません。

Udemyのオンライン講義

Rustプログラミング入門 (最高峰・最難解言語) Kazu T+

rustの所有権システムに関して詳しい解説が聞ける。

変数が所有するメモリ領域の変化を図を使って解説してくれるので、本を読んでわかったつもりになったところが本当にわかるようになりました。

一度理解した後は何度か繰り返して視聴して記憶に定着させました。

ポッドキャスト

シリコンバレーエンジニアmiyagawaさんのRebuild
346回Ito Naoyaさん出演回

rustがシリコンバレーで活躍するエンジニアの間でも標準的になりつつあることが知れて有益でした。

まとめ

私が実際にrustを学習する上で有益だった教材を紹介しました。

rustは所有権システムによりプログラムの実行を高速かつ安全に行うことができるマルチスレッドやネットワークプログラミングで特に効果を発揮することは最初に述べたとおりですが、このためrustは情報がサーバーに分散化されたシステムにおいて特に効果を発揮すると思います。

世の中がweb2からweb3へ移行するにつれて、分散化されたシステムが注目されてrustはますます重要なプログラミングになると思います。

たしかにrustを学習することは困難かもしれませんが、rustを習得することができれば技術者として一歩抜け出すことが可能です。

この記事を読んだ方がrustに少しでも興味を持っていただければ幸いです。


この記事が気に入ったらサポートをしてみませんか?