ColdFusion 2018 リリース セミナー

ColdFusion 2018 リリース トピック

パフォーマンスモニター
ツールセットサーバー自動ロックダウン

CFML言語強化

Rest Playground

その他
・Admin UI 改良
・CLI 機能追加
・キャッシュ強化・メンバ関数強化

パフォーマンスモニターツールセット（以下PMT）

PMTとは？
 サーバーモニターの後継
 専用インストーラーで提供
 プログラム本体とデータストア（Redis）

 ColdFusionとは別のサーバーにインストール可能
 モニターするサーバーを登録すると、常に計測する事になるので、負荷等を考慮すると別サーバーにインストールすることを推奨 Standard版ユーザーも使用可能

サーバーモニタ（概要） コネクタやサーバーの状態、応答時間など

トポロジ（状態を可視化） Webサーバー ⇔ CF ⇔ DB、外部サービスなど

トポロジ（続き）

データベースモニタ

外部サービスモニタ

コードプロファイラ
 トランザクションを監視し変数やフロー、応答時間、メモリを取得

コードプロファイラ（続き）

 一部タグ（cfif系、cftry系、cfset）は対象外
 プロファイルが可能な関数は一部に限定
 プロファイルを実行する際はサーバーの負荷に注意する
 一般的にメモリプロファイルなどはそれなりに負荷が掛かる自動コネクタチューニング（IIS）
 大量のトラフィックに対して自動でプールサイズの増加が可能 ←プールサイズの90％がビジー になると、プールサイズが20％増加
 自動チューニング中は、プールサイズは自動的に増加するためIISを再起動は必要ない

Webサーバーコネクタ
 PMT用のオプションが追加
 ハートビート間隔
 コネクタの負荷データをColdFusion に送信する間隔（秒）その他
 ColdFusionノードの自動検出 コネクタの監視 外部サービスの監視 外部サービスからCFへのアクセスの監視 スレッドダンプ、ヒープダンプ、GCの実行
 コードプロファイルの結果を Builderで読み込み一覧とソース位置の表示
 アラートの設定

サーバー自動ロックダウン

自動サーバーロックダウン
 ロックダウンガイドの自動化
 専用のインストーラーを提供
 エラーが発生しやすい手動操作からロックアウトを自動化 セキュリティを高めたサイト設定、ファイル権限、実行ユーザーなどの設定を行う
 外部向けWebアプリケーションサービスの公開にあたっての、推奨される設定
 これまではガイドに沿って、手動によるロックダウン設定を行う必要があった自動サーバーロックダウンを実行する前提
 必須要件: CF2018インストール時に「本番プロファイル」または「本番プロファイル + セキュアプロファイル」を選択
 初期セットアップ済み
 インストール後の初期セットアップ（移行）ウィザードを実行
し、ColdFusion Administrator にアクセス済み

 Apache / IIS などのWeb サーバーをインストール済み

インストール画面の例

インストーラーで行える設定
 最新のUpdateの適用（可 / 非）
 Webサーバーのロックダウン設定
 ColdFusion実行ユーザーの設定
 実行ユーザーに合わせたファイル/フォルダへのアクセス権限の設定
 シャットダウンポートの変更（オプション）

CFML言語強化ColdFusion独自の記述・ルールを改良
 他の言語を経験している人にも馴染みやすく、違和感なく触っていけるように nullへの対応
 データ型の保持 クエリ・配列の操作の効率化
 CFC強化 メンバ関数の強化

 スクリプト形式・タグ形式で同じ機能を提供 従来は片方の形式のみ提供されている機能があった言語強化： Nullサポート
または Application.cfc のthis.enableNULLSupport=true;

Nullを有効にすると …

•

 変数名= null が指定可能に nullの値の変数に対するIsDefined()の戻り値がtrueに
 dumpの一覧に変数が表示されるように

 配列内の未定義の要素がNULLに
 以前のバージョンでは[Undefined Array Element]データ型の保持 自動で型を変換せず、設定時のまま維持する
CF2018q1 = queryNew("id,ctype","",[{"ID":1,"CTYPE":true},[{"ID":2,"CTYPE":false},{id=1, ctype=true},{"ID":3,"CTYPE":"true"},{id=2, ctype=false},{"ID":"4","CTYPE":"false"}]{id=3, ctype="true"},{id="4", ctype="false"}
CF2016]);[{"ID":"1","CTYPE":"true"},writeOutput (SerializeJSON(q1,"struct"));{"ID":"2","CTYPE":"false"},{"ID":"3","CTYPE":"true"},{"ID":"4","CTYPE":"false"}] 元の形式に戻す

 -Dcoldfusion.literal.preservetype=falseクエリ・配列・構造体の機能強化
 QueryDeleteColumn（特定のカラムを削除）
 QueryDeleteColumn(クエリオブジェクト,"カラム名");

 QueryDeleteRow（特定のレコードを削除）
 QueryDeleteRow(クエリオブジェクト,行番号);

 ArrayNew["String"](1) (配列の値を文字列に限定) （配列の切り取り）

