マニュアル キャンセル

データ型開発ガイド

  1. ColdFusion ユーザーガイド
  2. ColdFusion の紹介
    1. Adobe ColdFusion について
    2. Adobe ColdFusion のダウンロード
    3. ColdFusion(2021 リリース)の新機能
    4. ColdFusion(2021 リリース)リリースノート
    5. 非推奨の機能
    6. REST に関連する ColdFusion の機能強化(2018 リリース)
    7. サーバーの自動ロックダウン
    8. 非同期プログラミング
    9. ColdFusion の Docker イメージ
  3. Adobe ColdFusion(2021 リリース)
    1. ColdFusion のインストール - Zip インストーラー
    2. ColdFusion のインストール - GUI インストーラー
    3. ColdFusion のライセンスとアクティベーション
    4. ColdFusion パッケージマネージャー
    5. CFSetup 設定ツール
    6. ColdFusion の SAML
    7. ColdFusion と Amazon S3
    8. ColdFusion と DynamoDB
    9. ColdFusion と Amazon SQS
    10. ColdFusion と Amazon SNS
    11. ColdFusion と MongoDB
    12. ColdFusion と Azure Blob
    13. ColdFusion と Azure Service Bus
    14. 言語の機能強化(新規および更新)
    15. マルチクラウドストレージサービス
    16. マルチクラウド RDS データベース
    17. ColdFusion と Azure Cosmos DB
  4. ColdFusion のインストール
    1. ColdFusion サーバープロファイル
    2. ColdFusion のインストール準備
    3. サーバー設定のインストール
    4. JEE 設定のインストール
    5. ColdFusion Express のインストール
    6. 統合テクノロジのインストール
    7. システムの設定
    8. インストールに関する問題のトラブルシューティング
    9. ColdFusion のサイレントインストール
    10. Adobe ColdFusion(2016 リリース)ホットフィックスのインストール
    11. ColdFusion(2018 リリース)- JEE 設定のインストール
  5. ColdFusion の使用
    1. コマンドラインインターフェイス(CLI)
    2. 外部セッションストレージ
    3. Swagger ドキュメントの生成
    4. 言語の機能強化
    5. NTLM のサポート
    6. ColdFusion(2016 リリース)の新規および変更された関数/タグ
    7. PDF の機能強化
    8. REST に関連する ColdFusion の機能強化(2016 リリース)
  6. Performance Monitoring Toolset
    1. ColdFusion ノードおよびクラスターの自動検出
    2. ColdFusion パフォーマンス監視ツールセットのコードプロファイラー
    3. ColdFusion Performance Monitoring Toolset の設定
    4. ColdFusion Performance Monitoring Toolset のインストール
    5. ColdFusion Performance Monitoring Toolset の概要
    6. クラスターおよびノードの指標の表示
    7. データソース指標の表示
    8. 外部サービスの表示
    9. 受信サービスの表示
    10. サイトおよびビジー接続数のリストの表示
    11. サイトのトポロジの表示
    12. データストアの正常性監視
    13. Performance Monitoring Toolset アップデート 1
    14. HTTPS/SSL でセキュリティ保護された Performance Monitoring Toolset
    15. Performance Monitoring Toolset デプロイメントガイド
  7. ColdFusion Builder の使用
    1. ColdFusion Builder について
    2. 必要システム構成 | ColdFusion Builder
    3. ColdFusion Builder のインストール
    4. ColdFusion Builder でのコードの編集
    5. ColdFusion Builder でのサーバーの管理
    6. ColdFusion Builder でのプロジェクトの管理
    7. Adobe ColdFusion Builder の新機能(2018 リリース)
    8. よくある質問(FAQ) | Adobe ColdFusion Builder(2018 リリース)
    9. ColdFusion Builder でのアプリケーションのデバッグ
    10. ColdFusion Builder ワークベンチ
    11. ColdFusion Builder 拡張機能
    12. ColdFusion Builder でのデバッグの観点
    13. ColdFusion Builder を使用したモバイルアプリケーションの作成
    14. バンドルされた ColdFusion サーバー
    15. ColdFusion Builder でのモバイルアプリケーションのデバッグ
    16. ColdFusion Builder の拡張機能の使用
  8. ColdFusion API Manager
    1. Adobe ColdFusion API Manager の概要
    2. ColdFusion API Manager の機能
    3. ColdFusion API Manager 入門
    4. ColdFusion API Manager のインストール
    5. 認証タイプ
    6. API の作成とパブリッシュ
    7. Administrator
    8. サブスクライバー
    9. スロットルとレートの制限
    10. 通知
    11. コネクタ
    12. クラスターサポートの設定
    13. ColdFusion と API Manager を統合する
    14. API Manager での指標とログ
    15. Swagger ドキュメントの生成
    16. SSL の設定
    17. このリリースの既知の問題
    18. ColdFusion API Manager のポリシー
    19. Redis クラスターの作成
    20. API Manager のマルチテナント機能
    21. ColdFusion API Manager の Docker イメージ
  9. ColdFusion の設定と管理
    1. ColdFusion の管理
    2. ColdFusion Administrator を使用する
    3. ColdFusion のデータソース管理
    4. Webサーバーに接続
    5. ColdFusion アプリケーションのデプロイ
    6. ColdFusion セキュリティの管理
    7. 基本的なトラブルシューティングとよくある質問
    8. Server Manager の使用
    9. 複数のサーバーインスタンスを使用
    10. WebSocket の機能強化(ColdFusion 11)
    11. セキュリティの機能強化(ColdFusion 11)
    12. サーバーモニターの使用
    13. ColdFusion Administrator API リファレンス
  10. CFML リファレンス
    1. CFML リファレンスの概要
      1. ColdFusion(2018 リリース)の新機能
      2. ColdFusion(2016 リリース)の新規および変更された関数/タグ
      3. タグおよび関数をサポートするスクリプト
      4. ColdFusion 11 の新規および変更された関数/タグ
    2. 予約語と変数
      1. 予約語と変数
      2. 予約語
      3. スコープ固有のビルトイン変数
      4. カスタムタグ変数
      5. ColdFusion タグ固有の変数
      6. CGI 環境(CGI スコープ)変数
    3. ColdFusion のタグ
      1. ColdFusion のタグ
      2. ColdFusion 10 のタグ
      3. タグの一覧
      4. 機能別のタグ一覧
      5. ColdFusion 5 以降に変更されたタグ
      6. タグ a~b
      7. タグ c
      8. タグ d~e
      9. タグ f
      10. タグ g~h
      11. タグ i
      12. タグ j~l
      13. タグ m~o
      14. タグ p~q
      15. タグ r~s
      16. タグ t
      17. タグ u~z
    4. ColdFusion 関数
      1. ColdFusion 関数
      2. ColdFusion 10 の新規関数
      3. カテゴリ別の ColdFusion 関数
      4. ColdFusion 5 以降に変更された関数
      5. 関数 a~b
      6. 関数 C~D
      7. 関数 E~G
      8. 関数 H~Im
      9. 関数 In~K
      10. 関数 L
      11. 関数 M~R
      12. 関数 s
      13. 関数 T~Z
      14. BooleanFormat
    5. AJAX JavaScript 関数
      1. AJAX JavaScript 関数
      2. 関数概要 Ajax
      3. ColdFusion.Ajax.submitForm
      4. ColdFusion.Autosuggest.getAutosuggestObject
      5. ColdFusion.Layout.enableSourceBind
      6. ColdFusion.MessageBox.getMessageBoxObject
      7. ColdFusion.ProgressBar.getProgressBarObject
      8. ColdFusion.MessageBox.isMessageBoxDefined
      9. JavaScriptFunctionsinColdFusion9Update1
    6. ColdFusion ActionScript 関数
      1. ColdFusion ActionScript 関数
      2. CF.http
      3. CF.query
    7. ColdFusion Mobile 関数
      1. ColdFusion Mobile 関数
      2. Accelerometer 関数
      3. カメラ関数
      4. 接続関数
      5. 連絡先関数
      6. イベント関数
      7. ファイルシステム関数
      8. ジオロケーション関数
      9. メディアおよびキャプチャの関数
      10. 通知関数
      11. スプラッシュ画面関数
      12. Storage 関数
    8. Application.cfc リファレンス
      1. Application.CFC リファレンス
      2. アプリケーション変数
      3. メソッドの概要
      4. onAbort
      5. onApplicationEnd
      6. onApplicationStart
      7. onMissingTemplate
      8. onCFCRequest
      9. onError
      10. onRequestEnd
      11. onRequest
      12. onRequestStart
      13. onServerStart
      14. onSessionEnd
      15. onSessionStart
    9. CFC として実装されているスクリプト関数
      1. CFC として実装されているスクリプト関数
      2. 関数へのアクセス
      3. 関数一覧
      4. ftp
      5. http
      6. mail
      7. pdf
      8. query
      9. ColdFusion 9 アップデート 1 で CFC として実装されたスクリプト関数
      10. storedproc
    10. ColdFusion Flash フォームスタイルリファレンス
      1. すべてのコントロールに有効なスタイル
      2. cfform に有効なスタイル
      3. type 属性が horizontal または vertical である cfformgroup に有効なスタイル
      4. ボックススタイルの cfformgroup 要素に有効なスタイル
      5. type 属性が accordion である cfformgroup に有効なスタイル
      6. type 属性が tabnavigator である cfformgroup に有効なスタイル
      7. type 属性が hrule または vrule である cfformitem に有効なスタイル
      8. type 属性が radio、checkbox、button、image、または submit である cfinput に有効なスタイル
      9. cftextarea タグ、および type 属性が text、password、または hidden である cfinput に有効なスタイル
      10. size 属性の値が 1 である cfselect に有効なスタイル
      11. size 属性が 2 以上である cfselect に有効なスタイル
      12. cfcalendar タグ、および type 属性が dateField である cfinput に有効なスタイル
      13. cfgrid タグに有効なスタイル
      14. cftree タグに有効なスタイル
      15. ColdFusion Flash フォームスタイルリファレンス
    11. ColdFusion イベントゲートウェイリファレンス
      1. ColdFusion イベントゲートウェイリファレンス
      2. addEvent
      3. CFEvent
      4. CFEventclass
      5. コンストラクタ
      6. ゲートウェイ開発のインターフェイスとクラス
      7. getStatus
      8. setCFCPath
      9. setCFCMethod
      10. getOriginatorID
      11. getLogger
      12. getBuddyList
      13. getBuddyInfo
      14. IM ゲートウェイメッセージ送信コマンド
      15. IM ゲートウェイ GatewayHelper クラスのメソッド
      16. onIncomingMessage
      17. onIMServerMessage
      18. onBuddyStatus
      19. onAddBuddyResponse
      20. onAddBuddyRequest
      21. IM ゲートウェイ CFC 着信メッセージメソッド
      22. IM ゲートウェイメソッドとコマンド
      23. CFML CFEvent 構造体
      24. warn
      25. info
      26. setOriginatorID
      27. data コマンド
      28. submitMulti コマンド
      29. submit コマンド
      30. setGatewayType
      31. setGatewayID
      32. setData
      33. setCFCListeners
      34. outgoingMessage
      35. getStatusTimeStamp
      36. numberOfMessagesReceived
      37. numberOfMessagesSent
      38. removeBuddy
      39. removeDeny
      40. removePermit
      41. setNickName
      42. setPermitMode
      43. setStatus
      44. SMS ゲートウェイ CFEvent の構造体とコマンド
      45. SMS ゲートウェイ着信メッセージ CFEvent 構造体
      46. getStatusAsString
      47. getProtocolName
      48. getPermitMode
      49. getPermitList
      50. getNickName
      51. getName
      52. getDenyList
      53. getCustomAwayMessage
      54. getQueueSize
      55. getMaxQueueSize
      56. getHelper
      57. getGatewayType
      58. getGatewayServices
      59. getGatewayID_1
      60. getGatewayID
      61. getData
      62. getCFCTimeout
      63. setCFCTimeout
      64. getCFCPath
      65. getCFCMethod
      66. GatewayServices クラス
      67. ゲートウェイインターフェイス
      68. GatewayHelper インターフェイス
      69. addPermit
      70. addDeny
      71. addBuddy
      72. error
      73. debug
      74. Logger クラス
      75. 停止するための管理者コンポーネントも含まれます
      76. start
      77. CFML イベントゲートウェイ SendGatewayMessage の data パラメータ
      78. restart
      79. fatal
      80. SMS ゲートウェイメッセージ送信コマンド
    12. ColdFusion C++ CFX リファレンス
      1. C++ クラスの概要
      2. 非推奨のクラスメソッド
      3. CCFXException クラス
      4. CCFXQuery クラス
      5. CCFXRequest クラス
      6. CCFXStringSet クラス
      7. ColdFusion C++ CFX リファレンス
    13. ColdFusion Java CFX リファレンス
      1. ColdFusion Java CFX リファレンス
      2. クラスライブラリの概要
      3. カスタムタグインターフェイス
      4. クエリーインターフェイス
      5. リクエストインターフェイス
      6. レスポンスインターフェイス
      7. デバッグクラスリファレンス
    14. WDDX JavaScript オブジェクト
      1. WDDX JavaScript オブジェクト
      2. JavaScript オブジェクトの概要
      3. WddxRecordset オブジェクト
      4. WddxSerializer オブジェクト
  11. ColdFusion アプリケーションの開発
    1. ColdFusion の概要
      1. ColdFusion の概要
      2. ColdFusion について
      3. インターネットアプリケーションと Web アプリケーションサーバーについて
      4. JEE と ColdFusion アーキテクチャについて
    2. ColdFusion の変更点
      1. ColdFusion の変更点
      2. JRun から Tomcat への変更
      3. セキュリティの機能強化
      4. ColdFusion WebSocket
      5. Java 統合の強化
      6. ColdFusion ORM 検索によるインデックス作成と検索
      7. Solr の機能強化
      8. スケジューラーの機能強化
      9. Microsoft Exchange Server 2010 との統合
      10. ColdFusion での RESTful Web サービス
      11. ColdFusion でのクライアントとサーバー間の遅延読み込み
      12. Web サービスの機能強化
      13. 地理位置情報の表示
      14. クライアントサイドのチャート作成
      15. キャッシュ機能の強化
      16. ColdFusion Administrator を使用したサーバーの更新
      17. ColdFusion Administrator のセキュアプロファイル
    3. アプリケーション開発の概要
      1. ColdFusion を使用したアプリケーション開発の概要
      2. 本マニュアルの使用について
      3. デベロッパー向き Adobe ColdFusion ドキュメントについて
    4. CFML プログラミング言語
      1. CFML プログラミング言語
      2. CFML の要素
      3. ColdFusion 変数
      4. 式および番号記号
      5. 配列と構造体
      6. CFML スクリプト言語による ColdFusion ページの拡張
      7. 関数の正規表現
      8. ColdFusion での言語の機能強化
      9. 第一級オブジェクトとしての組み込み関数
      10. データ型開発ガイド
    5. ColdFusion アプリケーションのビルディングブロック
      1. ColdFusion アプリケーションのビルディングブロック
      2. ColdFusion 要素の作成
      3. ユーザー定義関数の記述と呼び出し
      4. ColdFusion コンポーネントの作成と使用
      5. カスタム CFML タグの作成と使用
      6. カスタム CFXAPI タグの作成
      7. メンバー関数の使用
      8. ColdFusion でのオブジェクト指向プログラミング
    6. CFML アプリケーションの開発
      1. CFML アプリケーションの開発
      2. ColdFusion アプリケーションのデザインと最適化
      3. エラーの処理
      4. 永続データとロックの使用
      5. ColdFusion スレッドの使用
      6. セキュリティで保護されたアプリケーション
      7. クライアントサイド CFML(モバイル開発向け)
      8. ColdFusion デバッガの使用
      9. アプリケーションのデバッグとトラブルシューティング
      10. グローバライズしたアプリケーションの開発
      11. ColdFusion での REST 機能強化
      12. OAuth による認証
      13. ソーシャルの機能強化
    7. モバイルアプリケーションの開発
      1. モバイルアプリケーションの開発
      2. モバイルアプリケーションの構築
      3. モバイルアプリケーションのデバッグ
      4. モバイルアプリケーションの検証
      5. モバイルアプリケーションのパッケージ化
      6. モバイルアプリケーションのトラブルシューティング
      7. デバイス検出
      8. クライアントサイド CFML
      9. モバイルテンプレート
      10. モバイルアプリケーションを作成するためのコード例
    8. データのアクセスと使用
      1. データのアクセスと使用
      2. データベースおよび SQL の概要
      3. データへのアクセスと取得
      4. データベースの更新
      5. クエリのクエリの使用
      6. LDAP ディレクトリの管理
      7. Solr 検索のサポート
    9. ColdFusion ORM
      1. ColdFusion ORM
      2. ColdFusion ORM の概要
      3. ORM アーキテクチャ
      4. ORM の設定
      5. ORM マッピングの定義
      6. オブジェクトの操作
      7. ORM セッション管理
      8. トランザクションと同時性
      9. HQL クエリの使用
      10. データベーススキーマの自動生成
      11. ORM における複数のデータソースのサポート
      12. ColdFusion ORM 検索
    10. ColdFusion と HTML 5
      1. ColdFusion と HTML 5
      2. ColdFusion Web Sockets の使用
      3. メディアプレーヤーの機能拡張
      4. クライアントサイドのチャート作成
      5. 地理位置情報データの表示
    11. ColdFusion での Flex と AIR の統合
      1. ColdFusion での Flex と AIR の統合
      2. Flash Remoting サービスの使用
      3. Flash Remoting 更新の使用
      4. オフライン AIR アプリケーションのサポート
      5. ColdFusion サービスのプロキシ ActionScript クラス
      6. LiveCycle Data Services ES アセンブラーの使用
      7. サーバーサイド ActionScript の使用
    12. 情報の要求と提示
      1. 情報の要求と提示
      2. データの検索とフォーマット設定
      3. cfform タグによるダイナミックフォームの作成
      4. データの検証
      5. Flash フォームの作成
      6. スキン可能 XML フォームの作成
      7. Ajax データおよび開発機能の使用
      8. Ajax ユーザーインターフェイスコンポーネントおよび機能の使用
    13. Office ファイルとの相互運用性
      1. Office ファイルとの相互運用性
      2. cfdocument の使用
      3. cfpresentation の使用
      4. cfspreadsheet の使用
      5. サポートされている Office 変換形式
      6. SharePoint の統合
    14. ColdFusion ポートレット
      1. ColdFusion ポートレット
      2. JBoss Portal Server での ColdFusion ポートレットの実行
      3. WebSphere Portal Server での ColdFusion ポートレットの実行
      4. portlet.cfc で使用する一般的なメソッド
      5. ColdFusion ポートレットコンポーネント
      6. JSR-286 のサポート
    15. ドキュメント、チャート、レポートの操作
      1. ドキュメント、チャート、レポートの操作
      2. ColdFusion での PDF フォームの操作
      3. PDF ドキュメントの組み立て
      4. ColdFusion 画像の作成および操作
      5. チャートとグラフの作成
      6. 印刷用のレポートとドキュメントの作成
      7. Report Builder を使用したレポートの作成
      8. スライドプレゼンテーションの作成
    16. Web 要素および外部オブジェクトの使用
      1. Web 要素および外部オブジェクトの使用
      2. XML と WDDX の使用
      3. Web サービスの使用
      4. ColdFusion Web サービスの使用
      5. CFML アプリケーションへの JEE および Java 要素の統合
      6. Microsoft .NET アセンブリの使用
      7. CFML アプリケーションでの COM および CORBA オブジェクトの統合
    17. 外部リソースの使用
      1. E メールの送受信
      2. Microsoft Exchange Server との連携
      3. リモートサーバーとの連携
      4. サーバー上のファイルの管理
      5. イベントゲートウェイの使用
      6. カスタムイベントゲートウェイの作成
      7. Eclipse 用 ColdFusion 拡張機能の使用
      8. データサービスメッセージングイベントゲートウェイの使用
      9. データ管理イベントゲートウェイの使用
      10. FMS イベントゲートウェイの使用
      11. インスタントメッセージングイベントゲートウェイの使用
      12. SMS イベントゲートウェイの使用

 

