• Stars
    star
    403
  • Rank 107,140 (Top 3 %)
  • Language
    Ruby
  • License
    MIT License
  • Created almost 12 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

random Japanese name and address generator

Gimei

Travis Coveralls Code Climate Gem

gimei は、日本人の名前や、日本の住所をランダムに返すライブラリです。テストの時などに使います。似たようなライブラリにfakerがあります。fakerはとても優れたライブラリで、多言語対応もしていますが、ふりがな(フリガナ)は流石に対応していません。gimei はふりがな(及びフリガナ)に対応しています。

使い方

名前をランダムで返す

下記のように使います。

gimei = Gimei.name
gimei.kanji          #=> "斎藤 陽菜"
gimei.hiragana       #=> "さいとう はるな"
gimei.katakana       #=> "サイトウ ハルナ"
gimei.romaji         #=> "Haruna Saitou"
gimei.gender         #=> :female
gimei.male?          #=> false
gimei.female?        #=> true
gimei.last.kanji     #=> "斎藤"
gimei.last.hiragana  #=> "さいとう"
gimei.last.katakana  #=> "サイトウ"
gimei.last.romaji    #=> "Saitou"
gimei.first.kanji    #=> "陽菜"
gimei.first.hiragana #=> "はるな"
gimei.first.katakana #=> "ハルナ"
gimei.first.romaji   #=> "Haruna"

gimei.last, gimei.first の代わりに、gimei.family, gimei.given を用いることもできます。

gimei.family.kanji     #=> "斎藤"
gimei.family.hiragana  #=> "さいとう"
gimei.family.katakana  #=> "サイトウ"
gimei.family.romaji    #=> "Saitou"

gimei.given.kanji    #=> "陽菜"
gimei.given.hiragana #=> "はるな"
gimei.given.katakana #=> "ハルナ"
gimei.given.romaji   #=> "Haruna"

下記のように男性/女性の名前を返すことを明示的に指定できます。Gimei.name の場合は男女の名前を等確率で返します。

gimei = Gimei.male
gimei.male?   #=> true
gimei.female? #=> false
gimei.gender  #=> :male
gimei.kanji   #=> "小林 顕士"

gimei = Gimei.female
gimei.male?   #=> false
gimei.female? #=> true
gimei.gender  #=> :female
gimei.kanji   #=> "根本 彩世"

漢字、ひらがな、カタカナ、ローマ字どれか一種類だけ取得できればよい場合には、下記のように短縮して書くことも出来ます。

Gimei.kanji          #=> "伊藤 結衣"
Gimei.hiragana       #=> "いとう みさき"
Gimei.katakana       #=> "タカハシ ユイナ"
Gimei.romaji         #=> "Miki Obara"
Gimei.last.kanji     #=> "清水"
Gimei.last.hiragana  #=> "いとう"
Gimei.last.katakana  #=> "コバヤシ"
Gimei.last.romaji    #=> "Wakabayashi"
Gimei.first.kanji    #=> "結菜"
Gimei.first.hiragana #=> "ここあ"
Gimei.first.katakana #=> "ヤマト"
Gimei.first.romaji   #=> "Noriyuki"

Gimei.family.kanji     #=> "黒沢"
Gimei.family.hiragana  #=> "いずみ"
Gimei.family.katakana  #=> "エノモト"
Gimei.family.romaji    #=> "Okada"

Gimei.given.kanji    #=> "航"
Gimei.given.hiragana #=> "まさみつ"
Gimei.given.katakana #=> "ユカ"
Gimei.given.romaji   #=> "Haruto"

同じ名前を二度取得したくない場合には、以下のようにuniqueを挟みます。次のようにすると、利用した名前をGimei内で保持することで必ず一意な名前を返すようにできます。

Gimei.unique.name

上記の場合は、フルネームの漢字が一意であることを保証します。つまり、次のように姓や名の単位では重複することもありえます。

Gimei.unique.name.kanji #=> "前島 真一"
Gimei.unique.name.kanji #=> "神谷 真一"
Gimei.unique.name.kanji #=> "前島 太郎"

