パラメーター
Adobe ColdFusion の新機能および機能強化
ColdFusion(2018 リリース)の新機能と変更点
ColdFusion Administrator の新しいユーザーインターフェイス
ColdFusion Administrator では、ユーザーインターフェイスがより直感的でわかりやすくなりました。タブの配置が調整され、ナビゲーションが容易になっています。このリリースでは、検索機能も強化されています。検索文字列を入力すると、検索語句の候補が表示されます。
詳しくは、Administrator の新しい UI を参照してくださ
パフォーマンス監視ツールセット
Adobe ColdFusion エンタープライズ版およびスタンダード版の 2018 リリースでは、高パフォーマンスの ColdFusion エンジンと同様にアプリケーションを最適化するためのまったく新しいソリューションであるパフォーマンス監視ツールセットが追加されています。
詳しくは、パフォーマンス監視ツールセットを参照してください。
サーバーの自動ロックダウン
ColdFusion サーバーを脆弱性やその他の悪意のある攻撃から保護できます。自動ロックダウンツールを実行すると、ColdFusion インスタンスがロックダウンされます。
詳しくは、サーバーの自動ロックダウンを参照してください。
コア言語の機能強化
コマンドラインインターフェイスと REPL
ColdFusion(2018 リリース)には、Read-Eval-Print-Loop(REPL)が導入されています。REPL シェルは、1 つのユーザー入力を受け取り、入力を評価して、結果をユーザーに返すインタラクティブなプログラミング環境です。
詳しくは、REPL を参照してください。
REST Playground
新しい REST Playground で ColdFusion REST サービスをお試しください。REST Playground を使用して、Web サービスのテスト、開発および文書化をおこなえます。
詳しくは、ColdFusion Builder(2018 リリース)の REST の機能強化を参照してください。
新しいキャッシュエンジン
次の新しいエンジンを使用したキャッシュによってパフォーマンスが向上しています。
- Memcached
- JCS
- Redis
- カスタムキャッシュプラグイン
詳しくは、キャッシュ機能の強化を参照してください。
ColdFusion Builder の変更点
ColdFusion Builder(2018 リリース)の変更点は次のとおりです。
- リモートシステムからコードへのアクセス
- コードプロファイラーデータをインポート
- Cordova の導入
- Eclispse から Oxygen へのアップグレード
詳しくは、ColdFusion Builder の新機能を参照してください。
その他の変更
オプションのセミコロン
このリリースでは、cfscript でセミコロンをオプションにするためのサポートを追加しました。例えば、以下のスニペットでは通常、ステートメント末尾にセミコロンを使用しません。
<cfscript> animals = ['cat','dog','fish','bison'] lastAnimal=animals.last() writeOutput("The last element of the array is: " & lastAnimal) </cfscript>
セミコロンは、FOR ループではオプションではありません。ただし、ループ内ではセミコロンはオプションです。
<cfscript> for(i=1;i<9;i++){ for(j=1;j<=i;j++) writeoutput("*") writeoutput("<br/>") } </cfscript>
ColdFusion タグの汎用シンタックスではセミコロンはオプションです。次に例を示します。
<cfscript> cfhttp(url="http://localhost:8500", timeout="60") </cfscript>
セミコロンは、スクリプトベースのコンポーネントでもオプションです。次に例を示します。
component{ function myfunc(){ writeoutput("Optional Semi Colon Example") } }
タグのクロージャでは、
セミコロンもオプションですが、タグ内のクロージャ関数の本文を定義します。次に例を示します。
<cfset closureFunc1=function(){ return true }>
文字列での負のインデックスのサポート
ColdFusion の 2018 リリースでは、文字列の左または右の関数で負のインデックスを使用できます。
<cfscript> myString='Welcome to ColdFusion' writeoutput( myString.right( -1 ) & "<br>") writeoutput( myString.left( -1 ) & "<br>") writeoutput( myString.right( -8 ) & "<br>") writeoutput( myString.left( -8 ) & "<br>") </cfscript>
出力
elcome to ColdFusion
Welcome to ColdFusio
to ColdFusion
Welcome to Co
メンバー関数の連鎖
メンバー関数をまとめて連鎖させ、希望する出力を生成することができます。
<cfscript> // Example 1 myarray=ArrayNew(1); new_arr= myarray.clear().Resize(10).set(1,10,"blah"); writedump(new_arr); </cfscript>
<cfscript> // Example 2 ordered_struct=["key1":"val1","key2":"val2"] unordered_struct={"key3":"val3","key4":"val4"} new_struct=unordered_struct.append(ordered_struct).update("key4","updated val4").insert("key5","inserted val5"); writedump(new_struct); writedump(unordered_struct); </cfscript>
これらの関数以外に、次の関数でも、関数を連鎖させると必要に応じて適切な配列または構造体の値を返します。
- 配列
- arrayObj.clear()
- arrayObj.deleteAt()
- arrayObj.delete()
- arrayObj.deleteNoCase()
- arrayObj.insertAt()
- arrayObj.prepend()
- arrayObj.resize()
- arrayObj.set()
- arrayObj.sort()
- arrayObj.swap()
- 構造体
- structObj.delete()
- structObj.insert()
- structObj.update()
- 非同期メンバー関数
- then(UDFMethod method)
- then(UDFMethod method, long timeout)
- error(UDFMethod method)
- error(UDFMethod method, long timeout)
- get()
- get(long timeout)
- cancel()
- isCancelled()
- isDone()
新しい演算子
このリリースでは、com、component、CORBA、Java、Net、webservice 用に新しい演算子/シンタックスがサポートされています。次に例を示します。
- obj1 = new java("java.lang.String")
- m = new component("employee ")
次に例を示します。
Employee.cfc
component { public numeric function getPaid() { var salary=40*20; return salary; } }
Manager.cfc
component extends="employee"{ public numeric function getPaid(){ var salary=1.5*Super.getPaid(); return salary; } }
President.cfc
component extends="manager"{ public numeric function getpaid(){ var salary=1.5*Super.getPaid(); return salary; } }
Payday.cfm
<cfscript> // change the paths as required empObj=new component("path/to/employee.cfc"); manObj=new component("path/to/manager.cfc"); presObj=new component("path/to/president.cfc"); writeOutput("Employee earns: " & empObj.getPaid() & "<br/>"); writeOutput("Manager earns: " & manObj.getPaid() & "<br/>"); writeOutput("President earns: " & presObj.getPaid() & "<br/>"); </cfscript>
関数の名前付きパラメーター
名前付きパラメーター は、引数を、パラメーターリスト内のパラメーターの位置ではなく、パラメーターの名前と関連付けて、パラメーターの引数を指定できます。名前付きパラメーターは関数やコンストラクタで使用できます。
以前のバージョンの ColdFusion では、名前付きパラメーターはユーザー定義関数やコンポーネントコンストラクタで許可されていました。
ColdFusion(2018 リリース)では、ビルトイン関数で名前付き関数を使用できます。
以前のバージョンの ColdFusion では、BIF 内のパラメーターの順序も修正する必要がありました。順序は、どの値をどの目的で使用するかを ColdFusion が識別できる唯一の方法であったためです。名前付きパラメーターを使用すれば、パラメーターの位置や順序は問題でなくなるので、引数はリストに表示された順に評価されます。
パラメーター名については、このドキュメントを参照してください。
<cfscript> myarray= [4,2,1,3] writeoutput(ArrayFind(array=myarray, value="4")) writeoutput(Arrayfind(callback=function(index,item){ if(index == item) return true else return false }, array=myarray)) </cfscript>
ArrayFind では、配列内で見つかった値、または検索ロジックがあるコールバックのいずれかを使用できます。上記のスニペットのように、両方の値またはコールバックと名前付きパラメーターを使用することもできます。
文字列リテラル
ColdFusion のこのリリースでは、文字列リテラルがサポートされます。次に例を示します。
<cfscript> writeOutput("ABCDEFGHIJ".substring(1,7).substring(2,5).lCase().len()); </cfscript>
Hibernate のアップグレード
ColdFusion(2018 リリース)では、Hibernate 5.2 を使用します。重要なポイントは次のとおりです。
- Hibernate 5 XML パーサーでは、JAXP(Java API for XML Processing)を使用するようになりました。これにより、hbmxml ORM マッピングファイルでクラス名を宣言する方法が変わりました。例えば、cfc:cfsuite.orm.settings.dialect.invalid_dialect.invalid_dialect は cfc.cfsuite.orm.settings.dialect.invalid_dialect.invalid_dialect に変わっています。
- Hibernate 5 では、seqhilo ジェネレーターがサポートされなくなりました。
- Hibernate 5 では、offset queryoptions がサポートされなくなりました。非効率的で、基になるデータベースのほとんどはオフセットをサポートしているためです。ただし、この機能は、Hibernate 設定ファイルでフラグの hibernate.legacy_limit_handler を true に設定することで有効にできます。
- Hibernate 5 のスキーマのアップデートおよび書き出しでは、テーブル名の大文字と小文字の区別が検証されます。CFC とデータベースで定義されているテーブル名の大文字と小文字が異なる場合は、適切に機能しません。Hibernate の以前のバージョンでは、CFC とデータベースで定義されているテーブル名で大文字と小文字が異なっていてもエラーは発生しませんでした。
- トランザクションの内部でエンティティを更新する必要があります。
wsconfig ツールの変更点
wsconfig ツールには、コネクタの調整に関する新しいオプションがあります。
- ハートビートの間隔(秒単位):コネクターの負荷データを ColdFusion に送信する間隔(秒単位)。
新しい管理 API
verifyRedisCacheStorageConnection
説明:Redis キャッシュストレージへの接続を確認します。
シンタックス:
void verifyRedisCacheStorageConnection (sessionStorageHost, numeric sessionStoragePort, sessionStoragePassword)
|
必須/オプション |
デフォルト |
説明 |
---|---|---|---|
sessionStorageHost |
オプション |
Any |
Redis キャッシュストレージのホスト名。 |
sessionStoragePort |
オプション |
Numeric |
Redis キャッシュストレージのポート番号。 |
sessionStoragePassword |
オプション |
Any |
Redis キャッシュストレージのパスワード。 |
setServerCachingEngine
説明:サーバーレベルでキャッシュエンジンを変更します。
シンタックス:
void setServerCachingEngine (required engine)
パラメーター |
必須/オプション |
デフォルト |
説明 |
---|---|---|---|
engine |
必須 |
Any |
|
setJCSClusterDsnName
説明:JCS クラスターのデータソースを設定します。
シンタックス:
void setJCSClusterDsnName (required dsn, required boolean createTables)
パラメーター |
必須/オプション |
デフォルト |
説明 |
---|---|---|---|
dsn |
必須 |
Any |
データソースの名前。 |
createTables |
必須 |
Any |
テーブルを作成するかどうか。 |
setCachingRedisServer
説明:Redis のキャッシュエンジンを設定します。
シンタックス:
void setCachingRedisServer (required host, required port, required password, required boolean cluster)
パラメーター |
必須/オプション |
デフォルト |
説明 |
---|---|---|---|
host |
必須 |
any |
サーバーのホストアドレス。 |
port |
必須 |
any |
サーバーのポート番号。 |
password |
必須 |
any |
サーバーのパスワード。 |
cluster |
必須 |
Boolean |
Redis でクラスターを有効にするかどうか。 |
getMemcachedServer
説明:Memcached キャッシュエンジンの詳細を取得します。
シンタックス:
any getMemcachedServer ()
ColdFusion(2018 リリース)で修正されたバグ
修正されたバグのリストについては、修正されたバグを参照してください。
ColdFusion(2018 リリース)の既知の問題
既知の問題のリストについては、既知の問題を参照してください。