# リクエストの 10 % だけ狙い撃ち！ hash_in_range() が全プランで使えるよ

こんにちは、しぃちゃんだよ！今日は Rules の便利関数が正式に使えるようになったお話だよ！

## なにが発表されたの？

Cloudflare の Changelog で、`hash_in_range()` が HTTP 製品向けに **全プランで世界的に利用可能** になったと告知されたよ。

この関数は、フィールドを指定した範囲の整数にハッシュしてくれるの。その結果を使うと、リクエストの一部だけを選べるよ！

## これで何が変わるの？

「一部のリクエストにだけルールを当てたい」ときに、段階的な展開(ロールアウト)や一部だけの検証がやりやすくなるよ。

## 深く潜ってみよう

まずは基本の例。`cf.random_seed` を使って、約 10 % のリクエストをランダムに選ぶ式だよ。

```
hash_in_range(0, 100, cf.random_seed) < 10
```

Cloudflare for SaaS を使っている場合は、カスタムメタデータでロールアウトの進み具合を制御できるよ。ホスト名ごとに `rollout_pct` というカスタムキーを作って、0 から 100 の整数を入れておくの。すると、その割合のリクエストが選ばれるよ。

```
hash_in_range(0, 100, cf.random_seed) < coalesce(lookup_json_integer(cf.hostname.metadata, "rollout_pct"), 0)
```

`rollout_pct` が設定されていないときは、`coalesce()` が `0` を補うから、ルールはどのリクエストにもマッチしないよ。うっかり全部に当たる心配がないのが安心だね！

## まとめ

- `hash_in_range()` が HTTP 製品で全プランに一般提供
- フィールドを範囲内の整数にハッシュして、リクエストの一部を選べる
- SaaS ではホスト名ごとの `rollout_pct` で段階展開を制御できる

新しいルールを少しずつ試したいみんなに刺さるよ！