データ型

ColdFusion では、ユーザーが変数に型を割り当てたり、ColdFusion が変数名に型を関連付けたりすることはないので、タイプレスな環境であるように見えます。しかし実際は、変数が表すデータには型があります。データ型は、式の評価や関数の引数の評価に影響を与えます。ColdFusion では、式を評価するときに多くのデータ型を他のデータ型に自動的に変換できます。数値や文字列などの単純データの場合は、変数が式の中や関数の引数として使用されるまでデータ型は問題になりません。
ColdFusion 変数のデータ型は、次のいずれかのカテゴリに属しています。

  • 単純 1 つの値。ColdFusion の式で直接使用できます。数値、文字列、ブール値、日付時刻値などがあります。
  • バイナリ GIF ファイルや実行可能プログラムファイルの内容などの生データ。
  • 複合 ** データのコンテナ。通常、複数の値を表します。ColdFusion のビルトイン複合データ型には、配列、構造体、クエリ、XML ドキュメントオブジェクトなどがあります。配列などの複合変数は ColdFusion 式で直接使用できませんが、複合変数の単純データ型要素は式で使用できます。例えば、myArray という数値の 1 次元配列がある場合、式 myArray * 5 は使用できませんが、配列の 3 番目の要素に 5 を乗算する式 myArray3 * 5 は使用できます。
  • オブジェクト 複合構造。データと関数演算の両方がカプセル化されているのが一般的です。次の表に、ColdFusion で使用可能なオブジェクトのタイプと、使用方法の参照先を示します。