これを避けたいときは次のようにlastfirstを利用してください。これは姓や名の単位で一意な名前を返します。

Gimei.unique.last
Gimei.unique.first

この場合でも、ふりがな(フリガナ)の単位では重複することがあります。

Gimei.unique.first.hiragana #=> "しんいち"
Gimei.unique.first.hiragana #=> "しんいち"

もし名前の候補が枯渇するなど、一意な名前を返せない場合はエラーになります。

これまで利用した名前のリストを消去したい場合は、次のようにします。

Gimei.unique.clear # 全体を消去
Gimei.unique.clear(:name) # Gimei.unique.name の結果を消去
Gimei.unique.clear(:first) # Gimei.unique.first の結果を消去

次のメソッドで生成された名前はGimei.unique.clear(:name)で消去します。

  • Gimei.unique.male
  • Gimei.unique.female
  • Gimei.unique.kanji

Gimei.unique.family で生成された名前は Gimei.unique.clear(:last) で消去します。 また、Gimei.unique.given で生成された名前は Gimei.unique.clear(:first) で消去します。

出力される名前の候補となるデータは lib/data/names.yml にあるので、必要であればファイルを修正してください。

住所をランダムで返す

バージョン0.2.0からは、住所情報も取得できるようになりました。都道府県、区、市、町を組み合わせた住所情報を漢字、ひらがな、カタカナで取得することができます。

address = Gimei.address
address.kanji                 # => 岡山県大島郡大和村稲木町
address.to_s                  # => 岡山県大島郡大和村稲木町
address.hiragana              # => おかやまけんおおしまぐんやまとそんいなぎちょう
address.katakana              # => オカヤマケンオオシマグンヤマトソンイナギチョウ
address.romaji                # => Okayamaken Ooshimagunyamatoson Inagicho

address.prefecture.kanji      # => 岡山県
address.prefecture.to_s       # => 岡山県
address.prefecture.hiragana   # => おかやまけん
address.prefecture.katakana   # => オカヤマケン
address.prefecture.romaji     # => Okayamaken

address.city.kanji            # => 大島郡大和村
address.city.to_s             # => 大島郡大和村
address.city.hiragana         # => おおしまぐんやまとそん
address.city.katakana         # => オオシマグンヤマトソン
address.city.romaji           # => Ooshimagunyamatoson

address.town.kanji            # => 稲木町
address.town.to_s             # => 稲木町
address.town.hiragana         # => いなぎちょう
address.town.katakana         # => イナギチョウ
address.town.romaji           # => Inagicho

省略形も用意しています。

Gimei.prefecture.kanji        # => 青森県
Gimei.prefecture.to_s         # => 滋賀県
Gimei.prefecture.hiragana     # => やまがたけん
Gimei.prefecture.katakana     # => チバケン
Gimei.prefecture.romaji       # => Wakayamaken

Gimei.city.kanji              # => 利根郡昭和村
Gimei.city.hiragana           # => うべし
Gimei.city.katakana           # => カモグンヤオツチョウ
Gimei.city.romaji             # => Itanogunaizumichou

Gimei.town.kanji              # => 竹野
Gimei.town.to_s               # => 富久山町南小泉
Gimei.town.hiragana           # => じょうしんでん
Gimei.town.katakana           # => イケナイ
Gimei.town.romaji             # => Heisei

同じ住所を二度取得したくない場合には、以下のようにuniqueを挟みます。次のようにすると、利用した住所をGimei内で保持することで必ず一意な名前を返すようにできます。

address = Gimei.unique.address

上記の場合は、住所全体が一意であることを保証します。つまり、次のように県や市町村の単位では重複することもありえます。

Gimei.unique.address.prefecture.kanji #=> 東京都
Gimei.unique.address.prefecture.kanji #=> 東京都

もし県や市町村の単位で一意であることを保証したいのであれば、次のように短縮形を使います。

Gimei.unique.prefecture.kanji #=> 東京都
Gimei.unique.prefecture.kanji #=> 神奈川県

もし住所の候補が枯渇するなど、一意な名前を返せない場合はエラーになります。

