いろいろやってみるにっき

てきとーに生きている奴の日記

古いエントリのサムネイル画像がリンク切れになってたりするけど、チマチマ修正中


Windowsでjson2csvを使いたいのでGoとGit Extensionsをインストールしてみた Git編

600記事目である。

Goは前回分でインストールしたので、今度はGitである。

Git for Windowsでもよかったのだが、GUIで使うこともあるかもしれないのでGit Extensionsにした。  

Gitポケットリファレンス

Gitポケットリファレンス

 

Git Extentionsのダウンロード

Git Extensionsはgitextensions - Git Extensions is the only graphical user interface for Git that allows you control Git without using the commandline. It comes with a manual and video tutorials to get you started quickly. - Google Project Hosting

からダウンロードページ

http://sourceforge.net/projects/gitextensions/
に行き、緑のダウンロードアイコンをクリックする。

 

f:id:shigeo-t:20150112040131p:plain

今回は GitExtensions-2.48.03-SetupComplete.msi であった。

Git Extensionsのインストール

Git Extensionsのmsiファイルをクリックすると、ダイアログが立ち上がる。[Next]をクリックする。

f:id:shigeo-t:20150112040512p:plain

「Install for all users this machine」が選択されているので、そのまま[Next]をクリックする。

f:id:shigeo-t:20150112040622p:plain

全てにチェックを入れ、[Next]をクリックする。

f:id:shigeo-t:20150112040728p:plain

そのまま[Next]をクリックする。

f:id:shigeo-t:20150112040804p:plain

そのまま[Next]をクリックする。

f:id:shigeo-t:20150112040827p:plain

そのまま[Next]をクリックする。

f:id:shigeo-t:20150112040859p:plain

[Install]をクリックする。

f:id:shigeo-t:20150112040928p:plain

UACが動くので[はい]をクリックするとセットアップが進む。

f:id:shigeo-t:20150112041014p:plain

KDiff3のセットアップウィザードがGir Extensionsダイアログの上に表示される。[同意する(A)]をクリックする。

f:id:shigeo-t:20150112041146p:plain

[次へ (N) >]をクリックする。

f:id:shigeo-t:20150112041218p:plain

[次へ (N) >]をクリックする。

f:id:shigeo-t:20150112041237p:plain

[次へ (N) >]をクリックする。

f:id:shigeo-t:20150112041249p:plain

[インストール]をクリックする。

f:id:shigeo-t:20150112041321p:plain

[完了(F)]をクリックする。KDiffセットアップはこれで終了。

f:id:shigeo-t:20150112041401p:plain

Git for Windowsのインストールに切り替わる。[ Next > ]をクリックする。

f:id:shigeo-t:20150112041716p:plain

[ Next > ]をクリックする。

f:id:shigeo-t:20150112041729p:plain

[ Next > ]をクリックする。

f:id:shigeo-t:20150112041746p:plain

[ Next > ]をクリックする。

f:id:shigeo-t:20150112041801p:plain

[ Next > ]をクリックする。

f:id:shigeo-t:20150112041828p:plain

「Use Git from the Windows Command Prompt」を選び、[ Next > ]をクリックする。

f:id:shigeo-t:20150112041941p:plain

[ Next > ]をクリックする。

f:id:shigeo-t:20150112042009p:plain

インストール中。

f:id:shigeo-t:20150112042038p:plain

[ Finish ]をクリックすることでGit for Windowsのインストール終了。

f:id:shigeo-t:20150112042201p:plain

チェックリストが表示されるので、設定が必要なものがあれば設定を済ませる。[OK]でこの設定ウィザードは終了する。

f:id:shigeo-t:20150112042628p:plain

[Finish]をクリックして、Git Extensionsのセットアップウィザードを終了する。

f:id:shigeo-t:20150112042839p:plain

json2csvをインストールする

Go言語とGitの準備ができたのでjson2csvをインストールする。参考にしたのは下記のサイト。下記ではjson2csvをLinuxで動作させている。


jsonをcsvに変換する「json2csv」 - brainstormを参照するとインストールは、

go get github.com/jehiah/json2csv

なので、 コマンドプロンプトから実行する。エラーが出ずに終了したら、(前回作業で設定済の)%GOPATH%\binにインストールされていることを確認する。

f:id:shigeo-t:20150112043749p:plain

json2csvがインストールされていて、PATHの環境変数設定に%GOPATH%\binが追加されていれば、下記のようにjson2csvのヘルプを表示を表示できる。

f:id:shigeo-t:20150112043853p:plain

階層構造のJSONCSV化 

今回ターゲットのJSONは階層構造である。json2csvは-kパラメタにデータ項目名(上のヘルプではfieldsと表記されている)を与えると、その項目に合致するデータをCSVに吐き出す。 

最上位あるいは階層構造を持たないJSONの場合は、データ項目名をそのまま書けばよいのだが、階層構造の場合はデータ項目名を修飾して記載する。

JSONLint - The JSON Validator.でデータを1件見てみる。本物のデータなので都合によりマスキングしている。階層構造になっていることが分かる。

f:id:shigeo-t:20150112044820p:plain

拡大してみる。

meta_dataの下にcountry_typeやtldがある。reportの下にはadditional_dataさらにその下の3階層目にはexploitがある。reportには2階層のsrc_mode、timestampなどもある。

f:id:shigeo-t:20150112045248p:plain

今回はミスなくコマンド・パラメタ入力をするため、バッチファイル化した。json2csvは複数行に表示されているが、実際には1行で作成している。

-iで入力ファイル、-oに出力ファイル、stderrに出力されるjson2csvのエラーメッセージ( 2> )は適当に名前を付けてテキストファイル化している。-pに-kと同じ内容を指定すると1行目にデータ項目名を出力してくれる。

echo on
json2csv.exe -i なんちゃら.json -o なんちゃら.csv -k meta_data.country_code,meta_data.tld,report.additional_data.exploit,report.src_mode,report.timestamp -p meta_data.country_code,meta_data.tld,report.additional_data.exploit,report.src_mode,report.timestamp 2> ほにゃららerr.txt

抽出するデータは下記の通りである。

meta_data.country_code
meta_data.tld
report.additional_data.exploit
report.src_mode
report.timestamp

結果は、このように

f:id:shigeo-t:20150112053240p:plain

このように抽出したいデータ項目名を

最上位のデータ項目名[.2階層目のデータ項目名] [.3階層目のデータ項目名][…]

とすれば、json2csvは階層構造のJSONでも正しく読み出してくれる。  

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

 
JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス

JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス

 

まとめ

今回はほんの数行成形するJavaScriptを書いただけで、JSONCSV化できた。Go言語はともかく、Gitについては通常使わないのであればアンインストールして構わない。

お時間あったら、他のエントリもクリックして頂ければ幸いです。