ちょっとしたモチベーションがあって、Rust に入門しました。
直接のきっかけはRust で始めるネットワークプログラミング - teru0x1 - BOOTHを買ったことで、これを読み解くには多少なり Rust の知識が必要そうだという雰囲気を感じ取り、軽く入門してみることに。
まぁこれまでも全く興味がなかったわけではなく、Rust には PHP を主戦場としている僕にとっては真新しい概念が盛りだくさんという雰囲気があったので、多少気にはなっていました。知的好奇心が満たされそうな感じはヒシヒシと感じています。
Golang はあまり手に馴染まず離脱してしまったので、Rust では二の舞にならないようにと願いながらの入門になります。
とりあえず公式の「数当てゲームをプログラムする - The Rust Programming Language」まで進めてみました。
ドキュメント
日本語ドキュメントが整備されています。ありがたい限りです。長く書いていけそうだったらドキュメントメンテナーで contribute してみようかなと思います。関連ドキュメントは手付かずのものも多そうだったので、狙い目です。
コミュニティ
Slack のコミュニティがあります。以下のリンクから参加できます。
(存在自体は知っていましたが参加したことのない)Fukuoka.rs もあります。
コミュニティの存在は初学者にとってはありがたいですね。積極的に活用していきましょう。
インストール
Homebrew でもインストール出来るようですが、今回は公式に則って curl で入れます。
$ curl https://sh.rustup.rs -sSf | sh
bash とか zsh なら(多分)インストール時に勝手に PATH 通してくれるんですが、残念ながら fish は対応していないみたいです。なので fish 勢の僕は手動で PATH を通す必要がありました。
また、VS Code の Extension を使う場合は追加の設定が必要です。以下の記事を参考に設定していきます。
ただ、Settings Sync で自宅と社用 PC で同期とってるので、rustup
をフルパスで入れないといけないのがツラみがあるんですよね…。$HOME
が使えればいいんですが、ダメっぽい。解決策知ってる方いたら、こっそり教えてください 🙏
コマンド
ざっとチュートリアルを通した感じ、普段遣いするのは以下のコマンドかなぁという印象。
cargo new app_name --bin
: Rust で新しくプロジェクトを作る。--bin
なしだとライブラリ用のプロジェクトcargo build
: ビルドするcargo build --release
: リリースビルドする(最適化済)cargo run
: ビルドして実行するcargo check
: コンパイル可能かどうかをチェックする(build より高速)cargo test
: テストケースの実行
基本はcargo
を通してビルドしていく感じになるのかなと。cargo
はこれまたドキュメントがあるので、詳しくはこちらを見るの良さそうです。こっちはまだ日本語訳はないみたいですね。
個人開発でテストコードをどこまで書くかはわかりませんが、テストコードのないコードはレガシーコードらしいので、がんばってモダンなコードを書きたいです。
レガシーの定義ってテストがないことなのですか…?そしたら僕が個人で書いてるコードはレガシー
— nabeen (@_nabeen) 2019年7月9日
構文
2 章まで読んで気になった部分を列挙してみます。
!
をつけると、マクロになる…らしい…- 変数は基本
immutable
、mut
キーワード付きでmutable
extern crate
でライブラリを読み込むuse
で使うものを宣言- 関数は
fn
- エントリポイントは
fn main(){}
&
で参照- Cargo はセマンティックバージョニング
これからが本番なんですが、速攻で苦手意識のある参照の概念が出てきました。ツラい。ただ変数がimmutable
ってのは、いいですね。安全性を感じます。なお、マクロの概念が全然わからない…。
内容薄いけど、キリがいいので今日はここまで。
おわりに
ドキュメントは全部で 20 章まであるんですが、あとはガッツリ仕様系の印象を受けたので、ほどほどに置いといてとりあえず Rust で競プロりながら Rust に慣れて、冒頭の BOOTH の本でも読み進めてみたいと思います。
Golang はあまり手に馴染まず離脱してしまったので、Rust では二の舞にならないようにと願いながらの入門になります。
なお、冒頭で上記の発言をしましたが、Golang より Rust の方が馴染みそうな感じはあります。あくまで感じは、ですが。
VS Code 拡張でスッと Formatter が効くのも、スッと補完を出してくれるのも非常に書いていて気持ちいいし(Golang は特に補完周りの設定がめちゃ面倒だった記憶)、なんか使いこなせたらエレガントなコードを書ける気がします。
誰か僕と一緒に Rust りましょう!!!!1