Facebook、次期ビルドシステムの開発でRust言語の採用を明らかに

2021年7月28日

Facebookは同社のソフトウェア開発において、同社が主導して開発しているオープンソースのビルドシステム「Buck」を利用しています。

Backは高速なビルドが可能な点を大きな特徴としており、もともとAndroidアプリケーション向けのビルドシステムとして登場しました。

その後対応する言語やプラットフォームが拡張され、現在では15種類以上のプログラミング言語と、さまざまなスマートデバイス、VRヘッドセット、そしてサーバアプリケーションにまで対応しています。

次期ビルドシステムの開発を決断

しかしこうした拡張を重ねる中でBuckの複雑さは増していき、新機能の追加がどんどん難しくなってきたと、Facebook Developersのブログに投稿された記事「The future of Buck」で吐露されています。

同社の開発チームは約4年前から、Buckのアーキテクチャの改善を段階的に行う取り組みを始めましたが、それは困難だと判断。

過去の互換性を保ちつつ、拡張が容易な新たなビルドシステムを新たなBuckとして開発すると表明しました。

下記は「The future of Buck」からの引用です。

The limited extensibility of Buck v1 has been a recurring source of pain for our community. With this new build system, we've focused on extensibility as a primary goal and every build rule is written outside of the core build language as a user-defined rule.

Buck v1の拡張性の低さは、私たちのコミュニティにとって繰り返しの悩みの種でした。この新しいビルドシステムでは、拡張性を第一の目標とし、すべてのビルドルールは、コアのビルド言語の外で、ユーザー定義のルールとして書かれます。

そして次世代Buckの開発にはRust言語を採用する方向であることも明らかにしました。

Rustを開発言語に採用へ

Rust言語はMozillaが開発し、コミュニティベースで開発が進められてきた、C言語のように低レベルのシステム開発向けに作られたオープンソースのプログラミング言語です。

不正なメモリ領域を指すポインターなどを許容しない安全なメモリ管理や、マルチスレッド実行においてデータ競合を排除した高い並列性を実現している点などの特長を備えているため、安全かつ高速なアプリケーション開発を実現します。

今年、2021年2月にはRustの開発を推進するRust Foundationが設立されるなど、存在感が高まっています。

参考:Rust言語を推進する「Rust Foundation」設立。AWS、Google、マイクロソフト、モジラ、ファーウェイらが設立メンバー

Rustを用いることで、どのような利点があるのか。Facebookは記事の中で次の4つの項目を挙げています。

Rust’s _async/await_ syntax makes writing asynchronous code really smooth and Rust helps get the complex concurrency details correct. Each migration of Buck’s Java computations to a concurrent computation was a months-long, difficult transition and there are still significant single-threaded bottlenecks there.

Rustのasync/awaitシンタックスは、非同期のコードをとてもスムーズに記述できますし、Rustは複雑な並行処理の詳細を正しく理解するのに役立ちます。BuckのJavaの計算をひとつひとつ並行処理に移行するのは数カ月に及ぶ困難な作業でしたし、シングルスレッドの大きなボトルネックがまだ存在しています。

Rust has a lot of high-level language features that make development easier and more enjoyable. These are things like enums, pattern matching, traits, procedural macros and all the other features that contribute to Rust developers in general loving it so much.

Rustには、開発をより簡単で楽しいものにしてくれる多くの高レベルな言語機能があります。それらはenum、パターンマッチング、trait、手続き型マクロなどで、Rustの開発者の多くに愛されています。

Rust gives greater control over memory allocations. Garbage collecting languages (even with generational collection) have challenges dealing with incremental computations like Buck performs.

Rust はメモリの割り当てをより細かく制御することができます。ガベージコレクション言語は(たとえジェネレーショナルコレクションであっても)、Buckが行うようなインクリメンタルな演算に対応するのは困難です。

Rust is high performance. We’ve seen significant speedups from the translation of things into Rust.

Rustは高性能です。Rustに移植することで劇的な性能向上を私たちは見てきました。

Rustは2020年のStack Overflowの調査で、IT技術者からもっとも愛されている言語であることが示されています。

参考:Stack Overflowの調査によると、デベロッパーの5割以上が「フルスタック」エンジニアを自認。最も使われている言語はJavaScript、最も愛されている言語はRust

まだ日本ではRustによる本格的な開発事例は目立っていませんが、今後はRustの利用が広がると予想されます。

あわせて読みたい

プログラミング言語 Facebook Rust




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本