『Command-Line Rust』を読んで Rust に入門した

年末年始休みは Rust の勉強をしていた。1月1日以外は毎日3, 4時間くらいはコードを書いていて、久しぶりにしっかり勉強したな、という感じ。

まだ入門したてだけど現時点での Rust の印象やどんな学習をしたかを書いておく。

Rust の印象

一言でいうと、Rust は想像していたよりずっと高級で言語機能が豊富な言語だった。Rust はシステム・プログラミング向けの言語、と言われているので「パフォーマンスは出るけど機能が足りない、あるいはAPIが低レベルすぎて使いづらい言語」みたいなイメージを勝手に持っていたが全然違った。

自分は普段 Python や TypeScript を書くことが多い。Rust はこれらの言語と比べても遜色なく、またある面ではよりリッチな機能を持った言語だった。

  • 静的型付け

  • 代数的データ型

  • パターンマッチ

  • Result 型

など関数型言語の強力な機能を持ちつつ、Cライクな文法でML系の言語と比べてとっつきやすい。構造体にメソッドが生やせるからオブジェクト指向なスタイルでもふつうにプログラミングできる。

あとは組み込みの Collection が一通り揃っている点、Collection 操作のAPIもこなれている点もよい。言語機能としては Web 開発の現場で使うにも十分な機能を持っていると思う。

Rust の特徴的な機能だと言われている借用については…まぁこれは完全に理解していない気もするけど、めちゃくちゃ難しいというわけでもない気がしている。これももうちょっと難しめのプログラムを書かないとわからない。

まだハネムーン・ピリオドなのでかなりのバイアスがかかっているけど、新サービスを作ることになって好きにバックエンドの言語を選べるなら Rust にするかも。

エコシステムの成熟度やコンパイル時間の長さが気になる(何も調べていない)けど、言語機能としては花丸。

パッケージマネージャーや Linter、テスティングツールなどの公式から提供されていて Battery Included なのもいい。TypeScript 周りのツールチェインがカオスになっている状況を普段目の当たりにしているので余計に。

学習方法について

オライリーの『プログラミング言語 Rust 第2版』をさらっと読んで、AtCoder の茶・緑 diff くらいの問題と解いたのと『Command-Line Rust』を進めた。

最初は AtCoder の問題を解きまくろうと思っていたんだけど、我流でコードを書いていると Rust っぽい書き方が身につかないと思い直して『Command-Line Rust』を写経した。

『Command-Line Rust』は Rust 入門に非常に良い本だと思う。cat や find などコマンドラインのサブセットを200行くらいのコードで書いていく。段階的に Rust の機能に触れられる章立てになっているので比較的緩やかな学習曲線で Rust を学べる。

逆にすでに Rust をある程度書いている人にとっては退屈かもしれない。

年末年始に勉強したかったので原著を買ってしまったが、1月18日にオライリー・ジャパンから『Command-Line Rust』の翻訳版の『Rust の練習帳』が発売されるので、これからやる人は翻訳のほうを買った方がいいかも。


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