gojq
📄 Summarized by Claude Sonnet 4.5
2025年10月3日時点
どんなもの?
Go言語で実装されたjqコマンドの純粋なGoによる実装。JSONデータの処理・変換を行うコマンドラインツールであり、Goプロダクトにライブラリとして組み込むことも可能。任意精度整数演算に対応し、大きな数値の精度を保持できる。 先行研究と比べてどこがすごい?
C標準ライブラリに依存せず完全にポータブル
無効なクエリやJSON入力に対してわかりやすいエラーメッセージを提供 任意精度整数演算をサポート(jqは大きな整数の計算で精度を失う)
文字単位での一貫したカウント処理や文字列インデックスをサポート
技術や手法のキモはどこ?
パーサーとインタプリタをGoのライブラリとして提供し、gojq.Parse()でクエリを解析、query.Run()またはquery.RunWithContext()で結果イテレータを取得 モジュールローダー、環境変数ローダー、カスタム関数の追加など、コンパイラオプションで柔軟にカスタマイズ可能
加算・減算・乗算・剰余・除算演算子で整数精度を維持
どうやって有効だと検証した?
豊富な使用例とエラーメッセージの改善例を提示
Homebrew、0install、Docker、Go installなど複数のインストール方法を提供し、実用性を証明 オリジナルjqとの動作差異を詳細に文書化し、意図的な設計判断を明示
ライブラリとしての使用例とAPIドキュメントを提供
議論はある?
オブジェクトキーの順序を保持しない(Goの標準ライブラリでordered mapが実装されるまでkeys_unsortedや--sort-keysオプションは非対応) 数学関数は整数を浮動小数点数に変換するため精度が失われる場合がある
jqの一部機能を意図的に非サポート(get_jq_origin、--ascii-output、JSON拡張構文など) 正規表現エンジンの違いにより一部メタ文字や後方参照が非対応
BOM非対応、キーワードを関数名として使用不可など、jqとの細かな仕様差異が存在