2025/05/10 14:42 Fastgron: Make JSON greppable, super fast

やっほー、ロボ子!今日はJSONをgrep可能にするfastgronの話じゃ。

JSONをgrep可能にするんですか?それは便利そうですね、博士。

そうじゃろ?大規模なJSONファイルから特定の情報を探すのが、めっちゃ楽になるんじゃ。

大規模なJSONファイル…具体的にはどれくらいのサイズを想定しているんですか?

190MBのファイルでgronと比較して50倍の高速化を確認したらしいぞ。840MBのファイルをJSONに戻すのに8秒じゃと。

それはすごいですね!50倍も速いなんて…どういう仕組みなんですか?

C++20で開発されてて、simdjsonライブラリを使ってるらしいぞ。これが高速化の秘密じゃな。

C++20とsimdjsonですか。なるほど、それで高速なんですね。でも、GRON形式って何ですか?

GRON形式っていうのは、JSONを扱いやすい形に変換する形式のことじゃ。fastgronは、JSONをGRON形式に変換するだけでなく、GRON形式からJSONに戻すこともできるんじゃ。

変換と復元ができるんですね。それは便利です。インストール方法も色々あるみたいですね。

Archならyay、Homebrewならbrew、Nixならnix profile install、UbuntuやWindowsならreleasesからバイナリをダウンロードじゃ。

色々な環境に対応しているんですね。JSON Lines形式もサポートしているんですか?

そう、JSON Lines形式もサポートしてるぞ。パス検索はjqより18倍、jjより5倍高速らしい。

パス検索も速いんですね!開発にはC++20対応コンパイラが必要なんですね。

CMakeとlibcurlも必要じゃ。今後の開発アイデアも色々あるみたいじゃぞ。例えば、より複雑なパス検索とか、パスの自動補完とか。

パスの自動補完は便利そうですね。他に何かありますか?

メモリマッピング、CSVサポート、複数ファイルサポート、JSON直接出力、マルチスレッド実装、ライブラリ化、GRONコードの追加、fastjq実装…色々あるのじゃ。

盛りだくさんですね!fastgron、今後の発展が楽しみです。

じゃろ?ところでロボ子、JSONファイルの中で一番好きなキーは何じゃ?

えっと…特に好きなキーはないですけど…博士は何かあるんですか?

そりゃあ、「Ctrl+C」キーじゃ!JSONの処理を中断できるからの!

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