1.準備①:ColdFusion Builder 2016のインストール 2.準備②:ハ … · ColdFusion...

Preview:

Citation preview

ColdFusion ハンズオン セットアップ資料

1

1. 準備①:ColdFusion Builder 2016 のインストールこのハンズオンでは ColdFusion Builder 2016 に付属している「軽量版 ColdFusion Express」 で動作を確認します。そのため ColdFusion 2016サーバーを別途インストールする必要はありません。

ColdFusion Builder 2016のインストーラーはメーカーサイトから体験版をダウンロードしてください(製品版の ColdFusion Builder 2016 や ColdFusion2016 サーバーを既にご購入済みの場合は、アドビの Licensing Web サイトからも Builder 2016のインストーラーが入手できます)。インストール方法は、別途公開している「ColdFusion 2016 / ColdFusion Builder 2016 インストール・アップデート資料」をご覧いただき、各自インストールを行って下さい。

2. 準備②:ハンズオン教材の配置軽量版 ColdFusion Express は ColdFusion Builder のインストール先フォルダと同じ場所に配置され、実行されます。同梱される開発用のWebサーバーも同様に配置され、それを使ってハンズオンを進めることができます。

手順:1. 入手されたハンズオンファイルを解凍ソフトを使用して解凍を行って下さい。2. 解凍された 「handson」フォルダを ColdFusion Builder 内の 軽量版 ColdFusion Express で使用するWebサーバーに配置します。

配置先: [CFBuilder_インストールフォルダ ] \ ColdFusion \ cfusion \ wwwroot 内

例: C:\ColdFusionBuilder2016\ColdFusion\cfusion\wwwroot 内

3. また 「handson」フォルダ内の内容もチェックし、下記のファイルやフォルダが正しく解凍されているかを確認して下さい。handson - ・「db」フォルダ…Apache Derby データベース。データベース処理で使用します。 ・「lab」フォルダ…ハンズオンの手順を進める際の作業フォルダとなります。 ・「solution」フォルダ… 各ハンズオンの模範解答が保存されています。 ・「index.cfm」ファイル… コメントのみが書かれた .cfmページ。ハンズオン①で使用します

3. 準備③:Builder 付属の 軽量版 ColdFusion Express の初期セットアップと設定ColdFusion Builderに付属している軽量版 ColdFusion Expressの起動・停止は ColdFusion Builderで行うことができます。ColdFusion Builder を起動し、下記の手順に従い軽量版 ColdFusion Expressの起動と初期セットアップ、及び、ハンズオンを行うための準備を行って下さい。

1. ColdFusion Builder を起動します。

メモ:2016 年 2 月に販売が開始された ColdFusion Builder 2016 の 場合は、スタートメニューから(Windows 7 の場合)[ すべてのプログラム ]-[Adobe]-[ColdFusion Builder 2016]-[Adobe ColdFusionBuilder 2016]を選択して ColdFusion Builderを起動します。

2. ワークスペースランチャーが表示されてもそのまま [OK]を押して次へ進めます。

3. ColdFusion Builder の画面が開きます。「ColdFusion Builder はじめに」が開いた方は、そのタブを閉じて下さい。

2016 Samuraiz Corporation

2

4. Builder 画面の下部には ColdFusion サーバーに関する設定やログ等の各種情報を確認・設定できるタブが用意されています。タブの一番左にある「CF サーバービュー」では、接続設定を行ったColdFusion サーバーの一覧やステータス(起動中または停止中)などの確認ができます。さらに、ローカル /リモートの ColdFusionサーバーの起動と停止もこのパネルから行う事ができます。CFサーバーの一覧に「defaultLocal」という名前でバンドルされた軽量版の ColdFusionサーバーが自動的に登録されている事を確認して下さい。

5. 軽量版 ColdFusionExpress(defaultLocal)を起動します。[CFサーバー ]タブに表示されている「defaultLocal」を選択し、[サーバーを起動 ]アイコン(緑色の再生ボタン)を押します。(試用期間が終了した場合はサーバー起動ボタンが効かないため、一番右にある [サーバーを再起動 ]アイコンを押してください)

6. コンソールタブに遷移しますので、しばらく待ってエラーメッセージ等が出力されない事を確認して下さい。

7. しばらくした後、再び [CFサーバー ]タブに切り替え、ステータスが Running に切り替わった事を確認して下さい

8. 起動が完了した後は、ColdFusionの管理画面(ColdFusion Administrator)に接続し、初期セットアップとハンズオン用の設定を行います。 [CFサーバー ]タブある「defaultLocal」を選択し、マウスで右クリックするとメニューが表示されます。その中の「ColdFusion Administrator を起動」を選択して下さい。

2016 Samuraiz Corporation

ColdFusion ハンズオン セットアップ資料

3

9. ColdFusion Builder の画面が切り替わり、「設定ウィザード(設定の移行ウィザード)」の実行画面が表示されます。

進めるにはログイン認証が必要です。ColdFusion Builder のインストールの際に「バンドルされた ColdFusion サーバーをインストール」で入力された、パスワードを入力して下さい。。

10. 設定ウィザードが起動します。ここで、インストール時に指定した各種設定やオプションのインストールが行われます。処理が完了するまでしばらく待ちます。

11. 処理が完了すると、「セットアップが完了しました」というメッセージが表示されます。[OK]を押すと、ColdFusion Administratorが開きます。。

12. ColdFusion Builder 内で ColdFusionAdministratorが開きます。デベロッパー版(インストール後 30日間はトライアルモード)で動きます。

通常のブラウザからもアクセス可能です。デフォルトのポート番号は 8600でインストールされます。下記の URLをブラウザでリクエスト下さい。

http://127.0.0.1:8600/CFIDE/adminis-trator/(異なるポートの場合は 「CF サーバービュー」で確認できます)

2016 Samuraiz Corporation

4

13. 左側のナビゲーションパネルの「データとサービス」で、[データソース ]をクリックします。