データ型に関する注意

ColdFusion 変数には型が割り当てられませんが、変数に格納されているデータの型という意味で、便宜上 "変数の型" という表現を使用します。
ColdFusion では、フォームフィールドおよびクエリパラメーターに含まれているデータの型を検証できます。詳しくは、変数の存在の確認の「変数の存在のテスト」および cfqueryparam によるセキュリティの強化の「cfqueryparam の使用」を参照してください。cfdump タグは、変数(ColdFusion の複合データ構造体も含む)の内容をすべて表示します。このタグは、複合データおよびそのデータを処理するコードのデバッグに便利です。ColdFusion には、変数のデータ型を識別するための次の関数が用意されています。

注意:

ColdFusion(2016 リリース)以前:

ColdFusion では、null データ型は使用されません。ただし、データベースや Java オブジェクトなどの外部ソースから null 値を受け取った場合は、単純値として使用されるまで null 値が維持され、その時点で、ColdFusion は null を空の文字列( "" )に変換します。また、Java オブジェクトを呼び出す際に JavaCast 関数を使用して、ColdFusion の空の文字列を Java の null に変換することができます。

NULL 変数サポート

ColdFusion 2016 リリース以前のバージョンでは、CFML は NULL 値をサポートしていませんでした。ColdFusion は null 値を空の文字列に変換します。SerializeJSON などの CFquery などの演算子では、Null 値は空の文字列(null ではない値)へ自動変換されます。

