Chapter 12無料公開

複数のランブックから指定の数だけサンプリングして実行する

Ken’ichiro Oyama
Ken’ichiro Oyama
2023.01.16に更新

runnは、対象となる複数のランブックから指定の数(元のランブックの数を超えない数)だけランダムに選択して実行できます(以下、サンプリングと呼びます)。

サンプリングは、ランダム実行( --randomとは異なり、一度選択して実行したランブックは選択されません。

--sample

runnコマンドで複数のランブックからサンプリングして実行する場合は --sample オプションを使用します。

ランブックをサンプリングする数を0から元のランブックの数を超えない数の範囲で指定します。

$ runn run path/to/**/*.yml --sample 5

runn.RunSample

runnをパッケージとしてGoのコードの組み込む場合、 runn.Load の第2引数に渡すオプションとして runn.RunSample を指定します。

ctx := context.Background()
opts := []runn.Option{
	runn.T(t),
	runn.RunSample(5),
}
o, err := runn.Load("path/to/**/*.yml", opts...)
if err != nil {
	t.Fatal(err)
}
if err := o.RunN(ctx); err != nil {
	t.Fatal(err)
}

[コラム] --sample の名前

--sample の名前はRubyのArray#sampleを参考にしてつけたと思っています。

筆者は、Rubyの(柔軟な言語仕様もですが)表現力豊かな組み込みライブラリのメソッド群が好きです。

同じ機能でもあえて別名のメソッドが用意されていることがあるという点も好きです。

また、メソッド名に !? を使う直感的でわかりやすい命名も好きです[1]


--sample の名前もそれとなしに決めましたが、無意識ながらもRubyのArray#sampleからきていると思います。

脚注
  1. 私はプログラミング言語を片手で数えるほどしか知りませんが、この命名を知った当時「これは発明だ!」と感動しました。 ↩︎