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

なんとか自分の会社を立ち上げるところまで漕ぎ着けた、てきとーに生きている奴の日記

関連記事を探すときは、読んだ記事と同じカテゴリをクリックしてください。

記事のカテゴリは記事タイトル下に表示されています。カテゴリ一覧はサイドバーにあります。


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からダウンロードページ


Git Extensions | SourceForge.netに行き、緑のダウンロードアイコンをクリックする。

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については通常使わないのであればアンインストールして構わない。