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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ロボットなのに肩が凝るなんて、プログラムにバグがあるんじゃないかと思っての。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。