ITmedia NEWS >

Facebook、開発言語に「Rust」採用 次期ビルドシステムの開発で

» 2021年07月28日 17時22分 公開
[新野淳一ITmedia]

この記事は新野淳一氏のブログ「Publickey」に掲載された「Facebook、次期ビルドシステムの開発でRust言語の採用を明らかに」(2021年7月28日掲載)を、ITmedia NEWS編集部で一部編集し、転載したものです。

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

 Buckは高速なビルドが可能な点を大きな特徴としており、もともと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を用いることで、どのような利点があるのか。Facebookは記事の中で次の4つの項目を挙げています。

photo

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技術者からもっとも愛されている言語であることが示されています。

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

Copyright © ITmedia, Inc. All Rights Reserved.