JSONビューアとjqフィルターエディタを提供してくれる jnv

梅木 和弥
メインビジュアル

はじめに

みなさんは jq 使いこなされていますか?

ログ解析、API設計/開発等で JSON データを扱う際に jq が活躍すると思います。
ただ、 jq って24/365で利用するツールというよりかは、JSONを扱う業務が続かないと慣れないので、中々習熟しない悩みを持たれている方も多いんじゃないでしょうか?

そんな時、 jnv をはじめとした jq に対話的操作機能を搭載したツールがおすすめです。

本記事では、jnv の導入〜操作感を記事にしております。

jq とは

本記事では、 「jq とは」については割愛させていただきます。

jqは、JSONデータのためのsed、awk、grepなどに似た、軽量で柔軟なコマンドラインJSONプロセッサです。
ポータブルなC言語で書かれており、実行時の依存関係が一切ないため、構造化データのスライス、フィルタリング、マッピング、変換を簡単に行うことができます。

公式 説明を翻訳

詳細は以下の記事を参照下さい。

jnv とは

jnvはJSONの閲覧用に設計されており、インタラクティブなJSONビューアとjqフィルターエディタを提供します。

公式 説明を翻訳

公式のキャッチコピー通り、「JSONビューア」と「jqフィルターエディタ」が主機能です。

JSONビューアの機能には、「構文ハイライト」や「UIの反応度(例えばデバウンス時間調整、アニメーション速度調整)」、「JSONビューアのスタイリング」等が組み込まれています。
jqフィルターエディタの機能には、「 <Tab> キーでの自動補完」や「入力値の即時ビューア反映」「フィルターを評価するヒントメッセージ」が組み込まれています。

対象のJSONはファイル、標準が対応されています。

では早速デモ動画をご覧ください。

デモ

今回のデモで利用するJSONデータは https://dummyjson.com/usercurl -s での標準出力を対象とします。

条件フィルターのデモ

インストール

Homebrew

brew install jnv

Mise

mise use -g jnv

Nix

nix-shell -p jnv

操作感の紹介

操作①: 特定のキーを取得

users 配列内の1行目のオブジェクトの firstNamelastName を取得してみましょう。

クエリの組み立て方は以下ですね。

  1. users 配列内を指定
  2. 1行目を指定
  3. firstNamelastName を取得

出力結果は 以下のようになる想定。

{
  "lastName": "Johnson",
  "firstName": "Emily"
}

ではやってみます。

入力内容

.users[0] | {firstName, lastName}

特定のキーを取得のデモ

操作②: 条件フィルター

年齢(age)が20代の user を絞り込みましょう。

  1. users 配列を展開
  2. select(.age => 20 and .age < 30) でフィルタリング
  3. idage を取得。

入力内容

.users[] | select(.age >= 20 and .age  30) | {id, age}

条件フィルターのデモ

操作③: データの集計

既存のユーザーのJSONデータから、
住所内から地域を抽出し、国ごとのユーザーの数を集計しましょう。

  1. users 配列を展開し、地域(address.city)を一覧で取得。
  2. group_by で集計。
  3. cityと、所属数を格納した新しいJSONを作成。

地域ごとに配列が出来て、所属人数が数字で確認できる想定です。

入力内容

[.users[].address.city] | group_by(.)[] | {city: .[0], count: length}

条件フィルターのデモ

まとめ

如何でしょうか?
体系的に jq を学べるので、jq に慣れるまでは勿論ですが、慣れている方にもおすすめのツールです。

本記事では触れませんでしたが、jnv で入力したフィルタは ctrl + q でコピー出来ます。

「これだ!」という絞り込み方を決めて、クリップボードにコピーした後、「tail モードでのログ解析」等に役立てそうですね。

以上です、ここまで読んでいただきありがとうございます。

梅木 和弥/ アプリケーションエンジニア

Webのシステム開発における、設計や実装業務に携わっています。

夏と冬だったら冬派、Mr.ChildrenとMrs. GREEN APPLEだったらミスチル派、メッシとロナウドだとメッシ派、きのこと筍だとどっちでもいい派、たいやきは尻尾から食べる派です。

梅木 和弥 の書いた記事一覧

最新の関連記事

Download 資料ダウンロード

Drupalでの開発・運用、サーバー構築、Webサイト構築全般、制作費用などに関してお気軽にご相談ください。


Contact お問い合わせ

Drupalでの開発・運用、サーバー構築、Webサイト構築全般についてお気軽にご相談ください。専門スタッフによるDrupal無料相談も行なっております。