a=[1,2,3,4,5,6,7,8]
 a[1:6] → 1,2,3,4,5,6 a[1:6:2] → 1,3,5 a[:3] → 1,2,3 a[:-6] → 1,2,3

 ArrayFirst, ArrayLast, StructIsOrdered の追加と一部関数の機能追加

オブジェクト指向プログラミング
 OOPのデザインパターンをもとに、他のOOP言語と同レベルにCFMLを強化 抽象コンポーネント・メソッド•

 finalコンポーネント・メソッド・変数
 インタフェースのデフォルト関数
 戻り値や引数のタイプの共変（covariance）

非同期プログラミング
Futureを介した非同期プログラミングでエンドユーザーの応答時間を改善する
 CFThreadよりも簡単に Futureサポート
 Thenのチェーンとerrorでワークフローをモデル化
 実行の結果をresultに渡せる
 ほぼリアルタイム処理
 独自の構成可能なスレッドプールを使用

Future API get()
 get(timeout) isDone() cancel() isCancelled() then(UDFMethod) then(UDFMethod, timeout) error(UDFMethod) error(UDFMethod, timeout)

Empty Future コードを実行しない空のFuture Producer Consumer デザインパターンで活用 ProducerからConsumerにEmpty Futureが渡され、Consumerは処理が終わったら結果とともに complete して Producerへ<cfscript>
p = runAsync(); // empty futurep.complete(10);writelog(p.get()); // displays 10</cfscript>

API isDone() cancel() isCancelled() get()
 complete(Object)その他 言語強化
 関数
 名前付き引数を指定可能（呼出順を変更できる）
 関数の呼び出しのチェーン化

 メンバ関数の強化
 文字列にメンバ関数が可能 <cfscript>内の行末の ; を省略可 CFC, Javaなどのインスタンス化の記述方法
 obj1 = new java("java.lang.String")
 m = new component("employee")Rest Playground従来のRest機能の課題
 Rest URLの探索の難しさ
 CFCを誘導して誘導する
 http://localhost/rest/servicemapping/shopping/itemcode

 Rest呼び出しのキャッシュ コードを変更するたびにColdFusion Administratorでサーバーをリフレッシュまたは再起動が必要

 呼び出しのデバッグ
 想定された値が取れているかなどを、実際にプログラ

ムで呼び出さないと分かりづらい

REST Playgroundその他の注目ポイント

パフォーマンスの改善 ColdFusion 2016に引き続き、2018でも既存の処理に対するパフォーマンスの改良を実施
 CF2016に比べて30％の速度向上
 CF11に比べて45%の速度向上

 XML/JSON関数71%↑ List関数70% ↑ 日付時間関数60%↑ 他
 内部処理の改良のためプログラムの変更は発生しないが、潜在的な問題が潜んでいないか等、テスト環境等にて動作確認を推奨

https://wwwimages2.adobe.com/content/dam/acom/en/produ
cts/coldfusion/pdfs/CF2018_Performance.pdf
34

キャッシュエンジンのサポート追加
 従来の Redisキャッシュから、企業レベルのアプリケーションでの実績が高い3つのエンジン（JCS、Memcached、Redis）を利用可。

ColdFusion Administrator
 画面レイアウトの変更

ドライバのバージョンアップ
 EXT JS 4.1 ⇒ 4.2
 Hibernate(ColdFusion ORM) ⇒ 5.2
 POI 3.17
 Tomcat 9.0.5
 同梱の JDBC Driver 5.3 ⇒ 5.4
 Java 8 ⇒ 10廃止・非推奨の機能
https://helpx.adobe.com/coldfusion/deprecated-features.html※日本語のページは更新されていないため、英語版推奨 項目に Retired since が追加
 Frex Remoting, BlazeDS, Porlets, XMLForms, Flash Forms, cfapplet,
LCDS Integration, CORBA Integration, AIR Integration, flashpaper インストール時には含まれず、手動でファイルの変更やコピーなどの操作が必要（非推奨 非サポート）。

 CF2018で廃止された機能：
 Server Monitor, Server Monitor API 非推奨（非サポート）となった機能：
 COM/DCOM, cfscheduleのRequestTimeOut,一部Scriptの記述

サポート期間
https://helpx.adobe.com/support/programs/eol-matrix.html

 ColdFusion 2016より6年のサポート期間
 コアサポート5年
 延長サポート1年
ColdFusion

2016

2/16/2016

2/17/2021

2/17/2022

ColdFusion

2018

7/12/2018

7/13/2023

7/13/201424

その他
 ColdFusion 2018 は 64ビット版のみリリース
 Docker image は既に2018で公開済み
 https://bintray.com/eaps/coldfusion