skillup

技術ブログ

プログラミング全般

ダミーデータの作り方 まとめ

投稿日:

現在作っているアプリを顧客先で見せる機会があり、そのためダミーデータを入れる、という仕事がありました。

といっても画面からポチポチやったんでは時間もかかりますし、何より精神的にやられてしまいます。(汗)

今までもこのネタでは定期的に苦しんでおり、過去にも記事を書いておりますね。

参考リンク

テストのダミーデータ作成

データベースによるテストデータ作成

そこで、何とかいろいろ効率よくできないかと考え試行錯誤しました。例によってこれがいい、悪いはなくてメリット・デメリットを考えていきます。

案1 webサービス

以前の記事でも書きましたが、webサービスを使う方法ですね。プログラムの知識はいらないのでデータがすぐに用意でき、非常に典型的なものであれば行けると思います。

疑似個人情報データ生成サービス

なんちゃって個人情報

メリット

  • プログラムの知識がいらないためすぐにデータが用意できる
  • 簡単で単純なデータであれば事足りる

デメリット

  • 非典型のデータはキツイ
  • CSVインポート機能がないとキツイ(DBに直に入れようとするとデータ間で不整合が起きる)

私の場合、システムにCSVインポートがなく、これをDBに直に入れようとすると様々なところで不整合を引き起こすため今回は選択肢から外しました。

案2 SQL

次に考えたのはSQLコマンドを使って、下記のようなデータを作ろうと思いました。

  • 任意の日付のランダム
  • 他のデータベースからの任意の選択肢のランダム
  • 単純な数値のランダム

メリット

  • SQLコマンドなのでデータ作成自体に再現性がある
  • SQLコマンドを利用するので、比較的自由に任意データが作れる

デメリット

  • DBに直で入れるので仕様的に不整合が起こる
  • 任意の文字列などは作れない

そこそこ悪くないと思ったんですが、ある程度のシステムになりますと、任意の文字列を作れないのが意外と不便なのと、何よりDBでデータを直で入れると仕様的に不整合が起こりやすく、入れた後にエラーがボコボコ出るので却下しました。

案3 faker

ダミーデータを作るプログラムです。

https://github.com/fzaninotto/Faker

Laravelには直で入っており、汎用的なこともあり、かなり自由にデータを作れます。

メリット

  • 自由度はほぼ無制限。
  • プログラムを工夫すればほぼ画面から入れたのと同じ状態を作れる。

デメリット

  • プログラムをある程度工夫しないとDB直入れになってしまい、仕様的に不整合が起こる。
  • プログラムを書く手間とfakerを覚える手間が必要

結局はこれで落ち着きました。もちろん100%に近いナチュラルなデータを作ることはできませんでしたが、精度はよく、検証などをするときにもかなり使えます。

特にかなり便利だったのが下記のような点です。

  • 名前、メールアドレスなどかなりナチュラルに近いデータが作れる
  • 任意のプルダウン(特にDBから参照するタイプのデータ)
  • 日付が任意に取れる(9/10〜9/30までなど)

注意点としては画面からナチュラルに近いデータを入れるには、プログラム自体を画面からデータを入力する(いわゆるコントローラー)部分とモデルにデータを入れるプロセスを引き離しておく必要があります。

後者がメソッドやクラスとして独立して入ればその部分だけを外部から呼び出して入力すればナチュラルデータに近いものが入れられます。逆にこれをしておかないと、それほどメリットは感じられません。

逆に上記のようにプログラムを作っておけば、かなり精度の高いデータを作れます。今後はほぼこれ一択で、もう少し早く覚えておけばよかったなあと今更ながら後悔しました。

-プログラミング全般
-,

執筆者:


comment

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

関連記事

no image

オブジェクト指向設計 柔軟なインターフェイス

オブジェクト指向シリーズ。今回はインターフェイスについて。 インターフェイスといっても、implementsを使った実装だけではなく、要はあるクラスが外部の窓口となるときに使うメソッドってことだと思う …

no image

読みやすいコードについて

コードリーディングにおいて聖典となっているリーダブルコードについて読んでいこうかと。 ただ読んでいくだけではつまらないので、自分なりの考え方も書いていきます。 Contents1 優れたコードの定義1 …

no image

命名規則について

リーダブルコードシリーズ第2段、名称について。 コードにおいては名称がとても大切で、正しい命名づけなどはなかなか難しいです。 以下に大事で重要だと思ったポイントを。 Contents1 具体的でわかり …

no image

小〜中規模程度のWEBアプリ作成で気をつけるべきこと

初見の処理系(ライブラリ操作)などは休日などで最小パターンを確認しておくこと。実務で何時間も悩むと非常にストレスがたまる テーブル設計命。あとで終えるようにトレースができるような値を入れておくこと。 …

no image

ExcelVBAに関して(主にプロシージャ)

いつも半年ごとぐらいに触っていてあまり知識が蓄積しないので(汗)これを機につまづいたところをちょっとメモ。 Contents1 基本2 メモ3 参考リンク 基本 基本的な変数の代入や条件分岐、ループな …