LoginSignup
8
8

More than 3 years have passed since last update.

Rustに入門した。

Last updated at Posted at 2019-09-27

まだRustで消耗してないの

Rustに関しての個人的なメモです。

Rust?

  • 速度、並行性、安全性を言語仕様として保証するC言語、C++に代わるシステムプログラミングを目指して開発されている。2006年に開発がスタート、2015年に1.0版がリリース。現在、1.37.0版。

  • 手続き型プログラミング、オブジェクト指向プログラミング、関数型プログラミングなどの実装手法をサポートしているマルチパラダイムプログラミング言語。

  • 2016年、2017年、2018年のStackOverflowDeveloperSurveyで「最も愛されているプログラミング言語」で一位。

特徴

パフォーマンス

C/C++と張り合える速度

信頼性

強い静的型付けと所有権システムによるメモリとスレッド安全性の確保。

生産性

豊富なドキュメントと、便利なエラーメッセージーを備えたフレンドリー??なコンパイラー

標準で搭載されてるパッケージ管理ツール、ビルドツール、フォーマッティングツールなど。

参照:Rust公式

Use Case(こんなとこで使われてるよ)

CLIツール

コンパイラーで各OSに適したフォーマットに出力できる。

マシンリソースの少ないデバイスへの組み込み

低レイヤーのコントロールで少ないリソースでも効率よく動くプログラムを書ける

WebAssembly

WebAssemblyがコンパイルターゲットに組み込まれたLLVM基盤のコンパイラーを使用しているので、WebAssemblyにコンパイルが可能。ガベージコレクションを搭載している言語よりサイズの小さい.wasmファイルを出力できる。

ネットワークサービス

安全と並行性に優れているので、ネットワーク通信を制御するサービスを作るのに優れている。

Examples

  • DropBox
  • FireFox
  • npm
  • CloudFlare
  • Polkadot
  • TenX
  • Libra
  • VoyageGroup
  • cookpad

Rust production
rustの本番での採用事例リンク集

最近どうなの?

ついこの間、1年に一回のカンファレンスがあった。

https://rustconf.com

Rustのロードマップ

2018年は”生産性”がテーマ。今年は"成熟"らしい。

Overview

Rust's 2019 roadmap | Rust Blog

多言語と比べた時にRustを選ぶ理由

  • C/C++並の実行速度を実現しつつ、同じように低レイヤーのプログラミングが出来るが、安全も確保出来る。

    • 大いなる力には大いなる責任が伴うわけですが、コンパイラが一緒に戦ってくれる
  • GolangはGoogleの言語

  • C/C++を置き換えるぞっていうところだとNimっていう奴もいるらしいけど開発コミュニティが貧弱。

  • Rustは次のJavaScript??

Web Applicationとか作れるフレームワークあるの?

バックエンドをRustで書くだけでなく、Wasm使えばフロントエンドもRustで書けちゃう💕

Web API

  • Rocket
    • たぶん一番popular
  • Gotham
    • マルチスレッド、並行処理にフォーカス
  • iron
    • 昔からあるやつ

ORM

Frontend

  • yew
    • Elm(GUI構築のための純粋関数型言語)とReactにインスパイアされたマルチスレッドのフロントエンドアプリケーションを構築するためのフレームワーク。WebAssemblyで書く。JSX likeな記法を使用可能。
  • seed
    • yewよりもうちょっと軽量?

まとめ

  • rustupとかcargoとか基礎の基礎のエコシステムの使い方はわかりました。(借用システムとか型がどれだけ強いのかとかはまだ全然理解出来てないですw)
  • WebAssembly周りはもっと良くわからない。
    • 現状Domとかは触れないので、そういう事するためにはJavascriptをラップしたライブラリを使う必要がある。
    • JSとやり取りする回数が多ければ多いほどオーバーヘッドが発生する?
  • Web用のフレームワークは色々出てきてるけど、まだまだ未成熟。
    • Rust開発チームの方針的にも、組み込みライブラリとしてフルのHTTPライブラリがなかったり。(intro-to-web-programming-in-rust-for-nodejs-developers)
    • コアチーム的にはフルスタックのライブラリを用意するよりまずは、それらの基盤となる低レイヤーで汎用性のあるライブラリを整えていくという方針っぽい。
    • 普通のWebアプリケーションだと、本当にrustでやる必要ある?というのはある
  • C/C++の代替でRust以外でまともなのがない(と言っている人達がいる)
  • RustがJS並に何でも使えるよねってなったら、使う人増えて、Web周りのエコシステムも発展するのかな
  • Rust自体は思ってたよりProductionで使われてる
8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8