ColdFusionカフェテリア
SAMURAIZ

 

開発に役立つテクニック - マルチスレッド、デバッグ

作成日: 2008年12月26日
作成者:(株)エスアイヤ 代表取締役 河野俊之
CTO 木戸間 周平
チーフシステムエンジニア 江上 新一
最終更新日: 2008年12月26日

はじめに

 今回は、ColdFusionの開発において役立つテクニックとして、マルチスレッドのプログラミングやColdFusionのデバッグ機能について解説します。
 
 

◆ColdFusionでのマルチスレッド処理

 ColdFusion8から追加された機能に、cfthreadタグというものがあります。cfthreadタグは、ColdFusionでスレッドの作成、終了、結合、または一時的な処理の中断ということを実現するためのタグです。このタグを使うと、非同期で行いたい処理をcfthreadタグで囲むだけで、非常に簡単にマルチスレッドの処理を書くことができます。
 ただし、cfthredタグによるマルチスレッド処理は使う箇所を計画的に考え、的確な箇所で利用しないと真価を発揮することはできません。それどころか使いどころを間違えると、思わぬバグを引き起こす可能性もあります。では、どのようなときにcfthredタグによるマルチスレッド処理を利用すればよいのでしょうか?ここでは、画像のアップロード時にサムネイルを作るという処理を例に解説します。マルチスレッドで最適化されていない処理の場合、下記のような流れになり、アップロード完了画面の表示はサムネイル作成が終わってからとなります。

 この場合、サムネイル作成に時間がかかれば、その分だけクライアントから見たアップロード処理全体の待ち時間が延びることになります。
 そこで、cfthredタグによるマルチスレッド処理を利用し、サムネイル作成をバックグラウンドで行うことを考えてみます。cfthredタグを使用してサムネイル作成を非同期で行うことにより、アップロード処理完了後、サムネイル作成を待たずにアップロード完了画面を表示することができ、アップロード処理にかかる時間を少なく見せることができます。

 このように表示処理と、サーバー側でのバックグラウンドの処理を切り離して扱える場合、cfthreadタグを使うことでマルチスレッドを効果的に使ったアプリケーションを作成することが可能になります。
 
 

◆ColdFusion開発におけるデバッグ

 どのような開発においてもデバッグというものはとても重要な役割を果たします、デバッグ実行の容易さは開発のしやすさに直結しているといえるのではないでしょうか。
 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アプリケーション開発について解説していきます。

ColdFusionの各種情報の配信


最新情報
■2017/6/26
『ColdFusion 実験室』
実験6

■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.