feature image

2025年3月31日 | ブログ記事

Rustをやろう!(ついでにNeovimも)

この記事は、2025年traP新歓ブログリレー25日目です。

これはRustにハマって半年のにわかによる過激思想の記事です

Rustとは?

Firefox(ブラウザ)やThunderbird(メールクライアント)などを開発しているMozillaが開発した言語。
現在はアマゾン、グーグル、ファーウェイ、マイクロソフトとともに設立したRust Foundationという非営利団体が管理している。
2010年7月7日に登場し、C/C++と同等の速度、所有権を用いた高度なメモリ・スレッド安全性が特徴。
プログラミング言語には珍しいくバージョンアップが多く、6週間間隔で行われている。

Rustをやるべき理由

C/C++のRustへの置き換えが進んでいる

今までは速度の観点からC/C++が様々な基礎システムとして使われてきました。
しかし、C/C++の根本的な言語仕様、主にメモリ関連の欠点によりバグ・セキュリティ等の多くの問題がありました。
これをRustで置き換えることによって、速度を維持しながら問題を解決しようとする流れが増えてきています。

Rustで置き換えが進んでいる例

このように様々な有名サービスがRustを使い始めています。
これからははAIが得意なPythonとかWEB系よりRustの時代や!!

ライブラリが使いやすい

Pythonのpip installのようなコマンドが言語標準で存在します。
つまり、Rustの開発団体がライブラリを集めたサーバーを運営しているということです。
さらに、コードにドキュメント用のコメントを書く機能があり、自動でライブラリのドキュメントを作成し、ライブラリをアップロードすると同時にドキュメントのサイトまで作られます。
もちろんドキュメントのサイトもRustの開発団体が運営しています。
ライブラリの導入方法も、ドキュメントの場所も書式も統一されていて、とても使い勝手が良いです。

言語仕様がいい

Rustの言語仕様や標準ライブラリの充実さがすごい良い。
ここでは書き切れないほどあるので、いくつか抜粋して紹介します。

生ポインタがない

(正確には"使うには危ないことをしているという宣言をする必要がある"が正しい)
プログラミング言語において生ポインタはバグの根源です。
特に関数の引数に生ポインタを使い、その引数にNULLポインタを渡すとデフォルト値を使ってくれるなんてモンを作ったら、のちのち阿鼻叫喚すること間違いなしです。
C/C++にも参照がありますが、Rustではそれが標準となっています。
参照は、指す先の値が存在している(有効な値である)ことを保証してくれているポインタです。
Rustには、NULLポインタもありな参照を標準で作ることができます。

文字列

C/C++の文字列はあくまで文字列操作に関するメンバ関数が豊富な8bit整数の可変長配列でしかありません。
Rustの文字列は、その内容が必ず有効なUnicode文字列であることを"言語仕様"で保証してくれています!
これほどありがたいことはないですね。

継承・テンプレートの代わりの概念、特性(トレイト)

オブジェクト指向を少しでも勉強したことのある人なら知っている"継承"。
これ、毒です。

継承はその性質上、基本的に木構造を強制されます。
これはよく考えてみればあまりにも非現実的です。
現実は共通の特性を持ったグループが多重に重なり合った、ベン図のような構造をしていることが多いです。
Rustにはその特性にあたる概念、トレイトしか存在しません。

このトレイトはかなり有用です。
C++にはテンプレートという、型を後で決める概念(ポリモーフィズム)がありますが、機能としては文字列の置き換えでしかありません。
つまり、実際にその関数がテンプレートの型に対してどのような条件を要求しているかは、コードをすべて読まないと何も分からないという欠点があります。
Rustではジェネリクスという名前で存在し、型が実装すべきトレイトを指定することができます。
例えば、ソートをする関数には比較可能な特性を表すOrdトレイトを実装した型を渡せばいいというように、その関数を使う側から見ると、関数や構造体の定義を見れば条件が一目瞭然でとても良いです。

文字だけで説明するのは難しいですが、実際に勉強して使ってみれば、継承とテンプレートがいかに欠陥を抱えていて、トレイトが素晴らしい概念であるか分かるでしょう。

Rustの始め方

公式サイトへGO!
出来ればNeovimも一緒に始めて…

明日の投稿者は@METCH722@lemon@sumire0517@Elmer@gurukun41@otimaです。

Kirby0717 icon
この記事を書いた人
Kirby0717

23B(機械)の野郎。 反Python過激派、反Unity過激派。 悲しきRustのモンスター。 WindowsAPIとDirectX12を捨てwinitとwgpuに改宗。 Rustはいいぞ

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

2022年9月26日
競プロしかシラン人間が web アプリ QK Judge を作った話
tqk icon tqk
2024年8月29日
クロスコンパイルRust
H1rono_K icon H1rono_K
2023年12月25日
オレオレRustプロジェクトテンプレート
H1rono_K icon H1rono_K
2025年3月31日
NORMAL END「俺たちの戦いはこれからだ!」
otima icon otima
2025年3月24日
なぜ我々はゆずを買ってしまうのか
Naru820 icon Naru820
2024年9月10日
Tauriでtodolist作ってみた
mehm8128 icon mehm8128
記事一覧 タグ一覧 Google アナリティクスについて 特定商取引法に基づく表記