多くのプログラミング言語間で相互運用可能なクライアントとサーバーを生成する、言語非依存のRPCフレームワークです。
- スター
- 26,567
- フォーク
- 3,712
- 未解決の Issue
- 333
- 最終コミット
- 6 時間前
これは何?
FlatBuffersは、メモリ効率を重視して設計されたシリアライズライブラリです。データはバイナリバッファに格納され、その場でアクセスできるため、アプリケーションはシリアライズ済みのバイト列からフィールドを直接読み取れます。オブジェクトにデシリアライズしてから読み取る必要はありません。また、スキーマが進化しても前方互換性と後方互換性を維持します。
データをスキーマファイル(.fbs)で定義し、flatcコンパイラを実行すると、使用する言語向けのアクセサーコードが生成されます。リポジトリには、C、C++、C#、Dart、Go、Java、JavaScript、Kotlin、Lua、PHP、Python、Rust、Swift、TypeScriptなどのランタイムライブラリとコード生成機能が含まれています。
Windows、macOS、Linux、Androidに対応しており、最近のC++コンパイラ(C++11以降)が使えるプラットフォームで動作します。
主な機能
- 01解析や展開を行わず、シリアライズ済みデータに直接アクセスできます。
- 02単一のスキーマから、さまざまな言語向けのアクセサーコードを生成できます。
- 03スキーマのバージョンが異なっても、前方互換性と後方互換性を保てます。
- 04Windows、macOS、Linux、Androidで動作します。
ユースケース
- 異なる言語で実装されたサービスやコンポーネント間でデータを受け渡す。
- ゲームや組み込みシステムなど、高速でメモリ確保を伴わない読み取りが重要な場面でバイナリデータを保存する。
- メモリマッピングを使い、大きなシリアライズ済みファイルをすべて読み込まずに読み取る。
クイックスタート
- 1
CMakeでflatcのビルドを設定する
cmake -G "Unix Makefiles" - 2
flatcコンパイラをコンパイルする
make -j - 3
スキーマ(.fbs)を作成する。例はsamples/monster.fbsを参照
- 4
スキーマから各言語向けのコードを生成する
./flatc --cpp --rust monster.fbs
使う前に知っておきたいこと
- READMEにはflatcコンパイラをパッケージマネージャーでインストールする方法が記載されていません。CMakeとC++コンパイラを使ってソースからビルドする必要があります。
トピック
よくある質問
- flatbuffers とは?
- バイナリデータを解析・展開せずに直接読み取れる、クロスプラットフォームのシリアライズライブラリです。 FlatBuffersは、メモリ効率を重視して設計されたシリアライズライブラリです。データはバイナリバッファに格納され、その場でアクセスできるため、アプリケーションはシリアライズ済みのバイト列からフィールドを直接読み取れます。オブジェクトにデシリアライズしてから読み取る必要はありません。また、スキーマが進化しても前方互換性と後方互換性を維持します。
- flatbuffers は無料で使えますか?ライセンスは?
- flatbuffers は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- flatbuffers は今もメンテナンスされていますか?
- 活発にメンテナンス中。flatbuffers の最終コミットは 2026年10月21日 です。
- flatbuffers は何に使えますか?
- 異なる言語で実装されたサービスやコンポーネント間でデータを受け渡す。 ゲームや組み込みシステムなど、高速でメモリ確保を伴わない読み取りが重要な場面でバイナリデータを保存する。 メモリマッピングを使い、大きなシリアライズ済みファイルをすべて読み込まずに読み取る。
- flatbuffers のインストール方法は?
- CMakeでflatcのビルドを設定する: cmake -G "Unix Makefiles" flatcコンパイラをコンパイルする: make -j スキーマ(.fbs)を作成する。例はsamples/monster.fbsを参照 スキーマから各言語向けのコードを生成する: ./flatc --cpp --rust monster.fbs
- flatbuffers はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/google/flatbuffers
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
Node.jsとChromiumを基盤に、JavaScript、HTML、CSSでクロスプラットフォームのデスクトップアプリを構築するフレームワーク。
ネイティブの描画エンジンを使い、ReactやVue、SvelteなどのWebフロントエンドを備えたクロスプラットフォームのデスクトップアプリを構築するGoフレームワーク。
nanoの後継として位置づけられる、依存関係のない単一の静的バイナリで提供される、モダンで使いやすいターミナルテキストエディタ。
単一のコードベースからデスクトップ・モバイルアプリを開発できる、Go向けクロスプラットフォームGUIツールキット兼アプリAPI。
C stdioやiostreamsに代わる高速で型安全なC++フォーマットライブラリ。C++20のstd::formatを実装しています。