ColdFusion Markup Language(CFML)は、アドビシステムズが開発した
ColdFusion で用いられる
マークアップ言語です。この言語は、BlueDragon、Coral Web Builder、IgniteFusion、Railoなどの様々なプラットフォームでも利用されています。
構文の特徴
CFMLは、HTMLに似たタグベースの構文を持ち、`
`で始まるタグを使用します。これらのタグは、CFMLの核となる機能を担い、`cf`に続くユニークな識別文字列によって区別されます。また、カスタムタグは`cf_`で始まる名前を持ちますが、他の呼び出し方法も存在します。
手続き的な関数は、CFScriptを通じて利用可能です。CFMLは動的プログラミング言語と見なされることが多いですが、`cffunction`、`cfparam`、`cfqueryparam`などのタグを利用して、入力パラメータの型チェックも行えます。ただし、型チェックの有無に関わらず実行時にエラーが発生する可能性があり、この仕様については議論の余地があります。
CFMLは大文字と小文字を区別しないため、記述の際に大文字と小文字を気にする必要はありません。また、C++の`map`コンテナのようなデータ構造を多用します。キーは常に文字列ですが、値の型は特に指定されません。これらの値はドット記法でアクセスされることが一般的ですが、CFMLの実装によっては手続き的関数やオブジェクトのような形式で取得することも可能です。
最近のCFML実装では、コンポーネントという形でオブジェクトがサポートされており、コンポーネント定義は`cfcomponent`タグで囲まれたファイル内に記述されます。コンポーネント間のメッセージパッシングはドット記法で行われ、これはJavaなどのオブジェクト指向言語と類似しています。また、ColdFusionではメソッド呼び出しの括弧を省略すると、その関数を値オブジェクトのマップとみなすため、メソッドが一種の第一級オブジェクトとして扱われます。
CFMLの記述は比較的自由度が高く、タグに本体がない場合は、文法上タグを閉じる必要はありません。例えば、`...`と`...`の両方が有効であり、どちらを使用すべきかについては議論があります。
カスタムタグ
CFMLでは、カスタムタグによって言語を拡張することができます。カスタムタグは、通常のファイルとして作成され、タグとして呼び出すことができます。テンプレートをカスタムタグまたは通常のテンプレートとして扱うことも可能です。テンプレートがカスタムタグとして呼び出された場合、そのタグを呼び出す際に使われた属性は特殊なデータ構造`attributes`に格納され、呼び出し元のページにある変数は`caller`構造体を通してアクセスできます。
例として、2つの属性を受け取り、その合計値を返す`add`タグを作成する場合、`add.cfm`ファイルは次のようになります。
cfml
#sum#
このカスタムタグは以下のように呼び出すことができます。
cfml
この例では、テンプレートとタグが同じディレクトリにあることを前提としています。
CFMLサーバ
CFMLを実行するための主なサーバは以下の通りです。
ColdFusion
BlueDragon
Railo
Smith
Ignite Fusion
Coral
* link Camuffo
これらのサーバは、CFMLで記述されたコードを実行し、Webアプリケーションを開発するための環境を提供します。