2021 年 4 月に、Google はプログラミング言語
なお、以下には独自の見解も含まれていますので、ご参考までにお願いします。
まずは Google が Rust を採用することを決めた理由として、サイバー戦争問題があるようです。 すでにマイクロソフトも採用を始めているようで、 簡単に言えば、メモリの安全性が高まって脆弱性が生まれにくくなり、OS 自体が安全になる、ということのようです。
現行使用されている開発言語 C/C++ では、メモリアクセス等の自由度が高い半面、 だんだん改良されているとはいえ、予期しないメモリ破壊などが起きてしまいます。 C/C++ プログラマの私としては、もちろん身に覚えのあることですから、十分理解できます。 ですがその自由度の高さから、離れられない言語であり、 Android のアプリ開発でさえ、(ほとんど意味がありませんが)C/C++ でのネイティブアプリ開発を試みています。
Google によれば Android OS の深刻なセキュリティー脆弱性 70% 近くがメモリー安全に関するバグに起因するらしいです。 Microsoft も脆弱性の 70% がメモリー安全に関するバグと言っているようですから、改善策が必要です。
なお、Google としても、既存の C/C++ のコードをすべて書き換えるのは非現実的として、 新規のコードの開発を Rust にするという方針のようです。 新規コードを Rust 縛りする、という感じではなさそうですので、置き換えは緩やかになると思えますし、 すべてのコードが Rust になるとは思えません。
では、一般プログラマも Rust の勉強を始めたほうがいいのかどうかを中心に、 どんな言語なのか、調べてみます。
プログラミング言語 Rust とは、 ウェブブラウザー Firefox でお馴染みのモジラ財団が支援するプログラミング言語だそうですが、運営は Rust 財団となっています。 日本語の公式サイトは、https://www.rust-lang.org/ja/です。 2021 年 5 月 18 日現在では、バージョンは 1.52.1 となっています。 ちなみに開発が始まったのは 2006年、安定版であるバージョン 1 がリリースされたのが 2015 年だそうです。
Rust の特徴は、プログラムに必要なメモリの確保や解放に関連するバグが生じない「メモリー安全」が保証されていることにあるそうです。 Java なども同様であると言えますが、あまりにも不自由でありオーバーヘッドが多くなるので、OS には不向きということですが、 確かに OS の処理速度が低下するのは面白くありません。 ユーザーとしても、いくら安全性が高くても、今より動作の遅い OS を選択したくはありません。
日本語公式サイトの右上にある、 「はじめる」ボタンをクリックすると、 お試し方法やインストール方法に続いて、Rust がどんなプロジェクトを作成し、 どんなコードになるのかが書かれています。 Microsoft の Visual Studio Code 等、いろいろなエディタで使えるようになっているようですが、 説明はコマンドライン・ベースで書かれています。
少し読み進めていっても、実際に操作しながらじゃないとわかりません。 プロジェクト関係の部分は読み飛ばして、 「小さいRustアプリケーション」 からが面白そうです。
細かいところはもちろん違いますが、Java のイメージと同じですね。 C# については詳しくありませんが、似たような感じに思えます。
use で使うライブラリを指定して、 fn で関数を定義、 let で変数定義と代入、と、違和感ありません。 変数 message に String::from で文字列を変換しているのも、わかりにくさはありません。 唯一 mut がわかりませんが、stdout.lock と併用しているので、 排他アクセス制御の mutex の定義のようなものでしょうか。
実行例を見ると、妙なキャラクタが出力されていますが、 おそらく say ライブラリが "ラスタシアン" のセリフのように出力するものなのでしょう。
すぐに答えがありました。
出力されたキャラは非公式マスコットの「フェリス」でした。 ラスタシアンは、Rust プログラマのことを言うようです。
最後に再び言語仕様に戻っておきます。
Rust は
無償で開発に利用できる Visual Studio Community 2019 をインストールして、Android ネイティブアプリ開発環境を作成しています。