メインコンテンツへスキップ

curlとjq

🌀はじめに

この記事では、curljqという2つの強力なコマンドラインツールをセットで使う方法について解説します。特に、APIレスポンスを整形して見やすく表示する用途において、この組み合わせは非常に多く使われています。

どちらも単体で非常に強力ですが、セットで使うことでJSONデータの取得と整形・抽出が一気通貫で可能になります。


📡curlとは何か?

概要

curlは、URLを指定してWebサーバと通信を行うコマンドです。HTTP/HTTPSをはじめ、FTP、SFTPなど多くのプロトコルに対応しています。

使い所

  • Web APIの呼び出し

  • ファイルのダウンロード

  • サーバのレスポンス確認(GET/POST)


🔎jqとは何か?

概要

jqは、JSON形式のデータを整形・抽出・加工できるコマンドラインツールです。

jqの名前の由来は明言されていませんが、「JSON Query」や「JSON Quick」などが語源と考えられています。

使い所

  • JSONの整形(pretty print)

  • 特定のフィールドの抽出

  • データのフィルタ・変換


🧩セットで使うと何が嬉しい?

  1. curlでAPIからJSONを取得

  2. jqで整形・加工して読みやすく、または必要な部分だけ抜き出す

これにより、「どんな情報が返ってきたのか」「欲しい値はどこか」がすぐに分かります。


✋基本的な使い方

整形して表示(pretty print)

curl -s https://api.example.com/data | jq
  • -sはcurlの出力を静かに(進捗などを表示しない)

  • jqだけでインデントされた読みやすいJSONに整形してくれる

特定のフィールドだけ抽出

curl -s https://api.example.com/data | jq '.items[].name'
  • .items[]で配列をループ

  • .nameで各要素のnameを抽出


🧪よくある例(API利用)

GitHubのユーザー情報を取得して表示

curl -s https://api.github.com/users/octocat | jq '.login, .public_repos, .followers'

天気APIの例(OpenWeatherMap)

curl -s 'https://api.openweathermap.org/data/2.5/weather?q=Tokyo&appid=YOUR_API_KEY' | jq '.weather[0].description, .main.temp'

🛠️Tips

jqのパイプ構文

jq '.items | map(.name)'
  • mapは配列の各要素に処理を適用

  • select(.key == "value")などでフィルタ可能

POSTリクエストとjq

curl -s -X POST https://api.example.com/login \
     -H "Content-Type: application/json" \
     -d '{"user":"hoge","pass":"fuga"}' | jq

⚠️注意点

  • jqはJSON形式以外の出力には使えません(XMLやHTMLではエラーになります)

  • jqがインストールされていない環境もあるので注意


🎁まとめ

コマンド 主な用途 補足
curl APIからJSONを取得 -sで静かに実行
jq JSONの整形・抽出 .key, [], map, select

この2つを組み合わせることで、APIを叩いて必要な情報だけを抽出するスクリプトを手軽に作れるようになります。特に開発者や運用担当者にとって、習得しておくと非常に便利なコンビです!