[小ネタ][Golang]gofakeitとgocsvでダミーデータのCSVを作ってみる

2021.11.26

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

今行っている作業でダミーデータのCSVを作りたいと思い、使用している言語がGolangであったため、それらを実現できるライブラリを検討してみました。 結果、以下の2つを組み合わせると楽にできました。

それぞれの使い方はリンクのページを見れば分かりやすいとは思いますが、組み合わせてCSVとして出力した例として、今回作成したプログラムを載せておきたいと思います。

プログラムと実行について

Golangを実行できる環境にて、「go mod」で予め使用するライブラリをインストールしておきます。

$ go get github.com/brianvoe/gofakeit/v6
$ go get -u github.com/gocarina/gocsv

プログラムについては以下となります。

package main

import (
	"fmt"

	"github.com/brianvoe/gofakeit/v6"
	"github.com/gocarina/gocsv"
)

type Beer struct {
	ID    int    `csv:"id"`
	Malt  string `csv:"malt"`
	Name  string `csv:"name"`
	Style string `csv:"style"`
}

func main() {
	gofakeit.Seed(0)

	beers := []*Beer{}
	for i := 0; i < 10; i++ {
		b := &Beer{
			gofakeit.Number(1, 100),
			gofakeit.BeerMalt(),
			gofakeit.BeerName(),
			gofakeit.BeerStyle(),
		}
		beers = append(beers, b)
	}

	csv, err := gocsv.MarshalString(&beers)
	if err != nil {
		panic(err)
	}
	fmt.Println(csv)
}

今回はビールのダミーデータを作り、それをCSV形式で出力してみました。出力は標準出力にしているので、結果をファイルとして残したい場合はパイプを使うことなります。(今回は開発用のデータを作成するだけので、これで十分でした。)

実行は以下のようになります。

go run main.go > beer.csv

以上、簡単なダミーデータ作成の例でした。何かの役に立てば幸いです。