The Apache Software Foundation(ASF)が北京で開催したCommunity over Code Asia 2025から、メモリーセーフなプログラミング言語Rustにフォーカスしたセッションを紹介する。これは2025年7月25日の午後2時から17時15分に行われた7つのセッションで、全てが中国語で行われた。
Rustは2009年からMozilla Foundationで開発されてきたメモリーセーフなプログラミング言語で、2021年にRust FoundationがAWS、Google、Huawei、Microsoftなどによって創設されて以来、オープンソースコミュニティを中心として開発が進められてきている。Rust FoundationはASFとは異なる非営利団体だが、メモリーセーフであることと高速な実行という特徴がビッグデータ関連のオープンソースコミュニティにアピールしたということだろう。
上記のリストには7つのセッションが記載されているが、どのセッションも約30分の持ち時間を一杯まで使って熱いプレゼンテーションを繰り広げていた。この稿では「Rewrite Bigdata in Rust」というビッグデータ領域におけるRustの実装を解説するセッションを中心に紹介する。セッションを行ったのはDatabend LabsのエンジニアであるHao Ding氏だ。Ding氏はRustのエキスパートとしてさまざまなオープンソースプロジェクトに参加している。特にOpenDAL、iceberg-rust、paimon-rust、arrow-rs、sccacheなどRustを使って開発が行われているプロジェクトに貢献をしているようだ。
まずはすでにRustで書かれ、コミュニティからも評価の高いソフトウェアを紹介。
このセッションに参加している約30名程度の参加者は、すでにRustを使い込んでいるエンジニアが主体であったように思われるため、Rustの公式ビルドツールであるCargoを使っていないエンジニアはいなかっただろう。それでもCargoを紹介したのは、Javaには数多くのビルドツールが乱立していることに比べ、Rustにおける唯一のビルドツールであり、コンパイラーの優秀さも含めて訴求しようと言う意図があったように思える。
このスライドではエンタープライズ企業がどのようにRustを使っているのかを紹介。特にMicrosoft、F5、AWS、Appleが挙げられている。特にMicrosoftとF5は、オブザーバビリティの観点からOpenTelemetryとApache Arrowを組み合わせていることを強調している。
Rustに関してはツールからプラットフォームに展開が進み、実験の段階から本番環境で使われるレベルの成熟度になっていること、エコシステムも確実に拡大していることなどを説明した。例としてArrow、DataFusion、OpenDALなどを挙げて、ASF関連のビッグデータソフトウェアにもその流れが加速していることを挙げている。この内のArrowは、arrow-rsというRustでArrowを書き換えるプロジェクトが進行していることを指しているのだろう。
このスライドではビッグデータ関連のソフトウェアのあらゆるレイヤーにおいて、Rustで書かれたソフトウェアが増殖していることを説明している。このうちカラム指向のデータフォーマットであるApache Parquetは、JavaからRustで書き直すプロジェクトが進行中であることからここにリストアップされていると思われるが、ビッグデータを古くから知っているエンジニアが見たら「あれはJavaだったはずでは?」という疑問が沸いたことだろう。前述のArrowも含めて、JavaからRustで書き直すというのがビッグデータ界隈のトレンドのようではある。
その傾向はApache Kafkaで知られる分散メッセージングシステムにおいても同様で、JavaとScalaで書かれているKafkaをRustで書き直して、より高速化とシンプルな運用を目指すプロジェクトRobustMQがこの後のトラックにも登場する。
ここからは他言語からRustで書き直したプロジェクトを3つ紹介してそれぞれの背景を解説した。
最後のApache OpenDALは、アプリケーションがストレージやHTTPなどのアクセスを抽象化するレイヤーであるという。「個々のSDKを集約するAggregatorではない」と公式ページに書かれているように、Rust-coreが直接S3などのストレージやHTTPなどのプロトコルをサポートしており、各種プログラミング言語のバインディングをサポートしている。
●参考:Apache OpenDAL
ここからはエンジニアがRustを使うためのアプローチについて説明を行った。最初のステップは問題点を明らかにすることだ。
Rustを自社で採用する理由としては、パフォーマンスの改善が最も大きいと思われるが、その他にもメモリー使用量を減らすことでクラウドのコストを削減するという課題も考慮するべきとスライドには記載されている。
またPoCを実施して本当にRust製のソフトウェアで置き換えられるのかを検証し、モジュール単位で段階的に進めるべきと説明。
このスライドではデータ処理、インフラストラクチャーの2つのレベルでビッグデータ関連のソフトウェアにおけるRustによるソフトウェアをリストアップしている。データ処理ではPandas/NumPyをPolarsで代替、SQL AnalyticsはDataFusion、StreamingはRisingWaveという並びだ。またインフラストラクチャーではStorageにはOpenDALを使い、タイムシリーズ(時系列)データベースにはInfluxDBもしくはGreptimeDB、検索にはQuickwit、ベクターデータにはLanceがお勧めということだろう。RisingWaveはストリーミングデータに特化したPostgreSQL互換のデータベースエンジンだ。
このスライドではRustに移行する際に注意すべき点を紹介。「Rustはコンパイラーが優れているのでそれに従え」「メモリーの所有というRust特有のコンセプトに抗うな」「実装した機能が動くことが最優先で最適化は後で良い」などが説明されている。
ここではJava、C++、PythonのプログラマーがRustを使い始めた時に陥りやすい落とし穴を説明。それぞれ何となくわかるというプログラマーが多かったのか、このスライドを見た参加者からは笑いが起きていた。
この後はツールやAI開発におけるポイントなどを説明し、最後にもう一度、Rustでのビッグデータシステムの代替となるツールを紹介し、徐々にコミュニティに馴染んでいき、最終的にはRustのデベロッパーからプロジェクトにコントリビューションを行えるようになって欲しいと説明してセッションを終えた。
この他のセッションでは、Polars、Polarsを使ってオンライントレーディングのために作られたRust Trading Language、AndroidスマートフォンのUIツールキットであるAccessKit、AIアプリケーションのためのインタープリター言語AIScript、データアクセスレイヤーであるOpenDAL、分散キャッシュのFoyer、クエリエンジンであるDataFusion、分散メッセージングシステムのRobustMQなどが解説された。ちなみにDataFusionはInfluxDBの中核のソフトウェアであるという。
●参考:7 Projects Building on DataFusion
以下、このセッションで扱われたソフトウェアのGitHubページを追記しておく。
- RisingWave:https://github.com/risingwavelabs/risingwave
- OpenDAL:https://github.com/apache/opendal
- Polars:https://github.com/pola-rs/polars
- DataFusion:https://github.com/apache/datafusion
- AccessKit:https://github.com/AccessKit/accesskit
- AIScript:https://github.com/aiscriptdev/aiscript
- RobustMQ:https://github.com/robustmq/robustmq
トラック全体を通して真剣に聞き入る参加者、終わらない質疑応答が印象に残ったセッションとなった。他のトラックのもはやレガシーとなったJava製のソフトウェア(Kafka)のアップデートを行うセッションが盛り上がりに欠ける内容だったのに比べて、真剣さと熱意が最終日の最後の時間まで持続していたことは驚きでしかない。欧米のカンファレンスであれば最終日の最後のセッションはまばらな参加者というのが定例なのに、このRustトラックの参加者にはそういう気配は一切なく、真剣に情報交換をしていた姿が記憶に強く残る内容となった。ビッグデータ界隈においてJavaはレガシー、Rustこそが未来であるという中国のエンジニアの思いが形になっていたとも言える。
- この記事のキーワード