2021-03-20

[Rust] まず最初にRustの全体を把握する

Rust
 プログラミング言語Rustについて、まず最初に把握しておきたい情報を一通りまとめてみました。主に公式サイト(日本語版)のほぼ全ての情報が把握できます(一部当サイトの別ページに分散)。一度公式サイトに目を通した後、当ページでその概要を再確認する際にご利用されると便利です。

Rust公式(日本語版)

 まずは公式トップページでRustの全体像をざっくり理解。加えて以下の各ページでは各分野に言及しています。

ネットワーク(関連クレート:reequest Rocket)

 公式のソーシャルメディアやサイト
セキュリティメーリングリスト:全てのセキュリティアナウンスを受け取る

 その他、様々な情報ページです。
行動規範Aariaの行動規範の参考にもしています
メディアガイド:商標などの利用に関しての情報
プロダクション:Rustがどのように使われているかに関して
セキュリティポリシー:Rustのセキュリティバグの報告などに関して
プライバシー通知に関する情報
旧バージョンのRust公式(The book旧ver):懐かしき旧バージョンの公式サイト
よくある質問:旧公式サイトより

はじめに

 Rustの世界に入っていく前準備として目を通してみましょう。

Rust Playground:ブラウザでRustコードを実行できます。
Rustをインストール:手順に従えば簡単にインストールできます。
 Microsoft C++ Build Tools:Windowsでは必要になります。

 関連情報の一覧

プログラミング言語Rust(日本語版)

 Rustに関する詳細なマニュアル(リポジトリ)。まず一通り読むことで、基本的な技術全般が身につきます。以下は代替、あるいは上級版のドキュメントです。

rust-learning:Rust学習向けのリソース集
rustlings:コマンドライン上でRustのツールチェインのダウンロードとセットアップ方法を確認しながら、Rustの構文の基本的な読み書きを学べる
Rust by Example(GitHub):たくさんのコード例を示し、説明は最小限 練習問題もある
The Rust Reference:より詳細で包括的な情報
Rust 裏本(The Rustonomicon):アンセーフなRustへの手引書
The Rust Unstable Book:nightly版のみで使える不安定な機能に関する記述

ドキュメント一覧

 より専門的に各分野について詳細に学習したい場合の資料です。

エディションガイド:Rustのエディションに関する手引き
The rustdoc book:優れたドキュメントを用意する方法について
Command line apps in Rust:コマンドラインに関するRustの学習
Rust 🦀 and WebAssembly 🕸:WebAssemblyに関するRustの学習
WebAssembly:WebAssembly自体についての学習
wasm-bindgen:wasm-bindgenについてのRust学習
Asynchronous Programming in Rust:非同期プログラムについて
Guide to Rustc Development:rustc開発貢献者向けのマニュアル
Rust Forge:貢献者向けドキュメント
Rust APIガイドライン:Rustライブラリの設計者向け APIのデザイン上の推奨事項のまとめ

資料一覧

Rust Blog:メインのRustブログ
Inside Rust Blog:Rustの開発をフォローしたい人を対象としたブログ
This Week in Rust:Rustコミュニティの最新情報
リリースノート:各リリース毎の変更点の記録
・ロードマップ:2021年
Qiita:Rust関連の記事集

コミュニティ

ユーザーフォーラム:Rustに関するあらゆることを話し合うための場所(質問他)
内部フォーラム:Rustそのものの開発に関する議論の場(コンパイラ他、言語設計や標準ライブラリの開発の議論、セキュリティ関連の報告など)
・掲示板:stack overflow reddit
・チャットプラットフォーム:Discord Zulip
イベント(Rustユーザグループ):イベントの開催関連の情報
Rustbridge:他の言語をバックグラウンドとして持つRustに馴染みのない人々を対象とした、Rustを学びコミュニティに参加して頂くためのワークショップ
Request for Comments:Rustの重要な決定事項についての議論の場

Rustのチーム一覧

コアチーム:プロジェクトの指揮/サブチームのリーダーシップ/横断的な事項の取扱いを行う
コミュニティチーム:イベントの調整やサポート/コンテンツの作成/RustBridgeプログラムの実行/調査の実施を行う
コンパイラチーム:コンパイラ内部と最適化を扱う
Crates.ioチームcrates.ioの運用、開発、ポリシーの管理を行う
開発ツールチーム:Rust向け開発ツールを作成
インフラストラクチャチーム:Rustプロジェクトをサポートするインフラストラクチャを管理
言語チーム:新しい言語機能の設計を行う
ライブラリチーム:Rust標準ライブラリ rust-langのクレート/規約/エコシステムのサポート
リリースチーム:リグレッションと安定化の追跡や、Rustのリリースを行う
Rustチームalmuni:ゆったりとした引退生活を楽しんでいます

Rustのワーキンググループ一覧

Async基盤ワーキンググループ:async-awaitの基本となる言語/ライブラリの実装をサポート
CLIワーキンググループ:Rustで大小様々なCLIアプリを書くという、エンドツーエンドの体験に焦点を絞る
組込み機器ワーキンググループ:リソースに制約のある環境や従来とは異なるプラットフォームでの、Rustを使用するエンドツーエンドの体験に焦点を絞る
ゲーム開発ワーキンググループ:Rustをゲーム開発のデフォルトの選択肢にすることに焦点を置く
セキュアコードワーキンググループ:Rustで安全なコードを簡単に書けるようにする
セキュリティレスポンスワーキンググループ:受け取った脆弱性レポートのトリアージと対応を行う
WebAssemblyワーキンググループ:WebAssemblyを通してJSライブラリやアプリケーションにRustコードを組み込む、エンドツーエンドの体験に焦点を絞る