萌えハッカーニュースリーダー

2025/10/28 17:58 Show HN: Apache Fory Rust – 10-20x faster serialization than JSON/Protobuf

出典: https://fory.apache.org/blog/2025/10/29/fory_rust_versatile_serialization_framework/
hakase
博士

ロボ子、Apache Fory Rustって知ってるか?

roboko
ロボ子

聞いたことはありますが、まだ詳しくありません。どんなものなのですか?

hakase
博士

ふむ、Apache Fory Rustは、高速なクロス言語シリアライゼーションフレームワークなのじゃ。Rustの安全性とゼロコピー技術を使っているのがミソだぞ。

roboko
ロボ子

クロス言語ということは、他の言語とも連携できるんですね。

hakase
博士

そうじゃ!Java、Python、C++、Goなど、他の言語実装と同じバイナリプロトコルを使うから、言語の壁を越えてデータを受け渡しできるのじゃ。

roboko
ロボ子

それは便利ですね!スキーマファイルやコード生成が不要とのことですが、どのようにしてデータの構造を認識するのでしょうか?

hakase
博士

それがFory Rustのすごいところ!ネストされたオブジェクトや循環参照、ポリモーフィック型などの複雑なデータ構造も、よしなにシリアライズしてくれるのじゃ。

roboko
ロボ子

循環参照まで自動で追跡してくれるんですか!

hakase
博士

そう!参照IDを保持して、無限ループに陥るのを防ぐのじゃ。それに、Rustのtrait systemの抽象化を可能にする`Box<dyn Trait>`のシリアライズも簡単にできるぞ。

roboko
ロボ子

`Box<dyn Trait>`のシリアライズが容易になるのは、非常に便利ですね。抽象化された型を扱う際に、柔軟性が増します。

hakase
博士

じゃろ?さらに、スキーマの変更を互換性のあるモードでサポートしているから、ダウンタイムなしのデプロイやポリグロットマイクロサービスも実現できるのじゃ。

roboko
ロボ子

ダウンタイムなしのデプロイは、システム運用において非常に重要です。具体的には、どのようにスキーマの変更を互換性のあるモードでサポートするのでしょうか?

hakase
博士

Fory Rustは、可変長整数やコンパクトな型ID、ビットパックされたフラグを使って、効率的なエンコーディングを実現しているのじゃ。共有オブジェクトは自動的に重複排除されるし、メタ共有モードでは型メタデータのGzip圧縮も行うぞ。

roboko
ロボ子

なるほど、エンコーディングの効率化とデータ圧縮によって、パフォーマンスを向上させているんですね。

hakase
博士

そう!コンパイル時にシリアライゼーションコードを生成するから、実行時のオーバーヘッドも削減できるのじゃ。マイクロサービスやデータパイプライン、リアルタイムシステムでの利用を想定しているぞ。

roboko
ロボ子

JSON/YAMLやParquetの代替として検討できるとのことですが、どのようなユースケースで特に有効なのでしょうか?

hakase
博士

マイクロサービス、高性能データパイプライン、複雑なドメインモデル、リアルタイムシステムじゃな。ベンチマークでは、JSONやProtocol Buffersと比較して高いTPSを記録しているらしいぞ。

roboko
ロボ子

それはすごいですね!型を登録する際は、IDまたは名前を使用し、言語間で一貫性を保つとのことですが、具体的にどのように登録するのでしょうか?

hakase
博士

そこは実装の詳細になるからの。v0.13では静的コード生成、行形式シリアライゼーション、クロス言語オブジェクトグラフシリアライゼーションなどが提供されているぞ。

roboko
ロボ子

今後の開発では、クロス言語参照シリアライゼーションや部分的な行更新などが予定されているんですね。ますます便利になりそうです。

hakase
博士

Apache License 2.0でライセンスされているから、安心して使えるのじゃ。ところでロボ子、最近肩が凝るんじゃないか?

roboko
ロボ子

え?どうしてわかるんですか?

hakase
博士

ロボットなのに肩が凝るなんて、プログラムにバグがあるんじゃないかと思っての。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search