🚀

ReactエンジニアがRustを触ってみた件

2021/12/11に公開

こちらの記事は
なんもしらんけどRustでWasmやる Advent Calendar 2021 12日目の記事になります。

自己紹介

はじめましての方ははじめまして!
こんにちは、nullです!

このアドベントカレンダーに急遽乗り込んだ者なんですが、快くOKしていただきありがとうございます!
ちなみに 業務に追われるだけの世界で生きてると技術止まっちゃいますよね。 ってことで参加しました(深夜テンションが8割)

https://twitter.com/my_coIor/status/1468979844021383168

ざっくりスペック

- Web系しかわからない
- 社内ではReactの案件が来るとだいたい呼び出される
- 型付け経験はエディタ補完したい程度にTypeScript導入してる程度
- Unity(C#)ちょろっとやったことあるんだけど、そのノリでRustいけたらいいなって思ってる
- M1Pro Macユーザー

きっかけ

Reactで開発してた時に、ネイティブレベルにグリングリン動くUI作ろうとするとめちゃくちゃCPUやメモリーのスペックが必要になるなぁって悩んでました。
それでたまたま開いてたfigmaで検証ツール開いたらWasm使ってて、それで軽くなってるっぽい情報もあったから 「ええやん!」 ってなったのがはじまりです。

figmaはC++らしいんですけど、C言語に手を出すの怖いじゃないですか・・・
闇の組織[1]に目をつけられそうなので、Rustにしました。
なんか新しくて良さげに見えただけなんですけどね。

セットアップ

公式とかカレンダー1日目みてなんとなく理解。

https://www.rust-lang.org/ja/learn/get-started
https://qiita.com/poe_hoshi/items/633e611abf016f3b4089

terminal
cargo new test-rust-app

cargo run

初期プロジェクト構造

test-rust-app
 |- src/
   |- main.rs
 |- target/
   |- ...
 |- Cargo.toml
 |- Cargo.lock

はは〜ん。なるほど
当たり前なんですけど、ビルド後のファイルってバイナリになっててひらけないっすね。

Node系と比較

[ファイル]
src -> src
dist -> target (ビルドファイル)
package.json -> Cargo.toml
package-lock.json -> Cargo.lock

[名称]
パッケージ -> クレート
マスコット -> フェリス

[その他]
クレートインストールするには
-> cargo install クレート名
-> cargo build 
(tomlファイルに直書きして指定する方法も載ってた)
(忘れてcargo runしてもよしなにしてくれた)

クレートの呼び出し方
-> use クレート名::some_method;
(javaでみた)

まぁここまでは大丈夫そう!

とりあえず構文がやばいみたいな感覚もなく、チュートリアルのページを見つけたことで
我々は更なるRustの魅力を求め、アマゾンの奥地へと調査に出かけた。

https://www.rust-lang.org/ja/learn

次回は15日に投稿予定

脚注
  1. 組み込み開発チーム ↩︎

Discussion