post Image
JSONをインタラクティブに掘り下げるコマンド jid

はじめに

私はCLIを利用することが多いのもあり、 jq は今やJSONを利用する上は欠かせないツールとなっています。

ただ
・ jqのクエリを書くことなれるまで少し時間がかかる
・ クエリを書くことに慣れたとしても、初見だったりして 構造を把握していないJSONに関しては非常に手間
でみたいな感じだなと思っていました。

インタラクティブに jq のクエリを書いていければいいのに、と思ってツールを探しました(CLI限定で)が、あまり良さそうなものが見つかりませんでした。

そこで、Golangで何か作ってみたいのもあったので、作ったのが jid というツールです。

リポジトリ
Github : simeji/jid

インストール

以下からバイナリダウンロードしてzip解凍するだけです。
https://github.com/simeji/jid/releases

Macの場合はbrewで入れる事もできます。(thx. @ikeisuke )

brew install jid

また、以下のOSでは公式リポジトリに組み込んでくださっていたので、各OSのパッケージマネージャーを利用してインストールできます。
Packaging status

できること

タイトルの通り、パイプで標準出力のJSONを渡すことで、掘り下げていくことができます。
大体は、TABENTER 押しておけばなんとかなることが多いです。
※ キーマップ一覧はこちら

絞り込んだ結果は標準出力されるので更にパイプすることも可能です。

デモ(カラー出力対応しました)
jid

aws cliの戻り値もJSONのものが多いので利用できます。

普段は aws ec2 describe-instances などと合わせて利用することが多いですが、IDなどを伏せるのが面倒だったので今回は ec2 describe-availability-zones でやってます。

jid-with-awscli

まだできないこと、したいこと

  • jq のクエリではできる |[]mapselect は実装されていません。
  • もう少し設計を変えてプラガブルに他のフォーマットにも対応できるようにしたい。
  • リファクタリングをもっとしたい。

開発の中で気づいたこと

  1. 最初は2ファイルくらいに収まるでしょと思って作り始めた
  2. 適当に思いついたベースで機能を追加していってしまっていた
  3. 最初からテストを書いてなくて途中からさかのぼって書き始めた

あたりの話があって、後ほどデグレに気をつけながら機能追加していくのが、だんだんと辛くなってきたので最低限のテストは書き始めたが、もともとテスタブルなコードを意識していなかったので、書くのに辛くなりました。
すでに結構辛い。

あとから一部Interfaceとかにしたんですが、すごい中途半端な状態になった。
(とはいえ最初からがっちり設計はできなさそうだったんでどっかのタイミングで作りなおした方がいいんだろうなと思ってます)

ただ、振り返ってても思ったのですが、 一番大変だったのはUI考えるところ です。
サジェストやオートコンプリートのタイミングとかどこまでどうやって絞り込むんで、どうやって選択させるかとかは、何度か人に使ってもらって意見もらいながら変更し、という感じでやってました。
この辺はまた変更するかもしれません。

さいごに

vimのネタも書きたい


『 Go 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。