// Simple predicates
'tacocat'.startsWith('taco')

// Parameterized predicates over structured data
account.balance >= transaction.withdrawal

// JSON objects
{'sub': '12345678',
 'aud': 'example2.cel.dev',
 'iss': 'https://example1.cel.dev/jwt-issuer'}

// Strongly typed objects
common.GeoPoint{ latitude: 10.0, longitude: -5.5 }

Common Expression Language(CEL)は、パフォーマンスが重視されるアプリケーションで高速かつポータブルで、安全に実行できる式言語です。CEL は、アプリケーション固有の拡張機能を使用してアプリケーションに組み込めるように設計されており、アプリケーションがすでに使用している宣言型の構成を拡張するのに最適です。

CEL は、API 呼び出しのリストフィルタ、プロトコル バッファの検証制約、API リクエストの認可ルールなどに使用します。

パフォーマンスが重視されるパスにおいて、ナノ秒単位からマイクロ秒単位まで表現の評価を加速します。
複数の Google システムと外部システムで共通の構文を使用して、デベロッパー指向の軽量化を実現します。
サブセット化と拡張がサポートされており、組み込みが容易で、構成とポリシーの要件に合わせた調整が可能です。
チューニングが完了しておらず、ホストアプリケーションによって提供されたデータにのみアクセスします。

CEL は予測可能な費用で安全かつ迅速に(ナノ秒単位からマイクロ秒まで)評価できるように設計されているため、パフォーマンス重視のアプリケーションに最適です。CEL 式は、述語ロジックや単純なデータ変換に特に役立ちます。

CEL は、式が頻繁に評価されるが変更の頻度が低いアプリケーションで最も効率的に使用されます。たとえば、セキュリティ ポリシーに照らして HTTP リクエストを評価することは、CEL の優れたユースケースです。CEL セキュリティ ポリシー式では、式を検証するための 1 回限りの構成コストが発生し、その後、ごくわずかなコストで非常に頻繁に評価されます。

判断に迷われる場合は、CEL の概要と言語の定義を確認するか、お問い合わせください。平素は YouTube をご利用いただき誠にありがとうございます。

CEL プロジェクトを支援したいですか?オープンソースのコードとドキュメントに貢献します。皆様のご協力をお願いいたします。