Rustについて今日は紹介するよ!
- Rustとは?
- Rustができることって?
- Rustの勉強方法は?
- Rustの将来性は?
などの疑問をお持ちの方の悩みを解決できる記事になっています!
この記事では、現役のフリーランスエンジニアがRustの特徴、できること、将来性、勉強方法について解説します!
記事を読めば、Rustの特徴や効率的な勉強方法について理解できますよ!
それでは、見てみましょう!
- Rustに興味がある人
- Rustで何ができるか知りたい人
- Rustの学び方を知りたい人
目次
Rustとは?
RustはMozillaが開発しているオープンソースのプログラミング言語です。
RustはC言語、C++に代わるプログラミング言語として注目されています。Rustはマルチパラダイム言語と呼ばれており、命令型、オブジェクト指向、関数型プログラミングの書き方もサポートされています。
Rustの人気は非常に高く、Stack Overflowでは「Most Loved, Dreaded, and Wanted Languages(最も愛されている言語)」において一位を獲得しています。
海外ユーザーだけでなく日本でも人気が高まり、Rustの日本語コミュニティが活発に活動しています。
Rustは、主にバックエンド(サーバーサイド)で動作するプログラミング言語です。そのため、WebやAPIサーバー開発に使われることが多いです。また、それ以外にもコマンドラインツールのソフトウェア開発で使用されます。
Rustの特徴とは?
Rustの特徴は、次の通りです。
- 強力な型システム
- パフォーマンス性に優れている
- Cargoでパッケージ管理
- Webアプリケーションフレームワークが充実
- 本・ドキュメントサイトが充実している
強力な型システム
Rustは、「静的型付け言語」です。
そのため、プログラムをより安全に実行できる仕組みを備えています。
静的型付け言語とはプログラムが実行される前に、プログラムの整合性や合理性を担保する仕組みをもったプログラミング言語です。
プログラミング言語には、「静的型付け言語」と「動的型付け言語」があります。
Rustは静的型付け言語であり、プログラム上で使われる値の型を定義することで安全性を確保しています。
Rust以外の静的型付け言語は次のものがあります。
- Java
- Kotlin
- TypeScript
- Swift
- Haskell
- Go言語
一方、「動的型付け言語」とはプログラムが実行されるタイミングでプログラムの整合性をチェックします。そのため、プログラムが実行されるまでバグに気付きづらいです。
Rustと同じサーバーサイドで実装されるRuby、PHPなどは、「動的型付け言語」です。そのため、型を定義する必要はありません。しかし、プログラムを実行するまで正しい値が使われているかは分からず、エンジニア自身が安全性を担保する必要があります。
主要な動的型付け言語は次の通りです。
- PHP
- Ruby
- Python
- JavaScript
両者ともメリット、デメリットがあるので覚えておきましょう。
種類 | メリット | デメリット |
動的型付け言語 |
|
|
静的型付け言語 |
|
|
パフォーマンス性に優れている
Rustは、パフォーマンスが非常に良いプログラミング言語です。
C++と同等に高速で処理し、効率的なメモリ管理をしています。
また、ランタイムやガベージコレクションがないため、パフォーマンス性に優れた設計になっています。
Cargoでパッケージ管理
引用元: Cabal
Rustのパッケージ管理は「Cargo」を使います。CargoはRustのビルドとパッケージ管理ツールになります。ほとんどのRustのプロジェクトはこのCargoを使ってパッケージの管理をすることになります。
パッケージ管理とは、アプリケーション開発で必要な機能を管理することです。
パッケージとは、便利な機能がまとまったものです。例えば
- フォーム機能パッケージ
- 検索機能パッケージ
- データベースの接続パッケージ
- テスト管理パッケージ
などがあります。パッケージは、プログラミング開発をサポートするために作られたひとまとまりの機能です。アプリケーションにメールやログイン機能を追加するときは、「自分で実装する」か「パッケージを使用する」ことになります。実際の開発の現場では、「パッケージを使用する」機会が圧倒的に多いです。なぜなら、「自分で実装する」場合はゼロから作らなければならず、コストがかかるからですね。その点、パッケージは既に出来上がっているのですぐに機能を追加できます。
エンジニアはアプリケーションで必要なパッケージをインストールしますが、パッケージの数が多くなると管理も大変になります。その管理の複雑性を解決するために、Cargoが使われます。
パッケージのインストール方法
Rustでのパッケージインストールは、Cargo.toml
というファイルに使用したいパッケージを記述します。
[package]
name = "xxx"
version = "0.1.0"
authors = ["xxxx <[email protected]>"]
edition = "2020"
[dependencies]
rand = "0.3.0"
dependencies
の項目に使いたいパッケージとバージョンを記述すると、ビルド時に自動でインストールをしてくれます。
インストール可能なRustライブラリの詳細は、crates.ioで確認できます。
引用元: crates.io
Webアプリケーションフレームワークが充実
RustのWebアプリケーションフレームワークは次の通りです。
- Rocket
- Actix-web
- Iron
- Gotham
Rocket
引用元: Rocket
Rocketは、高速で安全性に優れたRustのWebアプリケーションフレームワークです。
Rocketは次のような機能を提供しています。
- テンプレートエンジン
- クッキー
- テストライブラリ
- 型付きURL
- 環境別のconfig設定
Rocketの機能は豊富なのですぐにWebアプリケーション開発ができるのが特徴です。
Actix-web
引用元: Actix-web
Actix-webは、軽量で高速なRustのWebアプリケーションフレームワークです。
基本的なhttp機能を提供しているので、Webサーバーをすぐ立ち上げられます。
Actix-webの最大の特徴は、他のフレームワークよりも高速に動作することです。
Iron
引用元: Iron
Ironは、並列処理に優れているWebアプリケーションフレームワークです。
複数のスレッドを安全に実行し、拡張性の高いシステムを構築できるのが特徴です。
Gotham
引用元: Gotham
Gothamは、安全性とスピード性に優れたWebアプリケーションフレームワークです。
Rustを常に安定したバージョンで管理しています。また、高速で動作することも特徴です。
書籍・ドキュメントサイトが充実している
Rustの書籍は充実しています。日本語の書籍も多いので基礎から実践を学べます!
書籍はたくさんありますが、いくつかおすすめをご紹介しておきます。
プログラミング言語Rust入門〜実行スピードとメモリの安全性を同時に満たすシステム開発言語〜
「実践 Rustプログラミング入門」で基礎を習得しましょう。「プログラミングRust」はRustのバイブル的な本です。ただ少し難しいので基礎を理解してから読むのがいいでしょう。
また、本に加えて、Rustのサイトを見ておくのをおすすめします。
- Rust公式サイト … Rustの公式サイト
- rust-web-framework-comparison … RustのWebアプリケーションフレームワークの比較
- Rustの日本語ドキュメント … Rustの日本語ドキュメントサイト
- Rust入門 / とほほのWWW入門 … Rustの入門サイト
Rustを使うと何ができるの?
Rustを使うと様々なアプリケーションを開発できます。
よく開発されるアプリケーションは、次の通りです。
- Webアプリケーション
- コマンドラインツール
- APIサーバー
Webアプリケーション
Webアプリケーションとは、Webで提供されているサービスのことです。
例えば、ショッピングサイトや求人サービス、ブログなどです。
RustのWebアプリケーション開発では、Webアプリケーションフレームワークが使われるのが主流です。前述した通り、フレームワークはWebアプリケーション開発に特化した機能が提供されています。エンジニアはゼロから構築しなくても、フレームワークを使えばすぐにWebアプリケーション開発をすることができます。
今では、独自のフレームワークで開発している企業は少ないでしょう。一部、大企業は独自フレームワークを使っているかもしれませんが、ほとんどの企業はオープンソースのRustフレームワークを使っています。
そのため、上述したフレームワークの使い方を覚えておくといいでしょう。
コマンドラインツール
Rustは、開発者向けのコマンドラインツールなどにも使われます。
C++同様の実行速度があり、パフォーマンス性に優れているからですね。
JavaScriptとTypeScriptのランタイム環境であるdenoでもRustが使われています。そのため高速な実行を実現しています。
APIサーバー
Rustは、APIサーバーの開発にも使われます。
APIとは「Application Programming Interface(アプリケーション・プログラミング・インターフェース)」の略で、「プログラム同士をインターフェースを通じで繋げる機能」です。
APIの仕組みを使うと、様々なプログラムを組み合わせて一つのサービスを作ることができます。
例えば、TwitterやインスタグラムもAPIを提供しており、API経由でツイートや写真を取得できます。そして、その取得したデータを自分のWebサイトに表示させることができます。
APIサーバーは、APIの仕組みを利用して、データを提供するサーバーです。
APIサーバー構築でもフレームワークは使われます。
Rustで作られているサービス
Rustは、近年人気が高まり多くの企業で使われています。
Rustを使っている代表的なサービスは次の通りです。
- Firefox
- Dropbox
- Cloudflare
これからバックエンドエンジニアを目指す人は、Rustを検討してみましょう!
Rustは学習難易度が高いですが、身につければ強力な武器になりますよ!
Rustが使えるとなれる職種
Rustが使えると、バックエンドエンジニアになれます。
バックエンドエンジニアは、Webサイトの裏方の役割をします。
裏方の役割とは、サーバーやデータベースの仕組みを作ることです。
例えば、ショッピングサイトでは、商品の管理や在庫の管理、決済の手続きなど多岐に渡ってやることがあります。
その一つ一つの機能はサーバーという場所で処理がされます。
そのサーバーで行われる処理を作るのがバックエンドエンジニアです。
バックエンドエンジニアの詳しい解説は、こちらをご確認ください。
バックエンドエンジニアとは?仕事内容、年収・将来性について解説!Rustエンジニアの年収は?
Rustエンジニアの年収は、どのくらいでしょうか。Rustエンジニアを目指す人は気になるところでしょう。
転職支援サービスなどを見ると、Rustエンジニアの年収は500〜900万円程度とされています。
実際に「Stack overflowのDeveloper Survey Results」によると、平均年収は約720万で設定されています。
また、forkwellなどの求人サービスでは600万~800万円で設定されれている求人が多いです。
日本の平均年収と比べると、かなり高い傾向ですね。
スキルの高いRustエンジニアは独立して、もっと稼いでいます!
エンジニアは作ってナンボの世界なので、スキル次第ではもっと高い年収を狙うことも可能です。
Rustの今後の将来性は?
Rustは、今後は多くの需要が期待されます。
なぜなら、Rustのコミュニティは活発で日々進化をしているからです。Rustは、Webアプリケーション開発やツール開発、組み込みプログラムの開発など、幅広く使われています。さらに、Rustはパフォーマンス性が良く高速に動作するので、これからも多くのサービスで使われていきます。
Rustは、安全性と実用性の高さからエンジニアの間でも高い人気があります。エンジニアが求めるプログラミング言語は、企業でも使われる傾向が高いです。Rustを学び、開発効率性を上げたいと思う人も多いでしょう。
さらに現在、日本のIT業界は深刻な人手不足に陥っています。実際に、経済産業省のデータによると、2025年には約40万人、2030年には約45万人が不足すると試算されています。
労働人口が年々減少しているのも関わらず、企業はITへの投資をするため、エンジニアの需要が高くなっているのです。
これからバックエンドエンジニアを目指す人は、Rustの勉強も検討してみてください!そして、新しい技術を常にキャッチアップしていけばエンジニアの価値を高め続けられますよ!
Rustを習得するには
Rustを習得するためには、まずは基礎を学習して、次に実践学習をしましょう。
- プログラミング学習サイトでRustを始める
- プログラミング本でRustの仕様を理解する
- ポートフォリオを作る
プログラミング学習サイトでRustを始める
基礎を身につけるには、プログラミング学習サイトがおすすめです。
なぜなら、プログラミング学習サイトは、環境構築が不要ですぐにプログラミングを始められるからです。
例えば、Progateなどのプログラミング学習サイトを活用すれば、簡単にプログラミングを始められます!
Progateは「Git」「コマンドラインツール」を学べるので試してみてください!
Progateでプログラミングを学習する方法を解説【独学で可能】とほほのWWW入門では、Rustの基礎を学習できるコースがあります。
プログラミング本でRustの仕様を理解する
基礎学習では、プログラミング本も有効です。
プログラミング学習サイトでは扱えきれない細かい仕様を学べます。
前述した、おすすめの本を活用してみましょう。
ポートフォリオを作る
次に実践として、ポートフォリオやアプリを作りましょう。
アウトプットすることでプログラミングをより理解できます。
基礎ではプログラミング言語の特徴や使い方を学び、実践ではアウトプットすることで効率的にプログラミングを習得できます。
エンジニア未経験者でもできる!絶対ためになる魅力的なポートフォリオの作り方!エンジニアへの具体的なステップ
プログラミングを学習しただけでは、エンジニアにはなれません。
エンジニアになるための具体的なステップは次の記事で解説しているので、参考にしてくださいね!
【初心者のための】未経験からWebエンジニアになる3ステップ【完全保存版】最短でエンジニアになりたい人は
最短でエンジニアを目指すひとは、プログラミングスクールに行きましょう!
独学でも勉強できますが、時間がかかるのは事実です。
実践的なスキルをつけるにはプログラミングスクールの方が効率的です。
なぜなら、プログラミングスクールだと実践的な課題をやったり、プロのエンジニア講師にいつでも質問できるので独学よりも早く習得できるからです。
初心者の頃は、エラーに遭遇すると挫折しやすいです。プロに教わった方が自分で調べるより遥かに効率的です。
その他にも、プログラミングスクールでは実践的なプログラムが用意されています。独学ではできない体系的なプログラミング学習と転職支援を受けられます。
プログラミングスクールは当たり外れがあると言われてます。実際に、無料のプログラミングスクールで失敗したという人もいます。
こちらの記事では、失敗しないために厳選したプログラミングスクールをまとめています。すぐにエンジニアに転職した方は検討してくださいね!
【転職もサポート】おすすめのプログラミングスクール3選!【現役エンジニアが厳選】まとめ
この記事では、Rustについてまとめました。
今ではたくさんのプログラミング学習サイトや本があります。実際にコードに触れると、プログラミングの雰囲気を掴めますよ!
皆さんがエンジニアになれるのを応援しています!