ColdFusionとは何か。ColdFusionとは何か。ColdFusionとは何か。分12『10分で作るRailsアプリ』が人気を集めるなど,昨今のWebアプリケーション開発では開発効率の高さが求められるようになりました。そのような中で抜群の開発効率を誇るColdFusionですが,名前だけは知られていても,実際どのようなものかを知っているWeb開発者は残念ながら少ないのが実情です。この連載では,なかなかフォーカスされることの少ないColdFusionに注目し,そのポテンシャルを探ることを目的としています。今回は,ColdFusionを概観します。ColdFusionとはColdFusionとはアドビシステムズ株式会社が販売するWebアプリケーションサーバーです。古くはJ2EEと呼ばれていました)に準拠したWebSphereやJBossなどがあります。ColdFusionはWebアプリケーションサーバーとして長い歴史を持っており,1995年に米Allaireから発売されて以来,その開発効率・生産性の高さから一貫してWeb開発者より支持を集めています。8日本語版はアドビシステムズ株式会社から2007年9月21日に発売されました(英語版以外でローカライズされているのは日本語版のみとなっており,日本市場への力の入れ具合が伺えます⁠)⁠。EEプラットフォーム上で動作するため,ColdFusionからJavaで構築したビジネスロジック(Javaのクラスファイル)を呼び出すなど,他の言語との"のり"の役割も果たすことができます。EE実装であるJBoss上で動作させることも公式にサポートされるようになったため,JBossの上位層としての活躍させることも可能です(サポートするプラットフォーム一覧はこちら(PDF)⁠)⁠。8では.NETのアセンブリを呼び出すことも可能になったので,.NETを採用している企業が.NETでビジネスロジックを構築し,そのフロントエンドとしてColdFusionを採用するというシナリオも考えられます。いう二者択一的なものではなく,様々な言語プラットフォームと共存できるのがColdFusionのポイントであるといえます。Serverなど)と前述のフロントエンドを繋ぐハブとしての役割も担うようになりました。8が備えている機能には以下のようなものがあります。8が備えている機能の一例に過ぎませんが,これらのリッチな機能はColdFusionにビルドインで組み込まれているため,ColdFusionを買ったその日からこれらの機能を簡単に使用することができます(たとえば,PerlやPHPで画像やグラフを描画しようと思ったら,GDなど外部ライブラリを別途導入する手間がかかります⁠)⁠。データベースとの連携ColdFusionは元々データベースと連携した動的Webサイトを構築するためのアプリケーションサーバーとして開発されました。そのため,他言語に比べ動的サイト構築には一日の長があります。Language)というHTMLのようなタグベースの言語を用いて,クエリーを発行したり,クエリーの中身を表示するロジックを組みます。new」で始まる行を取得してくる例と,ColdFusionで同じ事をする例を比べてみましょう。'</p>';}mysql_close($handle);?>ColdFusionでクエリーを実行し,結果を表示する例<!---cfqueryタグで囲った中身には実行したいSQLを記述します。cfqueryタグのクエリー結果はname属性で渡した変数に代入されます。cfqueryparamタグはmysql_escape_string()のように,SQLインジェクションを防ぐために,SQLの特別な文字列をエスケープしてくれるタグです。プリペアドステートメントのプレースホルダーの役割も果たします。このHTMLのコメントのような部分はCFMLのコメントに該当し,ColdFusionが吐き出すHTMLには出力されません。<!---下のcfloopタグがPHPのwhile文の部分にあたり,ここで全ての該当行をループし表示します。変数を出力するにはcfoutputタグの中で,出力したい変数をシャープマーク(#)で囲います。シャープマークで囲った中身はプログラムとしてColdFusionに解釈されます。この場合HTMLEditFormat()関数に引数qry.strを渡した結果を出力するという意味です。HTMLEditFormat()はHTMLのタグの開き括弧などをエスケープするXSS対策のための関数です(PHPのhtmlspecialchars()に相当)。<p><cfoutput>#HTMLEditFormat(qry.str)#</cfoutput></p></cfloop>ご覧頂いて分かるとおり,PHPではデータベースへの接続・切断や各種エラーハンドリングも自分で記述する必要があります。ColdFusionではデータベースへの接続・切断やクエリー実行,及びその際の考え得るエラーハンドリングなどがcfqueryという1つのタグの中にカプセル化されています。そのため,cfqueryタグの中に実行したいSQLを記述するのみで,目的の行をデータベースから取得してくることができます。クエリー部分の行数を比較しても,PHPがmysql_connect()からwhile直前までの11行のところ,ColdFusionはcfqueryタグの3行と,シンプルさが際だっています。クエリーの結果を出力する部分を比べた際に,PHPではHTMLタグとPHP言語自体が入り乱れていて可読性とメンテナンス容易性を損なっています。それを補うため,通常のPHP開発ではSmartyなどのテンプレートエンジンを使うことになり,テンプレートエンジンを覚えるという学習コストが別途発生します。CFMLタグ(プログラミング言語)とHTMLタグ(プレゼンテーション言語)を違和感なく織り交ぜて記述することができます。このHTMLとの親和性の高さこそがHTMLベースのWebアプリケーションを構築する際にColdFusionを選ぶベネフィットの一つとなっています。CFMLをプレゼンテーションレイヤーでも使用することができるため,ColdFusionにはテンプレートエンジンと言うものが必要ありません。別途テンプレートエンジンを覚えるコストがかからないことは,HTMLベースのWeb開発をしていく上で大きなメリットであると言えます。12ColdFusion著者プロフィール酒井克幸(さかいかつゆき)フリーのテクノロジーコンサルタント。サーバー選定やネットワーク設計などハードウェアレイヤーから,Webアプリケーションの実装(サーバーサイド,クライアントサイド共)などのソフトウェアレイヤーまでの幅広い経験を活かし,クライアント企業のWebアプリケーション構築支援を行っている。Adobe製品(特にMacromedia)製品には精通している。ColdFusionとは何か。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。