Rustを何となく学ぼうとしていましたが、このままだと途中でスピードダウンしそうだったので「自分がRustを学ぶ理由」について考えて整理してみました。
概要
目的
- この記事は自分が「Rustをどうして学んでるのか?」と言う問に答えて記録に残すことを目的としています。
一言で
- 情報を改めて集めつつ、考えを整理してみたところ、Rustに関連する情報を聞いて未来を感じたので、学んでみようと思っていたところでした。
背景
- 少しずつ、Rustを学び始めました。と言っても、まだ本を買って眺めたり、HelloWorldしている程度です。
- 今のところ、感覚的に着手したので、少しずつスピードダウンしそうな雰囲気を感じてます。学び始めた理由を自分の中で整理しておきたいと考えています。
- 本を読んで知っている情報やRustに関連する情報を集めて、僕がRustに今のところ感じている話を言語化してみました。
詳しい話
Rustを学び始める前に、Rustに関係した情報には雑多に触れていました。 ただ、言語化して考えていなかったので、ここでは改めて情報を集めて、整理します。 そのあと、自分が感じていることを書きます。
他の人がどうしてRustを使ってるか
とりあえず、他の人がどうしてRustを使っているかの記事を集めて読んでみました。
次のような理由を見かけたのが印象的でした。
- Rustを採用した理由は「Rustをすごい書きたかったから」
GoだとGCが発生して高速性の安定を保てなかった(Discord)
Goで実装していたRead Statesサービスは、高速性が必要だという要件には十分対応できていなかった。平均すれば高速に動作していたものの、数分ごとに平均応答時間が急に大きくなり、ユーザーエクスペリエンスを損なっていた。調査したところ、これはGoの中核機能であるメモリモデルとガベージコレクタ(GC)に起因することが分かった。
事例からのRustに対する評判
とりあえず、いくつか日本語記事を読んでみました。
印象的な話として以下を見かけました。
- 使いこなせるようになるとかなり便利だが、学習コストが高い。
- Rustは組み込み系、車載システムなどで利用されそう。一方、Web界隈で、Rustは流行らなそう。(Web界隈は堅牢・安全な言語よりも生産性の高い言語が好まれるので)
Rustの課題についての所感
今のところ、Rustは、「効率的に情報を扱うソフトウェアを開発することを目的にしたツール」というより「効率的にコンピュータを扱うことを目的にしたツール」のように見えています。そして、その部分が魅力的に感じているのが改めてわかりましま。
個人的に学習コストの問題は、社会が成熟してくれば、解決される問題だと考えています。技術が廃れずに生き残れば、自然と学習コストの課題は解決されるように思っています。そして、なんとなくRustは生き残りそうな気がしています。(そして、社会の成熟のために、情報を増やしていこうと思って記事を書いてます)
それから、情報を管理するソフトウェアのパフォーマンス問題は、ソフトウェアを高速な言語で書き直して解決するより、ハードウェアの調達コストが下がって、スケールアウトで解決する方が僕はいいように感じています。
当然、プロダクトや文化によって異なるのだと思いますが、社会全体で見るとその方がなんとなく良さげな気がします。
終わり
Rustについて調べていく中で、僕はRustに未来を感じたから学ぼうとしていることに気づきました。 そう言えば、Rustを学ぼうと思った背景にはRustに加えて、WebAssembly(WASM)に興味を持っていたのがありました。WASMにも未来を感じています。
ここまで整理して、僕はRustとWebAssenmlyの話を深堀して学ぼうとしていたんだなあ、というのを思い出しました。
また、続きを学んで行きたいな、と思っています。また、学ぶことがあったら記録をつけていきたいと思います。
ではでは。