TL;DR

Google が開発した、値を評価する式を書くための言語。正式名は Common Expression Language。protovalidate のルールの記述に採用されている。

なぜ必要か

式の評価のしかたを仕様として定めているので、異なるアプリケーションやプログラミング言語のあいだで、同じ式を同じ意味で扱える。主な用途として、セキュリティポリシーの記述や、システム間でやり取りするデータとしての式が挙げられている。

仕組み

CEL の式は線形時間で評価され、値を書き換えず、チューリング完全ではない。この制約は意図的なもので、同じようにサンドボックス化した JavaScript より桁違いに速く評価できるとしている。

例

口座の残高、または当座貸越の枠で引き出しをまかなえるかを判定する式。

account.balance >= transaction.withdrawal
    || (account.overdraftProtection
    && account.overdraftLimit >= transaction.withdrawal - account.balance)

関連

出典