ここではColdFusionからデータベースへ接続するための設定を登録・管理できます。

14.「新規のデータソースの追加」の「データソース名」の入力欄に「handson」と入力します。「ドライバ」は、一覧から「Apache Derby Embedded」を選択し、「追加」ボタンをクリックして下さい。

15. 設定詳細画面に移ります。

ここでは、選択したドライバの種類に応じた最適な設定項目が表示されます。

16.「データベースフォルダ」の入力欄の横にある [サーバーのブラウズ ]をクリックすると、データベースフォルダを検索するダイヤログが表示されます。

handson フォルダの中にある db フォルダを選択して下さい。

ColdFusion Builder をデフォルトの場所にインストールしている場合は

C:\ColdFusionBuilder2016\ColdFusion\cfusion\wwwroot\handson\db

です。

17.「送信」をクリックすると、先ほどの画面に戻り、設定を元に接続テストが行われます。

接続に成功すると、「データソースの更新に成功しました。」というメッセージが表示され、「接続済データソース一覧」の handson のステータスに OK が表示されます。

2016 Samuraiz Corporation

ColdFusion ハンズオン セットアップ資料

5

18. 次に ColdFusion Builder から設定したデータソースの内容を確認します。ColdFusion Administrator のタブを閉じ、Builder に戻ります。

19. Builder右側にある RDS DataViewタブ(DB のアイコンが表示されています)を選択します。

画面に「defaultLocal」 が表示されているのを確認して下さい。

20.「defaultLocal」のツリーをマウスで展開すると、登録されているデータベースへの接続一覧(データソース)が表示されます。

接続一覧のなかに、先程登録した「handson」が表示されます(もし、表示されない場合は “アクティブな RDSサーバーの更新 ” アイコンを押して下さい。)

handsonのツリーを展開して、[テーブル ]フォルダーを開くと、接続先のテーブル一覧が表示されます。右図のように、任意のテーブルを選択しマウスを右クリックすると、[テーブル内容の表示 ] からデータベースデータ(一部)を表示する事ができ、接続確認やデータ確認を行うことができます。

21. この作業により、ColdFusion からデータベース接続が正しく行えるかの確認をすることができました。

(重要)画面に dafaultLocal が表示されない(何も表示されない)場合 :

