Tips

例1: JSONを整形して表示

`jq`は、JSONデータをコマンドラインから簡単に整形、フィルタリング、変換できる強力な軽量ツールです。APIのレスポンスやログファイルのJSONを人間が読みやすい形にしたり、特定の情報を抽出したりする際に非常に役立ちます。

技術・言語・ツール: jq

jqは、JSONデータをコマンドラインから簡単に整形、フィルタリング、変換できる強力な軽量ツールです。APIのレスポンスやログファイルのJSONを人間が読みやすい形にしたり、特定の情報を抽出したりする際に非常に役立ちます。

コマンドラインでJSONを自在に操るjqの基本

APIのレスポンスや設定ファイルなど、JSON形式のデータを扱う機会は日常的に多いでしょう。jqを使えば、複雑なJSON構造から必要な情報だけを抽出したり、整形して表示したりといった操作を、シェルスクリプトやパイプラインの中で手軽に行うことができます。

# 例1: JSONを整形して表示
# GitHub APIからユーザー情報を取得し、整形して出力
curl -s https://api.github.com/users/octocat | jq .

# 例2: 特定のフィールドを抽出
# ユーザーのログイン名とブログURLを抽出
curl -s https://api.github.com/users/octocat | jq '.login, .blog'

# 例3: オブジェクトの配列から特定のプロパティを持つ要素をフィルタリング
# "status"が"active"のオブジェクトのみを抽出
echo '[{"id": 1, "status": "active"}, {"id": 2, "status": "inactive"}, {"id": 3, "status": "active"}]' | jq '.[] | select(.status == "active")'

# 例4: 複数の値をまとめて新しいオブジェクトとして抽出
# ユーザーのログイン名と公開リポジトリ数を新しいオブジェクトにまとめる
curl -s https://api.github.com/users/octocat | jq '{user: .login, public_repos: .public_repos}'
  • jqは非常に強力で、より複雑な変換(マップ、フィルタ、reduceなど)も可能です。公式ドキュメントやオンラインのチュートリアルでさまざまなレシピが公開されています。
  • APIのデバッグ、CI/CDパイプラインでのJSON処理、ログ分析など、多岐にわたる場面で開発効率を向上させることができます。
  • jq -r オプションを使うと、文字列として抽出された値の引用符を除去して出力できます(例: jq -r .login)。
  • インストールは多くのOSでパッケージマネージャーから簡単に行えます(例: sudo apt install jqbrew install jq)。