Googleは、パフォーマンスが重視されるアプリケーションにおいて、高速かつポータブルで安全に実行できる汎用の式言語「Common Expression Language」を発表した。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Googleは2024年6月18日(米国時間)、パフォーマンスが重視されるアプリケーションにおいて、高速かつポータブルで安全に実行できる汎用(はんよう)の式言語「Common Expression Language」(CEL)を発表した。
CELは、式の評価に共通のセマンティクスを実装するオープンソースの非チューリング完全言語であり、異なるアプリケーションの相互運用を容易にする。
CELは単独で使用することも、大規模なプロダクトに組み込むこともできる。リモートプロシージャコール(RPC)のルーティングからセキュリティポリシーの定義まで、さまざまなアプリケーションに適している。拡張可能でプラットフォームに依存せず、1回のコンパイル/評価のワークフロー向けに最適化されている。
Googleによると、CELは、式が頻繁に評価されるが、変更の頻度が低いアプリケーションで最も効率的に使用されるという。例えば、セキュリティポリシーに照らしてHTTPリクエストを評価することは、CELの優れたユースケースだ。CELセキュリティポリシー式では、式を検証するための1回限りの構成コストが発生し、その後はごくわずかなコストで非常に頻繁に評価される。
CELでは、単一行の関数またはラムダ式に似た式が評価される。CELはブール値(True/False)の決定によく使用されるが、JSONやプロトコルバッファーメッセージなどのより複雑なオブジェクトを作成することもできる。
CELはGoogleの社内外で広く使用されており、「Kubernetes」では、コストが高くつく本番環境の構成ミスを防ぐために使用されており、「Google Cloud IAM(Identity and Access Management)」では、CELを使ってきめ細かな認可を可能にしている。
GoogleはCELの特徴として、以下の4つを挙げている。
多くのサービスやアプリケーションは、ロールベースのアクセス制御(RBAC)のような宣言型の構成を評価する。ほとんどの場合、宣言型の構成で十分だが、より表現力が必要な場合があり、そこでCELが役立つ。例えば、属性ベースのアクセス制御(ABAC)でCEL式を使用することで、RBACを拡張し、より強力なアクセス制御が可能になる。
CELでは、式はユーザーが記述し、サービスによって定義される環境に対してコンパイルされる。コンパイルステップでは、プロトコルバッファー形式で抽象構文木(AST)が生成される。コンパイルされた式は、可能な限り高速に評価を維持できるように、後で使用するために保存される。コンパイルされた1つの式をさまざまな入力で評価できる。
式は「解析」「チェック」「評価」の3つのフェーズで処理される。CELの最も一般的な使用パターンは、設定時に式を解析し、ASTを保存した後、実行時にASTの取得と評価を繰り返すというものだ。
Copyright © ITmedia, Inc. All Rights Reserved.