ColdFusion 次 バージョン (コードネー ム:Splendor) の 最 新 機 能 とデモンス トレーション ColdFusion Day 2013 2013.12.10
このセッションについて お 約 束 当 セッションは 現 在 開 発 中 の 次 期 ColdFusion (コードネーム:Splendor)についての 紹 介 です 現 時 点 で 紹 介 可 能 な 情 報 の 中 から 厳 選 して 紹 介 しています 今 回 紹 介 する 機 能 は 今 後 の 開 発 の 進 捗 によっては 変 更 や 廃 止 と なる 場 合 があります リリースの 時 期 やエディションの 違 いによる 機 能 の 有 無 等 はお 答 えできません 本 資 料 の 内 容 は 予 告 なく 内 容 の 変 更 や 削 除 等 が 行 われます 予 めご 了 承 願 います 2
ColdFusion Splendorとは? 米 国 時 間 2012 年 5 月 15 日 にリリースされた ColdFusion 10 に 続 くメジャーバージョンアップ ColdFusion Splendorのポイント PDF 生 成 & 操 作 モバイルアプリケーション 機 能 JSON 機 能 強 化 プログラミング 強 化 他 3
4 PDF 生 成 & 操 作
ColdFusion Splendor 新 しいPDF 生 成 エンジン 従 来 (CF MX7~) IceBrowser & itext <CFDocument> <CFDocumentitem> <CFDocumentsection> 新 しいPDF 生 成 エンジン Webkit エンジンを 利 用 した 高 クオリティのHTML PDF 変 換 <CFHtmlToPDF> <CFHtmlToPDFItem> 5
ColdFusion Splendor PDFファイルの 操 作 PDFアーカイブ PDFファイルをPDF/A-1bに 変 換 Preserve PDF for long time as a self contained document. <CFPDF action="archive" source=".." destination=".."> 電 子 署 名 PDFに 電 子 署 名 を 付 与 等 の 処 理 <cfpdf action="sign" source=" " destination=".." keystore="cert.jks" keystorepassword="password" signaturefieldname="signfield"/> 追 加 されたアクション SIGN, UNSIGN, VALIDATESIGNATURE, READSIGNATUREFIELDS 6
7 モバイルアプリケーション 機 能
Mobile & ColdFusion 使 いやすいモバイルアプリケーション 開 発 プラットフォーム End-to-end モバイルアプリケーションワークフロー ビルド テスト デバッグ デプロイ 8
ColdFusion & Mobile End-to-end Solution <CFML> と JS を 使 用 On Device Step デバッグ phonegap Build を 利 用 してiOSやAndroid アプリを 作 成 Inspect & Debug across devices
ColdFusion & Mobile CFML+JavaScript <cfclient>: CFML Client Side CFMLはコンパイル 時 にJavaScriptに 変 換 CFSET, CFOUTPUT, CFSCRIPT CFInclude - CFM, JS & CSS CFC(サーバーサイド クライアントサイド) CFML カスタムタグの 記 述 形 式 に 対 応 JavaScriptとの 相 互 運 用 性 お 好 みのJSフレームワークを 使 用 可 能
ColdFusion & Mobile 注 意 点 注 意 点 ( 一 例 ) 関 数 と 変 数 は 大 文 字 と 小 文 字 が 区 別 される 変 数 の 解 析 はJSエンジンによる 変 数 はアクセス 時 に 適 切 なスコープで 定 義 されていること データ 型 の 自 動 変 換 は 行 われない ブール 型 や 数 値 型 は ブール 数 値 のまま <cfinclude>の 動 的 なテンプレートの 指 定 はできない ColdFusionの 例 外 は cfclient 内 では 動 かない 11
ColdFusion & Mobile デバイス 機 能 <cfclientsettings>でデバイス 機 能 のON/OFFを 指 定 デバイスのプロパティや 特 性 を 識 別 可 能 画 面 サイズ ブラウザの 種 類 やバージョン メディアサポート CSS HTML JavaScriptのサポートレベルなど PhoneGapに 用 意 されているデバイス 機 能 に 対 応 する 処 理 を 用 意
モバイルアプリケーション To be Continued 引 き 続 きモバイル 機 能 については 情 報 を 取 得 してアップデー トしていきます 13
14 JSON 機 能 強 化
JSON 機 能 強 化 構 造 体 のキーの 大 文 字 小 文 字 の 維 持 <cfscript> sttest=structnew(); sttest.aaa="aaa"; sttest["bbb"]="bbb"; </cfscript> ColdFusion 10 以 前 では ドット 表 記 のキー 名 は 大 文 字 に 変 換 される: {"AAA":"aaa", "bbb":"bbb"} ColdFusion 11では ドット 表 記 のキーの 大 文 字 小 文 字 の 維 持 が 可 能 : {"aaa":"aaa", "bbb":"bbb"} 15
JSON 機 能 強 化 構 造 体 のキーの 大 文 字 小 文 字 の 維 持 ( 続 き) 構 造 体 のキーの 大 文 字 小 文 字 の 維 持 の 有 効 無 効 アプリケーションレベル Application.cfc <cfscript> </cfscript> サーバーレベル this.name="cfdemo_cf11"; this.serialization.preservecaseforstructkey=true; ColdFusion Administrator の[ 設 定 ] 16
JSON 機 能 強 化 serializejson 関 数 の 機 能 強 化 serializejsonの queryformatの 指 定 が 強 化 struct serializejson(objtoserialize [, queryformat] [,boolean secure]) QueryFormat : " true false " または " column row struct" サンプル 17
JSON 機 能 強 化 serializejson 関 数 の 機 能 強 化 ( 続 き) queryformatをアプリケーションレベルで 指 定 Application.cfc 18
JSON 機 能 強 化 新 しいシリアライゼーション 関 数 4つのシリアライゼーション 関 数 XML シリアライゼーション 関 数 serializexml(objtoserialize, usecustomserializer) deserializexml(stringtodeserialize, usecustomserializer) 一 般 的 なシリアライゼーション 関 数 serialize(objtoserialize, type, usecustomserializer) deserialize(strtodeserialize, type, usecustomserializer) 19
JSON 機 能 強 化 カスタム シリアライザ/デシリアライザ 複 雑 型 要 素 (Complex Type)を 扱 うためのカスタム シリアラ イザ/デシリアライザを 指 定 することが 可 能 Application.cfcでカスタム シリアライザ/デシリアライザのパスを 指 定 this.cutomserializer = {pathtoserializercfc}; シリアライザCFCには 下 記 のメソッドの 指 定 が 必 要 : boolean canserialize(type); boolean candeserialize(type); string serializedata(objtobeserialized, type); Object deserializedata(strtobedeserialized, type); すべてのシリアライゼーション 関 数 には 新 たな 引 数 が 追 加 さ れ カスタム シリアライゼーションの enable / disable を 指 定 できる 20
21 プログラミング 強 化
ColdFusion Splendor スクリプト 記 述 の 拡 張 一 般 的 なスクリプトのシンタックスに 合 わせた 記 述 に 対 応 <cfscript> 親 (ベース)タグ 属 性 1= 値 1 属 性 2= 値 2 { } サブタグ 属 性 1= 値 1 属 性 2= 値 2 { } サブタグ </cfscript> <CFHTTP>,<CFHTTPPARAM> <cfscript> http method="post" url="http://www.samuraiz.co.jp/" charset="ms932" { } httpparam name= "username" type="formfield" value= "aaa"; httpparam name= "password" type="formfield" value= "bbb"; </cfscript> 22
ColdFusion Splendor スクリプト 記 述 の 拡 張 < 例 > データベースからデータを 取 得 しグリッドで 表 示 <cfscript> query name="qemp" datasource="cfdocexamples" sql="select * FROM Employee"; form name="form1" { grid format="html" name="emp_grid2" query="qemp" { gridcolumn name="emp_id"; gridcolumn name="lastname"; gridcolumn name="dept_id"; } } </cfscript> 23
ColdFusion Splendor スクリプト 記 述 の 拡 張 < 例 > タグの 属 性 を 括 弧 内 に 記 述 する 方 法 の 例 <cfscript> query(name="qemp" datasource="cfdocexamples" sql="select * FROM Employee"); form(name="form1") { gridattr={format:"html", name:"emp_grid3", query:"qemp"}; grid(attributecollection="#gridattr#") { gridcolumn(name="emp_id" header=" 従 業 員 ID"); gridcolumn(name="lastname" header=" 名 前 "); gridcolumn(name="dept_id" header=" 部 署 コード"); } } </cfscript> 24
ColdFusion Splendor メンバー 関 数 のサポート ネイティブデータ 構 造 /オブジェクトに 対 するオブジェクト 指 向 型 メソッド 呼 び 出 し ArrayLen(arr)に 相 当 :arr.len() Array Struct String List Date Query Image Spreadsheet XML 25
ColdFusion Splendor メンバー 関 数 のサポート( 続 き) これまでは 関 数 としては ColdFusionで 以 前 から 定 められてる 方 法 だけだった ArrayAppend(arrayObj, objtoappend) メンバー 関 数 の 導 入 により オブジェクト 指 向 モデルと 整 合 す るコーディング 記 述 が 行 える arrayobj.append(objtoappend); シンタックス obj.memberfunction([argument(s)]) 26
ColdFusion Splendor メンバー 関 数 のサポート < 例 > 記 述 例 <cfscript> afruit=arraynew(1); ArrayAppend(aFruit,"リンゴ"); ArrayAppend(aFruit,"みかん"); ArrayAppend(aFruit,"メロン"); writeoutput(arraylen(afruit)); // 新 しい 記 述 方 法 afruit.add("パパイヤ"); // Java API afruit.append("キウイ"); // CF API writeoutput(afruit.len()); </cfscript> 27
ColdFusion Splendor メンバー 関 数 のサポート( 補 足 ) メンバ 関 数 について 覚 えておくべき 重 要 なこと: 基 礎 となるデータ 構 造 の 参 照 はColdFusionのクラス( coldfusion.runtime.array)またはjavaクラス(java.util.listの)の いずれか デベロッパーは もしColdFusionクラスがJavaクラスを 実 装 / 拡 張 する 場 合 Javaインタフェースを 指 すオブジェクトに 直 接 ColdFusion 関 数 を 呼 び 出 すことができるようになります ColdFusionとのJava APIが 同 じ 機 能 のために 異 なる 場 合 両 方 がサポ ートされる array.append()とarray.add() 新 しいオブジェクトを 追 加 するために 使 用 することができます 28
ColdFusion Splendor メンバー 関 数 のサポート( 補 足 ) リスト 関 数 はStringオブジェクトとして 利 用 できる 関 数 は 両 方 のデータ 型 で 存 在 する List listfind listfindnocase listlen String find findnocase len 文 字 列 関 数 は リテラル 文 字 列 は 呼 び 出 すことはできない "xyz".len() //は 動 作 しない 29
ColdFusion Splendor QueryExecute 関 数 QueryExecute QueryExecute(クエリ 文 [,クエリパラメーター] [,クエリオプション] ) <cfscript> qemp1=queryexecute("select * FROM Employee","",{datasource="cfdocexamples"}); qemp2=queryexecute("select * FROM Employee where DEPT_ID=1","",{datasource="cfdocexamples"}); qemp3=queryexecute("select * FROM Employee where DEPT_ID=?",[1],{datasource="cfdocexamples"}); qemp4=queryexecute("select * FROM Employee where DEPT_ID=? AND EMP_ID=?",[1,1],{datasource="cfdocexamples"}); qemp5=queryexecute("select * FROM Employee where DEPT_ID=:deptid AND EMP_ID=:empid", {deptid:{type:"integer",value:1}, empid:7}, {datasource="cfdocexamples"}); </cfscript> 30
ColdFusion Splendor QueryGetRow 関 数 QueryExecute 特 定 のクエリ 行 を 取 得 QueryGetRow(queryObj, rowindex) クエリオブジェクトに 対 しては 下 記 の 方 法 でも 同 様 に 対 応 row = queryobj.getrow(rowindex) <cfscript> qemp=queryexecute("select * FROM Employee","",{datasource="cfdocexamples"}); stempdata=querygetrow(qemp,1); writedump(stempdata); </cfscript> 31
ColdFusion Splendor ZIPファイルのパスワードサポート CFZIPタグで パスワード 付 きのファイルをサポート 追 加 された 属 性 Password encryptionalgorithm 暗 号 化 アルゴリズム Standard (zip2.0) AES-128 AES-256 (default) <cfzip action="zip" encryptionalgorithm="aes-128 AES- 256 Standard" password = "passwd" > <cfzip action="unzip" password="passwd" > 32
ColdFusion Splendor CFMAILの 暗 号 化 CFMAILタグを 使 用 したメールの 暗 号 化 をサポート <cfmail encrypt="true" encryptionalogirthmn = "algorithm" recipientcert="certpath" > Mail content </cfmail> アルゴリズム- DES_EDE3_CBC,RC2_CBC,AES128_CBC,AES192_CBC,AES2 56_CBC 33
ColdFusion Splendor CFLOGIN, セキュリティ 関 連 <cflogin> MX~9 同 じユーザー 名 での 複 数 同 時 ログイン 可 10 同 じユーザー 名 での 複 数 同 時 ログイン 不 可 11 allowconcurrent="true false" 設 定 可 (Administrator 設 定 有 ) ColdFusion Administrator でセキュアプロファイルの 有 効 / 無 効 切 り 替 え 10 インストール 時 に 有 効 / 無 効 を 切 り 替 え Adminコンポーネントに 対 するIP アドレス 制 限 の 追 加 MX~9 IPアドレス 制 限 なし 10 Administrator に 対 するIPアドレス 制 限 を 追 加 IPアドレス 制 限 に adminapi, componentexplorer を 追 加 34
お 問 い 合 わせ 先 株 式 会 社 サムライズ アドビソフトウェア 事 業 部 ColdFusion ビジネスユニット E-mail: adobe_software@samuraiz.co.jp http://www.samuraiz.co.jp/ サムライズのホームページでColdFusion 情 報 を 公 開 中 http://www.samuraiz.co.jp/adobeproduct/coldfusion/index.html (ColdFusion カフェテリア) http://forum.samuraiz.co.jp (ColdFusion Associate) http://cfassociates.samuraiz.co.jp ColdFusion は Adobe Systems Incorporated(アドビ システムズ 社 ) の 米 国 ならびに 他 の 国 における 登 録 商 標 または 商 標 です その 他 記 載 されている 会 社 名 や 製 品 ブランド 名 は 各 社 の 商 標 または 登 録 商 標 です 35