Hello
- Twitter: @yuya_takeyama / GitHub: @yuya-takeyama
- SRE at Quipper
- Previously a Web Engineer (Rails, React, React Native)
- StudySapuri for Japan
- Quipper for Global
- We're hiring!
世界は JSON でいっぱい
JSON と仲良くなる必要がある
まずは 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
などなど
-
jr の不便なところ
- 単純な map なら jq の方が簡単
- jq:
jq '.foo'
- jr:
jr 'map(&:foo)'
- jq:
- シングルバイナリではない
- mruby とかにするとどうだろう? RubyGems は使えなくなる?
gem i jr-cli
その他使い方: http://qiita.com/tags/jr
Fork me https://github.com/yuya-takeyama/jr