以下のコードは期待どおり動作します。

<cfscript>
 myvar=""; // empty string
 writeOutput(isNULL(myvar)); // returns NO
</cfscript>

以下のコードは例外を返します。

<cfscript>
 myvar=NULL; // value is NULL
 writeOutput(isNULL(myvar)); // returns Variable NULL is undefined
</cfscript>

ただし、JavaCast 関数を通じていつでも NULL を変数に割り当てることができます。次に例を示します。

<cfscript>
 myvar=JavaCast("null",0); 
 writeOutput(isNULL(myvar)); // returns TRUE
</cfscript>

ColdFusion の 2018 リリースは Null 値をサポートします。デフォルトでは、Null サポートはオフになっています。Null サポートを有効にするには、次の手順に従います。

  1. すべてのグローバル CF アプリケーション用に ColdFusion Administrator で NULL サポートを有効にします。「サーバー設定/設定」で、チェックボックス「null 値サポートの有効化」を選択します。

    変更後、以下のコードは期待どおり機能します。

    <cfscript>
      myvar=NULL;
      writeOutput(isNull(myvar)); // returns TRUE
    </cfscript>
    
  2. Memcached はアプリケーションレベルで Null サポートを有効化できます。新しい変数 enableNULLSupport を使用すると、プロジェクトに NULL サポートを追加できます。

    例えば、以下のコードは Application.cfc で NULL サポートを追加します。

    component{
     this.enableNULLSupport=true;
    }
    

