コンテンツにスキップ

12-4 条件文の書き方(expression)

Plan: Free費用: 0円Wrangler 4.126.0公式ドキュメント取得日 2026-08-27
条件文は「どの欄を・どう比べて・何と照らすか」の三つで書きます。

前の節で、自分の紙には条件と処置を書くと見ました。この節は、その条件の書き方だけを扱います。

条件は、日本語の文章ではなく決まった形で書きます。書き方が決まっているので、機械が迷わず判定でき、あとから読む人も同じ意味に読めます。

ここでは、条件文の形、見る欄、比べ方、つなぎ方の順に見ます。

Learning goals

この節でできるようになること

  • 条件文が三つの部品でできていることを言える
  • 用件票のどの欄を見られるかを説明できる
  • 代表的な比べ方を三つ挙げられる
  • 条件をつなぐときの読む順を説明できる

検問の紙の条件欄には、決まった形の 1 行を書きます。「どの欄を見て、どう比べて、何と照らすか」です。

Cloudflare では、この書き方を Rules language と呼びます。公式は、通信を調べる道具で広く使われている書式をもとにしており、狙った用件票(HTTP のリクエスト)だけを正確に指せると説明しています。

公式は条件文を二つに分けています。1 行だけの Simple expressions と、複数の行をつないだ Compound expressions です。1 行の形は次のとおりです。

<field> <comparison_operator> <value>

読めなくても大丈夫です。左から順に「見る欄」「比べ方」「照らす値」で、この三つが揃うと 1 つの条件になります。

なお公式は、条件文の長さは最大 4,096 文字、1 つのルールに書ける正規表現は最大 64 個だと定めています。画面では Expression Builder(選んで組む方式)と Expression Editor(直接書く方式)のどちらでも書けます。

つまり、条件文は三つの部品でできた 1 行です。

用件票には、いくつもの欄があります。どの欄を見るかを最初に決めます。

Cloudflare では、この欄を field(項目)と呼びます。公式は項目を、届いた用件の基本的な性質を表す Request fields、計算して求めた値を表す Dynamic fields、返す答えの性質を表す Response fields、元の値をそのまま残す Raw fields に分けています。

よく使うのは、通路の名前を表す http.request.uri.path と、送り主を表す ip.src です。前者は「サイトのどこを見に来たか」、後者は「どこから来たか」に当たります。

項目は、用件票のどの欄を見るかの指定です。

用件票の欄を指さしています。まずどの欄を見るかを決め、それから比べ方を選びます。

つまり、項目とは「用件票のどの欄を見るか」の指定です。

欄を決めたら、その値と何をどう比べるかを決めます。「ぴったり同じ」なのか「一部を含む」のかで結果が変わります。

Cloudflare では、これを comparison operators(比べ方)と呼びます。公式の一覧から、日常でよく使う三つを挙げます。

eq(同じ)

欄の値が、指定した値とぴったり同じときに当てはまります。

contains(含む)

欄の値の中に、指定した文字が含まれているときに当てはまります。

三つめが in です。公式は、値の集まりや名簿の中にあるときに当てはまる比べ方だと説明しており、住所の範囲を扱うときにも使います。

比べ方は、同じ・含む・名簿にある、などから選びます。

同じ・含む・名簿にある、の三つの札が並んでいます。欄ごとに使える札は決まっています。

つまり、比べ方は「同じか」「含むか」「名簿にあるか」から選ぶのが基本です。

条件が一つで足りることは多くありません。「この通路で、かつ、この送り主」のようにつなぎます。

Cloudflare では、つなぐ言葉を logical operators と呼びます。and(かつ)、or(または)、not(〜でない)などがあり、公式の例は次の形です。

http.host eq "www.example.com" and not cf.edge.server_port in {80 443}

つなぐと、読む順が問題になります。公式は order of precedence(読む順の決まり)を定めており、not が 1 番目、and が 2 番目、or が 4 番目です。andor より先に読まれます。

読む順を自分で決めたいときは、Grouping symbols(括弧)で囲みます。囲んだ中が先に読まれるので、意図が誤解されません。

条件は「かつ」「または」でつなぎ、括弧で読む順を決めます。

二つの条件が「かつ」でつながり、括弧でまとめられています。括弧の中が先に読まれます。

つまり、条件を二つ以上つなぐときは、括弧を付けて読む順を明示します。

ここで紹介した条件文が、いま読んでいる Cloudflare Lab でどう使われるかを見ます。

Cloudflare Lab では、通路の名前を見る http.request.uri.path を使い、置いていない管理画面の通路に来た用件だけを絞り込む条件文を 1 行書く予定です。ドメインはできたばかりなので、実際に書くのはこれからです。実測(書いた条件文、当てはまった件数)は実装後に追記します。

  • 条件文は「見る欄・比べ方・照らす値」の三つでできた 1 行です。
  • 見る欄は用件票の項目で、通路の名前や送り主などを選べます。
  • 二つ以上つなぐときは andor を使い、括弧で読む順を明示します。

この節で出てきた言葉を、つながりの順に並べると次のようになります。

図のラベル: 条件文 expression / 見る欄 field / 比べ方 comparison operator / 照らす値 value / 1 行の条件 Simple expressions / and / or でつなぐ Compound expressions / 括弧で読む順を決める Grouping symbols

次の章では、同じ人の来店回数を数えて制限する仕組みを見ます。

この節のチェック

問 1公式が示す 1 行だけの条件文(simple expression)の形はどれですか?

問 2用件の「どこから来たか」を表す項目はどれですか?

問 3欄の値の中に、指定した文字が含まれているときに当てはまる比べ方はどれですか?

問 4公式が定める読む順で、最も先に読まれるつなぎ言葉はどれですか?

問 5公式が定める条件文 1 つの最大の長さはどれですか?

最終更新日: