Rust初学者が脱初心者するためにした事

# 🦀はじめに🦀

はじめまして、🦀カニさん🦀です。

プログラミング歴２年目の趣味グラマーで、去年はDataCampでひたすらPythonをやっていました。
![python6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821911/2c0c9f9d-4df8-7e26-f2e6-a510b3b62cac.png)
しかし途中で飽きてしまいRust入門🦀


現在はRustの学習とその備忘録も兼ねて「[Rust入門](https://rustify.me/)」というブログを運営しています。

ブログは海外製の優良テーマを買ってマニュアル通りに設定し、Github から CloudFlare Pages に自動デプロイという感じです。

なので、JavaScriptに関しては全くと言っていい程理解していません。HTMLとCSSもチートシートが無いと何もわかりません。
（実は２年前はコマンドプロンプト恐怖症でした🦀💦）

でも理解してなくてもマニュアル通りに進めればきちんと自分のブログが構築できるのは素晴らしい事ですね！🦀

Twitterでは仕入れた知識を断片的にアウトプットしています。-> [@wipRust](https://twitter.com/wipRust)

# 🦀Rust学習その前に🦀

幸いな事に、Rustはすでに超高品質の学習資料が無料でオンライン公開されており、入門時点では書籍の購入はほぼ不要と言えます。
もちろんお金を払ってサンクコストに浸りたいという方は止めませんが、個人的には下記の３つの教材を重点的にこなしていけば、おそらく初心者に毛の生えた程度にはなれると思います。

①[RustCoder](https://zenn.dev/toga/books/rust-atcoder-old)
②[Rust入門](https://zenn.dev/mebiusbox/books/22d4c1ed9b0003)
③[Rustlings](https://github.com/rust-lang/rustlings)

①、②はどちらも入門書の位置づけではありますが、個人的には②のRust入門の方は、解説がやや中級者向けという印象で、良くも悪くもかなり簡潔に解説されています。
なので、私のように何がわからないのかがわからない状態の人間が読み進めていくと、途中何度も外部資料で学習が必要になると思います。

①のRustCoderは比較的初心者寄りと言いますか、かなり丁寧に解説がなされていて、まるでRustのコンパイラみたいです。もはやお母さんです🦀
おまけに競技プログラミングの例題まで併記、解説してくれているので、知識が身についているか測るのには最適と言えます。

カニさん的には、RustCoderで基礎固めをしつつ、忘却曲線のいい感じのところでRust入門でざっとおさらいするというスタイルもアリかなと思います。

後述するRustlingsも、最初の２０問ぐらいで自己肯定感を高めていくにはもってこいの学習ツールなので、是非ともチャレンジしてもらいたいです。


# 🦀準備が整ったら宣言しておこう🦀

メディアはブログでもSNSでもなんでもよいのですが、一つの教材に手を出したら、その時点でやりきる旨を宣言しておきましょう。フォロワーが多ければ多いほど効果があると思います。
カニさんはもともとSNS不毛論者だったので、Twitterはやっていなかったのですが、Rust学習を機にアカウントを作成し、[日々の成果をアウトプットも兼ねて吐き出していました。](https://twitter.com/search?q=%40wipRust%20%23rustlang&src=typed_query&f=top)

ちなみに、こうしてQiitaでエントリを書いているのは、短期的な目標を失いTwitterで学習と関係ないゴミツイートをするようになったのがきっかけです。

記事書くついでに頭の中を整理しようと、、、🦀

# 🦀Rustlings完走（しなさい）🦀

[Exercism](https://exercism.org/tracks/rust)かRustlingsかで悩みましたが、Rustlingsの方が公式への参照や、機能のシンプルで優れていると感じました。
最初の２０問ぐらいは、前述の入門書２つを普通に読み進めていけば、難なく解けると思います。カニさんは日本帰国中に急いでやったのですが、あまり時間に余裕のない人は、１日１問ぐらいのペースでじっくりやってみると良いと思います。
カニさんは目標を設定しようと思い、２週間以内に完走！と宣言したは良いものの、６問カンニングした上に予定の２週間をオーバーしてしまいました🦀💦

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">🦀Rustlings とりあえず完遂です蟹🦀<br>なんだかんだ２週間以上かかってしまいました蟹🦀💦<br><br>自分の弱点がよくわかったので、オライリー本で強化しつつ、RustCoderに載ってるAtCoderの問題をちびちび解いていきます蟹🦀<br><br>🦀これにてRustぼっちブートキャンプ閉会🦀<br><br>🦀皆様ありがとうございました🦀 <a href="https://t.co/s2dGDmDTui">pic.twitter.com/s2dGDmDTui</a></p>&mdash; Rust入門中🦀カニさん🦀 (@wipRust) <a href="https://twitter.com/wipRust/status/1560094382123929600?ref_src=twsrc%5Etfw">August 18, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

たとえカンニングしたとしても、完走した時の喜びはヒトシオですので、是非チャレンジしてみてください。

# 🦀まとめ🦀

とりあえず言いたかった事は、書籍にお金を払わなくてもRustは学べるという事です。（Rustに限らないか…）

上述した入門書の他にも、公式の[The Book](https://doc.rust-jp.rs/book-ja/)は、Rustlingsを通じて要所要所で読む羽目になりますが、あれを全部読み切るのには相当なエネルギーを消費しそうなので、あえて紹介しませんでした。というのも、日本語訳がたまに直訳的でカニさんの小さい脳みそにはスムーズに入ってこないように感じたからです。（なら英語を読めば良い！）

しかしRustlingsのような問題にぶち当たった時に読むとなぜか理解できたりするのです。不思議ですね🦀

- Rust学習において書籍の購入不要
- 入門書（Zenn）を徹底的に読み込む
- Rustlingsをなんとしてでも自力で解いてみる🦀<-
- アウトプット大事！

以上です。


# 🦀モチベーションの維持🦀

先にも述べましたが、何事も学習する過程でモチベーションの低下というのは避けられないと思います。カニさんのように作りたいものが先に決まっていれば継続しやすいかとは思いますが、そういうのが無いとすぐ挫折しちゃうと思います。

そういった”作りたい何か”をイメージしやすいように、Rustのチュートリアルをいくつか紹介させて頂きますので、興味があるものが見つかったら、ブックマークしておいて、あとでモチベーションが下がった時にでもつまみ食いしてみると良いと思います。

- [Rust GUI の決定版！ Tauri を使ってクロスプラットフォームなデスクトップアプリを作ろう](https://zenn.dev/kumassy/books/6e518fe09a86b2)
- [Create a desktop app in Rust using Tauri and Yew](https://dev.to/stevepryde/create-a-desktop-app-in-rust-using-tauri-and-yew-2bhe)
- [Code to the Moon(YouTube)](https://www.youtube.com/watch?v=EqV5wKD233c&list=PL2q9pua8FpiUiCv6KmWWhR5Bh8GfElo98)

最後のYouTubeチャンネルは全部試したわけではないのですが、数十分程度の動画でサクッと作れるものがチラホラあるので、最近よく視聴しています。

あとは隙間時間に、[Rustacean Station](https://rustacean-station.org/) や [Let's Get Rusty](https://www.youtube.com/c/LetsGetRusty) を聞いて英語リスニングも兼ねたりなど。まぁぶっちゃけほとんど理解できてませんけどね🦀


# 🦀さいごに🦀

今思い描いているデスクトップアプリがTauriで完成したら、またこちらに投稿させて頂きます。