[付録] ツールの自製
このチュートリアルで使用したctojというツールはPythonで作成されています。ctojは汎用性を持たせるためにそれなりに複雑ですが、入力するcsvファイルが定型であれば、定型のJSONファイルに変換する事は結構簡単です。ctojの利用が難しい様であれば、自製する選択肢も検討しては如何でしょうか。
Pythonを使うとcsvファイルの読み込みは簡単です。読み込んだcsvファイルは、プログラム内では辞書(dict)やリスト(list)になります。また、出力するJSONファイルはプログラム内では辞書を作成すれば、JSONファイルとして書き出す事も簡単にできます。従って、入力した辞書やリストから出力する辞書を作成する処理を作成すれば、比較的単純にプログラミング出来ます。
以下、参考までに変換のノウハウを列挙します。
表題 | 説明 |
---|---|
csvの読込 | csvを読み込むには、csvというクラスをimportします。二次元のリストとして読み込むときにはreader()、辞書として読み込むときにはDictReader()を使います。reader()の例はctojのソースにあります。 |
JSONへの変換 | 辞書からJSON文へ変換するには、jsonというクラスをimportします。dumps()を使います |
BOMの削除 | Excelでcsvを作成すると、先頭にBOMというコードが付く場合があります。csvの読み込み時に先頭の1バイトが’\ufeff’で始まっている場合はその1バイトを削除します。 |
追加が必要なAttribute | “id”と”type”というAtttributeを必ず追加します。”id”は、法人番号や管理通番等から生成します。”type”は固定の文字列です。文字列については各共通データ仕様をご覧ください。 |
リンクの作成 | リンクのAttributeとは、typeがRelationshipのものを指します。このAttributeに登録する値はリンク先のEntityのidです。 |
日付の変換 | GIFでは日付は”YYYY-MM-DD”の10文字で表現する決まりになっていますが、Excelでcsvを作成すると”YYYY/MM/DD”になっています。また、MMとDDは一桁の場合もあります。これを変換して登録する必要があります。 |
住所表記の統一 | GIFでは住所の表記方法に複数の方法を記載していますが、共通データ仕様では一つの形式に共通化しています。つまり、都道府県名、基礎自治体名、それ以下のの3項目に分離します。また、番地/丁目以下は半角数値をハイフンで結んだ形式としています。この表記の統一はctojでは機能として実装してありますが、自製するにはそれなりに困難があります。システムにデータを登録する時に統一しておく方法をお勧めします。 |