『10分で作るRailsアプリ』
この連載では、
今回は、
ColdFusionとは
ColdFusionとはアドビシステムズ株式会社が販売するWebアプリケーションサーバーです。同じようなカテゴリーに属する製品としてはマイクロソフトのASP.
ColdFusionはWebアプリケーションサーバーとして長い歴史を持っており、
Webアプリケーションサーバーという名前の通り、
また、
さらに、
その他、
- Webサービス
(SOAP) の提供、 または外部Webサービスの呼び出し - Flash RemotingによるFlashとの高い親和性
- LiveCycle Data Services ES
(旧Flex Data Services) によるFlexとの高い親和性 - HTMLからPDFへの変換
- PDFファイルの操作
(2つのPDFのマージ、 目次作成、 暗号化、 PDFのオーダーメイドなど) - 画像処理
(サムネイル作成、 画像描画など) - グラフの描画
- SMS
(JabberやGoogle TalkなどのXMPP) やJMS (Java Message Service) などの非同期イベントの処理 - LDAPとの連携によるアカウント管理
- Microsoft Exchangeとの連携
(バッチ処理でカレンダーに予定を入れるなど) - ラインデバッギング
(ページにブレイクポイントを設定し、 その時点での各種変数を参照可能) - GUIによるサーバー監視
(処理に時間のかかっているページや、 遅いクエリー、 頻繁に実行されているクエリー、 メモリー消費量などをグラフやチャートなどで視覚的に監視可能)
これはColdFusion 8が備えている機能の一例に過ぎませんが、 ColdFusionは元々データベースと連携した動的Webサイトを構築するためのアプリケーションサーバーとして開発されました。そのため、 例えば、 ご覧頂いて分かるとおり、 また、 それに対しColdFusionではCFMLがタグベースと言うこともあり、 さて、 同じ機能を持ったサイトを構築してみて学習コスト、 例えば、 PerlやJavaを選んだ場合、 これは何故でしょう。おそらく考えるに、 例えばPerlなどは、 対してColdFusionではどうでしょうか。上で見てきたように、 もちろん、 問題になるのは、 プログラミング言語もこれからで、 ColdFusion自体はJava EEプラットフォーム上で動作する製品になります。そういった点でApacheの組み込みモジュールとして動作するPHPなどとは異なっています つまり、 スタンドアローン形態でインストールした場合は、 Webアプリケーションの開発を行っていく上で、 日本にはJCFUG また、ColdFusion概要 - データベースとの連携
<?php
$handle = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$handle) {
die('接続できませんでした: ' . mysql_error());
}
$param = mysql_escape_string("What's new%");
$sql = sprintf("SELECT str FROM Table1 WHERE str LIKE '%s'", $param);
$result = mysql_query($sql);
if (!$result) {
echo "クエリ ($sql) を正しく実行できませんでした: " . mysql_error();
exit;
}
while ($row = mysql_fetch_assoc($result)) {
echo '<p>' . htmlspecialchars($row["str"]) . '</p>';
}
mysql_close($handle);
?>
<!---
cfqueryタグで囲った中身には実行したいSQLを記述します。
cfqueryタグのクエリー結果はname属性で渡した変数に代入されます。
cfqueryparamタグはmysql_escape_string()のように、SQLインジェクションを防ぐために、SQLの特別な文字列をエスケープしてくれるタグです。
また、プリペアドステートメントのプレースホルダーの役割も果たします。
なお、このHTMLのコメントのような部分はCFMLのコメントに該当し、ColdFusionが吐き出すHTMLには出力されません。
--->
<cfquery datasource="ds" name="qry">
SELECT str FROM Table1 WHERE str LIKE <cfqueryparam CFSQLType="CF_SQL_VARCHAR" value="What's new%">
</cfquery>
<!---
下のcfloopタグがPHPのwhile文の部分にあたり、ここで全ての該当行をループし表示します。
変数を出力するにはcfoutputタグの中で、出力したい変数をシャープマーク(#)で囲います。
シャープマークで囲った中身はプログラムとしてColdFusionに解釈されます。
この場合HTMLEditFormat()関数に引数qry.strを渡した結果を出力するという意味です。
HTMLEditFormat()はHTMLのタグの開き括弧などをエスケープするXSS対策のための関数です(PHPのhtmlspecialchars()に相当)。
--->
<cfloop query="qry">
<p><cfoutput>#HTMLEditFormat(qry.str)#</cfoutput></p>
</cfloop>
他言語とのコスト対決
ColdFusionの動作原理
日本のColdFusionコミュニティー