Null 文字列と null 値は異なります。writeDump または <cfdump> のいずれかを使用して null 値をダンプすると、null 値は [null] と表示されます。次に例を示します。

例えば、enableNULLSupport フラグを true に設定し、null 値と null 文字列を使用して次のようにクエリを作成します。

<cfscript>
 myquery=querynew("id,name","integer,varchar",[[null,"hello"],[1,"null"],[null,"null"]]);
 writedump(myquery);
 writedump(format="text",var=#myquery#);
</cfscript>

値をダンプすると、その null 値は [null] と表示されます。

Null 値
Null 値

注意:

NULL は予約語です。例えば、null = "my new null value" は無効です。

null という名前の変数を作成することはできません。

NULL サポートがオンになっている場合:

  • isNull 関数は、NULL 値の有効なインスタンスをチェックします。以前の動作では、未定義の変数を NULL と見なしていました。
  • null 値を含む変数の isDefined 関数は、TRUE を 返す ようになりました。以前の動作では false が返されていました。
  • <cfoutput> または writeOutput( ) を使用して null 値を出力することはできません。 これは、Web ページを表示するユーザーにとって値は重要ではないためです。
  • 配列内の未定義の要素は自動的に NULL に設定されるようになりました。以前のバージョンでは、これらは [未定義の配列要素] として表示されていました。

データ型の保持

ColdFusion はタイプレスで、コード生成時に型情報を評価することや保持することはありません。ColdFusion はランタイムでデータ型の推測を試みます。これによって予期せぬ動作が発生する場合があります。例えば、数値が二重引用符で指定されている場合、ColdFusion では、JSON シリアル化時に文字列を数値に変換しようとします。この試みが成功した場合、指定されたデータ型は、文字列として扱う必要があるかどうかに関係なく、数値として扱われます。

例えば、以前のバージョンの ColdFusion では、列のデータ型が定義されていない場合、CF はすべてを文字列としてシリアル化していました。一方、データ型の保持機能では、データ型が定義されていない場合でもデータをシリアル化しながらデータを推測します。以下のスニペットの場合:

<cfscript> 
 myQuery = queryNew("id,name,ctype","", 
  [ 
  {id=1,name="1",ctype=true}, 
  {id=2,name="Two",ctype=false}, 
  {id=3,name="3",ctype="true"},
  {id="4",name="4",ctype="false"}
  ]); 
 writeOutput ( SerializeJSON(myQuery) );
</cfscript>

新しい出力:

{"COLUMNS":["ID","NAME","CTYPE"],"DATA":[[1,"1",true],[2,"Two",false],[3,"3","true"],["4","4","false"]]}

古い出力:

{"COLUMNS":["ID","NAME","CTYPE"],"DATA":[["1","1","true"],["2","Two","false"],["3","3","true"],["4","4","false"]]}

ColdFusion(2018 リリース)は、コンパイルタイプで変数のデータ型を推測します。このリリースでは、デフォルトでこの機能が有効に設定されています。ただし、この機能と以前の動作のフォールバックを無効化するため、新しいフラグが導入されました。このフラグを jvm.config ファイルに追加できます。

-Dcoldfusion.literal.preservetype="false/true"

フラグを機能させるため、次の項目を確認してください。

  • このフラグを有効化/無効化した後に ColdFusion を再起動する
  • <cf_install_root>/<instance_name>/wwwroot/WEB-INF/cfclasses からすべてのクラスファイルを削除するか、CFM テンプレートを再コンパイルする

SharePoint、dotnet、Web サービスなどの外部システムとやり取りする際には、既知の問題がいくつかあります。詳細については、既知の問題のドキュメントを参照してください。

データ型の保持では、文字列 "yes" および "no" は、yes または no のままとなります(ブール値の true または false ではない)。

数値

ColdFusion では整数と実数がサポートされています。式には整数と実数を混在させることができます。例えば、1.2 + 3 は 4.2 になります。

整数

ColdFusion では、-2,147,483,648~2,147,483,647(32 ビット符号付き整数)の範囲の整数がサポートされています。この範囲外の値を変数に代入することもできますが、その場合は最初に文字列として保管されます。数式でその文字列を使用すると、その値を保持したまま浮動小数点数値に変換されますが、次の例のように精度が低くなります。

<cfset mybignumtimes10=(mybignum * 10)>
<cfoutput>mybignum is: #mybignum#</cfoutput><br>
<cfoutput>mybignumtimes10 is: #mybignumtimes10# </cfoutput><br>

この例では次の出力が生成されます。

 

mybignum is: 12345678901234567890
mybignumtimes10 is: 1.23456789012E+020

実数

実数は小数部がある数値であり、浮動小数点数とも呼ばれます。ColdFusion の実数の範囲は、約 -10300~10300 です。実数の有効数字は最大 12 桁です。整数と同様に、変数に 13 桁以上の値を代入することもできますが、その場合は文字列としてデータが保管されます。その文字列を数式で使用すると、文字列が実数に変換されるので、精度が低くなることがあります。
実数は指数表現で表すことができます。この形式は _x_E_y_ です。x は 1.0 以上 10 未満の正または負の実数で、y は整数です。指数表現の数値は、x の 10y 倍を表します。例えば、4.0E^2^ は 4.0 の 10^2^ 倍、つまり 400 になります。同様に、2.5E^-2^ は 2.5 の 10^-2^ 倍、つまり 0.025 になります。指数表現は、絶対値が非常に大きな数値や小さな数値を表現するときに役立ちます。

BigDecimal 数

ColdFusion には、任意の長さの 10 進数(1234567890987564.234678503059281 など)を表す特殊な BigDecimal データ型は用意されていません。このような数値は文字列として表現されます。ただし、BigDecimal 値を含む数式を受け取って計算し、結果の BigDecimal 値を文字列で返すことができる PrecisionEvaluate 関数があります。詳細については、『CFML リファレンス』の PrecisionEvaluate を参照してください。

文字列

ColdFusion では、テキスト値は文字列で保管されます。文字列を指定するには、文字列を単一引用符(')または二重引用符(")で囲みます。例えば、次の 2 つの文字列は同じです。
"This is a string"
'This is a string'
空の文字列を次の方法で記述できます。

  • ""(間に何もない二重引用符のペア)
  • ''(間に何もない単一引用符のペア)
    文字列のサイズは、ColdFusion サーバーで利用可能なメモリの制限を受けるほかは自由です。ただし、長いテキストの取得(CLOB)に対するデフォルトのサイズ制限は 64K です。ColdFusion Administrator を使用してデータベース文字列転送のサイズ制限を引き上げることは可能ですが、それによってサーバーのパフォーマンスが低下するおそれがあります。この制限を変更するには、データソースの詳細設定ページにある長いテキストの取得を有効にするオプションをオンにします。

引用符と # 記号のエスケープ

単一引用符(')で囲まれている文字列に単一引用符を含めるには、2 つの単一引用符を使用します。これが単一引用符のエスケープです。次の例では、エスケープされた単一引用符を使用しています。

<cfoutput>#mystring#</cfoutput><br>

二重引用符(")で囲まれている文字列に二重引用符を含めるには、2 つの二重引用符を使用します。これが二重引用符のエスケープです。次の例では、エスケープされた二重引用符を使用しています。

<cfoutput>#mystring#</cfoutput><br>

文字列は二重引用符(")または単一引用符(')のどちらでも囲めるので、この 2 つの例では次に示す同じテキストが表示されます。
This is a single-quotation mark: ' This is a double-quotation mark: "
文字列に # 記号を挿入するには、次のように # 記号をエスケープする必要があります。

"This is a number sign ##"

リスト

ColdFusion にはリストを操作する関数はありますが、リストデータ型はありません。ColdFusion のリストは、複数のエントリを区切り文字で区切った文字列として表されます。
リストのデフォルトの区切り文字はカンマ(,)です。他の文字を使用してリスト要素を区切る場合は、リスト関数で区切り文字を指定する必要があります。複数の区切り文字を指定することもできます。例えば、次のように、カンマまたはセミコロンを区切り文字と解釈するように指定できます。

<cfoutput>
List length using ; and , as delimiters: #listlen(Mylist, ";,")#<br>
List length using only , as a delimiter: #listlen(Mylist)#<br>
</cfoutput>

この例を実行すると、次の出力が表示されます。 

List length using ; and , as delimiters:5
List length using only , as a delimiter:3
区切り文字は 1 文字であることが必要です。例えば、2 つの連続したハイフンを区切り文字に指定することはできません。
リスト内で 2 つの区切り文字が連続している場合、空の要素は無視されます。例えば、MyList が "1,2,,3,,4,,,5" であり、区切り文字がカンマである場合は、リストの要素数は 5 つと見なされ、リスト関数では "1,2,3,4,5" として処理されます。

ブール値

ブール値は、真または偽を表します。ColdFusion には、これらの値を表す 2 つの特殊な定数 True および False があります。例えば、ブール式 1 IS 1 は True と評価されます。式 "Monkey" CONTAINS "Money" は False と評価されます。
次の例のように、式の中でブール定数を直接使用できます。

<cfset UserHasBeenHere = True>

ブール式では、True、0 以外の数値、および文字列 "Yes"、"1"、"True" はすべて真を表し、False、0、および文字列 "No"、"0"、"False" はすべて偽を表します。

ブール値の評価では大文字と小文字は区別されません。例えば、True、TRUE、および true はすべて同じです。

日付時刻値

ColdFusion では日付時刻値の演算がおこなえます。日付時刻値では、西暦 100 年から 9999 年の日時を識別できます。日付または時刻のみを指定することもできますが、ColdFusion では日付時刻オブジェクトと呼ばれる単一のデータ型を使用して、日付、時刻、および日付時刻値が処理されます。
ColdFusion には、日付時刻値を作成および操作する関数や、値の全部または一部を様々な形式で返す関数が多数用意されています。
次のように定数を使用して、cfset タグで日付時刻値を直接入力できます。

<cfset myDate = "October 30, 2001">

この場合、情報は文字列として保管されます。日付時刻関数を使用した場合は、別の単純データ型である日付時刻オブジェクトとして値が保管されます。日時の指定には、できる限り CreateDate や CreateTime などの日付時刻関数を使用してください。日付時刻関数を使用すれば、無効な形式で日時を指定するおそれがなくなり、日付時刻オブジェクトを直接作成できます。

日時の形式

米国の標準の日付形式を使用して、日付、時刻、または日時を直接入力できます。年の値が 2 桁で指定されている場合、0~29 は 21 世紀の日付として処理されます。30~99 は 20 世紀の日付として処理されます。時刻値は、秒単位まで使用できます。次の表に、有効な日時の形式を示します。

指定データ

使用形式

日付

October 30, 2003Oct 30, 2003Oct.30, 200310/30/032003-10-3010-30-2003

時刻

02:34:122:34a2:34am02:34am2am

日付と時刻

有効な日付形式と時刻形式の任意の組み合わせ。例えば、次のような形式が有効です。October 30, 2003 02:34:12Oct 30, 2003 2:34aOct.30, 2001 2:34am10/30/03 02:34am2003-10-30 2am10-30-2003 2am

ロケール固有の日時

ColdFusion には、現在のロケールに固有の形式で日時(および数値や通貨値)を入出力できる関数が用意されています。ロケールとは、英語(米国)やフランス語(スイス)など、言語および地域を識別する情報のことです。米国標準形式以外の形式で日時を入出力するには、これらの関数を使用します。ロケールを指定するには SetLocale 関数を使用します。その例を次に示します。

<cfoutput>#LSDateFormat(Now(), "ddd, dd mmmm, yyyy")#</cfoutput>

この例では次のような行が出力されます。

mar., 03 juin, 2003
各国語対応関数の詳細については、グローバル化アプリケーションの開発および『CFML リファレンス』を参照してください。

ColdFusion での日時の保管方法

ColdFusion では、日時は日付時刻オブジェクトとして保管および操作されます。日付時刻オブジェクトでは、タイムラインデータが実数として保管されます。この保管方法は処理効率が高く、多くのデータベースシステムで採用されています。日付時刻オブジェクトでは、1 日は 2 つの連続した整数の差になります。日付時刻値の時刻の部分は、実数の小数部分に保管されます。値 0 は 12:00 AM 12/30/1899 を表します。
算術演算を使用して日付時刻値を直接操作することも可能ですが、コードが読みにくくなり、管理も難しくなる場合があります。代わりに、ColdFusion の日付時刻操作関数を使用してください。これらの関数の詳細については、『CFML リファレンス』を参照してください。

バイナリデータ型とバイナリエンコード

バイナリデータ(バイナリオブジェクトとも呼ばれます)は、GIF ファイルや実行可能プログラムファイルの内容などの生データです。通常、バイナリデータを直接使用することはありませんが、cffile タグを使用して変数にバイナリファイルを読み込んで、文字列バイナリエンコードに変換して電子メールでファイルを転送することができます。
文字列バイナリエンコードとは、Web 上で送信可能な文字列形式でバイナリ値を表したもののことです。ColdFusion では、次に示す 3 つのバイナリエンコード形式がサポートされています。

エンコード

形式

Base64

バイナリデータのすべてのバイトを 6 ビットずつに分割してエンコードします。これによって、バイナリデータおよび ANSI 以外の文字データを破損することなく電子メールで転送できるようになります。Base64 アルゴリズムは、IETF RFC 2045 で定義されています。詳細については、www.ietf.org/rfc/rfc2045.txt を参照してください。

Hex

0~9 および A~F の文字を使用して、各バイトを 2 文字の 16 進数値(3A など)で表します。

UU

NIX  UUencode  アルゴリズムを使用してデータを変換します。

ColdFusion には、文字列データ、バイナリデータ、文字列エンコードされたバイナリデータの間で変換をおこなうための次の関数が用意されています。

関数

説明

エンコードされたバイナリデータを含む文字列をバイナリオブジェクトに変換します。

バイナリデータをエンコード文字列に変換します。

指定の文字エンコードを使用して、文字列をバイナリデータに変換します。

指定の文字エンコードを使用して、バイナリオブジェクトを文字列に変換します。

文字列およびバイナリデータを、Base64 でエンコードされたデータに変換します。

Base64 でエンコードされたデータをバイナリデータに変換します。BinaryDecode 関数には、ToBase64 の機能が含まれています。

ほとんどの単純データ型を文字列データに変換します。数値、日付時刻オブジェクト、およびブール値を変換できます。日付時刻オブジェクトは ODBC タイムスタンプ文字列に変換されます。バイナリデータを新しいアプリケーションの文字列に変換する には、 CharsetEncode 関数を使用することをお勧めします。

複合データ型

配列、構造体、およびクエリは、ColdFusion のビルトイン複合データ型です。構造体およびクエリはデータ値ではなくデータのコンテナなので、オブジェクトと呼ばれることがあります。
配列および構造体の使用方法の詳細については、配列および構造体の使用を参照してください。

配列

配列は複数の値を格納する方法の 1 つで、1 次元または 2 次元以上の表形式に似た構造を持ちます。配列を作成するには、関数または代入ステートメントを使用します。

  • ColdFusion の ArrayNew 関数を使用すると、配列が作成され、初期次元が指定されます。例えば次の行では、空の 2 次元配列が作成されます。

<cfset myarray=ArrayNew(2)>
  • 直接代入を使用すると、配列が作成され、配列要素が挿入されます。例えば次の行では、2 次元配列が作成され、1 行目の 2 列目の値が現在の日付に設定されます。

<cfset myarray[1][2]=Now()>

前の例に示すように、要素を参照するには、次元ごとに 1 つずつ設定される数値インデックスを使用します。

最大 3 つまでの次元を含む配列を直接作成できます。配列のサイズや次元数に制限はありません。4 次元以上の配列を作成するには、配列の配列を作成します。
作成した配列の内容は、関数や直接参照を使用して操作できます。
新しい変数に既存の配列を代入すると、新しい配列が作成され、元の配列の内容が新しい配列にコピーされます。次の例では、元の配列のコピーが作成されます。

<cfset newArray=myArray>

配列の使用方法の詳細については、配列および構造体の使用を参照してください。

構造体

ColdFusion の構造体は、キーと値のペアで構成されます。キーはテキスト文字列で、値にはすべての ColdFusion データ型(構造体を含む)を使用できます。構造体によって、互いに関連する一連の変数を 1 つの名前でグループ化することができます。構造体を作成するには、ColdFusion の StructNew 関数を使用します。例えば次の行では、depts という新しい空の構造体が作成されます。

<cfset depts=StructNew()>

また、構造体のキーに値を代入する方法で新しい構造体を作成することもできます。例えば次の行では、MyStruct という新しい構造体が作成されます。この構造体は MyValue という 1 つのキーを持ち、その値は 2 になります。

<cfset MyStruct.MyValue=2>

ColdFusion 7 以前のバージョンでは、このコードを実行すると、"MyStruct.MyValue" という名前の Variables スコープ変数が作成され、値が 2 に設定されていました。

作成した構造体は、関数や直接参照を使用して、キーと値のペアの追加などの操作をおこなえます。
構造体に保存されている要素を参照するには、次のいずれかの方法を使用します。

  • StructureName\.KeyName
  • StructureName["KeyName"]
    その例を次に示します。
depts["John"]="Sales"

新しい変数に既存の構造体を代入しても、新しい構造体は作成されません。この場合、新しい変数は、元の構造体変数と同じデータ(元の構造体変数が保存されているメモリ内の場所)を参照します。つまり、どちらの変数も同じオブジェクトを参照します。 

例えば、次の行で新たに作成される myStructure2 という変数は、myStructure 変数と同じ構造体を参照します。

<cfset myStructure2=myStructure>

myStructure2 の内容を変更すると、myStructure の内容も変更されます。構造体の内容をコピーするには、構造体などの複合データ型の内容をコピーする ColdFusion の Duplicate 関数を使用します。

構造体のキー名には、構造体や配列などの複合データオブジェクトの名前を指定することができます。この方法を使用すれば、非常に複雑な構造体を作成できます。
構造体の使用方法の詳細については、配列および構造体の使用を参照してください。

クエリ

クエリオブジェクト(クエリ、クエリ結果、レコードセットとも呼ばれます)は ColdFusion の複合データ型で、名前を持つ列のセットとしてデータを表現します。これは、データベーステーブルの列のセットに似ています。データをクエリオブジェクトとして返すタグの例には、次のものがあります。

  • cfquery
  • cfdirectory
  • cfhttp
  • cfldap
  • cfpop
  • cfprocresult
    これらのタグでは、name 属性でクエリオブジェクトの変数名を指定します。また、QueryNew 関数もクエリオブジェクトを作成します。
    新しい変数にクエリを代入しても、クエリオブジェクトはコピーされません。この場合は、どちらの名前も同じレコードセットデータを参照します。例えば次の行では、myQuery 変数と同じレコードセットを参照する myQuery2 という変数が新たに作成されます。
<cfset myQuery2 = myQuery>

myQuery のデータを変更すると、myQuery2 にもその変更が反映されます。

クエリ列を参照するには、クエリ名、ピリオド、列名の形式で指定します。例えば、次のようになります。

myQuery.Dept_ID

タグ属性でクエリ名を指定する cfoutputcfloop などのタグ内では、クエリ列を参照するときにクエリ名を指定する必要はありません。

クエリ列は、1 次元配列と同じ方法でアクセスできます。例えば次の行では、myQuery クエリの Employee 列の 2 行目の内容を変数 myVar に代入します。

<cfset myVar = myQuery.Employee[2]>

クエリ内の 1 つの行全体(すべての列)を配列表記法で参照することはできません。例えば、myQuery2 は myQuery クエリオブジェクトの 2 番目の行全体を意味しません。

構造体およびクエリの操作

構造体変数とクエリ変数はオブジェクトへの参照です。これらのデータ型には、次のセクションに示すルールが適用されます。

オブジェクトに対する複数の参照

複数の変数が 1 つの構造体またはクエリオブジェクトを参照している場合、オブジェクトへの参照が 1 つでもあれば、そのオブジェクトは存続します。その例を次に示します。

<cfscript> depts = structnew();</cfscript> 
<cfset newStructure=depts> 
<cfset depts.John="Sales"> 
<cfset depts=0> 
<cfoutput> 
#newStructure.John#<br> 
#depts# 
</cfoutput>

この例を実行すると、次の出力が表示されます。
Sales

<cfset depts=0> タグの実行後、depts 変数は構造体を参照しません。この変数は値 0 の単純変数です。ただし、変数 newStructure は引き続き元の構造体オブジェクトを参照します。

オブジェクトへのスコープの割り当て

他のスコープの新しい変数にクエリまたは構造体を代入すると、そのクエリまたは構造体に別のスコープが割り当てられます。例えば次の行では、myquery というローカル変数を使用して、Server.SScopeQuery というサーバー変数を作成します。

<cfset Server.SScopeQuery = myquery>

サーバースコープのクエリ変数をクリアするには、次のように再度クエリオブジェクトを代入します。

<cfset Server.SScopeQuery = 0>

この行を実行すると、元のオブジェクトへの参照はサーバースコープから削除されますが、その他の参照は削除されません。

オブジェクトのコピーと複製

Duplicate 関数を使用すると、構造体またはクエリオブジェクトのコピーを作成できます。コピーを変更しても、元の構造体またはクエリオブジェクトには影響しません。

クエリ列の使用

query 属性を持つ cfloop、cfoutput、cfmail などのタグの外部では、クエリ列を配列として処理できます。ただし、クエリ列の参照は、常に意図どおりに機能するとは限りません。このセクションでは、次の cfquery タグで生成される結果を例に取って、クエリ列の参照について説明します。

SELECT FirstName, LastName
FROM Employee
</cfquery>

クエリ列内の要素を参照するには、配列のインデックスに行番号を指定します。例えば、次のどちらの行でも "ben" という単語が表示されます。

<cfoutput> #myQuery.Firstname[1]# </cfoutput><br> 
<cfoutput> #myQuery["Firstname"][1]# </cfoutput><br>

配列インデックスを使用せずに、myQuery.Firstname や myQuery"Firstname" のようにクエリ列を参照した場合は、ColdFusion の動作はやや複雑になります。この 2 つの参照形式では、生成される結果が異なります。 

myQuery.Firstname という参照は、その列の最初の行に自動変換されます。例えば次の行では、"ben" という単語が出力されます。

<cfoutput>#mycol#</cfoutput>

しかし、次の行ではエラーメッセージが表示されます。

<cfoutput>#mycol[1]#</cfoutput><br>

reference Query["Firstname"] を参照した場合、列の最初の行への自動変換はおこなわれません。例えば次の行では、複合型を単純値に変換できないことを示すエラーメッセージが表示されます。

<cfoutput> #myQuery['Firstname']# </cfoutput><br>

同様に次の行では、列の 2 行目の値である名前 "marjorie" が出力されます。

<cfoutput>#mycol[2]#</cfoutput><br>

ただし、単純値が要求される代入式では、クエリ列が最初の行の値に自動変換されます。例えば次の行では、名前 "ben" が 2 回表示されます。

<cfoutput> #myQuery.Firstname# </cfoutput><br> 
<cfset myVar= myQuery['Firstname']> 
<cfoutput> #myVar# </cfoutput><br>

ColdFusion 10 では FUNCTION は ColdFusion データ型

次に例を示します。

public FUNCTIOn FUNCTION a()
{
return variables.b;
}
public FUNCTION b()
{
return "Hal";
}
writeoutput(a());
writedump(a().getMetadata());
writedump(a.getMetadata());
writedump(x.getMetadata());
</cfscript>
アドビのロゴ

アカウントにログイン