LoginSignup
4
1

More than 5 years have passed since last update.

type-gimeiというnpmモジュールを作った

Posted at

type-gimeiとは

type-gimeiは日本人の名前をランダムに返すライブラリです。

テストの時に使うことを想定しています。

rubyのgimeiにインスパイアされており、インターフェースをなるべく踏襲するようにしています。

使い方

TypeScript


import { Gimei, Name } from 'type-gimei';

for (let i = 0; i < 10; i++) {
  const name: Name = Gimei.randomName();
  const hiragana: string = name.hiragana();
  const romaji: string = name.romaji();
  const kanji: string = name.kanji();
  const katakana: string = name.katakana();
  console.log(`
    ${hiragana}
    ${romaji}
    ${kanji}
    ${katakana}
  `);
}

ES6, ES5


const {Gimei} = require('type-gimei');
for (let i = 0; i < 10; i++) {
  let name = Gimei.randomFemale();
  console.log(name.hiragana());
  console.log(name.kanji());
  console.log(name.romaji());
  console.log('----');
}


var gimei = require('type-gimei').Gimei;

var name = gimei.randomName();
var hiragana = name.hiragana();
var romaji = name.romaji();
var kanji = name.kanji();
var katakana = name.katakana();

console.log(hiragana);
console.log(romaji);
console.log(kanji);
console.log(katakana);

というような感じ

気づいた点

もともとはangularの中でダミーのデータを気軽に作りたいと思っていたところ、gimeiというgemを知り、実装もお手軽そうだったのでTypeScriptで書いてみるちょうど良いお題だと思ったので書きました。

でもRubyで簡単にかける部分をTypeScriptでやると冗長な感じになってしまったりして、そういえばTypeScriptやES6とかでメタプロってどうやるんだろうと思った次第です。

TypeScriptをbuildしてnpmにpublishする部分はRxJSのその部分からだいぶ拝借してきたのでそれなりに良い勉強になった。

TypeScript上で使う場合、tsconfigのtargetを指定することでtype-gimeiの_esm5や_esm2015にビルドしたソースを使い分けているようだった。

angular6からはnode由来のfsとかpathだったりのモジュールが使えなかったので、サンプルデータを記述しているymlファイルの読み込みを実行する方式ではなくあらかじめ変数として定義する方式に変更した。

originはこちら

4
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1