作成日: 2008年10月2日 | |
作成者:(株)エスアイヤ | 代表取締役 河野俊之 取締役CTO 木戸間 周平 |
最終更新日: 2008年10月2日 |
今回はColdFusionが持つコード再利用の仕組みのうち、ColdFusionコンポーネントとCFXについて解説します。これらの機能を使用することによって、高度な機能拡張、コードの再利用、ユーザーインターフェイスとビジネスロジックの分離といったことを容易に行うことができます。
かつて、HTMLとCFMLを混在させたcfmファイルを作っていくという開発方法が多くとられてきたColdFusionにおいて、ユーザーインターフェイスとビジネスロジックを分離するということは容易ではありませんでした、フレームワークを用いてビジネスロジックとユーザーインターフェイスを分離するという手法は用いられていましたが、ColdFusionの持つ言語仕様上のサポートが乏しかったため、それらは必ずしも最適な手法であるとは言えないものでした。しかし、ColdFusion MX以降に備わったColdFusionコンポーネント(以下CFC)によって再利用可能なビジネスロジックを容易に実装することが可能になり、ユーザーインターフェイスとビジネスロジックを分離するということも、ColdFusionに備わった標準の機能で実現することが可能になりました。
CFCとは他の言語でいうところのクラスにあたるもので、機能のイメージとしては、前回説明したユーザー定義関数(以下UDF)のスーパーセットとなります。そのため、UDFで行えることはCFCでも実現することが可能です。さらに、CFCには以下のような利点もあります。
CFC自体の開発は今までのColdFusionの開発と何も変わりません。タグベースのCFMLとJavaScriptに似た記法のCFScriptを使用して開発することができます。
CFCには継承という概念があります。オブジェクト指向言語を知っている方には馴染みのある言葉かも知れません、継承とはあるコンポーネントの持つ機能を引き継ぎ、さらに機能を付け加えた新しいコンポーネントを作る機能を指します。CFCではこの継承を使って、UDFよりもさらに汎用性を持った再利用可能なロジックを作ることが可能になります。同じような処理を何度も書くことなく一度CFCとして書いてしまえば、以降はそのCFCを継承し、さらに機能を追加していくなどの開発手法をとることで機能単位の開発にかかる時間を大幅に削減することができます。他にもCFCは、インターフェース定義やアクセスコントロールの概念により、柔軟な設計やカプセル化をサポートします。
また、UDFでは作成されたメソッドはCFMLからしか呼び出すことができませんが、CFCはコンポーネント内のメソッドをCFMLから呼び出すだけでなく、コードをほとんど書き換えることなくウェブサービスやFalshリモーティングとして他の言語から使うことも可能です。
CFCで容易に再利用できるロジックができても、実際に再利用性を高めるには他の開発者にも仕様を共有する必要があります。ColdFusionではCFCのセルフドキュメンテーション機能によって開発者が特別意識することなく、作成したCFCのドキュメントを自動生成することが可能です。この自動生成ドキュメントは通常オンラインで閲覧するため、メソッドの追加等でCFCに変更が加えられた場合でも、直ちにその変更が反映されます。このドキュメントを他の開発者と共有することによって、ロジックの再利用性を高めると同時に、コンポーネントの仕様を記述する手間を省き開発者は開発に専念することができます。
ColdFusion eXtension(以降CFX)タグもまた、ColdFusionの機能を拡張することができる仕組みの一つです。標準で非常に多くの機能を持っているColdFusionですが、構築するアプリケーションの仕様などから、どうしてもColdFusionの機能では対応できないといった自体が起こりえます。そういったときCFXを使いC++、JavaでColdFusionに独自のタグを作成できるようになっています。よく似た仕組みに前回説明したCFMLで作られたカスタムタグというものがありますが、通常のカスタムタグがCFMLで記述できることしか実現できないという制限があるのに対し、CFXはC++、Javaを使うことでColdFusionではアクセスできないプラットフォームに依存したAPIを直接呼び出すような処理も作ることができるという特徴を持っています。
前回、今回でColdFusionにおけるコード再利用の仕組みを見てきました。CFCやCFXはコード再利用の仕組みというだけではなく、むしろColdFusionの機能を拡張するのに非常に優れた仕組みです。ColdFusion自体、非常に強力なツールを備えた言語です、しかしそれでも万能ではありません、そんな時CFCやCFXといった機能を使うことで更にColdFusionの機能強化を行えるのではないでしょうか。
今回扱った内容についてはサンプルコードを交えて、ColdFusion 8プロフェッショナルガイドのChapter3で詳しく説明しています。こちらもぜひご覧頂ければと思います。
次回はFlashのバックエンドとしてのColdFusionについて解説します。