2024年11月30日に、GMO Yours・
今年のRust.
Rustでマルチスレッドプログラミング! リアルタイム通信ではどのようにスレッドを立てるのか
yuki-uchida
Media over QUIC Transport
Rustでマルチスレッドを実装するにあたって、OSスレッドとグリーンスレッドを用途に応じて使い分け、I/
マルチスレッド設計では、その処理の特性に応じてOSスレッドとグリーンスレッドを適切に選定したり、複数スレッドから参照するデータをどう扱うかが難しく、スレッドで行われる処理や扱うデータのサイズなどを考慮して設計する必要があるそうです。リアルタイム通信のような負荷の高いユースケースにおける、Rustを用いたマルチスレッド処理の設計とその具体的な実装について、要件の立て方から丁寧な説明で、とても学びの深いセッションでした。
さらに、スレッド間のデータのやり取りには、tokioが提供するチャネルを活用すること、特に1対多
ビデオ会議や映像配信などでメディアを高速かつ並列に処理する重要性が増す中で、マルチスレッドプログラミング技術の需要が高まっています。特に、マルチスレッドと相性が良いRustへの注目も同時に高まっていると感じます。Rustでマルチスレッドを扱う上では、スレッドごとの特性を理解し、タスクの内容やデータの性質に応じて適切に設計することが求められますが、こうした難しさを乗り越える設計の工夫がリアルタイム性や高効率な通信の実現につながります。本セッションは、そうした課題と工夫の面白さを存分に伝えてくれる非常に魅力的な内容でした。
日本全国・都市3D化フロシェクト「PLATEAU」とデータ変換OSS「PLATEAU GIS Converter」の公開
Satoru Nishio
Project PLATEAUは、日本全国の都市を3Dモデル化し、災害対策やエンタメなど多分野で活用される地理空間情報を提供する国主導のプロジェクトです。XMLで記述されたCityGMLというデータ形式が基盤となっており、札幌市で約70GBに達する大規模データが特徴です。
「PLATEAU GIS Converter」
また、RustはGIS関連のクレートは存在するものの、3次元に対応したものや、PLATEU仕様に準拠したCityGMLをパースするためのクレートが存在せず、今回のプロジェクトでは独自のクレートを実装する必要があったとのこと。タイル分割の並列化では、Rayonとmpscでタイル分割処理を並列化することで処理速度の効率化を行ったり、パイプラインアーキテクチャを採用し、各処理はチャネルを利用して並列処理を安全に実装していたため、メモリにおけるバグを防げたなどの利点があったそうです。
「PLATEAU GIS Converter」
先に挙げたTauriはバージョン2.
いちエンジニアとして技術的な深掘りがしたくなることはもちろん、プロジェクトの今後にますます注目が高まる内容のセッションでした。
Rust Unlinked - a Journey Through rustc, Linkers, Symbols, and Static Libraries
Balaji
特に、コンパイラの各フェーズ
システム開発において重要なコンパイルからリンクまでの全体像と、大規模プロジェクトでの最適化手法について、Rustのコンパイルを理解するのに有益なセッションでした。また、Stabbyライブラリを使用したABI安定化の新しいアプローチも実践的な内容でした。
Rustを使ったRubyライブラリの開発
ahogappa
開発における実装のアプローチでは、メソッドチェーンと型推論を活用することで少ない記述量で実装できる利点が示されました。一方で、FFIにおけるStr型の扱いが複雑で、頻繁な型変換が必要になるという課題も明らかになりました。さらに、Rustの特徴である安全性が活かせないほどunsafeブロックを多用せざるを得ない点など、実践から得られた具体的な課題が印象的でした。
本セッションでは、Rustの採用を検討する際の判断材料が数多く示されました。既存のC実装を維持すべきケースとRustの特性を活かせるプロジェクトの見極めという観点で、学びのあるセッションでした。
当日の会場の様子
RustTokyo 2024の当日の会場の様子を紹介します。
当日、会場内には、スポンサーブースが設置されました。 各スポンサーブースではRustを実際に利用しているサービス事例の紹介やデバイスを体験できる機会が提供されました。来場者はブースを通じて、各企業がRustをどのように活用しているのかを知ることができました。
参加者特典としては、RustTokyo 2024オリジナルのトートバッグを制作・