Rustを使った「Webアプリ」の開発はどのようなものになるのでしょうか? 本連載のスタートとなる今回は、アプリ開発の下準備として、Rustの現状を踏まえた連載の目的を紹介し、Webアプリ開発環境の構築を通じて、Rustのプロジェクト管理の基本をおさらいします。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本連載のサンプルコードをGitHubで公開しています。こちらからダウンロードしてみてください。
本連載は、@ITで2021年7月から連載された「基本からしっかり学ぶRust入門」(現在は完結)の応用編です。Rustは、当時から人気上昇中の言語と評価されていましたが、Stack Overflowが毎年実施している調査「Stack Overflow Developer Survey 2022」でも、変わらず「Rustが開発者の愛する言語」の1位に選ばれました。これは7年連続してのことです。この調査は、言語の好きと嫌いの差が大きいほど上位にランクされるので、Rustを嫌いな開発者は少数、という見方ができます。また、「これから使いたい言語」の1位も獲得しているようで、少なくとも開発者の間では今後も支持を伸ばしていきそうな言語と言えます。
Rustの美点は多岐にわたり、ネイティブコードコンパイラによる高速な実行バイナリ、所有権と借用の仕組みによる安全なメモリ管理、言語そのものに単体テストやパッケージ管理の仕組みを導入していることなど、枚挙にいとまがありません。C/C++を置き換えられるシステムプログラミングのための言語であり、オブジェクト指向型のプログラミング言語でもあり、ジェネリックプログラミングが可能で関数型プログラミング言語の一面も持ち合わせるなど、マルチパラダイムなプログラミング言語としての性質を持っています。
このように人気があり性能評価の高いRustですが、実際のところ誰がどのような分野で使っているのでしょうか。開発に携わったMozillaは当然として、Amazon、Google、Microsoft、Oracleなどのクラウドベンダー、MetaやDropboxが自身のプロダクトの開発にRustを使用している、利用することを表明しています。
AWS Lambdaでは早くからRustのサポートをはじめており、Lambdaをはじめとする多くの基盤でRustを利用しています。GoogleはAndroidアプリ開発にRustを導入することを表明していますし、MicrosoftがWindowsの開発にRustを導入しているのは有名です。仮想通貨ETHのブロックチェーンであるイーサリアムのステーキングに使うアプリケーションLighthouseはRustで実装されています。
Linuxでは、以前からカーネル開発にRustを導入することを表明してきましたが、2022年12月にリリースされたLinuxカーネル6.1で、はじめてRustで記述されたコードが採用されました。2023年2月にはカーネル6.2がリリースされ、同年4月にリリースされたUbuntu 23.04に搭載されました。これにより、身近なディストリビューションでRustによるカーネル開発の一端を試してみることが可能になっています。並行して、Rust for LinuxプロジェクトでデバイスドライバなどのモジュールをRustで記述する環境が整ってきています。
上記のような状況ではありますが、RustにはRubyにおけるRailsのようなキラープロダクツがない、と言われます。RailsがRuby開発者の裾野を拡げたように、Rustにもそのようなプロダクトの登場を心待ちにする声もあるようです。上記の事例のように確実に普及は進んでいますが、それらは主にシステムプログラミングの分野であり、誰にも見えて触れるというようにはなっていないということのようです。
となると、やはりWeb開発の分野で使える、使われるようになると一気に普及するのではないか?と思うのは筆者だけではないはずです。Rustは、見方を変えれば何でもできる(書ける)言語であるので、後は優れたフレームワークが登場すれば、潜在ユーザーの多いRustであるだけに名実ともに表舞台に躍り出る、ということが期待できそうです。
実際、堅牢(けんろう)性に優れたRustをWeb開発に導入しようという動きは活発なようで、多数のフレームワーク、例えばサーバサイドのactix-web、Axum、クライアントサイドのDioxusなどがすでにリリースされています。特にクライアントサイドではWebAssemblyのサポートでRustのメリットを十分に生かすことができるというメリットがあります(@ITの記事RustでWebAssembly――「Rust and WebAssembly」を体験するを参照)。
本連載ではここに焦点を当て、RustのためのWebアプリフレームワークactix-web、UIフレームワークDioxusなどを取り上げながら、「RustでWebアプリを作るとどうなるのか?」という視点で実用的なアプリケーションを開発し、開発現場で役に立つ知識、技法を紹介していきます。
Copyright © ITmedia, Inc. All Rights Reserved.