2 min read

Rustに入門した

Table of Contents

ちょっとしたモチベーションがあって、Rust に入門しました。

直接のきっかけはRust で始めるネットワークプログラミング - teru0x1 - BOOTHを買ったことで、これを読み解くには多少なり Rust の知識が必要そうだという雰囲気を感じ取り、軽く入門してみることに。

まぁこれまでも全く興味がなかったわけではなく、Rust には PHP を主戦場としている僕にとっては真新しい概念が盛りだくさんという雰囲気があったので、多少気にはなっていました。知的好奇心が満たされそうな感じはヒシヒシと感じています。

Golang はあまり手に馴染まず離脱してしまったので、Rust では二の舞にならないようにと願いながらの入門になります。

とりあえず公式の「数当てゲームをプログラムする - The Rust Programming Language」まで進めてみました。

ドキュメント

日本語ドキュメントが整備されています。ありがたい限りです。長く書いていけそうだったらドキュメントメンテナーで contribute してみようかなと思います。関連ドキュメントは手付かずのものも多そうだったので、狙い目です。

The Rust Programming Language

コミュニティ

Slack のコミュニティがあります。以下のリンクから参加できます。

Join rust-jp on Slack!

(存在自体は知っていましたが参加したことのない)Fukuoka.rs もあります。

Fukuoka.rs - connpass

コミュニティの存在は初学者にとってはありがたいですね。積極的に活用していきましょう。

インストール

Homebrew でもインストール出来るようですが、今回は公式に則って curl で入れます。

$ curl https://sh.rustup.rs -sSf | sh

bash とか zsh なら(多分)インストール時に勝手に PATH 通してくれるんですが、残念ながら fish は対応していないみたいです。なので fish 勢の僕は手動で PATH を通す必要がありました。

また、VS Code の Extension を使う場合は追加の設定が必要です。以下の記事を参考に設定していきます。

VScode で Rust 環境を整える - Qiita

ただ、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はこれまたドキュメントがあるので、詳しくはこちらを見るの良さそうです。こっちはまだ日本語訳はないみたいですね。

Introduction - The Cargo Book

個人開発でテストコードをどこまで書くかはわかりませんが、テストコードのないコードはレガシーコードらしいので、がんばってモダンなコードを書きたいです。

構文

2 章まで読んで気になった部分を列挙してみます。

  • !をつけると、マクロになる…らしい…
  • 変数は基本immutablemutキーワード付きでmutable
  • extern crateでライブラリを読み込む
  • useで使うものを宣言
  • 関数はfn
  • エントリポイントはfn main(){}
  • &で参照
  • Cargo はセマンティックバージョニング

これからが本番なんですが、速攻で苦手意識のある参照の概念が出てきました。ツラい。ただ変数がimmutableってのは、いいですね。安全性を感じます。なお、マクロの概念が全然わからない…。

内容薄いけど、キリがいいので今日はここまで。

おわりに

ドキュメントは全部で 20 章まであるんですが、あとはガッツリ仕様系の印象を受けたので、ほどほどに置いといてとりあえず Rust で競プロりながら Rust に慣れて、冒頭の BOOTH の本でも読み進めてみたいと思います。

Golang はあまり手に馴染まず離脱してしまったので、Rust では二の舞にならないようにと願いながらの入門になります。

なお、冒頭で上記の発言をしましたが、Golang より Rust の方が馴染みそうな感じはあります。あくまで感じは、ですが。

VS Code 拡張でスッと Formatter が効くのも、スッと補完を出してくれるのも非常に書いていて気持ちいいし(Golang は特に補完周りの設定がめちゃ面倒だった記憶)、なんか使いこなせたらエレガントなコードを書ける気がします。

誰か僕と一緒に Rust りましょう!!!!1