作成日: 2008年12月26日 | |
作成者:(株)エスアイヤ | 代表取締役 河野俊之 CTO 木戸間 周平 チーフシステムエンジニア 江上 新一 |
最終更新日: 2008年12月26日 |
今回は、ColdFusionの開発において役立つテクニックとして、マルチスレッドのプログラミングやColdFusionのデバッグ機能について解説します。
ColdFusion8から追加された機能に、cfthreadタグというものがあります。cfthreadタグは、ColdFusionでスレッドの作成、終了、結合、または一時的な処理の中断ということを実現するためのタグです。このタグを使うと、非同期で行いたい処理をcfthreadタグで囲むだけで、非常に簡単にマルチスレッドの処理を書くことができます。
ただし、cfthredタグによるマルチスレッド処理は使う箇所を計画的に考え、的確な箇所で利用しないと真価を発揮することはできません。それどころか使いどころを間違えると、思わぬバグを引き起こす可能性もあります。では、どのようなときにcfthredタグによるマルチスレッド処理を利用すればよいのでしょうか?ここでは、画像のアップロード時にサムネイルを作るという処理を例に解説します。マルチスレッドで最適化されていない処理の場合、下記のような流れになり、アップロード完了画面の表示はサムネイル作成が終わってからとなります。
この場合、サムネイル作成に時間がかかれば、その分だけクライアントから見たアップロード処理全体の待ち時間が延びることになります。
そこで、cfthredタグによるマルチスレッド処理を利用し、サムネイル作成をバックグラウンドで行うことを考えてみます。cfthredタグを使用してサムネイル作成を非同期で行うことにより、アップロード処理完了後、サムネイル作成を待たずにアップロード完了画面を表示することができ、アップロード処理にかかる時間を少なく見せることができます。
このように表示処理と、サーバー側でのバックグラウンドの処理を切り離して扱える場合、cfthreadタグを使うことでマルチスレッドを効果的に使ったアプリケーションを作成することが可能になります。
どのような開発においてもデバッグというものはとても重要な役割を果たします、デバッグ実行の容易さは開発のしやすさに直結しているといえるのではないでしょうか。
ColdFusionには、ページ内にプログラム実行時の様々な情報を表示することが可能なデバッグ表示機能や、変数に格納された値を型に関係なくグラフィカルに確認することができるcfdumpタグなど、ほかにもいくつかの非常に優れたデバッグ機能が言語に標準で備わっています。また、それらのデバッグ機能はとても簡単に使えるようにできており、デバッグ機能だけみても、ほかの様々な言語に比べColdFusionがとても優れている部分といえます。
さらに、ColdFusion8にはいくつかのデバッグに役立つツールが追加されました、その中のひとつがColdFusion DebuggerというEclipseプラグインです。ColdFusion Debuggerは、ColdFusionのソースファイルへのブレークポイントの設定や、コードのステップ実行、変数の監視、ColdFusionのログファイルの確認といったことが、Eclipse上で行えるツールです。このツールを使うことで、これまでページ内にcfdumpやcfoutputを使って表示していた実行中の変数の値といったデバッグ情報を、コードを変えることなく確認でき、特定条件による処理分岐等の追跡も、デバッグ用のコード埋め込み無しで行うことができます。また、Flash RemotingなどHTMLとしてレスポンスをアウトプットしないコード開発においても有効なデバッグ方法となります。
そのほかにも、ColdFusion8から追加された機能としてサーバーモニタというものがあります。サーバーモニタではリアルタイムなColdFusionサーバーの負荷情報などを詳細に知ることができます。これらの情報は、パフォーマンス向上に向けた改善や、問題箇所の絞り込みに重要な役割を果たすことでしょう。
今回は、ColdFusionにおけるマルチスレッドやデバッグ機能について解説しました。
ColdFusion8では、cfthreadタグにより、マルチスレッドのプログラムを容易に開発することができるようになりました。ただし、どういった処理をマルチスレッド化するかといった点に関しては、十分考慮して実装を行うことが必要です。
また、ColdFusionには開発をスムーズに進めるために必要な、様々なデバッグツールが標準で用意されています。このようなデバッグ機能が、言語に標準で用意されているということは、ColdFusionが他の言語に比べ、非常に勝った部分の一つといえます。
今日のWebアプリケーション開発でのデバッグ対象は、従来までの、単純にHTMLとして出力されていたものだけに留まらず、バックグラウンドで通信を行うAjaxや、そもそもHTMLとしての出力を持たないFlash Remotingなど、従来の方法ではデバッグが困難な状況というものも多くなってきています。ColdFusionに備わったデバッグ機能は、そのような新たなWebアプリケーション開発にも、柔軟に対応できるデバッグ機能であるといえます。
今回扱った内容に関しては、ColdFusion8プロフェッショナルガイドのChapter6にて、ほかにも多くのツールやTipsを含め詳しく解説しています。こちらも是非ご覧いただければと思います。
次回は、よりセキュアなWebアプリケーション開発について解説していきます。