これまで利用した住所のリストを消去したい場合は、次のようにします。

Gimei.unique.clear # 全体を消去
Gimei.unique.clear(:address) # Gimei.unique.address の結果を消去
Gimei.unique.clear(:prefecture) # Gimei.unique.prefecture の結果を消去

出力される住所の候補となるデータは lib/data/addresses.yml にあるので、必要であればファイルを修正してください。

再現可能なランダムデータ

下記のように乱数生成器を設定することで、再現性のあるランダムデータを生成できます。

Gimei.config.rng = Random.new(42)
Gimei.name.kanji    #=> "飯島 誠吾"
Gimei.address.kanji #=> "熊本県日進市東場内"

Gimei.config.rng = Random.new(42)
Gimei.name.kanji    #=> "飯島 誠吾"
Gimei.address.kanji #=> "熊本県日進市東場内"

Supported versions

  • 2.2.x
  • 2.3.x
  • 2.4.x
  • 2.5.x
  • 2.6.x
  • 2.7.x
  • 3.0.x
  • 3.1.x
  • 3.2.x

他言語による実装

Installation

Add this line to your application's Gemfile:

gem 'gimei'

And then execute:

$ bundle

Or install it yourself as:

$ gem install gimei

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

More Repositories

1

rspec-style-guide

可読性の高いテストコードを書くためのお作法集
HTML
523
star
2

capybara-readme-ja

Capybara の README 和訳
128
star
3

committee-rails

rails and committee are good friends
Ruby
112
star
4

awesome_events

パーフェクト Ruby on Rails のサンプルアプリ
Ruby
83
star
5

takarabako

random Japanese name of game item generator
Ruby
78
star
6

redash-on-heroku

Dockerfiles for hosting redash on heroku
45
star
7

skill-map-for-rails-engineers

Rails エンジニアのスキルマップ
43
star
8

yuba

Add new layers to rails for more tidy source code
Ruby
42
star
9

rake_shared_context

shared_context for rake tasks
Ruby
31
star
10

ci_logger

Logger for CI
Ruby
15
star
11

honobono

log helper for rake tasks
Ruby
12
star
12

ajax_error_renderer

a validation error renderer for ajax request
Ruby
10
star
13

save_chain_inspector

A tool to investigate the order in which the saves of related models are executed.
Ruby
9
star
14

prid

get pull request id on current branch
Ruby
9
star
15

rankingems

You can find popular and well maintained gems quickly!
Ruby
6
star
16

revenger

復習用メモサービス
Ruby
6
star
17

deka

tracking commits of a repository
Ruby
4
star
18

reading-metaprogramming-ruby-first-steps

Ruby
3
star
19

study_stamp

学習スタンプアプリ
Ruby
3
star
20

agg

a grep command using ag (silver sercher) for emacs
Emacs Lisp
2
star
21

capybara-wait_image

wait for the image to load automatically
Ruby
2
star
22

config

config files
2
star
23

revenger-playbook

ansible playbook for revenger
Shell
1
star
24

use-headless-chrome-to-download-file-on-rspec-sample

Ruby
1
star
25

takumi

Ruby
1
star
26

prmd-rails

Ruby
1
star
27

rails-toybox

rails templates for checking rails features
Ruby
1
star
28

ruby-exercise

Ruby
1
star
29

snippets

Emacs Lisp
1
star
30

99-haskell-problems

Haskell
1
star
31

herobu

herobu hits circleci nightly api with heroku in order to make pull request for bundle update periodically.
Shell
1
star
32

algorithm-exercise

Ruby
1
star
33

myprofile

myprofile
Python
1
star
34

dotfiles

dotfiles
Shell
1
star
35

refile_cdn_switcher

Ruby
1
star
36

byebug-zeitwerk-sample

sample rails application to reproduce NameError with byebug and zeitwerk
Ruby
1
star
37

ganotifier

Swift
1
star
38

haskell-exercise

Haskell
1
star
39

emacs-settings

emacs setting files for emacs-inits
Emacs Lisp
1
star
40

ginza-rb-test

test
1
star