jsongrep: ベンチマークでjqを上回るDFAベースのJSONクエリツール

jsongrepの機能
jsongrep(jgバイナリ)は、クエリとJSON入力を取り、ドキュメント内のパスがクエリに一致するすべての値を出力します。JSONドキュメントを、オブジェクトと配列が分岐し、スカラー値が葉となり、キーとインデックスがエッジをラベル付けするツリーとして扱います。クエリ言語は、キーとインデックスのアルファベット上の正規言語です。
クエリ言語の機能
ドットパスは名前でネストされたフィールドを選択します:jg 'roommates[0].name'はroommates.[0].name: "Alice"を返します。
ワイルドカードは任意の単一キー(*)または任意の配列インデックス([*])に一致します:jg 'favorite_drinks[*]'はすべての配列要素を返します。
代替(|)はどちらかの分岐に一致します:jg 'name | roommates'は両方のフィールドを返します。
再帰的下降は、任意の深さを歩くためにクリーネ閉包内で*と[*]を使用します:jg '(* | [*])*.name'は任意の深さにあるすべてのnameフィールドを見つけます。-Fフラグは短縮形を提供します:jg -F nameは同じことを行います。
オプション(?)は0回または1回の出現に一致します:jg 'roommates[0].favorite_food?'は親オブジェクトとフィールド値の両方を返します。
技術的アプローチ
jsongrepは、クエリを決定性有限オートマトン(DFA)にコンパイルします。パイプラインには以下が含まれます:クエリの解析、JSONをツリーとして扱う、Glushkovのアルゴリズムを使用したNFAの構築、部分集合構成による決定化、DFA遷移を使用したDFSによる検索。これにより、入力シンボルごとにO(1)の作業で単一パスでの処理が可能になり、バックトラッキング、再帰スタック、および病的なクエリでの指数的爆発を回避します。
著者は、これがjq、jmespath、jsonpath-rustなどのツールとは根本的に異なると指摘しています。これらのツールはパス式を解釈し、各ノードでクエリを評価し、述語をチェックし、再帰的に下降します。これにより、サブツリーの再訪問や再帰的下降クエリでのワークリストの維持が発生する可能性があります。
インストールと利用可能性
crates.ioからインストール:cargo install jsongrep。このプロジェクトにインスピレーションを与えたripgrepと同様に、jsongrepはクロスプラットフォームでバイナリが利用可能であり、Rustで書かれています。
このツールは、出力がlessやsortなどのコマンドにパイプされているかどうかを検出し、デフォルトではJSONパスを省略します(--with-pathオプションで上書き可能)。
📖 Read the full source: HN LLM Tools
👀 See Also

Tokenmeter: オフラインでClaude Codeのトークン使用量を追跡する無料Windowsアプリ
Tokenmeterは、ローカルのClaude Code .jsonlファイルを読み取り、トークン使用量、推定コスト、キャッシュ節約量、90日間のアクティビティヒートマップをすべてオフラインで表示する、無料のオープンソースWindowsアプリです。

動画編集者がClaude Codeを使って無料文字起こしツール「Treelo」を構築
ビデオエディターが、音声/動画ファイルを編集可能なタイムスタンプ付きブロックに文字起こしし、SRT、VTT、ASS、WAV形式でエクスポートできる無料のウェブツール「Treelo」を作成しました。このツールはClaude Codeとの反復的な対話を通じて構築されました。

177のOpenClaw SOUL.mdテンプレートを24のカテゴリに分類したコレクション
開発者が、マーケティング、開発、ビジネス、DevOps、財務、クリエイティブ、データ、セキュリティ、医療、法務、人事、教育など24のカテゴリーにわたるOpenClawエージェント向けの177のすぐに使えるSOUL.mdテンプレートをまとめました。すべてのテンプレートはMITライセンスで、GitHubで公開されています。

Gemma4 26B-A4Bは、Web検索と画像サポートを備え、高速なローカルパフォーマンスを実現します
gemma-4-26B-A4Bモデルは、RTX 4090上で約145トークン/秒を達成し、チャットアプリケーション向けにWeb検索MCPと画像サポートを含んでいます。ブログ記事では、MacとiPhoneでのセットアップとクロスプラットフォーム利用について詳しく説明されています。