| パラダイム | 命令型、オブジェクト指向 |
|---|---|
| デザイン: | ジェレミー・アレア、ジョセフ・J・アレア |
| 開発者 | Adobe Systems ( ColdFusion )、Lucee Association ( Lucee )、New Atlanta および aw2.0 ( openBD )、The Railo Company ( Railo ) |
| 初登場 | 1995年 |
| 安定リリース | 2023年発売 / 2023年 |
| 実装言語 | ジャワ |
| OS | クロスプラットフォーム |
| ライセンス | 実装によって異なります。独自ライセンス、LGPL ライセンス、およびGPLライセンスのエンジンがすべて利用可能です。 |
| ファイル名拡張子 | .cfm、.cfc |
| Webサイト | www.adobe.com/products/coldfusion |
| 主な実装 | |
| Adobe ColdFusion、Lucee、Railo、BlueDragon、Open BlueDragon | |
| 影響を受けた | |
| ルーシー | |
ColdFusion Markup Language(通称CFML)は、Java 仮想マシン(JVM)、. NETフレームワーク、Google App Engine上で実行される Web 開発用のスクリプト言語です。Adobe ColdFusion、Lucee、New Atlanta BlueDragon(Javaおよび .NET バージョン)、Railo、Open BlueDragon、その他の CFML サーバー エンジンなど、CFML エンジンの商用および無料およびオープン ソース ソフトウェア実装がいくつか利用可能です。
概要
最も単純な形式では、他の多くのウェブスクリプト言語と同様に、CFMLは標準のHTMLファイルをデータベースコマンド、条件演算子、高レベルの書式設定関数、およびその他の要素で拡張してウェブアプリケーションを作成します。[1] [2] CFMLには、ビジネスロジックをプレゼンテーションから分離できる CFMLバージョンのオブジェクトであるColdFusionコンポーネント(CFC)など、他の多くの構成要素も含まれています。
CFML は、タグまたはJavaScript ( ECMAScript ) に似たCFScript を使用して記述できます。
CFMLアプリケーションのページには、HTML タグに加えて、サーバー側のCFML タグと関数が含まれています。最近の CFML アプリケーションでは、ビジネス ロジックを実行するために CFML ページからアクセスされる CFC も含まれる傾向があります。WebブラウザーがColdFusion アプリケーションのページを要求すると、ColdFusionアプリケーション サーバーによって自動的に前処理されます。[3]
CFML は、 HTML 以外にも、 XML 、 JavaScript 、 CSS などの他の言語を生成するためにも使用できます。
名前にもかかわらず、 CFML はマークアップ言語ではありません。また、特定のコア CFML 機能が準拠を妨げるため、 SGMLでもありません。
CFMLエンジンは、サーバー上の特定のファイル拡張子(.cfm、.cfc)が処理のためにCFMLエンジンに渡されるように構成されています。Javaベースのエンジンの場合、これはJavaサーブレットを介して行われます。CFMLエンジンはCFMLタグと関数のみを処理し、CFMLタグと関数の外側のテキストは変更せずにWebサーバーに返します。[4]
歴史
当初 Cold Fusion と名付けられたこのソフトウェアは、1995 年にミネソタ州に拠点を置くAllaire Corporationによって開発されました。その後、マサチューセッツ州ケンブリッジに移転し、最終的にマサチューセッツ州ニュートンに移転した後、2001 年にMacromediaに買収されました。Allaire Cold Fusion は Macromedia Cold Fusion になりました。バージョン 4 のリリース時に、名前のスペースが削除され、ColdFusion になりました。Adobe は 2005 年に Macromedia を買収しました。2023 年現在、同社はまだ ColdFusion を積極的に開発しています。 [アップデート]
1998年、アラン・ウィリアムソンと彼のスコットランドの会社「n-ary」は、一般的なプログラミングタスクを簡素化するためにJava用のテンプレートエンジンの開発を始めました。[5]ウィリアムソンはタグの代わりに中括弧記法を使用していましたが、CFMLの例を見て、タグ構文を使用して同様の問題(Javaではないが)を解決する方法を見て、最終的にBlueDragonとなるものの開発を開始しました。これはCFML言語の最初のJava実装でした。(ColdFusionは、 2002年に最初のJavaベースのバージョンであるバージョン6.0がリリースされるまで、 CとC++で書かれていました。)ニューアトランタは2001年頃にBlueDragonのライセンスを取得し、商用製品として提供し、最終的にCFMLの.NET実装を作成しました。Open BlueDragonは商用BlueDragon製品のフォークであり、2008年に初めてリリースされました。
Railo CFMLエンジンは2002年に学生プロジェクトとして始まり、2005年に初めて商用プロジェクトとして立ち上げられました。[6] Railoは2008年にエンジンをオープンソース化すると発表し、最初のオープンソースバージョンは2009年にリリースされました。
2009年6月18日、AdobeはCFUnitedカンファレンスで、CFML言語の変更を指導および検討する責任を負うCFML諮問委員会[7]を結成したことを発表しました。この取り組みは2010年に解散しました。GoogleグループCFML Conventional Wisdomは、言語とエンジンの機能に関するオープンで公開された議論のフォーラムとして作成されましたが、2011年以降その利用は減少しています。[要出典]
2012 年に OpenCFML Foundation が設立されました。その役割は、オープンソースのCFML アプリケーションとプラットフォームを推進することです。
元 Railo の主任開発者 Michael Offner 氏は、 2015 年 1 月 29 日にロンドンでRailoのフォークであるLucee を立ち上げました。コミュニティのサポーターと Lucee Association のメンバーの支援を受けたこのプロジェクトの目標は、より少ないリソースを使用して CFML の機能を提供し、パフォーマンスを向上させ、CFML をそのルーツを超えて現代的で動的な Web プログラミング プラットフォームへと移行させることです。
構文
CFML タグは HTML タグと似た形式です。山括弧(< と >) で囲まれ、通常は 0 個以上の名前付き属性を持ちますが、一部のタグ (cfset、cfif など) には属性ではなく式が含まれます。多くの CFML タグには本体があります。つまり、開始タグと終了タグがあり、その間に処理するテキストがあります。例:
<cfoutput>
#値# Bob!
</cfoutput>
cfset や cfftp などの他のタグには、本体はありません。必要なすべての情報は、以下の例のように、タグ属性 (名前と値のペア) の形式で、開始 (<) 文字と終了 (>) 文字の間にあります。タグに本体がなくても問題ない場合、最初の例のようにタグを閉じずにそのままにしておくことは構文上許容されますが、多くの CFML 開発者は、(おそらく) コードをより読みやすくするために、2 番目の例のようにタグを自己閉じすることを選択します。
<cfset 値 = "こんにちは" >
<cfset 値 = "こんにちは" / >
タグに本文があっても、属性で必要な情報がすべて指定されるため、本文を含める必要がない場合があります。このような場合、上記の2番目の例のように、終了タグ(つまりタグ本文)を省略して、次の例のようにタグを自己終了させることができます。[8]
< cfexecute 名= "C:\\winNT\\System32\\netstat.exe" 引数= "-e" 出力ファイル= "C:\\Temp\\out.txt" タイムアウト= "1" />
さまざまなタグには、プログラマが入力パラメータの型を具体的に宣言した場合に、入力パラメータの型チェックを行う機能があります (cffunction、cfparam、cfqueryparam など)。この機能は、cfqueryparam と組み合わせて使用され、ハッカーやSQL インジェクションなどの悪意のある Web リクエストから Web アプリケーションとデータベースを保護します。
組み込みタグ
CFML言語の中心は、約100のタグと多数の機能で構成されています。以下は、機能または目的別にCFMLタグをリストしたものです。[9]
- アプリケーションフレームワーク
- コミュニケーション
- コントロール
- データ出力
- デバッグ
- ディスプレイ管理
- 拡張性
- ファイル管理
- 形状
- インターネットプロトコル
- ページ処理
- 安全
- 変数操作
- その他のタグ (cfimage、cfregistry など)
カスタムタグ
CFML では、カスタム タグの形式で言語拡張が可能です。カスタム タグは、開発者が作成するタグで、CFML 言語自体の一部ではありません。カスタム タグは、タグとして呼び出されることを目的とした通常の CFML ファイルですが、テンプレートをカスタムタグと通常のテンプレートの両方として扱うこともできます。カスタム タグは CFML で記述され、通常はカスタム タグのファイル名にcf_ というプレフィックスを付けて呼び出されますが、カスタム タグを呼び出す方法は他にもあります。
テンプレートがカスタム タグとして呼び出される場合、そのタグを呼び出すために使用される属性は、属性スコープ内のタグ内で使用可能であり、呼び出し元のページの変数は呼び出し元スコープを介してアクセスできます。
たとえば、 2 つの属性を取得してそれらを加算する加算を実行するカスタム タグを作成する場合、タグは addition.cfm ファイルになり、次のようになります。
<cfset caller.addition = attribute.first + attribute.second / >
< cfexit method = "exitTag" />
タグがファイルと同じディレクトリ(または事前定義された customtags ディレクトリ)にあると仮定すると、次のように呼び出すことができます。
< cf_addition 最初= "1" 2番目= "2" >
CFX タグは、 JavaまたはC++ を使用して開発され、cf_ と同様に cfx_ というプレフィックスが付けられるカスタム タグです。Java および C++ タグは、CFML エンジンの管理者を使用するか、設定ファイルを編集することによって CFML ランタイム環境に追加されます。
一部の CFML エンジンでは、 <cfimport> タグを使用してJSPタグを CFML ページに含めることもできます。[引用が必要]
機能
ColdFusion マークアップ言語には、論理演算や算術演算を実行し、データを操作するために使用する一連の関数が含まれています。
ColdFusion コンポーネント (CFC)
CFC は、オブジェクト指向(OOP) 言語によって提供される一般的な機能の一部 (すべてではありません) を提供します。CFC を作成するには、次の手順を実行します。
- .CFC 拡張子を持つファイルを作成します (これにより、CFC は .CFM 拡張子を持つ ColdFusion テンプレートと区別されます)。
- 4 つのタグを使用してコンポーネントを作成し、その関数と引数を定義し、値を返します。
- <cfcomponent>: CFCを定義します
- <cffunction>: CFC内の関数(メソッド)を定義します
- <cfargument>: 関数が受け入れる引数(パラメータ)を定義します
- <cfreturn>: 関数から値または結果を返します
CFC はプレーンな CFML です。CFC 内では、任意の CFML タグ、関数、カスタム タグ、その他のコンポーネントなどを使用できます。
CFC はさまざまな方法で使用できます。CFC に含まれるメソッドを呼び出す必要があるだけの場合は、<cfinvoke> タグで CFC のインスタンスを作成し、必要なメソッドを呼び出して、CFC のインスタンスを破棄します。<cfinvoke> は、コンポーネントの名前 (.cfc 拡張子を除く) と実行するメソッドを受け取ります。返されたデータにアクセスするには、RETURNVARIABLE 属性で、関数が返すものを格納する変数の名前を指定します。CFC は 4 つのタグを使用して作成され、.CFC ファイルとして保存され、<cfinvoke> タグを使用して呼び出されます。[28]
以下の例では、コンポーネントtemperature.cfc に、温度を華氏から摂氏に変換するメソッド FtoC があります。test.cfm テンプレートは、このメソッドを呼び出して華氏 212 度を変換し、結果を出力します。
<!---temperature.cfc --->
<cfcomponent>
<cffunction name = "FtoC" access = "public" returntype = "numeric" >
<cfargument name = "fahrenheit" required = "yes" type = "numeric" / >
<cfset answer = ( fahrenheit - 32 ) * 100 / 180 / >
<cfreturn answer / >
</cffunction>
</cfcomponent>
<!--- test.cfm --->
<cfset fDegrees = 212 / >
<cfinvoke component = "temperature" method = "FtoC" returnvariable = "result" >
< cfinvokeargument name = "fahrenheit" value = "#fDegrees#" />
</cfinvoke>
<cfoutput> # fDegrees # ° F = # result # ° C </cfoutput> < br />
CFC はオブジェクトとしてインスタンス化することもできます。CFC ファイルが Person.cfc であるとすると、この CFC のインスタンスは次のようにインスタンス化されます。
<cfset person = CreateObject ( "コンポーネント" , "Person" ) / >
CFC は、CFML でWeb サービスを作成する機能の基礎にもなります。CFC は通常の方法で作成され、CFC 内の任意の関数に属性 access="remote" を追加すると、その関数をSOAPベースの Web サービスとして呼び出すことができるようになります。CFML エンジンはWSDL を自動生成し、Web サービスが機能するために必要なすべてのスタブを作成します。
参考文献
- ^ Adobe ColdFusion 8 – インターネット アプリケーションと Web アプリケーション サーバーについて Archived 2012-05-13 at the Wayback Machine . Livedocs.adobe.com. 2013-09-17 に取得。
- ^ Open BlueDragon マニュアル。Openbd.org。2013 年 9 月 17 日に取得。
- ^ スミス、マイケル ColdFusion とは何ですか? fusionauthority.com
- ^ タグは2008年3月24日にWayback Machineにアーカイブされました
- ^ Open BlueDragon 運営委員会インタビューシリーズ – Alan Williamson。alan.blog-city.com
- ^ Railo について Archived 2011-06-30 at the Wayback Machine . Getrailo.org. 2013-09-17 に取得。
- ^ http://corfield.org/entry/CFML_Advisory_Committee 2009-01-07 に Wayback MachineにアーカイブCFML Advisory Committee – Architect's View. Corfield.org. 2013-07-21 に取得。
- ^ タグ構文 2008年5月27日アーカイブ、Wayback Machine
- ^ 機能別タグ Archived 2008-05-09 at the Wayback Machine . (PDF) 2013-09-17 に取得。
- ^ 配列関数 Archived 2008-12-10 at the Wayback Machine . Livedocs.adobe.com. 2013-09-17 に取得。
- ^ 変換関数 Archived 2008-12-08 at the Wayback Machine . Livedocs.adobe.com. 2013-09-17 に取得。
- ^ 日付と時刻の関数。Wayback Machineで 2008 年 12 月 2 日にアーカイブ。Livedocs.adobe.com。2013 年 9 月 17 日に取得。
- ^ 決定関数 Archived 2009-02-01 at the Wayback Machine . Livedocs.adobe.com. 2013-09-17 に取得。
- ^ 表示および書式設定関数 Archived 2008-12-20 at the Wayback Machine . Livedocs.adobe.com. 2013-09-17 に取得。
- ^ 動的評価関数 Archived 2008-12-07 at the Wayback Machine . Livedocs.adobe.com. 2013-09-17 に取得。
- ^拡張性、 Wayback Machineで 2009-02-14 にアーカイブ。Livedocs.adobe.com。2013-09-17 に取得。
- ^ 画像関数 Archived 2009-01-31 at the Wayback Machine . Livedocs.adobe.com. 2013-09-17 に取得。
- ^ 国際関数 Archived 2009-02-08 at the Wayback Machine . Livedocs.adobe.com. 2013-09-17 に取得。
- ^ リスト関数 Archived 2008-12-10 at the Wayback Machine . Livedocs.adobe.com. 2013-09-17 に取得。
- ^ 数学関数 Archived 2008-12-07 at the Wayback Machine . Livedocs.adobe.com. 2013-09-17 に取得。
- ^ その他の関数 Archived 2009-01-30 at the Wayback Machine . Livedocs.adobe.com. 2013-09-17 に取得。
- ^ クエリ関数 Archived 2009-02-21 at the Wayback Machine . Livedocs.adobe.com. 2013-09-17 に取得。
- ^ セキュリティ機能 Archived 2008-12-05 at the Wayback Machine . Livedocs.adobe.com. 2013-09-17 に取得。
- ^ 文字列関数 Archived 2009-01-29 at the Wayback Machine . Livedocs.adobe.com. 2013-09-17 に取得。
- ^ 構造関数 Archived 2009-02-14 at the Wayback Machine . Livedocs.adobe.com. 2013-09-17 に取得。
- ^ システム関数 Archived 2009-02-01 at the Wayback Machine . Livedocs.adobe.com. 2013-09-17 に取得。
- ^ XML 関数 Archived 2009-02-20 at the Wayback Machine . Livedocs.adobe.com. 2013-09-17 に取得。
- ^ Forta, Ben ColdFusion コンポーネントの使用。adobe.com
外部リンク
- コミュニティによって管理されている CFML ドキュメント。
- 100 分で学ぶ CFML — CFML 言語の基礎を紹介します。
- CFML の基礎を教えるコミュニティ主導のトレーニング プログラム。
- CFML Slack チーム
- CFQuickDocs — ColdFusion タグと関数のリファレンス。
- ルーシー
- ブルードラゴンを開く
- ブルードラゴン
- ライロ
- CFML 常識 Google グループ
- CFML 諮問委員会 (この委員会は現在廃止されています)
