姓名・住所データ生成ツールのリリース

no extension

姓名・住所データ生成ツール spiegel-im-spiegel/gimei-cli をリリースした。

このツールの元ネタは mattn/go-gimei パッケージで,このパッケージ自体はよく出来ているのだが,今回は

  1. 大量のデータを一度に生成する
  2. JSON 形式で出力できるようにする
  3. テンプレートファイルで出力を加工できる

を目標に最初から CLI ツールとして作ってみた。

使い方はリポジトリのトップページを見ていただくとして,こんな感じに出力する。

$ gimei-cli
岡村 智梨 (オカムラ サトリ : 女性) -> 長崎県 北杜市 俵柳 (ナガサキケン ホクトシ タワラヤナギ)

JSON 形式での出力はこんな感じ。

$ gimei-cli --json | jq .
[
  {
    "Gimei": {
      "Gender": 0,
      "FirstName": {
        "Name": "洋輔",
        "Katakana": "ヨウスケ",
        "Hiragana": "ようすけ",
        "Roman": "yousuke"
      },
      "LastName": {
        "Name": "福原",
        "Katakana": "フクハラ",
        "Hiragana": "ふくはら",
        "Roman": "fukuhara"
      }
    },
    "Address": {
      "Prefecture": {
        "Name": "大阪府",
        "Katakana": "オオサカフ",
        "Hiragana": "おおさかふ",
        "Roman": "oosakafu"
      },
      "City": {
        "Name": "安芸郡東洋町",
        "Katakana": "アキグントウヨウチョウ",
        "Hiragana": "あきぐんとうようちょう",
        "Roman": "akiguntouyouchou"
      },
      "Town": {
        "Name": "久々宇",
        "Katakana": "クグウ",
        "Hiragana": "くぐう",
        "Roman": "kuguu"
      }
    }
  }
]

テンプレートによる出力の加工はこんな感じ。

$ cat testdata/template.txt 
| 名前 | 名前カタカナ | 性別 | メールアドレス | 住所 | 住所カタカナ |
| --- | --- | :---: | --- | --- | --- |{{ range . }}
| {{ .Gimei.FullName.Name }} | {{ (.Gimei.FullNameWithSep " ").Katakana }} | {{ .Gimei.Gender }} | {{ .Gimei.Email }} | {{ .Address.FullName.Name }} | {{ (.Address.FullNameWithSep " ").Katakana }} |{{ end }}

$ gimei-cli -r 10 -t testdata/template.txt
| 名前 | 名前カタカナ | 性別 | メールアドレス | 住所 | 住所カタカナ |
| --- | --- | :---: | --- | --- | --- |
| 小谷駿太 | コタニ シュンタ | 男性 | s.kotani@example.com | 青森県駿東郡小山町宍道町白石 | アオモリケン スントウグンオヤマチョウ シンジチョウハクイシ |
| 野口菜瑠 | ノグチ ナル | 女性 | n.noguchi@example.com | 岡山県稲敷郡美浦村覚王寺 | オカヤマケン イナシキグンミホムラ カクオウジ |
| 堀江凌太 | ホリエ リョウタ | 男性 | r.horie@example.com | 静岡県三沢市俵柳 | シズオカケン ミサワシ タワラヤナギ |
| 青柳縁蓮 | アオヤギ エレン | 女性 | e.aoyagi@example.com | 長野県西牟婁郡白浜町西方町金井 | ナガノケン ニシムログンシラハマチョウ ニシカタマチカナイ |
| 藤岡尚登 | フジオカ ナオト | 男性 | n.fujioka@example.com | 滋賀県青森市中畑 | シガケン アオモリシ ナカハタ |
| 小川泰誠 | オガワ タイセイ | 男性 | t.ogawa@example.com | 兵庫県日高郡日高川町酪陽 | ヒョウゴケン ヒダカグンヒダカガワチョウ ラクヨウ |
| 成田文夫 | ナリタ フミオ | 男性 | f.narita@example.com | 沖縄県厚岸郡浜中町新開町 | オキナワケン アッケシグンハマナカチョウ シンカイチョウ |
| 岩瀬恋春 | イワセ コハル | 女性 | k.iwase@example.com | 宮崎県札幌市豊平区上野新 | ミヤザキケン サッポロシトヨヒラク ウワノシン |
| 馬場椎苗 | ババ シイナ | 女性 | s.baba@example.com | 愛知県甘楽郡下仁田町大淀南 | アイチケン カンラグンシモニタマチ オオヨドミナミ |
| 松井善和 | マツイ ヨシカズ | 男性 | y.matsui@example.com | 和歌山県常滑市坪山 | ワカヤマケン トコナメシ ツボヤマ |

