ColdFusionカフェテリア
SAMURAIZ

 

CFMLカスタムタグとユーザー定義関数

作成日: 2008年9月1日
作成者:(株)エスアイヤ 代表取締役 河野俊之
取締役CTO 木戸間 周平
最終更新日: 2008年9月1日

はじめに

 
今回はColdFusionが持つコード再利用の仕組みのうち、CFMLカスタムタグとユーザー定義関数について解説します。これらの機能により、ユーザーは独自のタグや関数を作成し、あらゆる場面で再利用することができるようになります。
 
 

◆CFMLカスタムタグ〜CFMLでColdFusionの機能を拡張する

   
ColdFusion 3.0で導入されたカスタムタグは、その後CFMLのコードをタグという形で再利用することができるようになり、現在でも広く用いられている拡張機能の一つです。CFMLカスタムタグは、CFMLページを作成するのと同じようにして作ることができます。CFMLのタグや関数を用いてそのロジックを記述し、CFMLを拡張していきます。CFMLカスタムタグは呼び出し側のCFMLのスコープと異なるスコープを持つために、依存性の低いCFMLカスタムタグを作成することが可能です。それと同時に、ColdFusionが持つグローバルな変数スコープにアクセスすることもできますので、カスタムタグの中でセッションに関する処理を行うことや、必要であれば呼び出し元の変数を操作することもできるようになっています。
 
 

◆より高度なカスタムタグ

  
HTMLやCFMLのタグには、開始タグと終了タグを持つものや、サブタグといった、特定のタグの中でネストされるタグがあります。このような複雑な構成を持つタグもCFMLカスタムタグで作成することが可能です。こういった高度なカスタムタグでは、開始タグと終了タグで処理内容を変えるといったことや、親タグと子タグ(サブタグ)の間で属性情報などをやり取りして処理を制御するといったことができるため、予め用意されたタグと同等の複雑な機能を持つカスタムタグも実装することが可能となっています。
 
 

◆ユーザー定義関数とは

 
ユーザー定義関数(User Defined Functionの頭文字をとってUDF)はColdFusion 5から新たに加わった機能で、これによりColdFusionにあらかじめ備わっている関数と同じように使うことができる関数を、ユーザーが独自に作成することができるようになります。再利用可能なロジックをカプセル化するという点においては、前述のCFMLカスタムタグと似ていますが、UDFは関数であるため、条件分岐の判定文や計算式など、式を評価できるあらゆる場所で呼び出すことができます。
 
ColdFusion 5ではUDFは、ColdFusion が持つJavaScriptに似た記法であるCFScriptを用いなくては作成できませんでしたが、ColdFusion MX以降では、CFScriptおよび、タグベースのシンタックスのどちらを使っても作成することが可能になりました。UDFをCFScriptで記述するのか、あるいはタグベースで記述するのかは、基本的にはどちらの記述方法に慣れ親しんでいるかということによって選択しても構いませんが、タグベースのUDFでないと使用できない以下のような機能がありますので、その点については考慮する必要があります。
 

  • タグベースのUDFでは、CFMLのタグを使用することができますので、cfqueryやcfldapタグなど、CFMLタグとしてのみ実装されているCFMLの機能を使ったUDFを作成することが可能です。
  • タグベースUDFの宣言に用いるcffunctionタグのRoles属性を使うことで、ColdFusionの持つユーザー認証の枠組みと連動させたUDFの呼び出しの制限を設けることが可能です。
  • UDFの引数の宣言に用いるcfargumentタグのrequired属性、default属性を用いてその引数が必須かどうかおよび、デフォルト値の定義を行うことが可能です。
  •  
    逆に、CFScriptによるUDFの定義では、タグでしか用意されていない機能(例えばcfqueryなど)を実行することができないという制約があります。また、どちらのシンタックスを用いて記述する際でもUDFの制限として次の4点に留意する必要があります。
     
    1. アプリケーション内でUDFは固有の名前を持つよう定義する必要がある
    2. ColdFusionの関数や予約語以外でなければならない
    3. 関数のオーバーロードや二重定義はできない
    4. 関数の中に関数(インナーメソッド)を定義することはできない

     

    ◆まとめ

      
    今回は、CFMLカスタムタグとユーザー定義関数という二種類の拡張機能について見てきました。それぞれ異なる特徴を持つため、使いどころを上手く分けることが肝要です。一般的には、CFMLカスタムタグはその呼び出し方の特徴から、HTML出力などに織り交ぜて扱うことが容易なため、ビューを構成する要素の部品化に、ユーザー定義関数は独自のユーティリティーの部品化などに利用すると効果的でしょう。
     
    次回は、CFMLカスタムタグとは別の種類のカスタムタグであるCFXカスタムタグと、より高度なカプセル化を実現できるColdFusionコンポーネント(CFC)について解説します

 

ColdFusionの各種情報の配信


最新情報
■2017/3/27
ColdFusion 2016 対応
インストール セットアップ情報
CFサーバーのインストール
CFビルダーのインストール

■2016/9/20
『ColdFusion 2016 リリース
Enterprise Edition 活用資料』
記事一覧

■2016/3/30
『ColdFusion 実験室』
実験4、実験5

■2015/8/10 〜
『ColdFusion クリニック』
記事一覧(随時更新中)

■2015/4/8
『JasperReportsによる帳票出力』
2. JasperReportsによる帳票出力【後編】

■2015/3/12
アップクロス株式会社
西元 貞昭様
『JasperReportsによる帳票出力』
1. JasperReportsによる帳票出力【前編】


■2015/2/25
『ColdFusionでエクセルを使いこなそう!』
4. 【上級】ColdFusionのエクセル機能を利用したPDF帳票の紹介

ColdFusionトレーニング


ColdFusionユーザーグループ
ColdFusionユーザーグループ
Copyright 2012 Samuraiz Corporation. All Rights Reserved.