curlとjq
🌀はじめに
この記事では、curl
とjq
という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)
-
特定のフィールドの抽出
-
データのフィルタ・変換
🧩セットで使うと何が嬉しい?
-
curl
でAPIからJSONを取得 -
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を叩いて必要な情報だけを抽出するスクリプトを手軽に作れるようになります。特に開発者や運用担当者にとって、習得しておくと非常に便利なコンビです!