こんにちは
- Twitter: @yuya_takeyama / GitHub: @yuya-takeyama
- Web Dveloper at Quipper
- Recruit グループです
- 正確には Recruit Marketing Partners (RMP) の子会社
- 主に Rails やりつつフロントエンドもやってます
- 積極採用中です
まずは jq の紹介
jq
- JSON を pretty print したり
- map/filter 的な操作をコマンドラインで行う
- 便利
jq で不便なところ
ちょっと複雑なことをやろうとすると途端に面倒になる
ちょっと複雑なこと
- reduce 的な集約処理
- 一応できるけど専用の記法とか関数とかいちいち覚えてられない
- モジュールシステム
- 1.5 ぐらいで実装された
- 個人的には document 一見して面倒になったので実は使ったことがない (すいません)
Ruby でできたくない?
できるようにしてみた
jr
Basic mechanism of jr
json_enumerator.instance_eval do
# Your jr filter runs here
end
- JSON を yield する
Enumerator
- メソッドチェインでなんでも繋げられる
- 結果は勝手に出力される
jr の便利なところ
- Ruby で書ける
- 独特の記法を覚える必要がほぼない
- RubyGems が使える
-
--require
オプションを使う
-
- jq のオプションもいろいろ移植している
-
--raw-output
: JSON でなく生の文字列として出力 (sed/awk/grep とかに渡すのに便利) -
--unbuffered
: tail とかからパイプして JSON のログを眺めるのに便利 -
--raw-input
,--monochrome-output
などなど
-
pretty print するだけなら jr の方が短く書ける!!!111
- jq:
cat foo.json | jq .
- jr:
cat foo.json | jr
jr の不便なところ
- 単純な map なら jq の方が簡単
- jq:
jq '.foo'
- jr:
jr 'map(&:foo)'
- jq:
- シングルバイナリではない
- mruby とかにするとどうだろう? RubyGems は使えなくなる?