目次
はじめに
最近、
複雑なシミュレーションのログデータや、
複数のプログラミング言語を使ったシステムの
データの受け渡し方法としてJSONファイルを使っています。
JSONはTree状のデータ構造を構築することができるので、
シミュレーションの設定データから、
シミュレーションの結果などを
まとめて一つのファイルとしてまとめることができるので、
非常に便利です。
また、ほとんどの言語でJSONのパーサは
デフォルトAPIやライブラリとして、
提供されているので、各言語でいちいちファイルデータ解釈用の
パーサを書かなくていいのは非常に便利です。
しかし、一つ不満だったのが、
JSONファイルの中身を少し確認したい時の
ビューワーがあまり良いものが見つかりませんでした。
はじめは下記のChrome extensionのJSON viewerを使っていたのですが、
大きいjsonファイルを読み込もうとすると、
すぐにフリーズしてしまいました。
下記のJ and Eというフリーソフトは、
大きなJSONファイルもツリー状に可視化でき、
非常に軽快に動作するのですが、
残念ながらWindowsのみで利用可能で、
MacやLinuxも併用する自分には、
完璧ではありませんでした。
その他にも、良さそうなJSONビューワーソフトはありましたが、
ほとんどは有償ソフトウェアでした。
そこで、今回、
Python製のマルチプラットフォームJSONファイルビューワーである
PyJSONViewerをOSSとして自作し、GitHubに公開したので、
紹介したいと思います。
PyJSONViewer
PyJSONViewerはPython製のJSONファイルビューワーです。
OSSとして、下記で公開しています。
PyJSONViewerは、PythonとPythonのデフォルトモジュールである、
- tkinter (GUI)
- json (JSONパーサ)
19.2. json — JSON エンコーダおよびデコーダ — Python 3.6.5 ドキュメント
- argparse (コマンドラインオプションパーサ)
のみを使用しているため、
Python3.6のランタイムさえインストールされていれば、
追加ライブラリのインストール無しに利用できます。
またPythonさえインストールされていれば良いので、
Mac OS, Window, Linuxのマルチプラットフォームで
利用可能です。
OSSなのでもちろんフリーです。
また、CUIとGUIの両方から
読み込むJSONファイルを指定できるので、
状況に応じて効率的にJSONファイルを確認できます。
また自分のPCでは、
30MBの大きいJSONファイルであっても、
読み込み時に少しディレイがありますが、
問題なく表示できています。
ダウンロード
pipでインストールできます。
$ pip install PyJSONViewer
また、単一のpythonスクリプトで構成されているため、
下記のリポジトリをクローンするか、
zipでダウンロードすることでも利用可能です。
使い方
使い方としては、
下記の2つの方法でJSONファイルを指定すると、
記事冒頭のスクリーンショットのように、
JSONファイルをツリー状に表示し、
中身のデータを確認することができます。
下記のコマンドでは、pipでインストールしたことを仮定しています。
CUIでJSONファイルを指定する
コンソールから、
下記のコマンドでpyjsonviewer.pyを起動しつつ、
-f オプションでJSONファイルのパスを指定する。
$ python -m pyjsonviewer -f path_to_json_file/sample.json
すると、GUIの画面にJSONツリーが表示されるはずです。
GUIでJSONファイルを指定する。
- 1 pyjsonviewer.pyを実行する
$ python -m pyjsonviewer
- 2 File->Openを押すと、ファイル選択ダイアログが起動するのでJSONファイルを選択する
すると、GUIの画面にJSONツリーが表示されるはずです。
また、ファイル選択ダイアログの初期ディレクトリは
下記のように -d オプションでも指定できます。
$ python -m pyjsonviewer -d path_to_json_file_dir
おすすめ設定
下記の設定をしておくと、より一層便利に使えます。
bashのエイリアスを設定する
.bashrcに下記の設定をすると、
alias pyjsonviewer='python -m pyjsonviewer'
bash上でpyjsonviewerとタイプすることで、
どのディレクトリでも起動することができます。
VimからPyJSONViewerを開く設定
Vimユーザの場合、下記の設定をvimrcに書いておくと、
"JSON format function! JsonFormat() %!python -m json.tool endfunction command! JsonFormat :call JsonFormat() "JSON viewer function! JsonViewer() "%!python -m pyjsonviewer -f % > /dev/null let filename = expand('%') let s:job = job_start( \ ["/bin/sh", "-c", "python -m pyjsonviewer -f".filename],{}) endfunction command! JsonViewer :call JsonViewer()
vimであるJSONファイルを開いている時に、
下記のコマンドで編集中のJSONファイルを
PyJSONViewerで開くことができます。
: JSONViewer()
またPyJSONViewerとは直接関係無いですが、
下記のコマンドで開いているJSONファイルのフォーマットもできます。
: JSONFormat()
参考資料
MyEnigma Supporters
もしこの記事が参考になり、
ブログをサポートしたいと思われた方は、
こちらからよろしくお願いします。