ColdFusion Builderで、起動・停止やハンズオンの操作で RDS エラーが発生した時は、ColdFusion Associatesサイト(http://cfassociates.samuraiz.co.jp)FAQ記事に紹介している回避方法を行って下さい。

ColdFusion Builder 2016 Update3を適用後 RDSサーバーが存在しませんエラーが出る場合http://cfassociates.samuraiz.co.jp/index.cfm/faq/aboutdevelop/coldfusion-builder-2016-update-3-rds/

2016 Samuraiz Corporation

6

4. 準備④ : ColdFusion プロジェクトを登録する1. 左側の「ナビゲーター」の枠内にマウスカーソルを合わせ、マウスを右クリック→ [ 新規 ] →

[ColdFusion プロジェクト ]を選択します2. 「テンプレートとタイプの選択」はそのまま [次へ ]をクリックします。3. 「プロジェクト名」に「handson」と入力し、「デフォルトの場所を使用」のチェックを外します。

4. 「デフォルトの場所を使用」のチェックを外します。5. 「プロジェクトの場所」が選択可能になりますので、[参照 ]ボタンを押し、「準備②:ハンズオン教材の配置」で配置した handsonフォルダに指定します。

  例:   C:\ColdFusionBuilder2016\ColdFusion\cfusion\wwwroot\handson

メモ:ColdFusionプロジェクトを登録すると、プロジェクト用のファイルが配置されます。

6. 「CFML 辞書のバージョン」は、[ColdFusion 2016]を選択します。7. [次へ ]をクリックして、「サーバーの詳細」画面へ進みます。8. 「サーバーの選択」の選択リストは [defaultLocal]が選択されている事を確認します。9. [ 終了 ] ボタンを押します。「サーバーの詳細」画面が閉じ、左側の「ナビゲータビュー」に プロジェクト「handson」が追加されます。

正しくプロジェクトが登録されたかを確認する:10.「ナビゲータビュー」に追加された ColdFusion プロジェクト「handson」のフォルダを展開し、

[db] [lab] [solution]フォルダと index.cfmファイルが表示される事を確認します。11. index.cfmファイルをダブルクリックして、ファイルを開きます。コメントのみが書かれたページが開きます。(ファイルの内容はハンズオンの実習内で行います)

12. ツールバーの [実行 ]ボタン(または、CTRL+F11)を押して、プレビューします。何も作業をしていないため、空白の画面が表示されます。

13. URLアドレスを確認し、index.cfm(http://127.0.0.1:8600/handson/index.cfm)ページが呼び出されていたら、確認は OKです。(ColdFusionが動作していなかった場合などは、エラーが表示されます)

外す→handson

2016 Samuraiz Corporation

ColdFusionハンズオン

ColdFusion ハンズオンについて このハンズオンは、ColdFusion を利用した動的 Web ページのプログラミングを通して、特徴である使いやすさやページ作成のスピードを体験頂き、今後の導入をご検討頂くための一つのステップを目的としたセミナーです。(本セミナーは 2016年 12月現在の最新バージョンである ColdFusion 2016 をベースとして作成されていますが、以前のバージョンでも同様に動作します)

1. 動的Web ページの作成について ブラウザから .htmや .htmlページを呼び出し(リクエスト)した時は、呼び出し先のWebサーバーは、呼び出されたページをそのまま呼び出し元に戻します。それに対し、チケット予約やオンラインショッピングなど、Webサーバーにリクエストが到達したタイミングで、予約状況や在庫・最新の価格などを確認し、その結果(予約可 / 不可、在庫あり / なし 等)を呼び出し元に返す Web サイトも数多く存在します。サーバー側で処理を行うサイトのことを動的 Web ページ(Web アプリケーション)と呼び、web サーバーと連動してサーバー側で処理を行うソフトウェアを一般的にはWebアプリケーションサーバーと呼びます。 ColdFusionはWebアプリケーションサーバーの製品群の一つで、インターネット黎明期の1995年より 20年以上に渡って世界中で利用されています。

2.ColdFusion のご紹介 Webサーバーが .cfmページへのリクエストを受け取ると ColdFusionへ送られて処理が行われます。 .cfm のページには ColdFusion で行う処理を CFML(ColdFusion Markup Language)と呼ばれる言語に沿って記述することで、サーバー側で様々な処理を行えます。例えばデータベースからデータを取得する <cfquery>タグや、メールを送受信する <cfmail>, <cfpop>タグ、ローカル/リモートのファイルの読み込みや書き出しを行う <cffile>, <cfhttp>, <cfhttp>タグ、Excel処理やHTML → PDF、ドキュメント変換などを行う <cfspreadsheet>, <cfhtmltopdf>, <cfdocument> など 150 個を超える CF タグ(<cf...> タグ)が用意されています。また ColdFusion で動作する約600個の関数も使用でき、多種のビジネスロジックに対応することができます。

 ColdFusion は有償のソフトウェアです。スタンダード版とエンタープライズ版の2種類のエディションがあり、運用するアプリケーションの規模やサポート環境、使用される機能に応じてどちらかのエディションのライセンスを購入します。 また、ColdFusionの機能を試したい、あるいはスキルアップのために自分の PCで ColdFusionをインストールして学習を行いたい、など、評価やスキルアップを目的とした利用については、無償のColdFusion体験 /デベロッパー版、軽量版ColdFusion Expressを利用することができます。

※本ハンズオンでは ColdFusion Builderに同梱される軽量版 ColdFusionを使用します。

7 2016 Samuraiz Corporation

ColdFusion ハンズオンについて

3.ColdFusion Builder のご紹介 ColdFusion Builder は、ColdFusion 開発者向けに用意された開発エディタです。ColdFusionBuilder は、Eclipse と呼ばれるオープンな開発プラット上で動作し、開発がし易いよう画面配置やコードヒント、デバッグなど一通りの機能が用意されています。ColdFusion Builder も有償のソフトウェアですが、試用を目的とした無償の体験版が用意されています(評価期間終了後は機能が大幅に限定されますが Expressエディションとして継続が可能です)。

 ColdFusion Builderには開発やデモを目的とした軽量版の ColdFusion Express がバンドルされており、このハンズオンでも使用します。特徴は下記となります。

• 別途 ColdFusionサーバーをインストールする必要がなくプログラミングができます。• 開発用の Web サーバーも含まれ、利用可能です。ポート番号 8600 で呼び出すことができます(http://localhost:8600/)。

• 軽量版のため、ColdFusion サーバーの機能の一部は使用できません。(https://helpx.adobe.com/jp/coldfusion/installing/installing-coldfusion-express.html)

• デモや開発を目的としており、本番環境として利用することはできません。

4. 基本画面の説明

①接続先の ColdFusion サーバー画面下にあるタブは、ColdFusion サーバーに関する設定やログ等の情報が表示される場所です。「CFサーバービュー」は ColdFusion Builder から接続設定を行った ColdFusion サーバーの一覧やステータス(起動中または停止中)などの確認ができ、さらに ColdFusionサーバーの起動と停止を行うことができます。ハンズオンでは、「defaultLocal」という名前でバンドルされた軽量版の ColdFusion サーバーが自動的に登録されており、それを利用します。

② ColdFusion プロジェクトの登録・管理ColdFusionプロジェクトを登録する事で、ColdFusionページの作成場所を指定したフォルダ内に限定し、ファイルを効率よく管理・作業する事ができます。今回のハンズオンの進行用に、あらかじめ「handson」という ColdFusionプロジェクトが登録されています。

メモ:ハンズオンのプログラムを自習(復習)する際は、準備作業として ColdFusionプロジェクトを登録して下さい。詳しくは、巻末の準備・インストールをご覧ください。

①接続先のColdFusionサーバー ③エディター(プログラミング)

②ColdFusion プロジェクトの登録・管理 ④動作確認(ブラウジング)

82016 Samuraiz Corporation

ColdFusionハンズオン

③エディター(プログラミング)ColdFusionプロジェクト内の CFMファイルを開くか、以下の方法で新規に ColdFusionページを作成すると、エディター内にファイルが表示されます。この画面でプログラミングを行っていきます。複数のファイルを開いた場合は、上部のタブで表示するファイルを切り替えます。

④動作確認(プレビュー)

ColdFusion プロジェクト内のファイルは、エディタ画面からすばやく動作を確認する事ができます。ツールバー上部にある [実行 ]ボタンを押すか、[Ctrl] + [F11] キーを押すことで、外部ブラウザを起動し、ページを呼び出すことができます。

5. 軽量版 ColdFusion Express を起動する 軽量版 ColdFusionはデフォルトでは停止しています。起動するには、①の [CFサーバー ]タブの一覧から「defaultLocal」を選択し、[ サーバーを起動 ](試用期間が終了し、サーバー起動ボタンが効かない場合は一番右の [サーバーを再起動 ])のアイコンを押します。 コンソールタブに切り替わりますので、そこでエラー等が表示されないかを確認し、その後ふたたび [CFサーバー]タブに切り替え、ステータスが Running に切り替わる事を確認して下さい。

6. プログラミングの開始:HTMLと CFML ColdFusionはマークアップ言語(タグ言語)と呼ばれるプログラミング方法で、動的な処理を追加していきます。ColdFusionがベースとしている HTMLも同様のマークアップ言語で、定義されているタグを使って文字の大きさの変更や画像の表示など、ページ上の表現を決めることができます。・<開始タグ >内容 </終了タグ> (※終了タグが省略・存在しないタグも有ります)

・属性を持つ HTMLタグ <開始タグ 属性 1="値 " 属性 2="値 " …>内容 </終了タグ>

 ColdFusionタグの記述も HTMLタグと同じ方法でタグ名(<cf ..>から始まるタグ名)で統一されています。タグによって開始タグと終了タグで囲むものや、属性を指定するものなどがあり、それらを組み合わせて動的な処理をプログラミングしていきます。

<h1>Adobe ColdFusion 2016 とは </h1><p>ColdFusion は <strong>CFMLという言語 </strong>を 含 ん で お り、こ の 言 語 が 検 出 さ れ る と<em>ColdFusion</em> によって処理されます。</p>

・<h1>で囲まれた範囲を太字に

・<p>で囲まれた範囲をひとつの段落にします

・<em>で囲まれた範囲を斜字にします

<font color="red" size="+1">Adobe ColdFusion の特徴 </font>

<font>で囲まれた範囲の ・文字の色を赤にします ・文字の大きさを+1します

<cfset fruit=”apple”><cfquery name="クエリ名 " datasource="…">SELECT * FROM PRODUCT</cfquery>

・変数 fruitに文字列 appleをセットします・データベース productテーブルからデータを取得します

9 2016 Samuraiz Corporation

ColdFusion ハンズオンについて

7. 変数のセットと表示 ColdFusion は他のプログラム言語と同様に変数の操作を行うことができます。変数の種類によって、使用目的や値が保持される期間が異なります。今回は一般的に使用されるローカル変数をご紹介します。 ローカル変数は ColdFusionのメモリ内に値をセットする変数で、変数の有効期間はページ内のみ有効な変数です。リクエストページの処理の中で一時的に値をセットして処理を行う際に使用します。構文: <cfset 変数名 =値 >

 変数の値には、数字や文字列(引用符で文字を囲みます)のほか、他の変数の値を代入したり、 計算式(+-*/)を指定することができます。

 変数は、CF タグの処理の中で使用したり、ColdFusion 関数(次に紹介します)の引数として使用したりするほか、<cfoutput>~ </cfoutput>タグで変数を囲み、変数名の前後に #を付けることで、変数の値を画面に表示することができます。構文:

 <cfoutput>#変数名 #</cfoutput>

 <cfoutput>~ </cfoutput>の範囲には、変数以外の文字や HTMLタグを含めることができますので、 一定の範囲を指定して囲みます。

8.ColdFusion 関数を使う ColdFusion 関数は、CF タグと同様にサーバー側で処理が行われる機能で、多くの場合はパラメータ(値や文字列など)を指定して関数を呼び出し、その関数が行った処理の結果を受け取ります。例えば数値から絶対値や四捨五入した値などを取得する関数や、文字列の操作や変換を行う関数、日付をフォーマットしたり抜き出す関数、変数の存在確認や値のチェックなど、約 600個に及ぶ関数が用意されています。 関数は、変数の呼び出しと同様、CF タグの処理の中や画面の表示の際に使用されます。<cfoutput>~ </cfoutput>タグで範囲を指定し、関数の前後に #を付けると、関数を呼び出した結果を表示することができます。例:

 絶対値に変換する関数: #Abs(-10)#            (絶対値の処理結果 10 が表示されます)

 サーバー時刻を取得する関数(引数なし):#Now()#                 (サーバー時刻が {ts '年-月-日 時:分:秒 '} 形式で表示されます)

 関数に複数のパラメーターを指定するものの場合は、定められた順番に引数を「関数 ( 引数 1,引数 2,…)」の形式で付加します。

例:

 指定した文字を別の文字に置き換える関数: #Replace("あいう ", "あ ","お ")#                     (結果は、「おいう」と表示されます)

 関数のパラメーターに別の関数を入れ子にできます。例:

 サーバー時刻を取得し、日付フォーマット: #DateFormat(Now(), ‘yyyy/mm/dd’)#                     (サーバー時刻が「年 /月 /日」で表示されます)

102016 Samuraiz Corporation

ColdFusionハンズオン

9. ハンズオン①:変数と関数を利用する1. 「ナビゲータビュー」に表示されている ColdFusion プロジェクト「handson」フォルダを開き、その中にある index.cfmファイルを選択(ダブルクリック)します。英語のコメントが描書かれていますので、その後に作業を行います。

2. まず、HTMLタグを試します。<h1>Hello</h1>と文字を入力します。3. ファイルを保存します。ツールバー左上の [ディスク ]ボタン(または、CTRL+S)を押します。

4. ツールバーの [実行 ]ボタン(または、CTRL+F11)を押して、プレビューします。

5. ColdFusion の変数をセットしてみましょう。変数のセットは <cfset> タグを使用します。変数 testに ColdFusionという文字をセットします。<cfset test="ColdFusion">

6. 次に、セットした変数を画面に表示してみましょう。変数の表示は <cfoutput># 変数名 #</cfoutput> と記述します。<cfoutput>~ </cfoutput> の中には、変数以外に文字や HTML タグを挟んでも構いません。<cfoutput><h1>Hello #test#</h1></cfoutput>

メモ:エディタ画面の上部にあるアイコンで、<cfoutput>~ </cfoutput>と #~ #を簡単に囲むことができます(囲みたい範囲をマウスでなぞって、該当のアイコンを押します)。

7. 再びページを実行しましょう。ブラウザに大きく「Hello ColdFusion」と表示される事を確認して下さい。

8. ColdFusionの関数を使ってみましょう。終了の</cfoutput>タグの前に改行を何行か入れます。<cfoutput><h1>Hello #test#</h1>

</cfoutput>

9. サーバー時刻を取得し、日付を指定したフォーマットに変換して表示します。2つの関数(Now() と DateFormat())を利用します。下記のように <cfoutput>~ </cfoutput>の範囲内に文字と関数を記述してください。<cfoutput><h1>Hello #test#</h1>

 今日の日付:#DateFormat(Now(),"yyyy/mm/dd")#</cfoutput>

10. 再びページを実行しましょう。さきほどの Hello ColdFusion の表示の下に、「今日の日付:(今日の日付)」と表示されます。

11. ブラウザのページ上で右クリックしてソースを表示します。ブラウザに戻されてきた結果をみると、<cfset>タグや <cfoutput>タグ、関数の記述が無くなっていることが分かります。これは、ColdFusionがサーバー側で CFMLの処理を行い、ブラウザには処理の結果が戻された事を表しています。

11 2016 Samuraiz Corporation

ColdFusion ハンズオンについて

10. データベースと接続する ColdFusion で最も多く使われる機能として、データベースとの連携処理があげられます。ColdFusionは「JDBC」と呼ばれる方法を使ってデータベースへ接続して処理を実施します(JDBCは Javaプログラムからデータベースにアクセスする際に用いられる接続方法です)。ColdFusionには、予めいくつかの(CFのエディションによって異なる)JDBCドライバが同梱されていますので、それらドライバを使用してデータベースへ接続を行います。 データベースと ColdFusionとの間の接続が確立すると、データベース言語の SQL(StructuredQuery Language)クエリー文を使用してデータベースからデータを入出力できるようになります。

11. 接続設定:データソース ColdFusion からデータベースへ接続するためには、あらかじめデータベースへの接続設定を行っておく必要があります。接続設定とは、“データベースサーバーが置かれている場所(ホスト名や IPアドレス)”や、DBにログインするための “ユーザー名・パスワード ”などの情報です。それらデータベースへの接続情報を管理・設定する物を「データソース」と呼びます。データソースの登録は、ColdFusion Administrator にログインし、[データとサービス ]-[データソース ]で行います。

今回のハンズオンの進行用に、あらかじめ「handson」というデータソースが登録されています。

メモ:ハンズオンのプログラムを自習(復習)する際は、準備作業としてデータソースを登録して下さい。詳しくは、巻末の準備・インストールをご覧ください。

122016 Samuraiz Corporation

ColdFusionハンズオン

12. データベース処理タグ: <cfquery> データベースとの処理のやり取りにおいて、SQLと呼ばれるデータベース言語を使用する方法が広く用いられています。ColdFusionでも SQLを用いたデータの取得が可能であり、SQL文を<cfquery>タグで囲むことで、データベース処理を行うことができます。

構文: <cfquery datasource="ColdFusion Administratorで登録したデータソースの名前 "      name="データベースから取ってきたデータを格納する変数名 ">

  SQL 文(例: SELECT * FROM テーブル名 WHERE 条件)...

 </cfquery>

 <cfquery>タグには属性(CFタグに指定するパラメータ)があります。• datasource属性には、上記 11.で解説したデータソース名を指定します。• 取得したデータをname属性で指定した名前の変数に格納します。クエリ変数と言います。

例: <cfquery name="qProd" datasource="handson"> Select pro_id, p_name From product </cfquery>

上記は、handsonという名前で登録されたデータソースを使い、接続先のデータベースの productテーブルの pro_id と p_name 列のデータを取得する <cfquery>タグです。データベースから取得したデータは qProd という名前の変数に保管されます。

13. データベースから取得したデータの表示 取得したデータは <cfquery>タグの name 属性の名前で変数が作成されます。この変数をクエリ変数と呼び、ローカル変数と同様に実行したページ内で利用できます。変数の値は文字列や数字ではなく、左に示すように、行と列にまとめられた形式で保存されているため、呼び出し方に少しコツがいります。

 呼び出しは、# クエリ変数名 . 列名 # と指定します。さらに<cfoutput> に query 属性を付けると、取得したレコード数だけ <cfoutput query="xxx">~ </cfoutput>間をループ処理します。

<cfoutput query="qProd"> (#qProd.pro_id#) #qProd.p_name# <br /> </cfoutput>

13 2016 Samuraiz Corporation

ColdFusion ハンズオンについて

14. ハンズオン②:データベース処理1. 「ナビゲータビュー」の「handson」プロジェクトフォルダ内には、/lab/フォルダがあります。いくつかファイルが置かれている中から、list.cfmファイルを開いて下さい。このファイルには、まだ ColdFusionの処理は何も書かれていません。

2. ツールバーの [実行 ]ボタン(または、CTRL+F11)を押して、プレビューします。ページの内容は、売上の明細を表示しており、サンプルでいくつかの売上が入力されているのがわかります。

3. データベースからデータを取得するために、ページの先頭に <cfquery>タグを記述します。a. <cfquery と入力した後 [ スペース ] を押して空白を入れ、さらに続けて [Ctrl]+[ スペース ] を押すと、属性の一覧が表示されます。一覧から [datasource]を選択すると、<cfqueryに datasource=""が追加されます。

b. datasource="" の "" の間にカーソルを置き、[Ctrl]+[ スペース ] を押すと、ColdFusion サーバーに登録済みのデータソース一覧が表示されます。ハンズオン用のデータソースはすでに登録済みです。一覧から [handson]を選択し、datasource="handson" と追加された事を確認します。

c. さらに [Ctrl]+[ スペース ] を押すと、再び属性の一覧が表示されますので、name 属性を追加します。値に、手動で qList と入力します。

  メモ:カーソルが移動しない場合は、datasource属性の後にカーソルを移動して [スペース ]を     押します)。d. <cfquery> タグの記述は以下のようになります。(自動的に > が追加されない場合は、手動で追加して下さい)

   <cfquery datasource="handson" name="qList">

e. <cfquery>の開始タグの後に2~3行改行を入れます。f. 手動で </c と入力し、 [Ctrl]+[スペース ]を押すと、候補の一覧に </cfquery>が表示されますので、それを選択します。(条件によっては、自動で閉じタグが挿入される場合もあります)

g. </cfquery>の閉じタグが挿入されて、コードが完成します。以下のように記載されることを確認して下さい。

   <cfquery datasource="handson" name="qList">

   </cfquery>

4. 画面右側の [RDS Dataview]のタブを選択すると、登録済みのデータソースの一覧が表示されます。その中から「handson」ツリー > テーブル > SALES (APP.SALES)を開いて下さい。

142016 Samuraiz Corporation

ColdFusionハンズオン

5. <cfquery>~ </cfquery>の間に SALESテーブルのデータを取得する SQLを記述します。SELECT と入力した後にスペースを入れ、右側の一覧の列から [SALES_DATE]と [SALES_PRICE]、[SALES_COST]、[TANTO] の 4つのカラムを選択して、 SELECTの後にドラッグ&ドロップします。カラム名の後にカンマ(,)を指定して区切ります。

SQLの内容は以下のようになります: SELECT SALES_DATE, SALES_PRICE, SALES_COST, TANTO FROM APP.SALES (「APP.」 は、省略可能です)

データが取得されたかをデバッグ表示する6. 画面に表示するプログラムを追加する前に、<cfdump> タグを使ってクエリ変数の中身をチェックしましょう。<cfquery> タグのすぐ後にカーソルがある状態で、上部アイコンの左から6番目を押すと、<cfdump var="##"> が追加されます。## の間でク[Ctrl]+[ スペース ] を押すと変数の一覧が表示されますので、「qList」を選択します(<cfdump var="#qList#">)。

7. ツールバーの [実行 ]ボタン(または、CTRL+F11)を押して、プレビューします。(回答例:/solution/list_1.cfm)

8. 画面にクエリ変数の内容が赤紫色のテーブルで表示されます。データベースから取得したデータが行と列で格納されているのがわかります。

9. <cfdump>タグを削除します。

SELECTFROM

15 2016 Samuraiz Corporation

ColdFusion ハンズオンについて

HTML テーブルにデータベースから取得したデータを埋め込む10. HTMLテーブルに入力されている 2016年 8月 2日と 8月 3日のデータを削除します。

11. HTMLの 2つ目の <tr>~ </tr>ブロックを <cfoutput query="qList">で囲みます。

12. ツールバーの [実行 ]ボタン(または、CTRL+F11)を押して、プレビューすると、画面には空の HTMLテーブル一覧が表示されます。

13.次に空のテーブルにデータベースから取得したデータが表示されるようにしましょう。「売上日、営業担当者、売上価格、売上原価」の4つはデータベースから取得したデータをそのまま表示します。下記のように記述します。

14. ツールバーの [ 実行 ] ボタン(または、CTRL+F11)を押して、プレビューします。GP 以外の欄にデータベースから取得したデータが表示されるようになります。

<table border="1" width="640"><tr> <th>売上日 </th> <th>営業担当者 </th> <th>売上価格 </th> <th>売上原価 </th> <th>GP</th></tr>   ・・・(この部分を削除)・・・<tr> <td>....</td> <td> </td> <td align="right"> </td> <td align="right"> </td> <td align="right"> </td></tr></table></div>

<cfoutput query="qList"><tr> <td>....</td> <td> </td> <td align="right"> </td> <td align="right"> </td> <td align="right"> </td></tr></cfoutput>

<cfoutput query="qList"><tr> <td>#qList.SALES_DATE#</td> <td>#qList.TANTO#</td> <td align="right">#qList.SALES_PRICE#</td> <td align="right">#qList.SALES_COST#</td> <td align="right"> </td></tr></cfoutput>

162016 Samuraiz Corporation

ColdFusionハンズオン

15. GPは、「売上価格 -売上原価」の計算により算出されます。この計算式を <cfoutput >ループの最初に行います。<cfoutput query="qList">の直後に <cfset>で下記のように計算を行います。

16. <td>の GPの列に、計算式の結果が格納されたローカル変数 gpを表示します。

17.ツールバーの [実行 ]ボタン(または、CTRL+F11)を押して、プレビューします。HTMLテーブルのすべての項目に値が表示されました。(回答例:/solution/list_2.cfm)

ColdFusion 関数を使用して、表示を整える18.「売上価格、売上原価、GP」を価格にフォーマットして表示を行います。ColdFusionには LsCurrencyFormat()関数を利用すると、PC環境に合わせて表示が可能です。

19. XXXX年 XX月 XX日の箇所には、PCの日時を取得して今日の日付を表示します。日付フォーマットを指定するため DateFormat()関数を利用します。

20.ツールバーの [実行 ]ボタン(または、CTRL+F11)を押して、プレビューします。数字が金額で表示され、さらに上部に今日の日付が表示されました。(回答例:/solution/list_3.cfm)

メモ:ハンズオン②の内容は以上となりますが、さらに一覧に表示する売上製品を限定(選択)して表示するサンプルを solutionフォルダの list_4.cfm に用意しています。ユーザーが製品を選択する入力画面を用意し、それを Form変数として ColdFusionに渡して売上データを限定して取得するものです。

それら処理の流れやデータベースデータの絞込み方法については、ColdFusion カフェテリアの記事『ColdFusion入門 (http://forum.samuraiz.co.jp/samu_idx02.html#cfform)』を参照いただくか、学習を目的としたスクール形式のトレーニング『ColdFusion 基礎プログラミングコース (http://www.samu-raiz.co.jp/training/cf_basic_programming.html)』の受講をご検討下さい。

<cfoutput query="qList"><cfset gp=qList.SALES_PRICE-qList.SALES_COST><tr> ...

<td align="right">#gp#</td>

<td align="right">#LsCurrencyFormat(qList.SALES_PRICE)#</td><td align="right">#LsCurrencyFormat(qList.SALES_COST)#</td><td align="right">#LsCurrencyFormat(gp)#</td>

<cfoutput>#DateFormat(Now(),"YYYY年 MM月 DD日 ")#</cfoutput><br />

17 2016 Samuraiz Corporation

ColdFusion ハンズオンについて

15. データベースデータをさまざまな形で表示する ColdFusionのタグや関数を使用して、データをさまざまな形で表示することができます。ハンズオン後半はデータベースから取得したデータを利用して、チャートやグリッド、表、そして、PDFで表示を行います。

チャート(グラフ) ColdFusion には、データをもとに 10 種類を超えるグラフを表示することができます。グラフの項目はデータベースから取得したクエリ変数を利用することができます。構文: <cfchart format="画像フォーマット(JPG, PNG等)"      chartwidth="横幅 " chartheight="縦 " ......>  <cfchartseries type="チャートの種類 " query="クエリ変数 " valuecolumn="グラフの値 " itemcolumn="グラフの項目 " >  ...(複数のグラフ項目がある場合は cfchartseriesを項目数の cfchartseriesを指定)... </cfchart>

例: <cfquery datasource="handson" name=”qUriage”>  SELECT PRICE, URI_TUKI FROM sales group by .... </cfquery> ... <cfchart chartwidth="450" chartheight="320" format="jpg">  <cfchartseries type="bar" query="qUriage" valuecolumn="PRICE" itemcolumn="URI_TUKI" > </cfchart>

グリッド ColdFusionには、データを HTML(Ajax)グリッド上に表示する CFGRID タグが用意されています(以前のバージョンでは Java Appletベースや Flashベースのグリッドもありました)。グリッドは、データの一覧性や並び替えなどを行うことができる他、グリッド内のデータの修正なども行う事が可能です。構文: <cfgrid name="グリッド名 " format="html" query="クエリ変数 ">  <cfgridcolumn name="表示項目 " header="グリッド列タイトル ">  ....(2列目以降も同様に cfgridcolumn を指定) ... </cfgrid>

例: <cfquery datasource="handson" name=”qUriage”>  SELECT PRICE, URI_TUKI FROM sales group by .... </cfquery> ... <cfgrid name="sales_grid" format="html" query="qUriage">  <cfgridcolumn name="URI_TUKI" header="売上月 ">  <cfgridcolumn name="PRICE" header="売上額 "> </cfgrid>

182016 Samuraiz Corporation

ColdFusionハンズオン

Excel ファイル ColdFusionには、データを各種ファイル等に書き出す機能があります。中でも <cfspreadsheet>タグを使用すると Excelファイルを生成してセルにデータを指定したり、Excelセルのデータを読み込んでクエリ変数に変換するなど、ビジネスで使用頻度の高い Excel との連携を CF タグや関数で実行できます。構文: <cfspreadsheet action="処理 " filename="ファイル名 " overwrite="上書き " query="クエリ名 ">

例: <cfspreadsheet action="write" filename="out.xls" overwrite="true" query="qUriage">

※ 上記の例はクエリデータを Excelに書き出すシンプルな例ですが、他に SpreadsheetAddRowや  SpreadsheetSetCellValue、SpreadSheetSetColumnWidth、SpreadsheetFormatCellなどの  関数を使用して、Excelセルのフォーマットを整えることや、予め用意したExcelファイルにデータ  を埋め込むなども可能です。

メモ:solutionフォルダに、上記のサンプルプログラム(report_excel.cfm)ファイルがあります。

JSON などのテキストファイル形式 取得したクエリデータを JavaScriptや他のシステムで利用したい際などに、データの受け渡しが比較的容易に行える JSON や XML、CSV などのテキスト形式に変換したい場合があります。CFタグや関数を使って、クエリデータを整形し、希望する形で出力を行えます。

JSON変換例(SerializeJSON関数): <cfoutput>#SerializeJSON("クエリ名 ","JSON形式 ")#</cfoutput>

XML変換例(SerializeXML関数): <cfoutput>#SerializeXML("クエリ名 ")#</cfoutput>

CSV変換例(CFFileタグ): <cfoutput query="クエリ名 ">#クエリ名 .列名 1#,#クエリ名 .列名 2#, ... </cfoutput> ーあるいは <cfloop query="クエリ名 ">や変数を利用して CSVデータを生成します。

※変換したファイルを出力する場合は、<cffile>タグを使用します。

メモ:solutionフォルダに、上記のサンプルプログラム(report_json.cfm)ファイルがあります。

ColdFusion Builder の Tips:

ColdFusion Builderの画面レイアウトは、ユーザーが自由に変更する事ができます。画面配置を初期状態に戻したい場合は、上部メニュー [ ウィンドウ ]-[ パースペクティブのリセット ]を選択して下さい。

19 2016 Samuraiz Corporation

ColdFusion ハンズオンについて

16. ハンズオン③:データベースデータをチャート(グラフ)で表示1. /lab/フォルダ内にある report.cfmファイルを開いて下さい。2. ツールバーの [実行 ]ボタン(または、CTRL+F11)を押して、プレビューします。<cfquery>タグの SQLで月別の売上額を集計し、その結果を HTMLテーブルで表示しています。

3. HTMLテーブルのタグのすぐ後(47行目)に、チャートの表示を指定します。まず、<cfchart>タグを記載し、横 450px, 縦 320px, 画像形式 jpg を指定します。

   <cfchart chartwidth="450" chartheight="320" format="jpg">

   </cfchart>

<cfchart>~ </cfchart>タグの間に、<cfchartseries>タグを追加してグラフ項目を指定します。今回は、棒グラフ(bar)で、クエリ変数(qUriage)に対して、売上月(URI_TUKI)を項目に、売

上額(M_SALES)を数値に指定します。

   <cfchart chartwidth="450" chartheight="320" format="jpg">

     <cfchartseries type="bar" query="qUriage"             valuecolumn="M_SALES" itemcolumn="URI_TUKI" >

   </cfchart>

4. ツールバーの [実行 ]ボタン(または、CTRL+F11)を押して、プレビューします。月別の売上額を表示している HTMLテーブルの横にチャート(棒グラフ)が表示されました。(回答例:/solution/report_1.cfm)

メモ:無償版(評価、デベロッパー、Express 版)は、表示されたグラフに透かしが自動的に挿入されます。この透かしは有償版(Enterprise、Standard版)では表示されません。

5. type=”bar” の部分を変えることで、グラフの種類を変更することができます。line や area、stepなどを指定して、グラフの見た目がどのように変わるかを確認して下さい。

メモ:2本目のグラフを表示したい場合は、<cfchartseries> タグをコピーして貼り付けます。値(valuecolumn)を M_SALESから M_COSTに変えると製品原価のグラフを表示できます。

   製品原価を折れ線(line)グラフで表示した例

202016 Samuraiz Corporation

ColdFusionハンズオン

17. ページを PDF に変換する ColdFusionには HTMLの内容を簡単に PDFに変換する機能が用意されています。基本的な使用方法は、HTMLやColdFusionの処理の結果を出力する範囲を<cfdocument>タグで囲むだけです。

構文: <cfdocument format="PDF">

   [HTMLや CFMLの結果を出力 ]

 </cfdocument>

例: <cfdocument format="PDF">

   <h1>テスト HTML</h1>

 </cfdocument>

※ formatには、PDF以外に Flash Paperが指定可能でしたが、現在は非推奨の機能です。

 さらに ColdFusion 11からは、CSSによる HTMLデザインにも対応が可能な HTML⇒ PDF変換に対応した <cfhtmltopdf>タグが追加されました。

構文: <cfhtmltopdf>

   [HTMLや CFMLの結果を出力 ]

 </cfhtmltopdf>

※ cfhtmltopdfタグは 、軽量版 ColdFusion Expressではそのままでは使用できません。  有償版 /無償版 ColdFusionをインストールするか、あるいは、アドオンインストーラーを  別途インストールする必要があります。

 上記はいずれも実行するとブラウザのページに PDFが出力されるようになりますが、処理の流れで作成した PDFをサーバーの所定の場所に保存したり、生成された PDFファイルをメールに添付して送信(<cfmail>,<cfmailparam>)するなども可能です。

18. ハンズオン④:PDF でページを出力する1. ハンズオン③でも使用した、report.cfmファイルを開きます。2. ページ中の HTMLの出力の箇所を確認します。<html>タグ(!doctype)で囲まれた範囲内がページを出力している HTMLである事がわかります。

3. <html>(!doctype)~</html>の範囲を <cfdocument format=”pdf”>~</cfdocument>で囲みます。

   <cfdocument format="pdf">    <!doctype html>    <html>

    …

    </html>   </cfdocument>

4. ツールバーの [実行 ]ボタン(または、CTRL+F11)を押して、プレビューします。ブラウザ内に PDFビューワーが起動され、PDFファイルが表示されます。(回答例:/solution/report_2.cfm)

メモ:PDF の表示を確認するとテーブルの枠線などが HTML とは異なります。調整には CSS を用いるのですが、<cfdocument>タグは CSSの対応が限られ、細かなデザインは不向きです。<cfhtmltopdf>タグを使うと CSS の装飾を加えた HTML ページの PDF 化を行うことができます(今回の軽量版ColdFusion Express では <cfhtmltopdf>タグを使用することができません)。

21 2016 Samuraiz Corporation

ColdFusion ハンズオンについて

メモ:ハンズオン④の内容は以上となりますが、HTMLに表示する年月を選択すると、リンク先に遷移して、該当月の売上一覧を表示するサンプルを solutionフォルダの report_3.cfm, report_list.cfm に用意しています。

ページからページへパラメータを渡してリンク先で動的な処理を行う方法については、ColdFusion カフェテリアの記事『ColdFusion 入門 (http://forum.samuraiz.co.jp/samu_idx02.html#locate)』を参照いただくか、学習を目的としたスクール形式のトレーニング『ColdFusion 基礎プログラミングコース(http://www.samuraiz.co.jp/training/cf_basic_programming.html)』の受講をご検討下さい。

19. 最後に(次のステップ) 今回のハンズオンの内容は以上で終了となります。データベースからデータを取得するのに CFタグ(<cfquery>)一つで行えることや、取得したデータを様々な形で出力できるなど、ColdFusionの開発生産性の高さをご体験頂けたかと思います。最後は、ColdFusionに関する情報サイトをいくつかご紹介します。

(技術サイト)ColdFusion カフェテリア (http://forum.samuraiz.co.jp) ColdFusionカフェテリアでは、ColdFusionのインストールからプログラミングの導入部までの範囲の解説とサンプルプログラムを公開している『ColdFusion 入門』や、CF タグ・関数の紹介記事を始め、ColdFusionの開発者様による寄稿記事が掲載されています。ColdFusionと Excelの連携サンプルや、JasperReportsによる帳票出力など、多彩な技術情報が特徴です。

(開発会社・FAQ)ColdFusion Associate (http://cfassociates.samuraiz.co.jp) ColdFusion Associateは、ColdFusionの開発会社や ColdFusionをベースに採用頂いているパッケージベンダーをご紹介しています。ColdFusionの開発やバージョンなどで開発会社をお探しの場合などにご活用下さい。また、合わせて公開している「よくある質問(FAQ)」では ColdFusionに関する技術 FAQ を掲載しています。ColdFusion の最新技術情報やアップデータ、メーカーサイトの情報のご紹介などを行っています。

オンラインマニュアル (http://help.adobe.com/ja_JP/ColdFusion/10.0/Admin) ColdFusion のマニュアルは、メーカーサイトでオンラインで公開されています。ColdFusion 11以降は差分の情報のみをまとめたマニュアルとなっているため、基本的な部分は ColdFusion 10のマニュアル(PDF ファイルもダウンロード可)を参照頂いたうえで、ColdFusion 11 以降の情報は個別にページを確認されることをおすすめします。参考マニュアル:・Adobe ColdFusion 10 CFML リファレンス(CFタグ・関数辞典) http://help.adobe.com/ja_JP/ColdFusion/10.0/CFMLRef/index.html・ColdFusion 11以降の新規および変更された関数/タグ https://helpx.adobe.com/jp/coldfusion/cfml-reference/new-and-changed-tags-functions-in-coldfusion-11.html・ColdFusion 2016以降の新規および変更された関数/タグ https://helpx.adobe.com/jp/coldfusion/2016/other-enhancements.html#main-pars_text

222016 Samuraiz Corporation

Recommended