jqハンドブック
NetOps/DevOps 必携のJSONパーザ
著者 | 豊沢 聡 |
---|---|
判型 | B5変型、264頁 |
ISBN | 978-4-87783-491-3 |
価格 | 本体3,200円 |
発行日 | 2021年7月10日(初版 第1刷発行) |
備考 | ダウンロードサービス:学習に使えるサンプルファイル |
本書について
jqはJSONテキストを解析、抽出、変換するコマンドライン指向のツールです。
JSON(JavaScript Object Notation)は構造的なデータを表現する一般的な形式で、ウェブサービスで広く利用されています。とくにウェブ技術を基盤にしたREST(REpresentational State Transfer)では、リソースはたいていJSONで記述されます。RESTはリモートシステムの管理運用でよく用いられ、JSONテキストを送信することでシステムを設定したり、GETリクエストからJSONで書かれたシステム情報を取得します。たとえば、協調ソフトウェア開発でよく用いられるGitHub、AWSなどのクラウド環境、あるいはF5 BIG-IPのようなネットワーク機器のRESTインタフェースはJSONベースです。
JSONテキストは可読文字で記述されるので、テキストエディタで読み書きできます。しかし、データの階層構造が深いと、経験を積んだ目でもかなり読みづらいです。数百個の構成情報が改行なしで1行にまとめられることもあり、そんなときはUnixでおなじみの行指向ツールであるgrepやsedでは簡単には解析できません。そこで、やや込み入った処理ではプログラミングのお世話になります。幸いなことに、PythonやJavaScriptといったポピュラーな言語にはJSON処理ライブラリが用意されているので、スクリプティングはそれほど難しくありません。
しかし、ちょっとした操作のためにわざわざプログラムを書くのは面倒です。Unixツールのように、必要なときに必要なものだけをいろいろ組みあわせてさくっと利用できたほうが便利です。
jqはそんな用法を念頭に設計されています。つまり、JSON専用のsedあるいはawkのようなコマンドです。jqは部分データの抽出、不要な要素の削除、値の変更や演算、簡単な集計などを(たいていは)1行でできます。なれてくれば、より複雑な操作もできます。
jqのオフィシャルマニュアルはA4換算で50ページほどなので、使いたい機能を見つけるのはそう大変ではありません。ただ、そっけない記述も多く、ときには試行錯誤も必要です。チュートリアルもありますが、あまり拡充されていません。そこで、シンプルなサンプルとその実行例から各種の機能を説明したのが本書です。オフィシャルマニュアルのほとんどをカバーしていますが、一部、利用頻度の少なそうな機能は省いています。
RESTを日常的に利用するNetOpsやDevOps諸氏のお役に立てれば幸いです。
目次
- 第1章 はじめよう
- 1.1 jqの実行
- 1.2 フィルタ
- 1.3 コマンドオプション
- 1.4 まとめ
- 第2章 入出力
- 2.1 入力
- 2.2 フィルタファイル
- 2.3 終了コード
- 2.4 出力文字の変換
- 2.5 まとめ
- 第3章 フィルタの基本
- 3.1 角カッコ
- 3.2 カンマ
- 3.3 パイプ
- 3.4 疑問符
- 3.5 中カッコ
- 3.6 ダブルドット
- 3.7 まとめ
- 第4章 基本演算とデータ型
- 4.1 演算子と関数
- 4.2 データ型
- 4.3 加算と減算
- 4.4 型依存の関数
- 4.5 代入
- 4.6 まとめ
- 第5章 数値演算
- 5.1 乗除算
- 5.2 丸め処理
- 5.3 数値の分解
- 5.4 その他の数学関数
- 5.5 数列の生成
- 5.6 日時関数
- 5.7 数値定数
- 5.8 数値の精度
- 5.9 まとめ
- 第6章 文字列操作
- 6.1 基本操作
- 6.2 正規表現
- 6.3 まとめ
- 第7章 配列操作
- 7.1 要素の抽出
- 7.2 配列の変形
- 7.3 シーケンス処理
- 7.4 まとめ
- 第8章 オブジェクト操作
- 8.1 オブジェクト操作
- 8.2 キーと値の同時処理
- 8.3 パス配列
- 8.4 まとめ
- 第9章 比較演算子、論理演算子、述語関数
- 9.1 比較演算子
- 9.3 述語関数
- 9.4 まとめ
- 第10章 制御構造
- 10.1 条件分岐
- 10.2 エラー処理
- 10.3 変数
- 10.4 関数定義
- 10.5 ループ
- 10.6 まとめ
- 付録
- 付録A インストール
- 付録B JSON
- 付録C コマンド一覧
- 付録D 参考文献