MyEnigma

とある自律移動システムエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

Python製のマルチプラットフォームJSONファイルビューワーPyJSONViewerを作った

https://github.com/AtsushiSakai/PyJSONViewer/blob/master/img/mac.png?raw=true

目次

はじめに

最近、

複雑なシミュレーションのログデータや、

複数のプログラミング言語を使ったシステムの

データの受け渡し方法としてJSONファイルを使っています。

 

JSONはTree状のデータ構造を構築することができるので、

シミュレーションの設定データから、

シミュレーションの結果などを

まとめて一つのファイルとしてまとめることができるので、

非常に便利です。

 

また、ほとんどの言語でJSONのパーサは

デフォルトAPIやライブラリとして、

提供されているので、各言語でいちいちファイルデータ解釈用の

パーサを書かなくていいのは非常に便利です。

myenigma.hatenablog.com

 

しかし、一つ不満だったのが、

JSONファイルの中身を少し確認したい時の

ビューワーがあまり良いものが見つかりませんでした。

 

はじめは下記のChrome extensionのJSON viewerを使っていたのですが、

chrome.google.com

大きいjsonファイルを読み込もうとすると、

すぐにフリーズしてしまいました。

 

下記のJ and Eというフリーソフトは、

大きなJSONファイルもツリー状に可視化でき、

非常に軽快に動作するのですが、

残念ながらWindowsのみで利用可能で、

MacやLinuxも併用する自分には、

完璧ではありませんでした。

 

その他にも、良さそうなJSONビューワーソフトはありましたが、

ほとんどは有償ソフトウェアでした。

 

そこで、今回、

Python製のマルチプラットフォームJSONファイルビューワーである

PyJSONViewerをOSSとして自作し、GitHubに公開したので、

紹介したいと思います。

github.com

 

PyJSONViewer

PyJSONViewerはPython製のJSONファイルビューワーです。

OSSとして、下記で公開しています。

github.com

 

PyJSONViewerは、PythonとPythonのデフォルトモジュールである、

  • tkinter (GUI)

myenigma.hatenablog.com

  • json (JSONパーサ)

19.2. json — JSON エンコーダおよびデコーダ — Python 3.6.5 ドキュメント

  • argparse (コマンドラインオプションパーサ)

myenigma.hatenablog.com

のみを使用しているため、

Python3.6のランタイムさえインストールされていれば、

追加ライブラリのインストール無しに利用できます。

 

またPythonさえインストールされていれば良いので、

Mac OS, Window, Linuxのマルチプラットフォームで

利用可能です。

 

OSSなのでもちろんフリーです。

 

また、CUIとGUIの両方から

読み込むJSONファイルを指定できるので、

状況に応じて効率的にJSONファイルを確認できます。

 

また自分のPCでは、

30MBの大きいJSONファイルであっても、

読み込み時に少しディレイがありますが、

問題なく表示できています。

 

ダウンロード

pipでインストールできます。

$ pip install PyJSONViewer

 

また、単一のpythonスクリプトで構成されているため、

下記のリポジトリをクローンするか、

zipでダウンロードすることでも利用可能です。

github.com

 

使い方

使い方としては、

下記の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.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

MyEnigma Supporters

もしこの記事が参考になり、

ブログをサポートしたいと思われた方は、

こちらからよろしくお願いします。

myenigma.hatenablog.com