正直,業務でダミーデータ生成用に使うにはもうひと工夫必要だと思うが,一般公開用ならこんなもんだろう。

オマケ機能として JIS 都道府県コードおよび JIS 市区町村コードの一覧表示ができる。 たとえば「広島」が付く都道府県+市区町村を探すなら

$ gimei-cli cities -n 広島
01234: 北海道北広島市 (ホッカイドウキタヒロシマシ)
34100: 広島県広島市 (ヒロシマケンヒロシマシ)
34202: 広島県呉市 (ヒロシマケンクレシ)
34203: 広島県竹原市 (ヒロシマケンタケハラシ)
34204: 広島県三原市 (ヒロシマケンミハラシ)
34205: 広島県尾道市 (ヒロシマケンオノミチシ)
34207: 広島県福山市 (ヒロシマケンフクヤマシ)
34208: 広島県府中市 (ヒロシマケンフチュウシ)
34209: 広島県三次市 (ヒロシマケンミヨシシ)
34210: 広島県庄原市 (ヒロシマケンショウバラシ)
34211: 広島県大竹市 (ヒロシマケンオオタケシ)
34212: 広島県東広島市 (ヒロシマケンヒガシヒロシマシ)
34213: 広島県廿日市市 (ヒロシマケンハツカイチシ)
34214: 広島県安芸高田市 (ヒロシマケンアキタカタシ)
34215: 広島県江田島市 (ヒロシマケンエタジマシ)
34302: 広島県府中町 (ヒロシマケンフチュウチョウ)
34304: 広島県海田町 (ヒロシマケンカイタチョウ)
34307: 広島県熊野町 (ヒロシマケンクマノチョウ)
34309: 広島県坂町 (ヒロシマケンサカチョウ)
34368: 広島県安芸太田町 (ヒロシマケンアキオオタチョウ)
34369: 広島県北広島町 (ヒロシマケンキタヒロシマチョウ)
34431: 広島県大崎上島町 (ヒロシマケンオオサキカミジマチョウ)
34462: 広島県世羅町 (ヒロシマケンセラチョウ)
34545: 広島県神石高原町 (ヒロシマケンジンセキコウゲンチョウ)

などとできる。 いや,稀に「◯◯市のコードって何だっけ?」てのがあるのよ,仕事で。

この機能を使ってダミーデータの住所を絞り込むこともできる。

$ gimei-cli -r 10 -n 広島
高松 昌史 (タカマツ マサシ : 男性) -> 広島県 府中市 矢田 (ヒロシマケン フチュウシ ヤタ)
平山 颯馬 (ヒラヤマ ソウマ : 男性) -> 広島県 大竹市 木伏 (ヒロシマケン オオタケシ キップシ)
中原 成果 (ナカハラ ナルミ : 女性) -> 広島県 三次市 丸山町 (ヒロシマケン ミヨシシ マルヤマチョウ)
和田 鮎夢 (ワダ アユム : 男性) -> 北海道 北広島市 御津町豊沢樽美 (ホッカイドウ キタヒロシマシ ミトチョウトヨサワタルミ)
前川 啓文 (マエカワ ヒロフミ : 男性) -> 広島県 東広島市 相島 (ヒロシマケン ヒガシヒロシマシ アイシマ)
向井 竜次 (ムカイ リュウジ : 男性) -> 広島県 広島市安佐北区 赤城町 (ヒロシマケン ヒロシマシアサキタク アカシロチョウ)
水野 成樹 (ミズノ セイキ : 男性) -> 広島県 安芸高田市 美濃池町 (ヒロシマケン アキタカタシ ミノノイケチョウ)
平川 昌紀 (ヒラカワ マサキ : 男性) -> 広島県 廿日市市 八幡町 (ヒロシマケン ハツカイチシ ハチマンチョウ)
岡本 夏甫 (オカモト カホ : 女性) -> 広島県 広島市安佐南区 小谷美濃山町 (ヒロシマケン ヒロシマシアサミナミク オダニミノヤマチョウ)
川田 規加 (カワタ ミカ : 女性) -> 広島県 尾道市 氷上町絹山 (ヒロシマケン オノミチシ ヒカミチョウキヌヤマ)

