Thanks Driven Life

日々是感謝

適当な日本人の名前や住所をランダムに作れる gimei を emacs lisp に port した

経緯

mattn.kaoriya.net

ビッグウェーブに乗った

過去

人名をランダムに生成する emacs lisp fake-full-name.el - Thanks Driven Life

こんな記事を書いたこともありました。この elisp はちょくちょく仕事でも使っていて、ちゃんとリポジトリ作成しようかなーでもなーって悩んでたところ、gimei の話題が見えましたので、あらためてこちらの方を作成しました。

現在

github.com

Usage

https://github.com/gongo/emacs-gimei#usage

まずは人名:

(require 'gimei)

(setq name (gimei/new-name))   ;; [cl-struct-gimei:name]

(gimei/kanji-of name)          ;; "浅野 深桜"
(gimei/hiragana-of name)       ;; "あさの みお"
(gimei/katakana-of name)       ;; "アサノ ミオ"

(gimei/last:kanji-of name)     ;; "浅野"
(gimei/last:hiragana-of name)  ;; "あさの"
(gimei/last:katakana-of name)  ;; "アサノ"
(gimei/first:kanji-of name)    ;; "深桜"
(gimei/first:hiragana-of name) ;; "みお"
(gimei/first:katakana-of name) ;; "ミオ"

;; 男性名/女性名 を明示

(gimei/kanji-of (gimei:new-male))   ;; "篠田 繁夫"
(gimei/kanji-of (gimei:new-female)) ;; "稲葉 澪"

住所はこんな感じ:

(setq address (gimei/new-address))  ;; [cl-struct-gimei:address]

(gimei/address:kanji-of address)    ;; "山梨県杵築市宮浦"
(gimei/address:hiragana-of address) ;; "やまなしけんきつきしみやのうら"
(gimei/address:katakana-of address) ;; "ヤマナシケンキツキシミヤノウラ"

(gimei/address:prefecture:kanji-of address) ;; "山梨県"
(gimei/address:city:hiragana-of address)    ;;"きつきし"
(gimei/address:town:katakana-of address)    ;; "ミヤノウラ"

変数に受けずに直接呼び出すことも可能:

(gimei/kanji)    ;; "宮原敏也"
(gimei/hiragana) ;; "あだちてつ"
(gimei/katakana) ;; "キシモトコタロウ"

(gimei/address:kanji)    ;; "神奈川県河内長野市藤助新田"
(gimei/address:hiragana) ;; "みえけんわたりぐんやまもとちょうきたじゅう"
(gimei/address:katakana) ;; "オオサカフコユグンシントミチョウナカノバタチョウ"

使用例

(require 'cl-lib)

(cl-loop for i from 1 to 10
         do (let ((name (gimei/new-name))
                  (address (gimei/new-address)))
              (insert "\"" (gimei/kanji-of name) "\""
                  "," "\"" (gimei/katakana-of name) "\""
                  "," "\"" (gimei/address:kanji-of address) "\""
                  "\n")))

;; => "村井 建喜","ムライ タテヨシ","宮崎県稚内市平成"
;;    "樋口 一","ヒグチ ハジメ","岩手県遠賀郡遠賀町下川上"
;;    "森 寿英","モリ トシヒデ","静岡県八丈島八丈町上磯分内"
;;    "柏木 桃世","カシワギ モモヨ","山梨県比企郡嵐山町新町"
;;    "金田 充扇","カネダ ミオ","青森県吾妻郡草津町木島"
;;    "井口 静江","イグチ シズエ","長野県相楽郡精華町清尾"
;;    "多田 征蘭","タダ セイラ","岡山県雨竜郡沼田町金山沢"
;;    "松本 範人","マツモト ノリヒト","熊本県羽咋市西恋ケ窪"
;;    "渡辺 生夏","ワタナベ ミナツ","山口県霧島市引佐町栃窪"
;;    "川島 健郎","カワシマ タケオ","岐阜県東白川郡矢祭町猫田"

即席テストユーザ CSV ファイル

おまけ

Emacs Lisp って YAML parser 無いんですね。無かったので オリジナルデータ を alist に変換して gz で配置するなどして対処しました。

まとめ

これでテストデータもばっちりですね!テストしていこう!!(この elispちゃんとテスト書きました)