Google Apps Scriptでダミーデータをジェネレートする【GAS】

Google Apps Scriptの開発に限らず、業務用アプリケーション等の開発時には、わりと大きなダミーデータが必要になるケースがあります。ネット上にはそれらに向けてのダミーデータ生成サービスがたくさん存在しています。中には数万オーダー規模のデータを一瞬で生成できてしまうサービスも。

実際に開発をするにあたっては、実際の生データを使うのは色々とマズイケースもあるので、これらのデータを使うのですが、必ずしも自分の開発で必要なデータを毎度毎度生成できるとは限りません。そこで、自前でもダミーデータを生成できるような小ツールがあったら便利だなという事で、作ってみました。

色々と自分の開発にあったデータセットを用意しておくと、手頃なダミーデータを素早く用意できます(その他の一般的なデータはダミーデータジェネレータサイトで用意が出来ますから)。

今回使用するファイル

事前準備

今回のダミーデータジェネレータは、5個の辞書から、ID、苗字、名前、メアド、住所というポピュラーな要素をジェネレートする事が可能です。ここにオリジナルの生成用のデータ(自分であれば薬剤のデータ等)を追加すれば、開発用ダミーデータの生成として特化したものを作ることが可能です。

但し、現在スプレッドシートは500万セルまでという上限があるので、辞書データの追加には気を使う必要があります。

今回使用したダミーデータは以下のような形で揃えました。

  1. 苗字および氏名のダミーデータはVectorのMS-IME95用人名辞書データを取り込んでみました。(苗字4000件、名前19,000件)
  2. ひらがな⇒ローマ字変換用の関数としてkana2romajiのライブラリを使って、ローマ字を生成するkanahenkan関数を作成しました。以下がそのコード。メアド生成時に使用します。
  3. JPNICのドメイン一覧を加工して取り込みました。メアド生成時に使用します。(280件)
  4. 適当なドメイン生成の為に、EDICT英単語辞書から単語を抽出して取り込みました。(98,000件)
  5. 住所データは住所.jpで公開している日本の住所データを取り込みました(149,000件)
  6. 各辞書データには名前付き範囲を設定しています。
  7. 辞書データが大きすぎる場合にはファイルを分割して、コードの中で参照するファイルを読み込むようにすればよいかと思います。
  8. 辞書データが多すぎるとデータの生成に時間がかかりますので、ほどほどに。特に住所データ。

図:各データには名前付き範囲を設定しています。

実行結果とコード

実行と結果

データ整備したらメニューの「▶道具箱」⇒ダミーデータ生成を実行。生成件数を聞いてくるので、数値を入力(今回は最大10000件)。住所データが重すぎる為、100件でも10000件でも対して時間の差がなく時間が掛かります。

図:専門分野のデータを用いて生成が本来の目的(売上データなどなど)

ソースコード

  • promptで受け取った数値を数値かどうか判定させ、今回は生成件数の指定は、最大10000件までに制限を加えました。
  • ダミーデータの取得とその件数を取得させています。件数はランダムな数値生成時の最大値として利用します。
  • IDは連番で振っています。
  • 指定範囲内で整数値をランダム生成するには、Math.floor(Math.random() * (最大値 - 1)) + 1;とします。最大値にはそれぞれの配列の件数を利用しています。lengthの最大値はレコード数を示しますが、配列は0から始まるので、本来この最大値は計算時に含まれないのですが、これで問題なく配列の全てをヒットできるはず。
  • メアドは、苗字氏名のローマ字 + 英単語 + ドメインで結合して生成しています。
  • 住所には住所データに番地と号をそれぞれランダム生成して結合しています。丁目は住所データのフィールドにある字丁目を利用しています。
  • 生成した配列データはもちろん、一発書き込みです。毎回実行時にデータはクリアされる仕様です。

関連リンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)