最終更新: 2026年9月30日
大規模データセット向けXLSB vs XLSX:開発者のパフォーマンスガイド データパイプラインやバックエンドのレポートエンジン、Microsoft Excel と連携する分析ツールを構築している場合、“壁"にぶつかったことがあるでしょう。
ユーザーが45万行のワークブックをアップロードします。サーバーはワーカースレッドを起動し、メモリ使用量はギガバイト単位に急増し、ガベージコレクションがランタイムをフリーズさせ、実行がタイムアウトします。ペイロードを確認すると、標準的な .xlsx ファイルです。
これを解決するために、開発者はチャンク化やストリーミングパーサの実装、またはファイルをバックグラウンドワーカーにオフロードする作業に数日を費やすことがよくあります。しかし、最も効果的な最適化の一つは、アーキテクチャの再設計を一切必要とせず、ファイル拡張子を .xlsx から .xlsb に変更することです。
本ガイドでは、両フォーマットの内部構造を詳しく解析し、なぜ内部アーキテクチャが性能特性に大きな違いをもたらすのかを検証し、Python と .NET の具体的なベンチマークを比較し、プロダクションでバイナリワークブックを展開するタイミングに関する明確なルールを示します。
1. 内部構造:OpenXML vs. BIFF12 大規模データセットで性能が劇的に異なる理由を理解するためには、各フォーマットがディスク上にレコードをどのように保存しているかを確認する必要があります。
┌────────────────────────┐ ┌────────────────────────┐ │ sample.xlsx │ │ sample.xlsb │ │ (ZIP Archive Wrapper) │ │ (ZIP Archive Wrapper) │ └───────────┬────────────┘ └───────────┬────────────┘ │ │ ┌───────────▼────────────┐ ┌───────────▼────────────┐ │ sheet1.xml (UTF-8) │ │ sheet1.bin (BIFF12) │ │ Verbose ASCII Tags │ │ Structured Byte Stream │ │ 42 │ │ [Opcode][Len][Payload] │ └────────────────────────┘ └────────────────────────┘ Both .