こんにちは。倉内です。
近年注目度が高まっているプログラミング言語のひとつであるRust(ラスト)。Stack Overflow Devloper Survey 2022でも「学びたい言語」として、Pythonを僅差で抜いて1位にランクインしていました。
ただ、まだそれほど情報が多くないということもあり「気になってはいるけど、どんな言語かあまりよく分からない」という方も多いかもしれません。
そこで今回は、Rustが気になってる方向けに、Rustとはどんな言語なのか?どんなことができるのか?そして、どうやって勉強するといいのか?といったことをお伝えしていきたいと思います。
Rustについて知ろう
どんな言語?
RustはMozillaが開発し、2010年ごろに登場したプログラミング言語です。C言語(1972年)やJava(1995年)、PHP(1995年)などの言語と比べると新しめの言語です。
基礎的な文法はC言語やC++に似ていると言われています。定番の“Hello World!”を出力するコードを見てみましょう。
fnmain(){ println!("Hello World!"); }
※オンライン実行環境のpaiza.IOを利用していただくと、ブラウザ上ですぐに実行結果が確認できますのでご活用ください。
プログラミング言語は、オブジェクト指向プログラミングなどのプログラミングパラダイムに対応しています。Rustはマルチパラダイムプログラミング言語として、手続き型プログラミング、オブジェクト指向プログラミング、関数型プログラミングなどの実装手法をサポートしています。
(参考)Rust (プログラミング言語) - Wikipedia
少し踏み込んだ話ですが、Rustは「ボローチェッカー」(borrow checker)という仕組みでメモリ安全性の保証を実現しています。これがメモリ安全性にやや懸念があるC言語やC++との違いだと言われています。
(参考)「Rustは安全でも難しい」といわれる理由――メモリ安全を実現する「所有権」の仕組み:基本からしっかり学ぶRust入門(5) - @IT
どういったところで使われている?
Rustの公式ドキュメントには、サービス本番で採用されている事例がまとめられていますので、いくつかご紹介します。
Production - Rust Programming Language
Dropbox
DropboxのコアファイルストレージシステムのいくつかのコンポーネントはRustで作成されているそうです。ファイル共有サービスとして仕事に趣味にと利用している方も多いのではないでしょうか。
2016年から採用していたということで、かなり早くからRustに注目していたことが伺えます。
Atlassian
ConfluenceやJIRAといった、アジャイル開発を円滑に進める上で役に立つツールを提供しているAtlassian(アトラシアン)。
ペタバイト(PB、1,024テラバイト)規模のソースコードを分析するサービスでRustを使用しているそうです。
他にも多数の事例がこちらでまとめられているので、興味がある方はぜひごらんください。
estie
日本での事例も一つご紹介します。以前paizaのTech Team Journalでもインタビューをさせていただいたことのある株式会社estieでは、Webアプリ開発にRustで作られたフレームワークを採用しているそうです。
また、Node.jsで開発していたバックエンドをRustで書き換えるという取り組みもおこなっています。
導入してみてよかったことや大変なこと含め、スライドにまとめて公開してくださっているので、日本語の情報を求めている方は参考にしてみてください。
注目度が高いって本当?
冒頭でStack Overflowの調査結果で、Pythonを抑えてRustが「学びたいプログラミング言語」で1位を取ったことに触れましたが、それ以外にも注目度が高いと言える理由があります。
まず、8月1日に公開された情報でMeta(旧Facebook、Facebookの他、Instagramなどを運営)がRustを新たに社内の正式サポート言語に追加したことが分かりました。
Metaではソフトウェア開発において正式にサポートする言語は慎重に選択していて、これまでPython、C++、Hackがサポートされており、今回そこにRustが追加される形となりました。
また、昨年の記事にはなりますが、ファインディが実施した「エンジニアのキャリア動向」の調査では、「年収800万円以上のエンジニアが習得したいプログラミング言語はRustとGo」という結果が出ています。
現在業務で利用している人はまだ少ないRustですが、この結果からある程度キャリアのあるエンジニアも注目している言語であることが言えそうです。
paizaでもサービス開発では利用していないのですが、Rustを好きなエンジニアがいて、「WebエンジニアからみたRust」という連載記事を公開しています。「難しい言語」とも言われるRustが、なぜこんなにも注目され、また新たに学んだり企業が採用したりするのかについて詳しくお伝えしていますので、興味がある方はぜひごらんください。
Rustを学ぼう!
公式ドキュメント
はじめてRustに触れる方は、まずは公式ドキュメントを参照してみましょう。日本語のページがあります。
上部にある「学ぶ」というメニューから基本的な文法を学べる学習ページに遷移します。「THE BOOK」は日本語訳もありますので、英語に抵抗がある方も学びやすいと思います。
さきほども少し取り上げたメモリの安全性についての話は、「所有権を理解する」から学ぶことができます。Rustの特徴とも言える部分ですので、難しいかもしれませんが、まずは概念だけでも知っておくとよいでしょう。
また、「Playground」というメニューから遷移した先では、ブラウザ上で実行環境が使えます。
Rustの最初のステップ
Microsoftが提供している基本的な文法を習得して、ToDoリストを管理するプログラムを書けるようになるためのチュートリアルです。
学んだ知識のチェックは選択問題になっていて単元ごとの復習をしながら先に進めます。
また、演習課題があいだにあるので、インプットだけで「分かったつもり」になることなく、アウトプットもしっかりおこなうことができます。
Rust by Example 日本語版
サンプルプログラム集になっていて、標準ライブラリを含めてRustのコードを眺めながら理解を深めていきたい方におすすめです。
すでにプログラミング自体はやったことがあり、Rustを新しい言語として習得したい方は、コードを書き写して自分で動かしながら見たい場合も多いと思いますので、その際はこちらのサイトが役に立つでしょう。
Writing an OS in Rust
プログラミング初心者の方には少し難しいかもしれませんが、RustでのOS(オペレーティングシステム)作成を学べるページです。
Rustの基本を身に着けて、もっと理解を深めたい・アプリよりもOSをつくるほうに興味があるかも…といった方はぜひ参考にしてみてください。
Rustで問題を解こう!
paizaラーニングでは、さまざまな言語でプログラミング問題を解ける「レベルアップ問題集」をご用意しています。
Rustはベータ版扱いのため解答例はないのですが、他の言語の解説を参考にしていただくこともできますし、テストケースの入力値を参照することもできます。基本的な文法を学んだあと、たくさん問題を解くことでRustをより定着させることができます。
どのような問題があるかは、以下の記事で詳しく解説していますので参考にしてみてください。
まとめ
注目度が高まっているRustについて、言語の特徴や学習方法についてご紹介してきました。
Rustは比較的新しい言語でありながら、調べてみると公式のドキュメントをはじめ有志の日本語訳も充実しており、いちから学びたいという方も手を出しやすい印象を受けました。
まだ、業務で使用したことがある方はそれほど多くない印象ですが(特に日本国内では)「気になっている」「学んでみたい」方は現役エンジニアの中にも多く、これからも注目度が上がっていきそうだなと思いました。
今回ご紹介した学習方法などは一部ですが、無料で利用できるものばかりなのでぜひ活用してみてください!
「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。
詳しくはこちら
そしてpaizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
詳しくはこちら