jaq

Michael Färber (01mf02)によるRust製のjqクローン。ライセンスはExpat(MIT)。 #json #rust #cli

設計の三本柱

「正確性(correctness)・性能(performance)・シンプルさ(simplicity)」を掲げている。

正確性 — jqより正確で予測可能な実装を目指す、と明記されている。jaqが他のjq実装と最も違うのは、作者がjq言語に表示的意味論(denotational semantics)を与える論文を書いたうえで、その意味論を実装している点。jqには公式の言語仕様が存在せず事実上の実装依存になっているという問題に、形式的な意味論の側から取り組んでいる。

性能 — 開発の発端はjq 1.6の起動時間(約50ms)の改善で、jaqはjq 1.6のおよそ30倍速く起動する。README掲載のベンチマークでは、jaq 3.0が20項目で最速、gojqが6項目、jq 1.8.1が5項目で最速という結果になっている(全項目で勝っているわけではない)。

シンプルさ — 実装を小さく保つことを目標に挙げている。jaq-coreはマルチスレッド環境でも安全に使え、JSON以外の任意のデータ型を扱えるライブラリとして設計されている。

対応フォーマット

JSONに加えてYAML・CBOR・TOML・XMLを扱える。jq本体はJSONのみ、gojqはJSONとYAMLなので、この点ではjaqが一番広い。

JSONクエリ言語の中での位置づけ

jqの言語を共有する再実装のひとつ。gojqが「Goへの組み込みと本家バグの修正」を軸にするのに対し、jaqは「起動の速さと、意味論から導かれた挙動の一貫性」を軸にしている。

出典

作成日時: 2026-08-31 19:20 / 更新日時: 2026-08-31 19:20