【Shopify】ランダムな数字(乱数)を作る

Liquidでランダムな数字を作りたい時があります。
しかし乱数を生成するタグがありませんでした。
探したところ乱数の生成についての英文記事がありましたので、和訳しつつご紹介いたします。
引用元:https://dev.to/pgrimaud/how-to-generate-a-random-number-in-shopify-2nd5
Liquidでランダムな数字を作る
最初に、乱数の範囲を用意します。変数minに最小の数を、変数maxに最大の数を入れています。
minに0を、maxに9を入れることで、0から9の間のランダムな数を取得できます。
{%- assign min = 0 -%}
{%- assign max = 9 -%}
次に、ナノ秒(秒の少数桁)を取得します。フォーマットに「%N」を指定することでナノ秒を取得できます。
{%- assign date_fract = "now" | date: "%N" -%}
その次に、maxからminを引きます。
{%- assign diff = max | minus: min -%}
最後にdateタグを利用して、乱数を生成します。
「date: %N」でナノ秒を取得し、それからmaxからminを引いた数で割った余りを出し、最後に「plus:min」で最小値minを足しています。
{%- assign random_number = "now" | date: "%N" | modulo: diff | plus: min -%}
変わっていく時間(ナノ秒)を利用して乱数を生成するというやり方でした。
全て合わせてこのように書くと乱数が取得できます。
{%- assign min = 0 -%}
{%- assign max = 9 -%}
{%- assign diff = max | minus: min -%}
{%- assign random_number = "now" | date: "%N" | modulo: diff | plus: min -%}
注意したい点
Shopifyはキャッシュされますので、意図した通りに動かない可能性もあります。また、乱数が数分間または数時間更新されない可能性もあります。
それを考慮した上で利用するのが良いでしょう。
引用元サイト
先にも書きましたが、素晴らしい記事を和訳&ちょっと簡潔にした記事です。
引用元サイトにはもう少し詳しく記載がありますので、ぜひみてみてください。
https://dev.to/pgrimaud/how-to-generate-a-random-number-in-shopify-2nd5