- 更新日 2024.10.17
- カテゴリー アプリ開発
Rustでアプリ開発するメリット|特徴やWebアプリケーション・フレームワークも紹介【2024年最新版】
「最近よく耳にするRustって?なにがいいの?」アプリ開発を検討中の企業担当者の方であれば、近年注目の高まるプログラミング言語「Rust」を採用すべきなのか?判断するためにも、以下のようなことを知りたいはずです。
・話題のRustとはどんなプログラミング言語?ほかと異なる特徴は?
・RustでWebアプリ開発する例が増えている理由は?
・Rustで利用できるWebアプリ開発向けフレームワークは?
そこで本記事では、なぜRustがWebシステム・アプリ開発で注目されているのか?特徴や活用されているサービス / アプリ、主要なWebアプリ・フレームワークまで、知っておきたいRustの基本を解説!インストール方法やRustの使えるエディタも紹介していきます。
※Rustを活用したアプリ開発に豊富な実績を持つシステム開発会社を探している方は、システム幹事にご相談ください。専任のアドバイザーが最適な開発会社をご紹介します。相談料などは一切かかりませんので、お気軽にお問い合わせください。
【無料】おすすめのシステム / アプリ開発会社を紹介してもらう
アプリ開発に役立つ記事もご覧ください Rustでのアプリ開発におすすめ!アプリ開発かんたんマニュアル
アプリ開発で用いられるRust(ラスト)とは?
画像引用:Rust
「Rust」は、2015年に安定版「1.0」がリリースされた、オープンソースのマルチパラダイムプログラミング言語です。もともとはMozillaの従業員だったグレイドン・ホアレ氏の個人プロジェクトとして2006年から開発が進められていましたが、2009年からMozillaの公式プロジェクトとして再スタート。C / C++の問題点を解消するシステムプログラミング言語(OSやコンパイラなどの低レイヤープログラム開発向け)としての性格を持っています。
モダンなプログラミング言語であるためシェア自体は高くありません。しかし、「手続き型」「オブジェクト指向」「関数型」「命令型」などさまざまな実装手法をサポートするRustは、多くの開発者から熱烈な支持を得ています。それは、Rustに「安全性」「高速性」「並列処理」という突出した特徴があるからです。
RustがWebアプリ開発で注目されている理由
OSやコンパイラなどの低レイヤープログラムの開発に適したシステムプログラミング言語「Rust」が、なぜWebアプリのバックエンド開発やサーバレスコンピューティングで注目されているのか?わからない方も少なくないでしょう。これを理解するためには、Rustと同時期に登場した新しいWeb技術・フォーマットである「WebAssembly」の概要を把握しておく必要があります。
WebAssemblyが高速な処理を実現させているから
画像引用:Quita
「WebAssembly(WASM)」とは、仮想マシンで動作するバイナリコードのフォーマットのこと。WebアプリのフロントエンドとなるブラウザではJavaScriptが活用されており、ブラウザに内蔵されたJavaScriptエンジン(実行環境)を利用してプログラムを実行していました。しかしJavaScriptには、プログラムが肥大化すると動作速度が遅くなるという課題があります。これを解決するために登場した仕組みが「WebAssembly」です。
WebAssemblyは、Webアプリのソースコードからバイナリコードを生成する「仮想マシン上のコンパイラ」のような役割を果たしています。CPUの機能をフル活用することで「高速な処理」を実現できます。2022年現在、主要なブラウザのほとんどにWebAssemblyが実装されており、サーバレスのランタイム(実行環境)としても注目が高まっています。
JavaScrioptのアプリ開発の詳細は下記記事をご参照ください。
関連記事:JavaScriptはどんなアプリを開発できる?必要な開発環境やフレームワークも解説
RustはWebAssemblyをターゲットにした言語で最も利用されているから
WebAssemblyを最大限活用するには、ターゲットとなるバイナリコードに変換するWebアプリのソースコードを「どのようなプログラミング言語で記述するか」が重要です。イギリス「SCOTT LOGIC」社の調査によると、WebAssemblyをターゲットにしたプログラミング言語でもっとも利用されているのが「Rust」。これこそが、Webアプリ開発でRustが注目されている理由です。
画像引用:Publickey
もともと安全かつ高速な処理を特徴とするRustは、安全・高速なWebアプリを開発できるメリットがあります。モダンな言語であるため、まだまだ周辺環境が発展途上であるのも事実ですが、優秀なWebアプリケーション・フレームワークが揃いつつあるのもRustを採用するメリットだといえるでしょう。
Rustならではの3つの特徴
メモリ・スレッドの安全性(Reliability)が高い
Rustのコンパイラには、「Borrow Checker」という独自の概念を持つ仕組みが取り入れられています。プログラム実行時のメモリ・スレッド(処理の流れ)の安全性を極めて高いレベルで確保できる特徴があるのです。
コンパイラとは、プログラミング言語で記述されたソースコードをCPUなどのハードウェアが理解できる「バイナリコード」に変換するプログラムのこと。Rustのコードには「所有権」というメモリ管理の概念があり、コンパイル時に所有権が適切であるかをBorrow Checkerが常にチェックし、安全でないコードはコンパイルすらされない仕組みです。つまり、Rustではメモリリークやスレッドが途中で止まってしまう脆弱性を持つコードを含むプログラムは実行できないことになります。逆にいえば、コンパイルされるコードで書かれたRustプログラムであれば高い安全性を確保できる、あるいは不正なデータアクセスがあってもコンパイラが実行を防止して安全性を保証してくれます。
コンパイラ・バイナリコードを含むプログラミング言語の詳細は下記記事をご参照ください。
関連記事:システム開発の主要言語を解説!業務アプリケーションによく使われている言語は?
高速な処理速度(Blazingly Fast)
システムプログラミング言語として開発されたRustは、同じように低レイヤープログラム開発で使われるC / C++と遜色ない高速な処理速度を特徴としています。ときにはC / C++を上回る最速級のパフォーマンスを発揮するのです。これはRustというプログラミング言語の性格上、ガベージコレクション(ガベージコレクタ)を持たない仕様になっているからです。
ガベージコレクション(GC)とは、プログラムの実行中に不要なメモリ領域を自動で消去する機能のこと。ソースコードのメモリ管理を自動化してくれるGCは、開発者の生産性を向上させるのに役立つ反面、プログラムの処理速度を低下させる要因となります。コードの所有権、Borrow Checkerで安全にメモリ管理できるRustならば、GCがない分、高速な処理を実現できるのです。
ここで「GCがないなら、不要なメモリ領域をプログラマーなどが自身で管理する手間が生じるのでは?」と思うでしょう。 しかしRustには、有効なプログラミング範囲がなくなると、その分のメモリを自動で用意してくれる機能があります。
並行処理・非同期処理ランタイムが優れている
Rustは「びくともしない並行処理(Fearless Concurrency)」が可能という特徴があります。メモリ管理でも触れたRustの概念「所有権」があるからです。ソースコードに明確な所有権を定義することで、スレッド間のデータ共有・競合がなくなるため、複数スレッドの実行中にプログラムが止まってしまうことがありません。
ただし、膨大なリクエストを並行処理・非同期処理するWebアプリをRustで開発するには、非同期処理ランタイムというライブラリ(Rustではライブラリをクレートと呼ぶ)が必要です。
画像引用:Tokio Runtime
「Tokio Runtime」は、Rustの非同期処理ランタイムとしてデファクトスタンダードとなっているクレートです。高速性・信頼性・柔軟性を兼ね備え、組み込みシステムからマルチコアの巨大サーバまでをカバーする非同期型ネットワークアプリケーションであるのが特徴です。
一方、公式ドキュメントでも明言されているように、OSを含む低レイヤープログラムにTokioを実装しても効果を発揮できません。
高速な処理速度という点で見れば、Rustは「C / C++」とほぼ同等ですし、安全性ではPythonも引けをとりません。しかし、高速処理・安全性はトレードオフの関係にあるのが一般的で、両立するプログラミング言語はこれまでありませんでした。その常識を破ったのが「Rust」なのです。
Rustが採用されているシステム・アプリの5つの種類
もともとはシステムプログラミング言語として登場したRustですが、唯一無二の特徴を活かすべく、さまざまなシステム・アプリ開発に採用されるケースが増えています。具体例を簡単に紹介しておきましょう。
1.Webアプリ
オンラインストレージサービスを提供するDropbox社は、ストレージを管理するデータウェアハウスのバックエンドを、Rustを使って再構築しています。
2.Webブラウザ
Rustの開発を主導したMozilla社は、FirefoxのブラウザエンジンをRustで全面的に書き換える「Rust-in-Firefoxプロジェクト」を進行中。Chromeに劣らないブラウジングの高速性と安定性を両立する成果を生み出しています。
3.サーバレスコンピューティング
画像引用:AWS
AWSのサーバレスコンピューティングサービス「Lamda」「Fargate」は、Rustによってプログラム構築されています。また、EC2のOS「Bottlerocket OS」「AWS Nitro System」などもRustで開発されました。
4.APIサーバ
画像引用:Facebook
2016年からブロックチェーンサービスをRustで開発していたMeta社は、FacebookのAPIサーバをRustで開発しています。PythonやC++などと同様、今後はFacebookのWebサービス、モバイルアプリでもRustがメインのプログラミング言語として採用されていく予定です。
5.低レイヤープログラム開発
画像引用:Android
Googleが提供するモバイルOS「Android」では、Bluetoothモジュールなどのプログラム開発にRustが採用されました。Chrome OSの一部コンポーネントもRustで開発されており、新OS FuchsiaにもRustが採用される見込みです。
Rustの主要Webアプリ・フレームワーク(クレート)
それでは、RustでWebアプリ開発する際の選択肢となるフレームワーク(クレート)には、どのようなものがあるのか?Rust向けの主要なWebアプリケーション・フレームワークをいくつか紹介していきます。
Actix Web
画像引用:Actix Web
「Actix Web」は、Tokio Runtimeで動作するRust向けのオープンソースWebアプリ・フレームワークです。Rust向けのクレートとしてはNo.1のダウンロード数を誇る人気のフレームワーク。HTTP/2を含む多彩な機能を有しており、WebサーバなしでもリッチなWebアプリケーションを簡単に開発できます。Rustの特徴である「Blazingly Fast(爆速)」を体現するフレームワークです。
Rocket
画像引用:Rocket
「Rocket」は、Actix Webと並ぶ人気を誇る、Tokio Runtimeで動作するRust向けオープンソースWebアプリ・フレームワークです。シンプルにまとめられている分、Actx Webよりも使いやすく、簡単にWebアプリを開発できるのが特徴。セキュアなWebアプリを素早く開発したいニーズに向いています。
Axum
画像引用:Axum
Tokio Runtimeを開発・提供するTokioから、2022年にリリースされたばかりのRust向けオープンソースWebアプリ・フレームワーク。まだ実際の開発事例・利用例などは報告されていなません。しかし、Tokio Runtimeとの親和性が高いと見られており、Rust開発者の間で注目が高まるフレームワークでもあるのです。
アプリ開発の言語Rustのインストール方法
画像引用:Rust
Rustのプログラミングに興味を持った方に向け、Rust環境の構築について簡単に解説しておきましょう。
RustをMacにインストール
macOS / Windows / Linux / UNIXなどに対応するRustは、原則として上述したインストールページにアクセスした時点で、最適なインストール方法が表示される仕組みになっています。たとえば、Macを含むUNIX系システムにRustをインストールするには、ターミナルを起動して以下のコマンドを実行します。
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
画面の指示にしたがって作業を進めていけば、Rustの最新安定版をインストールできます。
RustをWindowsにインストール
WindowsにRustをインストールする方法も、原則としてはmacOSの場合と同じです。ただし、WindowsのRust環境では、依存関係としてVisual Studio 2013以降の「C++ Build Tools」が必要。Rustのインストール作業前に、以下のリンクからインストールしておくと作業をスムーズに進められます。
>>「C++ Build Tools」のインストールはこちら
ちなみに、注目度の高まりとともに、Rustに対応するソースコードエディタも増えています。使い慣れたツールはそのまま、Rustのプログラミングに取り組める環境が整いつつあるのです。
Rustのビルドツール・パッケージマネージャー「Cargo」
cargo new プロジェクト名 |
プロジェクトの作成 |
cargo build |
プロジェクトのビルド |
cargo run |
プロジェクトの実行 |
cargo test |
プロジェクトのテスト |
cargo doc |
プロジェクトのドキュメント作成 |
rustupツールを使ってRustをインストールすると、Rustのビルドシステム / パッケージマネージャーとなる「Cargo」も同時にインストールされます。プロジェクトの作成からプログラムのビルド / 実行まで、Cargoを利用してRustプログラミングを進めていきましょう。主なコマンドは上記の通りです。
RustでWebアプリ開発を行う際の注意点
RustでWebアプリ開発を行う際は、以下3点に注意しましょう。
- ベストプラティクスが確立されていない
- ライブラリが存在しない恐れがある
- あらゆる場面で最適なパフォーマンスが出るとは限らない
ベストプラティクスが確立されていない
Rustは比較的新しい言語のため、まだベストプラティクス(最善の方法や最良の事例)が確立されていません。
そのため、仮にアプリ開発で何か課題が見つかった場合は、自力でベストプラティクスを探さなければいけないのです。
JavaやC系など他のプログラミング言語であれば、利用数が多いためベストプラティクスも確立されています。
同じようにRustにもベストプラティクスが確立されていると思っていると、アプリ開発で苦労することがあるかもしれません。
ライブラリが存在しない恐れがある
前述のベストプラティクスだけでなく、ライブラリが存在しない恐れもあります。新しい言語であることが要因で、あらゆる用途に対応できるライブラリが限られているのです。
もし特定の機能やタスクに対応できるライブラリが存在しなければ、自社で実装しなければなりません。APIの仕様を踏まえてRustで通信できるようにする必要もあり、開発の手間がかかります。
Rustでアプリ開発を行う前に、ライブラリがあるか、利用しなければいけないかを確認することをおすすめします。
あらゆる場面で最適なパフォーマンスが出るとは限らない
Rustは高性能なアプリではあるものの、あらゆる場面で最適なパフォーマンスが出るとは限りません。
安全性とパフォーマンスを両立できず、低レベルのコード記述が求められることもあるのです。
Rustは、他のオブジェクトによって参照されなくなったものを見つけて削除する処理である「Garbage Collection」を提供しません。
Garbage Collectionには開発者がメモリを手動で解放しなくてよくなる利点がありますが、その利点を得られない分メモリ管理に注意が必要です。
リソース解放が正確でないとリークの恐れもあるため、Rustの利用時には注意しましょう。
Rustアプリ開発まとめ
近年話題になることの多くなったプログラミング言語「Rust」とはなにか?知りたい方に向け、本記事では、特徴や活用されているサービス / アプリ、開発に利用される主要なWebアプリ・フレームワークまで、知っておきたいRustの基本を解説しました。また、インストール方法やRustの使えるエディタも紹介してきました。
システムプログラミング言語でありながら、汎用的に利用できるRustの特徴が理解できたのではないでしょうか?特に、需要の高まるWebアプリ開発分野では、WebAssemblyの存在を含め、Rustへの注目は高まるばかり。Webアプリ開発を検討している方なら、Rustの採用を検討する価値があります。
※Rustを活用したアプリ開発に豊富な実績を持つシステム開発会社を探している方は、システム幹事にご相談ください。専任のアドバイザーが最適な開発会社をご紹介します。相談料などは一切かかりませんので、お気軽にお問い合わせください。
コンサルタントのご紹介
岩田
専任のコンサルタントが、
お客様の予算と目的を丁寧にヒアリング。
最適な会社をピックアップ・ご紹介させていただきます!
初心者の方でも安心してご相談いただけます。
Q. Rustでアプリ開発するメリットは?
Rustでアプリ開発するのメリットとして「メモリ・スレッドの安全性(Reliability)が高い」「高速な処理速度」等が挙げられます。それぞれの詳しい特徴は記事内で紹介していますので、ぜひ参考にしてください。
Q. Rustでアプリ開発するメリットは?
Rustでアプリ開発するメリットは「低レイヤープログラム開発で使われるC / C++と遜色ない高速な処理速度」「並行処理・非同期処理ランタイムが優れている」などです。知っておくべき注意点については、記事をご参照ください。
この記事を書いた人
梓澤 昌敏
専門分野: 音楽・映像制作、オウンドメディア、ビジネス
音楽・映像制作の現場を経て、スタジオ構築側の業界へ。マネージャー・コンサルタントとして制作現場の構築に携わる一方、自社オウンドメディアの立ち上げを含むマーケティングも担当してきました。現在アメリカ在住。作曲を含む音楽制作も提供しています。
このライターの記事一覧