Rust に入門している話
最近、ひさびさに Rust を触り始めた。おそらく 2 年振り 3 回目くらいの Rust 入門となる。
使用している入門書はこちら。 https://www.kspub.co.jp/book/detail/5301951.html
今は文法などの説明を終えて、正規表現エンジンの実装に入ったところ。
過去に別の教材で入門しようとしたときは低レイヤな話についていけなくて挫折していたが、今回はいまのところ順調にきている。低レイヤ周りも少しずつ勉強していたのが効いているのかな。
所有権周りなど理解が曖昧なところはあるが、手を動かしながら理解していけばよいかなと思える程度にはわかってきた。
Rust をやる動機
なぜ Rust に手をつけようとしたのかを書く。
(1) 低レイヤなプログラミング言語をひとつ習得しておきたい
普段はいわゆる Web エンジニアという感じで Web アプリばかりつくっているが、さすがにもうちょい幅を広げたかった。
じゃあ C や C++やれば?となるが、というか実際に少し手を出したこともあったが、さすがに今更感が強くてやめてしまった。
そんな中で Rust は C や C++を代替するという話もあり、ちょうどよいかなと思っている。やっていくうちに低レイヤの勉強にもなりそう。
ただ、C や C++などに触れていないと、Rust のありがたみを 100%理解することはできないのかなあとは思っている。
(2) メイン言語とパラダイムが大きく異なる言語を学びたい
(1)だけだと Go もありじゃん?となるけど、所有権とか借用とか、あきらかに他と異なる部分があるのが学びがいがあるなと思った。
Go だと、構文的には難しいところはなさそう(それがよいんだろうけど)で、わざわざプライベートを捧げて勉強するのはもったいないかなと思ってしまった。
まあとはいえ Go も実際に手をつけたらなんやかんやメイン言語と違うところがあっておもしろいんだろうなという気はしている。
ちなみに現在のメイン言語は Java/JavaScript。
(3) デフォルトイミュータブルなのがよさそう
上ふたつとは違ってちょっと細かい理由になるけど、これもでかい。
Java や JavaScript を使ってレガシー目なアプリケーションを触っていると、デフォルトでミュータブルであることが如何にコード品質を容易に下げるか実感する場面が多い。適宜レビューで指摘したり修正したりはするが、構文レベルで防いでほしいとずっと思っていた。
Rust はすべての変数がデフォルトでイミュータブル(たぶん)で、ミュータブルにする場合はmut
をつける必要がある。つまり、あえてミュータブルにしますよという実装の意図が明確になる。これがすごくいい気がしている。
実際に Web アプリをつくるときに Rust を採用することは、少なくとも今の会社ではほぼあり得ないだろうけど、いつかはそういうところではたらきたい。
ちなみに Java も最近 record というのが導入されて、非常によい。Kotlin に乗り換えようと思っていたけど、これを見てその気をなくしたくらい。もう Web アプリで実装する範囲は基本全部 record にするくらいの勢いでよいんじゃないかと思う。
(4) Tauri を触っている
以前の記事で触れているように、現在、Tauri を使用してモバイルアプリを実装中。
基本的には Web 側の技術で実装できるところが多そうではあるが、よりつくりこんでいくにはいつかは Rust も必要になるだろうなと。
まあもしかしたら Kotlin とか Swift とかの方が役に立つかもしれんけど。
終わり
はやく Rust で Java 並みに手が動くようになりたい。