なお,実在しない市区町村名は単純に無視される。

$ gimei-cli -r 5 -n ラダトーム
横井 嘉美 (ヨコイ カミ : 女性) -> 青森県 日高郡みなべ町 長沢町 (アオモリケン ヒダカグンミナベチョウ ナガサワチョウ)
宮田 舞優 (ミヤタ マヒロ : 女性) -> 鳥取県 札幌市手稲区 高清水上佐野 (トットリケン サッポロシテイネク タカシミズカミサノ)
土井 由生 (ドイ ユウ : 女性) -> 愛媛県 大町市 温泉 (エヒメケン オオマチシ オンセン)
井上 睦未 (イノウエ ミツミ : 女性) -> 神奈川県 三重郡菰野町 坂本 (カナガワケン ミエグンコモノチョウ サカモト)
青木 紗帆 (アオキ サホ : 女性) -> 青森県 下妻市 紙敷 (アオモリケン シモツマシ カミシキ)

もうひとつオマケ機能として性別に「その他」を混ぜ込める。 確率は $1/16$ ほど。

$ gimei-cli -g -r 10
河村 賢二 (カワムラ ケンジ : 男性) -> 神奈川県 高岡郡津野町 上谷新田 (カナガワケン タカオカグンツノチョウ ウワヤシンデン)
馬場 奈美帆 (ババ ナミホ : 女性) -> 愛知県 名古屋市熱田区 美川末広町 (アイチケン ナゴヤシアツタク ミカワスエヒロマチ)
竹村 千喜 (タケムラ チキ : 女性) -> 富山県 最上郡舟形町 勝部 (トヤマケン モガミグンフナガタマチ カツベ)
石山 央 (イシヤマ アキラ : 男性) -> 東京都 南会津郡檜枝岐村 明和通 (トウキョウト ミナミアイヅグンヒノエマタムラ メイワドオリ)
金井 富子 (カナイ トミコ : 女性) -> 栃木県 上益城郡山都町 中之町 (トチギケン カミマシキグンヤマトチョウ ナカノチョウ)
小原 幸世 (オバラ コウセイ : 男性) -> 高知県 朝倉郡筑前町 上組郷 (コウチケン アサクラグンチクゼンマチ カミグミゴウ)
内藤 神澄 (ナイトウ ミスミ : その他) -> 北海道 米沢市 南方 (ホッカイドウ ヨネザワシ ミナミカタ)
大石 盛邦 (オオイシ モリクニ : 男性) -> 山口県 長生郡長生村 高田町 (ヤマグチケン チョウセイグンチョウセイムラ タカダチョウ)
高山 珠暉 (タカヤマ タマキ : 女性) -> 青森県 苫前郡羽幌町 小谷美濃山町 (アオモリケン トママエグンハボロチョウ オダニミノヤマチョウ)
新田 香瑠 (シンデン カオル : 女性) -> 静岡県 諏訪郡下諏訪町 黒坂町 (シズオカケン スワグンシモスワマチ クロサカチョウ)

$1/16$ という値に大した意味はないが,ジェンダーに関する国内調査で自身が性的マイノリティだと申告するのは多くても10%ほどらしいのと,ソフトウェアでは $1/2^n$ の計算が簡単だから,という単純な理由である。 まぁ,男女性しか想定してないシステムでのデバッグ用に使えれば(笑)

ブックマーク

参考図書

photo
プログラミング言語Go
アラン・ドノバン (著), ブライアン・カーニハン (著), 柴田芳樹 (著)
丸善出版 2016-06-20 (Release 2021-07-13)
Kindle版
B099928SJD (ASIN)
評価     

Kindle 版出た! 一部内容が古びてしまったが,この本は Go 言語の教科書と言ってもいいだろう。感想はこちら

reviewed by Spiegel on 2021-05-22 (powered by PA-APIv5)