) などのワイルドカード仕様を自動的に示します。入力された特定の語句の 1 つまたは複数のインスタンスを含んでいるドキュメントを選択する基本単語検索を実行します。単純なクエリ内では、WORD 演算子は、自動的に、暗黙的に処理されます。入力された単語とその同意語を含めるように検索を拡張します。デフォルトでは、コレクションにはシソーラス機能は含まれていません。この機能を使用するには、シソーラスを構築する必要があります。入力された単語とその単語に似た名前を持つ複数の単語、または文字パターンが類似する単語を含めるように検索を拡張します。デフォルトにより、コレクションは、名前の似たインデックスを持つことができません。この機能を使用するには、名前の似たインデックスを構築する必要があります。入力された単語とクエリ単語に類似した単語を含めるように単語を拡張します。この演算子を使用すると、類似した単語を識別するために、"近似のパターンマッチング" が実行されます。演算子名のオプションの N 変数は、クエリ単語とそれに一致する単語の間で発生するエラーの最大数、つまりエラー範囲と呼ばれる値を表します。N を指定しない場合は、デフォルトのエラー範囲は 2 です。エビデンス演算子を使用した例は次のとおりです。近接演算子は、ドキュメント内の特定の単語の相対位置を指定します。ドキュメントを取り出すには、指定された単語が同じ語句、段落、または文の中に含まれている必要があります。NEAR および NEAR/N 演算子の場合、検索されたドキュメントは、指定された単語の近接さに基づいた適合度によってランク付けされます。近接演算子はネストすることができます。次の表で、近接演算子について説明します。指定された検索語を含んでいるドキュメントを選択します。ドキュメント内の検索語が互いに近い距離にあるほど、ドキュメントのスコアは高くなります。できるだけ狭い領域にすべての検索語が集中しているドキュメントが常に最高スコアを獲得します。検索語が、互いに 1000 語の範囲内で検出されない場合、そのドキュメントは選択されません。検索の近接度を制御するには、NEAR/N を使用します。複数の検索語が互いに N 個の単語の範囲内に含まれているドキュメントを選択します。ドキュメント内の検索語が互いに近い距離にあるほど、ドキュメントのスコアは高くなります。N の値が同じである場合は、次のように、NEAR/N の複数のインスタンスを使用して複数の検索語を指定することができます。指定する単語がすべて同じ段落内に含まれているドキュメントを選択します。段落内の 3 個以上の単語または語句を検索するには、各単語または句の間に PARAGRAPH 演算子を入れる必要があります。指定された語句を含んでいるドキュメントを選択します。特定の順序で発生する複数の単語をグループ化したものが語句です。指定された単語がすべて同じセンテンス内に含まれているドキュメントを選択します。1 つまたは複数のドキュメントゾーンに指定された値を含んでいるドキュメントを選択します。ドキュメントゾーンは、ドキュメントの要約、日付、本文などのドキュメントの領域を表します。特定の条件が設定された 1 つまたは複数のゾーン内でのみ単語検索を行うには、IN 演算子を WHEN 演算子とともに使用します。近接演算子を使用した例を次のとおりです。IN 近接演算子を使用した XML ドキュメントの検索例については、ゾーン検索を参照してください。スコア演算子は、Verity 検索エンジンによる、検索されたドキュメントのスコアの計算方法を指定します。
返された検索要素に関連付けられる最高スコアは 1
スコアの表示は、小数点以下第 4 位まで設定することができます。スコア演算子を使用すると、Verity 検索エンジンによって、まず、ドキュメント内で検出された各検索要素のスコアがそれぞれ計算され、次に、これらの個々の要素のスコアに対して数学演算が実行された結果、各ドキュメントの最終スコアが算出されます。ドキュメントのスコアは、結果列として利用できます。SCORE 結果列は、取り出されたドキュメントの関連スコアを得るために使用できます。次の表で、スコア演算子について説明します。要素のスコアが 0 以外の値の場合に、そのスコアを強制的に 1 にします。YESNO 演算子を使用して、適合度によるランク付けを行わないようにすることもできます。クエリと一致する各ドキュメントの検索要素のスコアを乗算します。クエリと一致した各ドキュメント内の検索要素のスコアを最高値 1 になるまで加算します。クエリの検索要素のスコアの補数を取る (1 から減算する) ことによって、クエリと一致するドキュメントのスコアを計算します。新しいスコアは、1 から検索要素の元のスコアを引いた値になります。
検索要素の元のスコアが 0
データベースのレコードセットのインデックス作成
レコードセットについて Verity 検索を実行する手順は次のとおりです。レコードセットを生成するクエリを記述します。レコードセットのインデックスを作成します。レコードセットを検索します。Verity コレクションではデータベースのインデックスが作成されるため、cfquery を使用するよりも、Verity コレクションに対して検索を実行する方が検索速度は速くなります。次のような場合は、cfquery タグではなく、この方法を使用します。
テキストデータのインデックスを作成する場合
ユーザーがデータソースと直接対話する代わりに、データにアクセスするように指定する場合
クエリの実行速度を向上させる場合
ユーザーにクエリを実行させるが、データベーステーブルを更新させない場合
ColdFusion クエリからレコードセットのインデックスを作成するには、ドキュメントのインデックス作成では必要のない手順が必要となります。インデックスを作成するデータを取り出す cfquery を記述した後、コレクションにデータを挿入する cfindex タグにこの情報を渡します。cfindex タグにはデータソースに対応する次の属性が含まれています。
データソーステーブルのプライマリキー
クエリ列の名前を指定します。
インデックスを検索する列
大規模なカスタムクエリデータに対して cfindex タグを使用すると、"Java のメモリ不足エラー" が発生し、コンピュータの空きディスク領域が極端に不足します。ColdFusion ではカスタムクエリはメモリに読み込まれるため、クエリサイズが物理メモリより大きいと、物理メモリのディスクへのページングが行われます。使用される物理メモリのサイズは、コンピュータ上の実際の物理メモリおよび Java 仮想マシン (JVM) の最大メモリパラメータよりも小さくなります。--- テーブルからデータを取り出します。--- コレクションを上記のクエリ結果で更新します。--- レコードセットを出力します。<p>コレクションには次の項目があります。Web ブラウザでファイルを開き、コレクションのインデックスを作成します。レコードセットが表示されます。cfindex タグを使用して表形式データのインデックスを作成する手順は、ドキュメントのインデックスを作成する手順とほとんど同じです。ただし、次の例外があります。
データベースレコードを検索して表示するには :
<p>下のボックスに検索語を入力します。および括弧を使用できます。引用符で語句を正確に囲みます。cfm を使用する点で異なります。cfm は次の手順で作成します。--- レコードセットを出力します。cfm を表示し、コレクションの名前および検索条件を入力します。次のような画面が表示されます。フィールドは、ドキュメントから抽出されると検索用にコレクション内に保管され、結果リストで返されます。一方、ゾーンは単に検索用のドキュメントの "領域" の定義でしかなく、フィールドが抽出されるのと同じ方法でドキュメントから物理的に抽出されることはありません。まず、テキストの領域をゾーンとして定義してから、この領域をフィールドにする必要があります。したがって、テキストの領域をゾーンだけにすることも、フィールドとゾーンの両方にすることもできます。テキストの領域をゾーンのみとして定義するか、またはフィールドおよびゾーンの両方として定義するかは、特定の必要条件によって変わります。
フィールドは、コレクションを作成する前にスタイルファイル style
ufl で定義する必要があります。
フィールドデータを表示するためにゾーンをフィールドにマッピングするには、これらのフィールドを style
ufl ファイルに定義して追加する必要があります。これらの属性は、検索条件が変更されるとコレクションのレコードごとに異なります。テキスト比較演算子は、次のドキュメントフィールドを参照できます。ドキュメントフィールドを使用して精度の高い検索を行う方法を調べるために、次の Calls という名前のデータベーステーブルについて検討します。このテーブルには、次の表に示すように 4 個のフィールドと 3 個のレコードがあります。ただし、ドキュメントフィールドを使用して検索を制限できます。この手順を実行するための必要条件は次のとおりです。選択したデータベースに Calls テーブルを作成して挿入します。データベーステーブルのプライマリキーがキー属性になることがあります。この列はインデックスを作成する情報です。短い説明は、新聞記事の欄外見出しのような概念上のタイトルと同じです。このフィールドにより検索の精度が高まります。クエリですべてのデータを選択して開始します。次のコードは、コレクションのインデックスを作成する cfindex タグを示しています。次のコードでは、高度検索の結果が表示されます。
単純なクエリの使用
単純なクエリがデフォルトのクエリタイプであり、ほとんどの検索に適しています。検索フォームにテキストを入力するときに、1 つの検索語またはカンマで区切った文字列を入力して単純なクエリを実行します。このとき、オプションでワイルドカード文字を使用することもできます。カンマを省略すると、式は 1 つの語句として扱われます。注意: 多くの Web 検索エンジンでは、複数語検索の場合は論理積の検索と見なし、引用符が使用されている場合はその語句のみの検索と見なされます。Verity では複数語検索の処理方法が異なるため、検索ページに検索方法の例や簡単な説明を記載しておくと、ユーザーの役に立ちます。次の表に、単純な検索の例を示します。通常、演算子には山括弧が必要であり、明示的なクエリで使用されます。演算子および修飾子の詳細については、演算子と修飾子を参照してください。
ワイルドカード文字を使用した検索
次の表に、Verity コレクションの検索に使用できるワイルドカード文字を示します。任意の半角英数字 1 文字を照合します。0 個以上の半角英数字を照合します。アスタリスクを検索文字列の先頭文字として使用しないでください。括弧内の任意の 1 文字を照合します。大括弧は、暗黙的な OR 演算を示しています。カンマ (,) で区切られた 1 つのパターンセットを照合します。セット内にない任意の文字を照合します。セット内の 1 文字の範囲を指定します。ワイルドカード文字をリテラル文字として検索するには、次の例のようにワイルドカード文字の前に円記号を付けます。疑問符などのワイルドカード文字を検索するには、たとえば、検索フォームに、Checkers¥と入力します。リテラルアスタリスクを検索するには、2 つの円記号を * の前に置き、検索語を引用符 (') または二重引用符 (") で囲みます。次に、この検索に対応する CFML コードを示します。
J2EE 設定を使用してインストールする準備
J2EE 設定でインストールする場合は、次の選択肢があります。JRun または他の J2EE アプリケーションサーバーがコンピュータにインストールされていない場合、この J2EE 設定をお勧めします。[新規インストレーション – EAR/WAR ファイル] J2EE アプリケーションサーバーを既にコンピュータで実行している場合には、このオプションを選択します。J2EE アプリケーションサーバー固有のツールまたはユーティリティを使用してこれらのファイルをデプロイします。詳細については、EAR ファイルや WAR ファイルのインストールを参照してください。1 をデプロイし、バックアップディレクトリに保存した設定をコピーします。詳細については、EAR ファイルや WAR ファイルのインストールを参照してください。1 インストールウィザードには、直感的に操作できるインターフェイスが用意されていますが、インストール時に回答を求められる次の情報はあらかじめ準備しておくことをお勧めします。
すべてのインストールタイプ
プラットフォーム固有のインストーラ名は
アップデートのどちらを実行しますか
ユーザー名とパスワード
JRun ディレクトリを置く場所は
外部の Web サーバーを使用する場合、Web ルートディレクトリの場所は
ルートディレクトリの場所は
バックアップディレクトリの場所は
(アップデートインストールでは、CFM
ファイルおよび他の設定ファイルを Web
アプリケーションルートからのバックアップディレクトリにコピーします。メモ: Windows インストーラを実行するには、コンピュータが 256 色以上の表示をサポートしている必要があります。インストールウィザードを実行後、ColdFusion MX をデプロイし、設定ウィザードを実行して、インストール処理を完了させる必要があります。JRun 4 もインストールする場合には自動で実行してください。また、設定ウィザードの質問にも回答する必要があります。RDS を使用すると、サーバーでは、リモートで接続している開発者と対話的にやり取りすることができます。本番サーバーでは RDS を無効にすることをお勧めします。
パスワードは
ODBC サービスをインストールしますか
サンプルアプリケーションと入門用
チュートリアルアプリケーションを
インストールしますか
サンプルアプリケーションをインストールすると、『ColdFusion MX アプリケーション構築の基礎』のチュートリアルレッスンで使用するサポートファイルもインストールされます。本番環境にインストールする場合は、サンプルアプリケーションを使用しないでください。
すべてのプラットフォームに共通するインストールの注意事項
目 次 > ColdFusion MX のインストールと使用 > インストールに関する基本事項 > インストールの注意事項 > すべてのプラットフォームに共通するインストールの注意事項
すべてのプラットフォームに共通するインストールの注意事項
次は、すべてのプラットフォームに共通するインストールの注意事項です。1 へのアップグレードをサポートします。アップグレードする場合は、最初に既存の ColdFusion アプリケーションをバックアップする必要があります。1 が既にインストールされている場合は、リリース版をインストールする前にベータ版をアンインストールする必要があります。Macromedia は、ビルトインの Web サーバー (ポートベースの内部サーバー) を開発環境で使用することをお勧めしますが、本番環境で使用することはお勧めしません。
cfm に存在することを確認してください)
詳細については、ビルトイン Web サーバーの使用を参照してください。1 インストーラは、使用するプラットフォームに適した JRE を自動的にインストールします。本番環境を最適にするには、各 ColdFusion MX のアプリケーションを専用サーバーでホスティングし、データベース、メールおよびその他のサーバーが同一のコンピュータに存在しない環境を確立する必要があります。
目 次 > ColdFusion MX のインストールと使用 > インストールに関する基本事項 > インストールの注意事項 > すべてのプラットフォームに共通するインストールの注意事項
インストールの注意事項
1 のインストールまたはアップグレード時の注意事項を示します。開始タグおよび (多くの場合) 終了タグがあり、各タグは山括弧で囲まれています。次のように、すべての終了タグの前にはスラッシュ記号 (/) が付き、すべてのタグ名の前には cf が付きます。CFML は、インターネットアプリケーションのプログラミングに必要な多くの低レベルの詳細を隠すアブストラクションのレイヤーを提供することによって、生産性を向上させています。同時に、CFML は非常に強力で柔軟性があります。ColdFusion により、ファイル、データベース、レガシーシステム、メールサーバー、FTP サーバー、オブジェクト、およびコンポーネントを統合するアプリケーションを簡単に構築できます。ColdFusion タグには、条件付き処理やループ構造などのプログラミングコンストラクトが用意されています。データベースへの接続を確立し (接続が存在しない場合)、クエリを実行して結果を ColdFusion 環境に返します。
アプリケーション変数、クエリ結果、またはサーバーファイルを使用して、アプリケーションに SMTP メールメッセージを送信させます (cfpop という別のタグがメールを受け取ります)
アプリケーションデータやクエリ結果を Flash、JPG、または PNG 形式の棒グラフや円グラフに変換します。
例 : ランダムタグライブラリの使用
これによって、安全なアルゴリズムを使用して 6 桁の乱数を生成する乱数ジェネレータが初期化されます。random を参照するたびに、新規の乱数を取得します。html のドキュメントをご覧ください。Taglibs プロジェクトには、多くのオープンソースのカスタムタグライブラリがあります。class ファイルをクラスパスで指定されたディレクトリに配置します。例外を処理する cfcatch タグに、例外クラスの名前を指定します。次のセクションでは、Java 例外が発生する例とその処理例を示します。たとえば、あなたの企業に、ビジネスロジックを実行する既存のサーブレットがあるものとします。次の例では、Airius 社のサンタクララオフィスに所属する個人の情報を得るために cfldap タグを使用します。ユーザーは、個人名の全体または一部を入力して、所属部署名、電子メールアドレス、および電話番号を含む、一致する名前のリストを取得できます。このディレクトリへのアクセス権がない場合は、ご使用の LDAP ディレクトリで作業できるようにコードを修正します。
LDAP ディレクトリにクエリを実行するには :
次のようなファイルを作成します。
com データベースでクエリを実行し、同社のサンタクララオフィスに所属する個人の
うち、一般名にフォームに入力したテキストを含むすべての個人名を検索します。<p>氏名、名前、姓、または名前の一部を入力します。-- 検索のためのテキストが必要なことに注意してください。cn=** という検索フィルタはエラーが発生します。cfm という名前を付けて保存し、ブラウザで実行します。
コードの確認
次の表で、前述のコードについて説明します。検索する名前または名前の一部を得るためにフォームを使用します。ユーザーがフォームを送信したことを確認します。これは、フォームページが、アクションページでもあるので必要となります。ユーザーが検索テキストを入力したことを確認します。com という識別名のあるディレクトリエントリでクエリの実行を開始し、このエントリの 1 つ下のディレクトリレベルを検索します。各エントリの一般名、姓、組織ユニット、電子メールアドレス、および電話番号が得られます。結果を、まず組織名でソートしてから姓でソートします。デフォルトのソート順に従ってソートします。リクエストを 100 エントリに制限します。サーバーが 20 秒以内にデータを返さない場合、LDAP のタイムアウトを示すエラーが発生します。出力を表示するための表を開始します。返されたレコードの数を表示します。各エントリの一般名、部署、電子メールアドレス、および電話番号を表示します。
組織ユニット値のリストで最初にあるエントリのみを表示します (詳細については、表の後にある説明を参照してください)
この検索は、フィルタ内での論理 AND ステートメントの使用を示します。これは、結果のソートのみに使用された属性である姓を返します。このクエリでは、ou 属性値は 2 つの値から構成され、カンマで区切られたリストで示されます。1 つは部署名で、もう 1 つは個人です。
人、グループ、ディレクトリサーバーのような組織ユニットを区別する第 2 レベルのディレクトリツリーにある識別名として使用
各個人のエントリにある部署識別子として使用
個人エントリからディレクトリツリールートの順で属性値が返されるため、ListFirst 関数は個人の所属する部署名を抽出します。
ディレクトリエントリの追加
LDAP ディレクトリにエントリを追加する場合は、DN、オブジェクトクラスを含むすべての必須属性、その他のオプション属性を指定します。次の例は、LDAP ディレクトリにエントリを追加するフォームの構成を示しています。
エントリを追加するには :
次のようなファイルを作成します。1 か所でのみこれらを変更できるようにします。--- 文字列を空にするためにフォームフィールドで使用された値を初期化します。<h2>すべてのフィールドに値を入力する必要があります。
*追加するにはすべてのフィールドにデータが必要です<br>
cfm という名前を付けて保存し、ブラウザで実行します。
コードの確認
次の表で、前述のコードについて説明します。これにより、LDAP 接続情報変数が初期化されます。すべての接続情報の変数を使用して、すべての変更が 1 か所のみで行われるようにします。フォームフィールド値変数のデフォルト値に空の文字列を設定します。これにより、フォームにあらかじめ値が設定されるので、ユーザーが不完全なフォームを送信しても、ユーザーがフォームに入力した値を ColdFusion でページの再表示時に維持できます。ユーザーがフォームにユーザー ID を入力したことを確認します。ユーザーが [追加] をクリックすると、次に続くコードが処理されます。<h2>すべてのフィールドに値を入力する必要があります。送信されたフォームに空白のフィールドがある場合は、メッセージが表示され、ユーザーが送信したデータを表示する別のフォームフィールドを設定します。ユーザーがすべてのフィールドにデータを入力した場合、オブジェクトクラスおよび組織ユニット (この例では人事) を含むエントリの属性を指定するために attributelist 変数を設定します。Trim 関数は、ユーザーのデータの前後にあるスペースを削除します。uid# のエントリが追加されました。ディレクトリに新規エントリを追加します。
*追加するにはすべてのフィールドにデータが必要です<br>
表として形式が設定されているデータエントリフォームを出力します。ユーザーが必要なすべてのデータを入力しなかった場合は、この機能を使用します。ディレクトリでクエリが実行され、一般名、姓、電子メールアドレス、電話番号、およびユーザー ID を一致するエントリから入手します。com であるエントリからサブツリーの検索が実行され、組織ユニットが人事であるすべてのエントリが選択されます。
結果が姓別にソートされ、さらに一般名によってソートされます (初めに姓、次に名前でソートされます)
デフォルトでは、大文字と小文字を区別しない昇順でソートされます。テーブル内にクエリ結果を表示します。
ディレクトリスキーマの表示
LDAP v3 では、ルート DN 内の特別なエントリにディレクトリのスキーマ情報が提供されます。次の ColdFusion クエリは、ディレクトリスキーマの入手方法と表示方法を示しています。スキーマのオブジェクトクラスおよび属性タイプ定義の情報を表示します。オブジェクトクラスの場合は、クラス名、上位クラス、必須属性タイプ、およびオプション属性タイプが表示されます。属性タイプの場合は、タイプ名、タイプについての説明、および単一値かまたは多値かが表示されます。この例では、スキーマ内のすべての情報は表示されません。たとえば、一致ルールは表示されません。また、オブジェクトクラス ID、属性タイプ ID、属性タイプシンタックス ID、またはオブジェクトクラスの説明も表示されません。0 では実行できません。x サーバーで動作します。
LDAP ディレクトリのスキーマを表示するには :
次のような新規ファイルを作成します。cfldap タグで、ユーザー ID およびパスワードを指定する必要がある可能性があります。
コードの確認
次の表で、前述のコードについて説明します。各オブジェクトクラスのオブジェクトクラス名、上位クラス、必須属性、およびオプション属性が表形式で表示されます。スキーマには、カンマ区切りのリストとしてすべてのオブジェクトクラスの定義が含まれるため、コードはリストタイプの cfloop タグを使用します。
前後のスペースをすべて削除したら、Find 関数のクラス定義フィールドキーワードを使用して、オブジェクトクラス ID を含む必要なフィールドの開始位置を取得します (ID は表示されません)
フィールド値を表示します。最上位のオブジェクトクラスには、上位オブジェクトクラスのエントリがありません。このような特殊な場合は、suploc 位置変数をテストして処理します。値が 0 でない場合は通常どおりに処理し、値が 0 の場合は "なし" を出力します。オプション属性がない可能性があります。この場合は上位クラスと同様に処理します。必須属性の位置を計算する場合、フィールドが存在するときはオプション属性の位置を使用します。オブジェクトクラスの場合と同じタイプの計算を属性タイプの計算で実行します。" というテキストが含まれていることがあります。このテキストには、属性エントリの区切り文字としても使用されるカンマが含まれています。属性定義には、コードに表示されないが、他のフィールドの位置の計算にこの位置を使用する、数値シンタックス識別子が含まれます。
テキストファイルの読み込み
cffile タグを使用すると、既存のテキストファイルを読み込むことができます。既存のファイルは、アプリケーションページ内のどこでも使用可能なローカル変数に読み込まれます。たとえば、テキストファイルを読み取り、その内容をデータベースに挿入するか、またはテキストファイルを読み取り、いずれかの文字列検索/置換機能を使用してその内容を変更することができます。
テキストファイルを読み込むには :
ファイルを読み込む準備ができました。txt を、サーバー上のテキストファイルの場所と名前に置き換えます。次の内容の HTML ページを作成します。<p>これは、テストメッセージの第 2 パラグラフです。
ファイルを保存し、ブラウザに表示します (必要に応じて更新します)
テキストは形式設定されていないテキストとして表示されます。この場合、HTML のタグはテキストとして表示されます。--- 従業員情報を取得します。--- 特殊文字の変数を設定します。Excel スプレッドシートにデータが表示されます。Verity エンジンでは、多数のインポート日付形式がサポートされています。次のテーブルにリストアップしたように、テキストによる日付形式や数値による日付形式がいろいろ用意されています。
日-月-年の形式で記述する日付 (ヨーロッパ形式)
年-日-月の形式で記述する日付 (スウェーデン形式)
ヨーロッパ形式で記述する日付 (DMY と同じ)
予約語と変数
部分文字列の使用
括弧を使用して正規表現の一部を部分文字列としてグループ化し、1 つの単位として処理できます。部分文字列で特殊文字 | を使用して論理演算 "OR" を作成できます。
エスケープシーケンスの使用
エスケープシーケンスとは、円記号 (¥) が前にある正規表現の特殊文字です。多くの場合は、エスケープシーケンスを使用して正規表現内の特殊文字を表します。たとえば、エスケープシーケンス ¥t は正規表現内のタブ記号を表し、エスケープシーケンス ¥d は [0-9] と同様に任意の数字を表します。英数字から英数字以外、または英数字以外から英数字に変わる境界を指定します。文字セット内で使用すると ([¥b] など)、バックスペースが指定されます。文字タイプが変化しない境界を指定します。たとえば、英数字 2 文字または英数字以外の 2 文字が並んだ部分の境界に一致します。特殊文字列 ^ と同様に、文字列の先頭のアンカーを指定します。m) と組み合わせて検索文字列内の改行の始まりを指定することはできません。特殊文字列 $ と同様に、文字列の末尾のアンカーを指定します。m) と組み合わせて検索文字列内の改行の終わりを指定することはできません。
数字以外の任意の文字
任意の英数字
英数字以外の任意の文字
タブ、スペース、改行文字、キャリッジリターン、およびフォームフィードなどの任意の空白文字
空白以外の任意の文字
文字の 8 進表現です。
一致した部分文字列の戻し
次の例の検索文字列には、正規表現と一致する文字列が 2 つありますが、最初の文字列のインデックスのみが返されます。デフォルトでは、開始位置のインデックスは 1 で、文字列の先頭を示します。この例の正規表現の 2 番めのインスタンスを検索するには、開始インデックスを 8 に指定して REFind を呼び出します。この場合、関数は 2 回目の文字列 "BIG" の開始インデックスであるインデックス 9 を返します。2 回目に現れる文字列を検索するには、最初の文字列がインデックス 5 にあり、文字列の長さが 5 であるという情報が必要です。しかし、REFind は、文字列の開始インデックスは返しますが長さは返しません。そこで、REFind を 2 回目に呼び出すには、一致した文字列の長さを調べるか、または正規表現で部分文字列を使用する必要があります。この構造には正規表現の部分文字列に一致したテキスト文字列の位置と長さが含まれています。次に例を示します。pos 配列の要素 1 には、正規表現を照合した文字列の、検索文字列における開始インデックスが含まれています。len 配列の要素 1 には、一致した文字列の長さが含まれています。正規表現と一致する文字列が存在しない場合、pos 配列と len 配列は、それぞれ値が 0 の要素を 1 つずつ含んでいます。mid などの他の文字列関数から返された情報も使用できます。次の例は、正規表現を照合する検索文字列の一部を返します。pos 配列の各追加要素には、検索文字列の各部分文字列と最初に一致する文字列の位置が含まれます。len 配列の各追加要素には、その部分文字列に一致する文字列の長さが含まれます。前述の例では、正規表現 "BIG " には部分文字列が含まれていません。したがって、REFind 関数によって返される構造内の各配列の要素は 1 つです。前述の例を実行した後、REFind をもう一度呼び出して、次に現れる文字列を検索できます。2 回目の呼び出しは、最初に呼び出したときに得た情報を使用します。正規表現に部分文字列がある場合、要素 1 の後の pos と len のそれぞれの要素には、検索文字列に各部分文字列が最初に現れる位置とその長さが含まれます。len[1] のエントリには、正規表現全体の照合についての情報が含まれます。次の例の正規表現は、2 つの部分文字列を使用しています。したがって、出力構造内の各配列には、正規表現全体で最初に照合した文字列、最初の部分文字列で最初に照合した文字列、および 2 番めの部分文字列で最初に照合した文字列の、それぞれの位置と長さが含まれます。
最小照合の指定
デフォルトでは、ColdFusion は、検索文字列内で正規表現に一致する最大数の文字を検索します。この動作を最大照合と呼びます。デフォルトでは、ColdFusion は常に、検索文字列内で正規表現に一致する最大の文字列を探します。次のコードは、この例の結果を示します。このように、文字列の開始位置は 1 でその長さは 21 です。これは、2 つの照合結果のうち長い文字列に対応します。しかし、このデフォルトの動作を無効にして、正規表現に一致する最も短い文字列を検索することもできます。ColdFusion には、最小文字列を照合するように指定する最小照合修飾子があります。次の表で、これらの式について説明します。
* の最小照合バージョン
+ の最小照合バージョン
の最小照合バージョン
表記上の一貫性を保つためにサポートされています。前述の例を修正して最小照合シンタックスを使用すると、コードは次のようになります。
タグ属性の使用方法の概要
カスタムタグの属性値は、名前と値のペアとして呼び出しページからカスタムタグページに渡されます。CFML カスタムタグには、必須の属性とオプションの属性があります。カスタムタグ属性は、次の CFML コーディング規格に準拠します。
渡された属性を参照して、カスタムタグページのローカル変数と属性を区別する場合は、Attributes
属性には、大文字と小文字の区別がありません。属性は、任意の順番でタグ内にリストできます。タグの呼び出しでは、タグの属性の名前 / 値のペアをスペースで区切ります。渡された値にスペースが含まれている場合は、二重引用符 (") で囲む必要があります。カスタムタグの先頭に default 属性を含む cfparam タグを使用して、呼び出しページから渡されたオプションの属性をテストし、デフォルトを割り当てます。次に例を示します。
呼び出しページで変数
たとえば、カスタムタグに Name 属性が指定されないと、次のコードによって中断されます。
ロックのシナリオ例
次の例は、ColdFusion コードをロックする必要があるシナリオを示しています。これらのシナリオは、ロックがきわめて重要である 2 つの状況を示すものですが、ロックが必要となる場合はこの他にもあります。
共有変数の読み書き
チケット販売総数カウンタなどのアプリケーション規模の値を持つ場合は、ログインページに次のようなコードを挿入する必要があります。この値を増加させます。次の順序で処理が行われます。注文 1 がチケット販売総数を 160 と読み取ります。注文 2 がチケット販売総数を 160 と読み取ります。このアプリケーションではチケット販売数が不正確なものになり、収容人数を越すチケットを販売してしまう危険があります。このような問題が発生しないように、次のようにしてカウンタを増加させるコードをロックします。したがって、2 番めのトランザクションは最初のトランザクションが終了するまで処理されません。次のような順序で処理が行われます。注文 1 がロックタグに到達します。注文 1 がチケット販売総数を 160 と読み取ります。注文 2 がロックタグに到達します。注文 1 がロックタグを終了します。注文 2 がチケット販売総数を 165 と読み取ります。
複数の変数の一貫性の確認
アプリケーションが、ユーザーがフォームから送信した値など、一度に複数の共有スコープの変数を設定することがあります。ユーザーがフォームを送信した後、戻るボタンをクリックし、別のデータを入力したフォームを再送信すると、前のセクションで示したのとほぼ同じように、2 度の送信によるデータの混合でアプリケーションが終了する可能性があります。たとえば、アプリケーションが Session スコープのショッピングカートに注文品目に関する情報を保管するものとします。ユーザーが、セイジグリーンのサイズ 36 の半ズボンを指定するデータを入力した品目選択ページを送信した後、水色のサイズ 34 の半ズボンを指定して再送信すると、アプリケーションは、セージグリーンのサイズ 34 の半ズボンが注文されたかのように、2 つの注文の情報を混合して終了することがあります。関連するすべてのセッション変数を設定するコードを 1 つの cflock タグ内に配置することにより、すべての変数を設定できます。つまり、すべての変数の設定が最少、つまり単一の操作になります。これは、トランザクションのすべてが発生するか、または何も発生しない、データベーストランザクションに似ています。この例では、最初の注文の詳細がすべて設定された後、2 番めの注文の詳細がそれらに置き換えられます。アプリケーションでのロックの使用例については、335ページの「cflock の例」 を参照してください。
ロックのタイプ
排他的ロック (デフォルトのロックタイプ) : ロックされたコードを処理できるのは 1 つのリクエストだけです。リクエストに排他的ロックがある場合、他のリクエストはそのタグ内のコードを実行できません。セッション変数、アプリケーション変数、およびサーバー変数を作成または変更するコードすべてを、排他的 cflock タグで囲みます。読み取り専用ロック : 同じスコープまたは名前に対して排他的ロックが実行されていない場合は複数のリクエストを同時に実行できます。リクエストに排他的ロックがある場合、他のリクエストはタグ内のコードを実行できません。セッション変数、アプリケーション変数、またはサーバー変数の読み取りまたはテストするコードを、読み取り専用の cflock タグで囲みます。ColdFusion では読み取り専用ロックタグ内に共有変数を設定できますが、この場合ロックの利点は失われてしまいます。このため、セッション変数、アプリケーション変数、またはサーバー変数のいずれも、読み取り専用 cflock タグの本文内には設定しないように注意する必要があります。メモ: ロックを重複して設定することで、より強いタイプや弱いタイプのロックに変更することはできません。つまり、読み込み専用ロックと同じ名前またはスコープで排他的ロックをネストすることはできません。そのような排他的ロックは常にタイムアウトします。同じように、排他的ロックの内側に同じ名前またはスコープの読み込み専用ロックをネストすることもできません。これは効果がありません。
アプリケーション変数の効果的なロック
アプリケーション変数を使用するすべてのリクエストが単一のロックを待機する必要があるため、アプリケーション変数をロックする必要がある場合にはサーバーのパフォーマンスが低下します。これは、一度設定された後は読み取り専用となるライトワンス変数の場合でも問題となります。変数が存在することを確認し、その値を読み取る前に設定する必要があるからです。この問題は、アプリケーション変数の存在をテストする次の方法を使用して、最小限に抑えることができます。アプリケーション変数が存在しない場合は、設定できます。Application スコープのフラグ変数を使用して、変数を初期化するかどうかを示します。読み取り専用ロックでは、フラグの有無をチェックし、その結果をローカル変数に割り当てます。cflock ブロック外で、ローカル変数の値をテストします。そのローカル変数によってアプリケーション変数が初期化されていないことが示されている場合は、Application スコープの排他的ロックを取得してください。ロック内で、Application スコープのフラグを再テストして、手順 1 ~ 4 の間で他のページが変数を設定していないことを確認します。排他的ロックを解除します。次のコードは、この方法を示しています。--- 読み取り専用ロックを取得します。--- ローカルフラグをチェックします。--- まだ初期化されていなければ、排他的ロックを取得してスコープを書き込みます。
--- 複数のリクエストが排他的ロックに到達する可能性があるので、ローカルでないフラグをチェックします。
SQL ステートメントの記述
コミット、ロールバック、およびトランザクション
データベースに格納されているデータにアクセスする前に、次のデータベースの概念を理解しておくことが重要です。データベースに対して永続的な変更を行うことを、データベースのコミットといいます。たとえば、データベースに新しい行を書き込んだ場合でも、データベースの変更がコミットされるまで実際の書き込みは行われません。ロールバックは、データベースへの変更を取り消す処理です。たとえば、新しい行をデータベースに書き込んだ場合でも、コミットする前ならば書き込みをロールバックできます。コミット後は書き込みをロールバックできません。ほとんどのデータベースはトランザクションをサポートしています。1 回のトランザクションは、1 つまたは複数の SQL ステートメントで構成されます。トランザクションの実行中には、複数の SQL ステートメントでデータベースの読み込み、修正、および書き込みを行うことができます。トランザクションを終了するとき、そのトランザクション内のすべての変更がコミットまたはロールバックされます。データベースに複数回の書き込みを実行する必要がある場合、それらのすべてがエラーなく行われたことを確認してから書き込みをコミットするには、トランザクションが役立ちます。そのような場合は、すべての書き込み操作を 1 つのトランザクション内で実行し、個々の書き込み操作を実行するたびにエラーをチェックするようにします。いずれかの書き込みでエラーが発生したら、すべてをロールバックします。すべての書き込みが正常に終了したら、トランザクションをコミットします。銀行では、トランザクションを使用して口座から口座への振替処理をまとめて 1 つの処理単位にカプセル化する用途が考えられます。たとえば、普通預金口座を当座預金口座に振り替える処理では、当座預金口座への入金が実行されない限り普通預金口座の出金も実行されないようにする必要があります。そこで、両方の処理を同じトランザクションの一部として実行すれば、当座預金口座の更新に失敗した場合に普通預金口座からの出金をロールバックできます。詳細については、『CFML リファレンス』を参照してください。このステートメントは、"employees テーブルからすべての列を選択する" と解釈されます。ワイルドカード記号 * はすべての列を示します。詳細については、エディタを使用するクエリの記述を参照してください。多くの場合、テーブルのすべての行を取得する必要はないため、サブセットのみリクエストします。次の例は、従業員テーブルで DeptID 列の値は 3 である行をすべて返します。また、SQL ではテーブル内のどの列を返すかを指定することもできます。たとえば次のようにして、テーブル内のすべての列を返す代わりに列のサブセットを返すことができます。テーブルからのデータ読み込みだけでなく、SQL INSERT ステートメントを使用してデータをテーブルに書き込むこともできます。登録済みまたはネイティブのデータソースの名前です。レポートのパスです。ユーザーが指定する結果の並び順です。レポートを作成するデータベースへのエントリに必要なユーザー名です。データベースアクセスに必要なユーザー名に対応するパスワードです。1 つ以上の名前付き式を指定します。各式の最後にはセミコロンを付けます。次の形式を使用します。式の中でセミコロンを使用する場合は、2 回 (;;) 入力してエスケープする必要があります。このタグには終了タグが必要です。実行するには、タグにレポート名が必要です。cfreport を使用すると、表示されるレポートファイルに情報を渡して、出力条件を変更することができます。rpt " というレポートを実行し、このレポートにオプションのフィルタ条件を渡して、レポートのサブセットの情報のみを表示します。<p>独自のレポートファイルとフィルタをこのコードと置き換えます。
新規のタグ、属性、および値
属性または値
追加されたもの
条件付きループは、条件が true であるかぎり、一連の命令を繰り返します。このタイプのループを正しく使用するためには、ループが繰り返されるたびに条件を変更する命令を記述し、条件が false になるまでそれを行う必要があります。ループを制御するための条件です。このループの出力は次のとおりです。ループインデックスは 1 です。ループインデックスは 2 です。ループインデックスは 3 です。ループインデックスは 4 です。ループインデックスは 5 です。ColdFusion によって、このタグの前に処理されたすべての内容が返されます。このタグはしばしば条件論理式と共に使用され、ある条件が発生した場合にページの処理を停止します。関数の引数は、呼び出し側の変数として同じ名前で異なる値にすることができますが、わかりにくくなるため、そのような使用は避けてください。引数のパーシスタンスには次のルールが適用されます。シンプルな変数および配列の引数は値によって渡されるため、その名前と値は、関数の実行時にのみ存在します。構造体、クエリ、COM オブジェクトなどのオブジェクトは参照によって渡されるため、引数 name はこの関数の実行時のみ存在しますが、基本的な data は関数が戻った後でも存在し、呼び出し側の変数名を使用してこれにアクセスできます。呼び出し側の変数名と引数名は異なる名前を使用できます。異なる名前を使用する必要があります。
メモ: 関数内にのみ存在する変数と同じ名前を持つ別のスコープからの変数を、関数で使用する必要がある場合は、外部の変数に Variables または Form などのスコープ識別子を使用して接頭辞を付けてください (ただし、他のスコープからの変数をコード内で直接使用すると、正しい結果が得られない場合があるので、注意してください)
配列の受け渡し
配列の呼び出し側のコピーを関数で修正する場合の最も簡単な方法は、配列を関数に渡し、変更された配列を関数 return ステートメント内の呼び出し側に返す方法です。呼び出し側では、関数の引数内で同じ変数名を使用して変数を返します。次の例では、配列を直接渡して返す方法について示します。//変数を初期化します。//これによって、簡単な配列を作成します。//関数を定義します。//関数を呼び出します。この解決方法は簡単ですが、適切でない場合もあります。1 回は関数を呼び出すとき、もう 1 回は関数を返すときです。この方法は大きな配列の場合は効果的でなく、この関数を頻繁に呼び出すとパフォーマンスが低下する場合があります。ステータス変数などの他の目的の戻り値を使用できます。この return ステートメントを使用して呼び出し側に配列を返さない場合は、この配列を構造体内の要素として渡し、構造体内の配列値を変更できます。その後、呼び出しページは UDF に渡した構造体の変数を使用して、変更されたデータにアクセスできます。次のコードは、構造体内の配列を使用して前述の例を再記述する方法を示しています。ステータス表示として呼び出しページに true を返し、この構造体を使用して配列データを呼び出しページに返します。//変数を初期化します。//構造体内の要素として簡単な配列を作成します。//関数を定義します。//関数を呼び出します。呼び出しページと関数では、配列の同じ構造体要素名 (この場合は Array) を使用する必要があります。この条件演算子は、式と式を比較します。レコードセットの関連する行のみを選択して読み取るときに使用できます。ただし、BETWEEN 条件演算子は、特定の範囲の値との比較を行います。このため、そのシンタックスには、範囲に含まれる最小値と最大値の 2 つの値が必要です。これらの値はキーワード AND で区切る必要があります。
クエリオブクエリのパフォーマンスについて
クエリオブクエリのパフォーマンスは、データベースから直接アクセスされた単一テーブルのクエリオブジェクトでは向上します。これは、ColdFusion MX が、データベースからアクセスされたクエリオブジェクトのメタ情報を保管するためです。QueryNew() 関数から派生した大きなクエリオブジェクトでは、クエリオブクエリのパフォーマンスは低下します。SQL 結合の結果として生成されるクエリで作業するときは、クエリオブクエリのパフォーマンスは次のようになります。2 つの列を参照する 1 つの等式だけが指定された単純な結合では、クエリオブクエリは非常に効率的です。次に例を示します。述部に複数の式が含まれる結合では、クエリオブクエリの効率は低下します。次に例を示します。バイナリデータは、GIF ファイルやプログラムの実行可能ファイルの内容などの生データです。通常、バイナリデータを直接には使用しませんが、ファイルを電子メールで転送する前の Base64 エンコードへの変換に、cffile タグを使用してバイナリファイルを変数に読み込むことができます。Base64 形式では、バイトごとに下位 6 ビットのデータをエンコードします。これによって、バイナリデータおよび ANSI 以外の文字データを破損することなく電子メールで確実に転送できるようになります。Base64 でエンコードされたデータは文字列データとして処理されます。文字列およびバイナリデータを Base64 でエンコードされたデータに変換します。Base64 でエンコードされたデータをバイナリデータに変換します。ほとんどの単純なデータタイプを文字列データに変換します。数値、日付時刻オブジェクト、およびブール値を変換できます。日付時刻オブジェクトを ODBC タイムスタンプ文字列に変換します。出力可能な文字ではないバイトが含まれているバイナリデータは変換できません。元は文字列であった Base64 でエンコードされたデータを、読み取り可能な文字列に戻すには、次の手順を実行します。ToString 関数を使用してバイナリデータを文字列データに変換します。たとえば、次の 2 行では同じ結果が出力されます。キーはテキスト文字列であり、値は他の構造体を含むすべての ColdFusion データタイプにすることができます。構造体を使用すると、1 つの名前でグループ化された、互いに関連する変数のコレクションを構築できます。たとえば、次の行では depts という空の新規構造体を作成します。また、構造体内のキーに値を代入することで構造体そのものを作成することも可能です。構造体を作成すると、キーと値のペアの追加など、関数または直接参照を使用してその内容を操作できます。構造体に保管されている要素を参照するには、次のいずれかの方法が利用できます。次の例は、この方法を示しています。新規変数に既存の構造体を割り当てたときは、新規構造体が作成されません。代わりに、新規変数では、メモリ内の元の構造体変数と同じデータ (場所) にアクセスします。つまり、どちらの変数も同じオブジェクトを参照します。構造体キー名は、構造体や配列などの複雑なデータオブジェクトの名前にすることができます。これにより、複雑な構造体を任意に作成できます。構造体の使用方法については、配列と構造体の使用を参照してください。ColdFusion では、単純な変数の名前にピリオドが含まれている場合でも、変数の値を正しく取得できます。b を取得する方法を示しています。myVar がスコープを含んでいる複雑なオブジェクトの名前である場合は、オブジェクト内から a という名前の要素を検索します。a が複雑なオブジェクトの名前かどうかを確認し、手順 3 を省略します。myVar が複雑なオブジェクトの名前である場合は、a が複雑なオブジェクトかどうかを確認します。a が複雑なオブジェクトの名前である場合は、b が単純な変数の名前かどうかを確認し、b の値を返します。
myVar が複雑なオブジェクトであるが、a が複雑なオブジェクトでない場合は、a
b が単純な変数の名前かどうかを確認し、その値を返します。配列表記を使用することでも、名前にピリオドが含まれる単純な変数を取得できます。配列表記のこのフォームでは、スコープ名 (または、単純な変数を含む複雑な変数) を "配列" 名として使用します。単純な変数名を引用符 (') または二重引用符 (") で囲み、角括弧の中に入れます。配列表記では、考えられる主な組み合わせについて ColdFusion で解析したり調べたりする必要がないため、通常のドット表記よりも効率的です。b の値を記述していますが、2 番めの行は最初の行よりもより効率的です。ColdFusion では、変数の値を設定する場合は、変数を取得するときのように柔軟性がありません。これは、作成または設定する変数のタイプを調べる必要があるからです。このため、ユーザーが設定する変数名についてのルールはより厳格なものになります。また、ルールは変数名の最初の部分が Cookie スコープ識別子であるか Client スコープ識別子であるかによって異なります。たとえば、次のようなユーザーのコードを想定します。変数 myVar が存在しない場合は、次が実行されます。myVar という名前の構造体を作成します。a に b という名前のキーを作成します。このキーに "これはテストです" という値を設定します。a が存在するが、そのいずれも構造体ではない場合は、エラーになります。言い換えると、ColdFusion では、変数の取得と同じルールを使用して、まだ存在しない名前を検出できるまで変数名を解析します。次に、b という名前のキーを構造体の内部に作成するために必要な構造体を作成し、キーに値を割り当てます。このルールでは、スコープ名に続くすべてのピリオドを含むすべてのテキストを、単純な変数として扱います。これは、ユーザーが変数にタイプを割り当てず、ColdFusion でも変数名にタイプを関連付けないためです。ただし、変数で表されるデータにはタイプがあり、そのデータタイプは ColdFusion で式または関数の引数を評価する方法に影響を及ぼします。ColdFusion では式を評価するときに、多くのデータタイプを他のデータタイプに自動的に変換できます。数値や文字列などの単純データの場合、データタイプは変数が式の中や関数の引数として使用されるまで重要ではありません。ColdFusion 変数のデータは、次のいずれかのタイプのカテゴリに属しています。単純 : 単独の値です。数値、文字列、ブール値、日付時刻値などがあります。複合 : データのコンテナです。通常、複数の値を表します。ColdFusion に組み込まれている複合データタイプには、配列、構造体、クエリ、XML ドキュメントオブジェクトなどがあります。配列などの複合変数は ColdFusion 式では直接使用できませんが、複合変数の単純データタイプ要素を式で使用することはできます。バイナリ : バイナリ GIF ファイルやプログラムの実行可能ファイルの内容などの生データです。データと関数演算の両方をカプセル化する場合がよくあります。次の表に、ColdFusion で使用可能なオブジェクトのタイプとその参照先を示します。
オブジェクトのタイプ
データタイプに関する注意
ColdFusion 変数にはタイプがありませんが、変数に格納されているデータの種類という意味で、便宜上 "変数のタイプ" という表現を使用します。ColdFusion では、フォームフィールドおよびクエリパラメータに含まれているデータのタイプを検証できます。詳細については、フォームフィールドのデータタイプの検証およびcfqueryparam の使用を参照してください。このタグは、複雑なデータおよびそのデータを処理するコードのデバッグに最適なツールです。ColdFusion には、変数のデータタイプの識別に使用する次の関数が用意されています。また、ColdFusion には、文字列を他の単純なデータタイプで表すことができるかどうかを判断する次の関数も用意されています。merge ユーティリティを使用すると、同じスキーマを持った複数のコレクションを結合できます。このユーティリティは、異なるソースから作成された小さなコレクションを 1 つの大きなコレクションに結合する場合に役立ちます。また、merge ユーティリティを使用して、コレクションをおおよそのサイズで統一した小さなコレクションに分けることもできます。コレクションを結合できるのは、同じスキーマを持っている場合に限られます。コレクションが同じスタイルファイルのセット (およびスタイルファイルエントリ) を持っている場合も、結合することができます。大きなコレクションを分割すると、検索パフォーマンスを最適化するのに役立ちます。多数のアプリケーションにより、同時発生した複数の検索リクエストを異なるコレクションに対して実行できるようになるからです。大きなコレクションを分割した後で、古いコレクションを破棄すれば、制限されたディスク記憶域容量を再利用できます。たとえば、次のようになります。merge ユーティリティのヘルプを表示するには、次のコマンドを入力します。
コマンドラインインターフェイスの使用
コマンドラインインターフェイスを使用して Web サーバー設定ツールを実行することもできます。次の表では、オプションのリストを示します。次のように、Web サーバーを指定します。All または 0 を指定して、グローバルレベルのコネクタを設定します。JRun サーバーに対して定義されたユーザー名を指定します。ユーザー名に対応するパスワードを指定します。Web サーバーを再起動しません。このオプションを使用して、単一サーバーではなく JRun クラスタへの接続を定義できます。ネイティブ OS のメモリ割り当てを有効化します。拡張機能マッピングリストを指定します。-upgrade と共に使用し、バージョンまたは date スタンプに関係なくコネクタモジュールを強制的に置き換え、Web サーバーが停止している場合には Web サーバーを起動します。jar の新しいモジュールでアップグレードします。設定されたすべての Web サーバーをリストします。指定されたホストのすべての JRun サーバーをリストします。設定を削除します。設定済みコネクタをすべてアンインストールします。すべてのパラメータをリストします。
バッチファイルとシェルスクリプトの使用
ColdFusion MX には、一般的なコマンドラインコネクタ設定を実装するバッチファイルとシェルスクリプトが添付されています。これによってグローバルに定義されたコネクタが確立され、すべてのサイトがフィルタとマッピングを継承します。Apache または iPlanet を使用する場合は、これらのファイルをプロトタイプとして使用し、サイトに応じて編集して保存します。
コマンドラインインターフェイスの例
このセクションでは、いろいろな Web サーバーでの複数の使用例を説明します。特定の IIS サイトを設定します。
すべてのサイトが
cfm であるシステムでは、通常は個々のサイトを設定する必要はありません。この操作では、最初の "-site 0" 実行後に追加されたサイトは自動的には設定されませんが、後で "-site 0" を使用して再実行すれば Web サーバー設定ツールが新規サイトのみを設定します。インターネットの開始以来、インターネットによって、リモートコンピュータに保管されているコンテンツにユーザーがアクセスできるようになりました。このコンテンツは、HTML ファイルによって作成されたドキュメントのようなスタティックなものであったり、ColdFusion ページや CGI スクリプトによって返されるコンテンツのようなダイナミックなものです。Web サービスは新しいテクノロジーであり、これを使用すると、リモートコンピュータ上にある自分以外のユーザーが作成し、利用できるようにしたアプリケーション機能にアクセスできます。Web サービスを使用すると、リモートアプリケーションにリクエストを出して、アクションを実行できます。たとえば、株価情報のリクエスト、翻訳するテキストの転送、製品カタログの情報のリクエストなどを行うことができます。Web サービスの利点は、既に作成されているアプリケーションのロジックを再作成する必要がないことなので、アプリケーションを短時間で構築できます。
Web サービスでは実装のテクノロジーに関係なく標準インターフェイスに準拠しているので、ColdFusion アプリケーションの一部として、または
また、ユーザー固有の Web サービスを作成し、リモートアクセスによって他のユーザーが利用できるようにすることもできます。要素または属性などのノードでは、ノード名は要素または属性の名前になります。たとえば要素またはテキストなどです。このエントリは、属性、CDATA、コメント、およびテキストタイプのノードでのみ使用します。ノードタイプは、XML DOM 階層のオブジェクトタイプに対応します。
コメントの内容
参照されるエンティティの名前
テキストノードの内容
XML ドキュメントオブジェクトおよびすべてのその要素は、DOM ノード構造体として表示されます。
XSLT を使用したドキュメントの変換
XSLT の一般的な使用方法としては、たとえば XML ドキュメントを HTML に変換してブラウザに表示する用途などがあります。その他にも XSLT にはさまざまな用途があります。たとえば、発注処理アプリケーションの XML 語彙で記述された XML データを、受注処理アプリケーションの XML 語彙に変換する場合に使用できます。この関数は、文字列形式または XML ドキュメントオブジェクトとしての XML ドキュメント、および文字列形式の XSL スタイルシートを使用して、変換したドキュメントを文字列として返します。次のコードによって、次の手順が実行されます。xsl スタイルシートファイルが文字列変数に読み取られます。このスタイルシートを使用して mydoc XML ドキュメントオブジェクトが変換されます。変換されたドキュメントが 2 番めのファイルに保存されます。この例は非常に単純なので、実際にアプリケーションで使用するにはかなりの変更が必要ですが、ColdFusion での XML の一般的な使用方法の一部を示しています。この例では、XML ドキュメント形式で注文を受け、その注文を処理して、XML ドキュメントのレシートを生成します。この場合、注文書のドキュメントはファイル内にありますが、HTTP リクエストの結果として受け取るか、cfpop、cfftp、またはその他の方法で取り出すことができます。XML ドキュメントからクエリオブジェクトを生成します。データベーステーブルでクエリを実行し、使用する注文の割引率を決めます。クエリオブクエリを使用して合計額を計算した後、割り引き価格を計算します。レシートを XML ドキュメントとして生成します。この例では、処理段階の結果を表示して、実行した内容を示します。xml ドキュメントは次のような構造になっています。ルート要素は順番が指定されており、1 つの属性 id を持っています。複数の項目要素を含んでいる 1 つの項目要素があります。--- ファイルを XML ドキュメントオブジェクトに変換します。--- アカウント番号を抽出します。--- 注文情報を表示します。--- 注文をクエリオブジェクトに処理します。--- 注文クエリを表示します。--- 合計と割引額を計算します。--- 正価と割引後の価格を表示します。--- 作成されたレシートを表示します。
コードの確認
次の表で、前述の CFML コードについて説明します。簡略化するために、処理結果を表示するコードは含まれていません。ファイルから XML を読み取り、XML ドキュメントオブジェクトに変換します。XML ドキュメントオブジェクトをクエリオブジェクトに変換します。この場合、割引率を 10% に設定します。それ以外の場合は、割引率を 0% に設定します。注文を受けたアイテムの割引率を計算する前に、クエリオブクエリと SUM 演算子を使用して合計金額を計算します。その後で、合計に割引を適用します。クエリの結果は、1 つの値、つまり合計金額です。XML ドキュメントオブジェクトをレシートとして作成します。このレシートは、receipt というルート要素を持っています。ルート要素は、属性としてレシート番号を持ちます。次のセクションでは、次の簡単な XML ドキュメントの基本ビューとノードビューについて説明します。この章のほとんどの例では、このドキュメントを使用します。実際、XML ドキュメントオブジェクトとは DOM オブジェクトを表現したものです。DOM ノードビューでは、ドキュメントはノードの階層から構成されています。各ノードには、DOM ノードタイプ、ノード名、およびノード値があります。ノードタイプには、要素、コメント、テキストなどが含まれています。DOM では、ドキュメントオブジェクトと、それに含まれる各要素が、さまざまなタイプの複数のノードに構造化され、基本ビューよりも詳細なドキュメント構造となります。たとえば、XML コメントがテキストのブロック内にある場合、DOM ノードビューには XML コメントのテキスト内の位置が示されますが、基本ビューには示されません。このドキュメントでは、ノードビューや DOM メソッドおよびプロパティの使用方法について詳しく説明していません。ColdFusion MX エンタープライズ版では、メールサーバーのフェイルオーバーと、追加のメール配達オプションをサポートしています。スプールアーキテクチャでは、cfmail タグがアプリケーションページ内で処理されても、生成されたメッセージはすぐには送信されない可能性があります。ColdFusion の処理が非常にビジーの場合、またはキューが大量にある場合は、リクエスト実行後しばらくしてから送信されます。
[メールサーバーの設定] 領域
次の表で、基本的なメールサーバーの設定について説明します。ダイナミック SMTP メールメッセージを送信するための有効なメールサーバー名を入力します。[メールサーバーの接続の確認]指定したメールサーバーに ColdFusion MX から接続できるかどうかを、このフォームの送信後に確認するには、このオプションを選択します。このオプションを使用するかどうかにかかわらず、テストメッセージを送信してメールサーバーへの接続が機能することを確認する必要があります。メールサーバーを実行するポート番号を入力します。正しいポート番号がわからない場合は、サーバー管理者に確認してください。
[バックアップメールサーバー] (エンタープライズ版のみ)
SMTP メールメッセージを送信するためのバックアップサーバーを入力します (省略および複数指定も可)
複数のサーバーを指定する場合は、カンマで区切ります。メールサーバーに認証が必要な場合は、メールサーバーの前にユーザー名とパスワードを付けて、<ユーザー名>:<パスワード>@<メールサーバーアドレス> の形式で指定します。デフォルト (25) 以外のポート番号を使用するには、<メールサーバーアドレス>:<ポート番号> を指定します。[メールサーバーへの接続を維持します]
(エンタープライズ版のみ)
メールメッセージの送信後に、メールサーバーへの接続を開いたままにしておくには、このオプションを選択します。このオプションが有効になっていると、複数のメッセージを配達する際にパフォーマンスを向上させることができます。ColdFusion MX がメールサーバーからのレスポンスを待つ際のタイムアウトまでの時間を秒単位で指定します。
[メールスプールの設定] 領域
次の表で、メールサーバーのスプールの設定について説明します。スプールされたメールがメールサーバーによって処理される間隔を秒単位で指定します。
(エンタープライズ版のみ)
スプールされたメールを配達するために同時に使用するスレッド数の最大値を入力します。[配達されるメールメッセージをスプールします]
(メモリへのスプールはエンタープライズ版のみ)
送信メールメッセージをメールスプーラに送るには、このオプションを選択します。ColdFusion MX エンタープライズ版では、ディスク (低速であるがシャットダウンしてもメッセージは保持される) またはメモリ (高速であるがシャットダウンするとメッセージは失われる) にメッセージをスプールすることができます。cfmail タグでは、この設定に優先する指定が可能です。[メモリにスプールできるメッセージの最大数]
(エンタープライズ版のみ)
この数を越えるとディスクへのスプールに切り替わります。
[メールロギングの設定] 領域
次の表の説明に従って、電子メールログ処理の基本設定を指定します。[エラーログの厳格度]ドロップダウンリストから、ログファイルに書き込む SMTP 関連エラーメッセージのタイプを選択します。これには次のオプションがあります。すべての電子メールメッセージの [宛先]、[差出人]、[件名] フィールドをログファイルに保存するには、このオプションを選択します。ColdFusion MX は、送信済みメールおよびメールエラーログを次のディレクトリに書き込みます。次の表は、電子メールログファイルを示します。送信済み電子メールメッセージを記録します。一般的な電子メールエラーを記録します。次の表の説明に従って、メール文字セットのデフォルトの設定を選択します。ドロップダウンリストボックスから、cfmail タグで使用されるデフォルトの文字セットを選択します。使用する電子メールクライアントのほとんどで特定の文字セットが使用される場合は、この設定によって、ロケール固有の特定の文字セットに切り替えることができます。[イベントゲートウェイ] セクションには、次のページがあります。次の表は、設定項目を示します。サービスを有効化するかどうかを指定します。この設定を変更すると、サービスが再起動します。イベントが到着したときに ColdFusion 関数を実行するために使用されるスレッドの最大数を指定します。大きい数値を設定するほど、リソースの消費量は大きくなりますが、スループットは向上します。[キューに入れるイベントの最大数]イベントキューに格納できるイベントの最大数を指定します。キューの長さがこの値を超えると、ゲートウェイのイベントは処理キューに追加されません。[ゲートウェイタイプ] ページでは、そのシステム上で使用可能なゲートウェイのタイプを設定できます。タイプの設定後は、設定したタイプのゲートウェイインスタンスをいくつでも作成できます。SMS メッセージを送信および受信するために使用します。サンプルのゲートウェイタイプです。次のタイプがあります。次の表は、設定項目を示します。
イベントゲートウェイインスタンスの名前
イベントゲートウェイのタイプ
着信メッセージを処理するリスナ CFC (複数の場合あり) の絶対パス
選択したイベントゲートウェイインスタンスで必要となる場合に指定します。
イベントゲートウェイの起動ステータス
次のいずれかです。手動 ColdFusion の起動時にはイベントゲートウェイを起動しませんが、[ゲートウェイインスタンス] ページから起動できます。無効 イベントゲートウェイを起動できないようにします。
ビルトイン Web サーバーの使用
本稼動環境用ではありませんが、ビルトイン Web サーバーは次のような場合に特に便利です。すべての Web サーバーは何らかの TCP/IP ポートをリスンしており、URL にはそのポートの指定を含めることができます。サーバー設定のデフォルトでは、ビルトイン Web サーバーはポート 8500 をリスンします。マルチサーバー設定の場合、ビルトイン Web サーバーのデフォルトポートは 8300 です。メモ: UNIX オペレーティングシステムでは、URL の大文字と小文字が区別されます。インストール中にビルトイン Web サーバーを有効にする場合、ポートが既に使用されていると、インストーラは次に大きな番号の使用可能なポートを自動的に検索し、そのポートを使用するようにビルトイン Web サーバーを設定します。メモ: マルチサーバー設定を使用して ColdFusion MX エンタープライズ版をインストールすると、外部 Web サーバーの使用を選択した場合でも、インストールウィザードによって必ずビルトイン Web サーバーが設定されます。ビルトイン Web サーバーを使用する場合は、次の点に留意してください。ビルトイン Web サーバーを選択してしまった場合、インストール後に外部 Web サーバーを設定するには、手動で Web サーバー設定ツールを実行する必要があります。Web サーバー設定ツールの詳細については、Web サーバーの設定を参照してください。xml" ファイル) に仮想マッピングを定義します。
クラスタリングの有効化によるロードバランスとフェイルオーバーの実現
"ロードバランス" とはエンタープライズレベルの機能で、アプリケーションサーバーがクラスタ内にある複数のサーバーインスタンスへと自動的にリクエストを分散させることです。また、クラスタリングを使用すると、元のサーバーインスタンスが停止した場合でも、動作中の他のサーバーインスタンスへとアプリケーションサーバーがリクエストを転送できます。JRun4 を実行している場合は JMC でクラスタを作成することもできます。ロードバランスとフェイルオーバーを実現するには、同じ ColdFusion アプリケーションおよび設定内容を複数のサーバーインスタンスにデプロイし、それらのインスタンスを 1 つのクラスタに追加します。各インスタンスとも、デプロイするアプリケーションおよび設定するリソース (データソース、Verity コレクション、マッピングなど) を同じにする必要があります。Web サーバーコネクタは、ロードバランスの自動処理と、サーバーインスタンスが動作を停止した場合にリクエストを別のサーバーインスタンスへと切り替えることで、パフォーマンスと安定性を最適化します。メモ: クラスタリングでは Jini ネットワークテクノロジーを使用するため、ネットワークに接続していなければクラスタリングは動作しません。最大限のフェイルオーバー保護を実現するには、1 つのクラスタ内で複数台のコンピュータを使用してください。ただし、各コンピュータごとに個別の ColdFusion MX エンタープライズ版ライセンスを購入する必要があります。メモ: 30 日間の試用期間中に複数サーバーインスタンスを設定してテストを実施し、期限後に試用バージョンから開発者バージョンに切り替えた場合は、クラスタが正常に機能しなくなる可能性があります。クラスタ内のサーバーインスタンスでセッションフェイルオーバーを実装するには、各サーバーインスタンスについてセッション複製を有効化する必要があります。セッション複製は、クラスタ内のサーバーインスタンス間でセッション情報をリアルタイムに調整する機能です。セッション複製を有効にすると、現在のサーバーが使用不可能な場合に、動作中の他のサーバーへと JRun がリクエストを自動的に転送します。メモ: セッション複製を使用するクラスタの場合、セッションデータは、変化するたびにクラスタ内の他の各サーバーへとコピーされます。したがって、セッションスコープに大量の情報を格納していると、この動作のためにパフォーマンスが低下する可能性があります。セッションスコープに格納する情報が大量になると考えられる場合は、その情報をデータベース内のクライアント変数に格納することを検討してください。
ロードバランスとフェイルオーバーのために、サーバーインスタンスのクラスタを設定するには :
アプリケーションと、そのアプリケーションに必要なデータソースを作成します。[J2EE アーカイブ] ページで、アプリケーション、アプリケーションの CFM ページ、必要なデータソース、その他の設定を含んだ EAR ファイルを作成します。[エンタープライズマネージャ]-[インスタンスマネージャ] を選択します。追加サーバーインスタンスの定義の説明に従って、クラスタで使用する各サーバーインスタンスを作成します。上で作成したアーカイブファイルを、必ず [EAR/WAR からの作成] フィールドに指定してください。(オプション) [リモートインスタンスの登録] ボタンをクリックして既存のリモートサーバーインスタンスを定義し、それらをクラスタに追加できるようにします。リモートサーバーを使用する場合は、ローカルのサーバーインスタンスと同じアプリケーションと設定がそれらに含まれていることを確認してください。メモ: 1 つのサーバーを複数のクラスタに参加させることはできません。リモートインスタンスをクラスタに追加する際は、そのインスタンスが既に別のクラスタに属していないか確認してください。各サーバーインスタンスが起動していることを確認します。メモ: クラスタを管理するには、そのメンバーであるサーバーが少なくとも 1 つは動作している必要があります。[エンタープライズマネージャ]-[クラスタマネージャ] を選択します。クラスタに名前を付け、[追加] をクリックします。[設定済みクラスタ] 領域にクラスタが追加されます。クラスタ名または編集アイコンをクリックします。[クラスタの修正] 画面が表示されます。矢印アイコンを使用して、サーバーインスタンスをクラスタに追加します。(オプション) セッション複製を有効化し、クラスタアルゴリズムを選択します。メモ: "スティッキー" セッションが有効化されていると、コネクタによるリクエスト転送処理は、必ずしもクラスタアルゴリズムに厳密に従って動作しなくなります。[送信] をクリックします。[エンタープライズマネージャ]-[インスタンスマネージャ] を選択します。必要なリソース (データソースおよび Verity コレクションなど) が正しく定義されていることを確認します。セッション複製を使用する場合は、[メモリ変数] ページに移動して J2EE セッションを有効化します。クラスタ内のすべてのサーバーインスタンスについて、この操作を実行する必要があります。メモ: セッション複製をサポートするメモリ変数は、セッション変数のみです。特に、ColdFusion コンポーネントはセッション複製をサポートしていません。メモ: この手順は、同じサブネット上にないサーバーに対してのみ必要です。すべてのサーバーが同じサブネット上にある場合は必要ありません。クラスタ内の JRun サーバーをすべて再起動します。Web サーバー設定ツールを実行します。Web サイトを選択しますが、単一のサーバーインスタンスではなくクラスタを選択します。詳細については、Web サーバーの設定を参照してください。アプリケーションをテストし、ロードバランスとフェイルオーバーが意図したとおりに機能することを確認します。この章では、Verity コレクションの設定、保守、トラブルシューティングを行う Verity ユーティリティの使用について説明します。
この章の内容
cfinvoke タグは、CFC インスタンスのメソッドを呼び出したり、CFC メソッドを一時的に呼び出したりすることができます。この項では、次のトピックについて説明します。
CFC インスタンスのメソッドの呼び出し
cfinvoke タグを使用したコンポーネントメソッドの一時的な呼び出し
ダイナミックなメソッド名を使用したメソッドの呼び出し
CFC インスタンスのメソッドの呼び出し
CFC インスタンスのコンポーネントメソッドを呼び出すには、cfinvoke タグを使用して次の項目を指定します。任意のパラメータを指定します。パラメータ受け渡しの詳細については、cfinvoke タグを使用したメソッドへのパラメータの受け渡しを参照してください。コンポーネントメソッドが結果を返す場合は、結果を格納する変数の名前を returnVariable 属性に指定します。
cfinvoke タグを使用して、コンポーネントインスタンスのメソッドを呼び出すには :
cfc" という名前のファイルを作成します。--- コンポーネントのインスタンスを作成します。--- メソッドを呼び出します。ここでは、CFC はメソッド内に機能ロジックを含みます。このロジックは呼び出しページに結果を返すので、結果が呼び出しぺージに表示されます。この構造は表示機能からロジックを分離するため、通常は再利用性により優れたコードになります。このスコープには、CFC 本文 (初期化コードつまりコンストラクタコード) および CFC メソッドで定義された変数が含まれています。したがって、CFC インスタンスメソッドへの複数の呼び出しにまたがって保持できます。Variables スコープは含まれるページで使用でき、含まれるページで宣言された Variables スコープ変数はコンポーネントページで使用できます。var は変数を関数内プライベートにするものです。関数内ローカルな変数は常に var キーワードを使用して定義してください。cfm" ページで使用されるものです。cfm" ページは次の処理を行います。cfm" ページを表示すると、次の項目が表示されます。コンポーネントの継承と Super キーワードの 2 つは、構造化されたオブジェクト指向の ColdFusion コンポーネントを作成するための重要なツールです。コンポーネントの継承を使用すると、単一の基本コンポーネントを作成し、そのコードを、基本コンポーネントから派生する複数のサブクラスで再利用できます。普通、基本コンポーネントのほうが一般化した性質を持ち、サブコンポーネントのほうが目的に特化した性質を持ちます。各サブクラスでは基本コンポーネントのコードを再定義する必要はありませんが、必要に応じてコードを上書きできます。Super キーワードを使用すると、基本コンポーネントのメソッドをオーバーライドするコンポーネント内で、元の基本コンポーネントのメソッドを実行できます。このテクニックでは、メソッドの元のバージョンを呼び出す機能を失わずに、サブクラス化されたコンポーネントでメソッドを上書きできます。
コンポーネント継承の使用
コンポーネント継承を使用すると、コンポーネント間でコンポーネントのメソッドおよびプロパティをインポートできます。継承されたコンポーネントは、他のコンポーネントから継承したコンポーネントメソッドまたはプロパティを共有します。コンポーネント継承を使用するときに、継承ではコンポーネント間の "is a" リレーションシップを定義する必要があります。cfc" からメソッドとプロパティを継承しているとします。cfc" は基本コンポーネントであり、他のコンポーネントのベースとなります。
コンポーネント継承を使用するには :
cfm" ファイルを作成し、このページを、前の手順で作成したコンポーネントと同じディレクトリに保存します。この CFC は長さ 0 のファイルとして配布されます。これを使用すると、ColdFusion アプリケーションサーバーインスタンス内のすべての CFC へと継承される基本メソッドやプロパティを定義できます。cfc" ファイルが新しいバージョンに置換されます。cfc" ファイルにそれらのコードをコピーする必要があります。Super キーワードを使用すると、現在のコンポーネントの拡張元 CFC で定義されたバージョンのメソッドを参照することができます。cfm" ファイルを作成し、このページを、前の手順で作成したコンポーネントと同じディレクトリに保存します。含まれるページでは Super キーワードを使用できます。複数レベルの継承を使用する場合、Super キーワードは、現在のコンポーネントの直接の親へのアクセスだけに使用できます。この項の例では、チェーン内のメソッドを呼び出すことにより、この制限に対処する方法を示しています。ブール (論理) 演算子は、論理結合子および否定の演算を実行します。次の表で、ブール演算子について説明します。引数の値を反転します。次の表で、決定演算子について説明します。大文字と小文字を区別しないで、2 つの値の比較を行います。IS とは逆の決定動作です。大文字と小文字を区別しないで、2 つの値の比較を行います。右側の値に左側の値が含まれている場合は、true を返します。右側の値に左側の値が含まれていない場合は、true を返します。左側の値が右側の値よりも大きい場合は、true を返します。左側の値が右側の値よりも小さい場合は、true を返します。左側の値が右側の値よりも大きいか等しい場合は、true を返します。左側の値が右側の値よりも小さいか等しい場合は、true を返します。
決定演算子の代替表記法
次の表に示したとおり、一部の決定演算子を代替表記法で表記して、CFML をよりコンパクトにすることができます。
決定演算子のルール
決定演算子には、次のルールが適用されます。変換できる場合は、データの数値比較が実行されます。変換できない場合は、文字列比較が実行されます。このため、予期しない結果を生じる場合があります。この動作の詳細については、評価およびタイプ変換の問題を参照してください。ColdFusion の決定演算子は、大文字と小文字を区別せずに文字列を比較します。ColdFusion の決定演算子が文字列を比較する場合は、文字列の左から右に評価し、文字の順番に従ってそれぞれの位置で比較します。異なる文字が最初に現れた位置で、文字列の相対値を決めます。SOAP リクエストヘッダを取得します。
関数のシンタックス
ヘッダのネーム空間である文字列です。ヘッダの名前である文字列です。この関数は、Web サービスリクエストではないコンテキストで呼び出された場合、エラーを返します。
--- ヘッダを文字列として追加 - 必ずエラーを生成
関数のシンタックス
レスポンスを取得しようとする前に、まず Web サービスを起動する必要があります。
cfc" ファイルの場所と一致させなければ
delimiters パラメータ内のリストのトークンが文字列内に存在するかどうかを調べます。
文字列の index 位置で検出されたトークンの文字列
index の値が文字列内のトークンの数よりも大きい場合は空の文字列が返されます。
関数のシンタックス
文字列、または文字列を含んでいる変数です。検索対象の文字列を指定します。正の整数またはそれを含んでいる変数です。トークンの位置を表します。文字列、または文字列を含んでいる変数です。区切り文字の区切りリストです。要素は複数の文字で構成することができます。リストのデフォルトの区切り文字は、カンマです。次の例は、この関数の動作を示しています。例 A: 次のコードを検討します。この関数の呼び出しでは、区切り文字 ":;" を使用して、文字列から 2 番めの要素をリクエストしています。出力は次のようになります。例 B: 次のコードを検討します。出力は次のようになります。したがって、この関数では空白文字は string の区切り文字として使用されます。このコードの出力は次のようになります。ここでは関数によって 3 番めの区切り文字が検出され、その直前の、2 番めと 3 番めの区切り文字の間の部分文字列が返されます。例 C: 次のコードを検討します。出力は次のようになります。ここでは関数によって 2 番めの区切り文字が検出され、その直前の、最初の区切り文字と 2 番めの区切り文字の間の部分文字列が返されます。--- リスト内の要素の数が、返すために検索された要素の数以上であるかどうかを調べる --->
関数のシンタックス
文字列、または文字列を含んでいる変数です。radix で指定された基数で数値を表す文字列です。数値の自然対数を計算します。
数値の自然対数
関数のシンタックス
自然対数を計算する正の実数です。数値を入力すると、その値の E 乗、自然対数、および 10 を底とする対数が表示されます。文字列の右端から、指定した文字数分の文字列を返します。指定した文字列の最後 (または右端) から、指定した文字数分の文字列を返します。
関数のシンタックス
文字列、または文字列を含んでいる変数です。返す文字数を指定する正の整数です。
この文字列内の
してください。<p>テキストを入力してください。
<p>右端から何文字を表示しますか
期間を定義する日付時刻オブジェクトを作成します。
日付および時刻関数
関数のシンタックス
期間の時数を示す数値です。期間の分数を示す数値です。期間の秒数を示す数値です。特殊な日付時刻オブジェクトを作成します。このオブジェクトは、他の日付時刻オブジェクトに対して加算または減算を行う場合や、cfquery の cachedWithin 属性と共に使用する場合にのみ使用できます。cfquery の cachedWithin 属性を使用する場合、元のクエリーの日付がユーザーが定義した期間内であれば、キャッシュされたクエリーデータが使用されます。
--- キャッシュされたデータベース情報が過去 6 時間更新されていない場合、データベースを照会します。
関数のシンタックス
底 e に適用される指数です。他の底の累乗を計算するには対数演算子 (^) を使用します。<br>その数値の自然対数を求めるには、正の実数を入力する必要があります。10 を底とした対数を求めるには、正の実数値を入力する必要があります。数値を入力すると、その値の E 乗、自然対数、および 10 を底とする対数が表示されます。実数を整数に変換します。
関数のシンタックス
絶対値関数です。数値の絶対値は、その正負符号を除いた数値です。
数値の絶対値
関数のシンタックス
<p>数値の絶対値は、その正負符号を除いた数値です。すべてのゲートウェイのすべてのメッセージを処理する ColdFusion イベントキューの現在のサイズを返します。
イベントゲートウェイの開発
CFC への配信を待機している、ゲートウェイメッセージキュー内のメッセージの数 (整数)
このメソッドおよび getMaxQueueSize メソッドを使用して、イベントキューイングの度合いを制御したり、ゲートウェイ全体の問題を診断したりすることができます。addEvent メソッドがリスナ CFC に配信するメッセージをキューに入れることができない場合に、キューのサイズ、キューの最大サイズ、およびその他の情報を記録します。エラーメッセージ文字列を作成するための内部メソッドを使用します。
検索式の作成
検索式の作成には次のルールが適用されます。
大文字と小文字の区別
Verity では、大文字と小文字が混在した検索語が入力されたときだけ、大文字と小文字が区別されます。次のコードによりユーザー入力が小文字に変換されるため、大文字と小文字は区別されなくなります。
前置表記法と中置表記法
デフォルトでは、Verity は中置表記法を使用します。中置表記法では式内の優先度は暗黙的になります。たとえば、AND 演算子は OR 演算子よりも優先度が高くなります。エビデンス演算子の詳細については、エビデンス演算子を参照してください。前置表記法では、式の優先度は明示的に指定されます。前置表記法では、演算子を繰り返し記述せずに一度だけ記述し、括弧内に検索ターゲットをリストすることができます。たとえば、次の式は等価です。次の例は、前述の例を中置表記法で記述したものです。
式内のカンマ
式の中で複数の検索語を丸括弧で囲むときは、必ず各要素の間をカンマで区切ってください。空白は無視されます。式は、左から右へ読み取られます。ただし、丸括弧で囲まれた語句が最初に評価されます。ネストされた丸括弧の場合、検索エンジンは最も内側にある語句から処理を開始します。
式内の区切り文字
次の表で説明するように、検索式内のさまざまな要素を区切るには、山括弧 (< >)、二重引用符 (")、および円記号 (¥) を使用します。左山括弧と右山括弧は、演算子と修飾子を指定するために予約されています。単語が AND、OR、NOT などの演算子または修飾子として予約されていないかぎり、単語の検索には、式で二重引用符 (") を使用します。
演算子と修飾子
Verity には、これ以外にもさまざなまタイプの演算子および修飾子が多数あり、検索パラメータを詳細に設定することができます。演算子は、検索要素に適用されるロジックを表します。このロジックによって、検索されるドキュメントが満たす必要のある条件が定義されます。演算子は、検索の精度を高めたり、その結果に何らかの影響を与えたりするときに使用します。たとえば、検索を行うために HTML フォームを構築するものとします。このフォームでは、1 つの単語を検索できます。検索範囲をさまざまな方法で制限することによって、検索の精度を高めることができます。演算子は、クエリーを 1 つの文または段落に制限するときに利用でき、この場合、近接さに基づいた検索が行われます。通常、演算子は次のように明示的な検索で使用します。利用できる演算子タイプは、次のとおりです。
演算子のタイプ
検索要素の意味を組み合わせることによって、ドキュメント内の概念を識別します。コレクション内のフィールドを検索します。基本単語検索およびインテリジェント単語検索を指定します。ドキュメント内の単語の相対位置を指定します。検索要素によって返されたスコアを操作します。パーセンテージによるスコアの表示は、小数点以下第 4 位まで設定することができます。概念演算子は、検索要素の意味を組み合わせてドキュメント内の概念を識別します。概念演算子を使用して検索されたドキュメントは、適合度によってランク付けされます。次の表で、各概念演算子について説明します。指定された検索要素をすべて含んでいるドキュメントを選択します。指定された検索要素が少なくとも 1 つ存在していることが明らかなドキュメントを選択します。指定された検索要素が少なくとも 1 つ含まれているドキュメントを選択します。ドキュメントは、検出された検索要素の個数に基づいてランク付けされます。指定された検索要素をすべて含んでいるドキュメントを選択します。
取得したそれぞれのドキュメントにスコア 1
00 が割り当てられます。指定された検索要素が少なくとも 1 つ含まれているドキュメントを選択します。
取得したそれぞれのドキュメントにスコア 1
00 が割り当てられます。
ALL および OR からは同じ結果が取り出されますが、ANY を使用するクエリーには常にスコア 1
00 が割り当てられます。関係演算子は、コレクション内に定義された AUTHOR などのドキュメントフィールドを検索します。指定されたフィールド値を含んでいるドキュメントが返されます。関係演算子を使用して検索されたドキュメントは、適合度によってランク付けされません。また、関係演算子に MANY 修飾子は使用できません。次の演算子は、数値および日付の比較に使用します。より大きいか、または等しい。より小さいか、または等しい。たとえば、1999 ~ 2002 の範囲の値を含んでいるドキュメントを検索するには、次のいずれかの検索を実行します。PAGES という名前のドキュメントフィールドが定義されている場合、「PAGES < 5」と入力して検索すると 4 ページ以下のドキュメントを検索できます。次の関係演算子は、テキストを比較して単語および単語の一部を照合します。指定された単語または語句と、特定のドキュメントフィールド内に保管されている値が一致するものを検索することによって、ドキュメントを選択します。指定された検索要素がフィールド値と同じ順序で連続して現れている場合にかぎり、ドキュメントが選択されます。クエリー文字列と、特定のドキュメントフィールド内に保存されている値が一致するものを検索することによって、ドキュメントを選択します。指定されている検索要素がフィールド値と正確に一致した場合にかぎり、ドキュメントが選択されます。部分的な一致では、ドキュメントは選択されません。MATCHES 演算子を使用するときは、検索するフィールド名と、単語、語句、または数値を指定します。) と複数文字を表すアスタリスク (*) を文字列内で使用できます。例については、この表の直後に記載されているテキストを参照してください。指定された文字列と、特定のドキュメントフィールドに保管されている値の開始文字が一致するものを検索することによって、ドキュメントを選択します。指定された文字列と、特定のドキュメントフィールドに保管されている値の終了文字が一致するものを検索することによって、ドキュメントを選択します。指定されたクエリー文字列と、特定のドキュメントフィールド内の文字列の一部が一致するものを検索することによって、ドキュメントを選択します。たとえば、SOURCE という名前のドキュメントフィールドに次の値が含まれているものと想定します。ソースが Computer であるドキュメントを検索するには、次のように入力します。指定されたデータソース内に保存されている文字列に一致する文字列を検索するには、SUBSTRING 演算子を使用します。検索は、TEXT 列を含んでいるコレクションで行われ、さらに、CF_TITLE ドキュメントフィールド内の文字列 Utah を検索することによって絞り込まれます。ドキュメントフィールドは、cfindex タグ内の URL、TITLE、KEY に対して定義する値に対応している、すべてのコレクション内で定義されているデフォルト値です。クエリー結果は 5 行です。検索結果は 1 行です。エビデンス演算子を使用すると、基本単語検索またはインテリジェント単語検索を指定することができます。基本単語検索では、クエリー内で指定されている 1 つの単語、または複数の単語のみを含むドキュメントが検索されます。インテリジェント単語検索では、クエリー単語を拡張して拡張単語リストが作成されるので、クエリー単語が語尾変化した語を含むドキュメントを検索することができます。MANY 修飾子を使用しないかぎり、エビデンス演算子を使用して検索されたドキュメントが適合度によってランク付けされることはありません。次の表で、エビデンス演算子について説明します。入力された単語とその語尾変化した語句を含めるように検索を拡張します。単純なクエリー内では、STEM 演算子は、自動的に、暗黙的に処理されます。検索文字列に含まれているワイルドカード文字列に一致する語句を検索します。) などのワイルドカード仕様を自動的に示します。入力された特定の語句の 1 つまたは複数のインスタンスを含んでいるドキュメントを選択する基本単語検索を実行します。単純なクエリー内では、WORD 演算子は、自動的に、暗黙的に処理されます。入力された単語とその同意語を含めるように検索を拡張します。デフォルトでは、コレクションにはシソーラス機能は含まれていません。この機能を使用するには、シソーラスを構築する必要があります。入力された単語とその単語に似た名前を持つ複数の単語、または文字パターンが類似する単語を含めるように検索を拡張します。デフォルトにより、コレクションは、名前の似たインデックスを持つことができません。この機能を使用するには、名前の似たインデックスを構築する必要があります。入力された単語とクエリー単語に類似した単語を含めるように単語を拡張します。この演算子を使用すると、類似した単語を識別するために、"近似のパターンマッチング" が実行されます。演算子名のオプションの N 変数は、クエリー単語とそれに一致する単語の間で発生するエラーの最大数、つまりエラー範囲と呼ばれる値を表します。N を指定しない場合は、デフォルトのエラー範囲は 2 です。エビデンス演算子を使用した例は次のとおりです。近接演算子は、ドキュメント内の特定の単語の相対位置を指定します。ドキュメントを取り出すには、指定された単語が同じ語句、段落、または文の中に含まれている必要があります。NEAR および NEAR/N 演算子の場合、検索されたドキュメントは、指定された単語の近接さに基づいた適合度によってランク付けされます。近接演算子はネストすることができます。次の表で、近接演算子について説明します。指定された検索語を含んでいるドキュメントを選択します。ドキュメント内の検索語が互いに近い距離にあるほど、ドキュメントのスコアは高くなります。できるだけ狭い領域にすべての検索語が集中しているドキュメントが常に最高スコアを獲得します。検索語が、互いに 1000 語の範囲内で検出されない場合、そのドキュメントは選択されません。検索の近接度を制御するには、NEAR/N を使用します。複数の検索語が互いに N 個の単語の範囲内に含まれているドキュメントを選択します。ドキュメント内の検索語が互いに近い距離にあるほど、ドキュメントのスコアは高くなります。N の値が同じである場合は、次のように、NEAR/N の複数のインスタンスを使用して複数の検索語を指定することができます。指定する単語がすべて同じ段落内に含まれているドキュメントを選択します。段落内の 3 個以上の単語または語句を検索するには、各単語または句の間に PARAGRAPH 演算子を入れる必要があります。指定された語句を含んでいるドキュメントを選択します。特定の順序で発生する複数の単語をグループ化したものが語句です。指定された単語がすべて同じセンテンス内に含まれているドキュメントを選択します。1 つまたは複数のドキュメントゾーンに指定された値を含んでいるドキュメントを選択します。ドキュメントゾーンは、ドキュメントの要約、日付、本文などのドキュメントの領域を表します。特定の条件が設定された 1 つまたは複数のゾーン内でのみ単語検索を行うには、IN 演算子を WHEN 演算子とともに使用します。近接演算子を使用した例を次のとおりです。IN 近接演算子を使用した XML ドキュメントの検索例については、ゾーン検索を参照してください。スコア演算子は、Verity 検索エンジンによる、検索されたドキュメントのスコアの計算方法を指定します。
返された検索要素に関連付けられる最高スコアは 1
スコアの表示は、小数点以下第 4 位まで設定することができます。スコア演算子を使用すると、Verity 検索エンジンによって、まず、ドキュメント内で検出された各検索要素のスコアがそれぞれ計算され、次に、これらの個々の要素のスコアに対して数学演算が実行された結果、各ドキュメントの最終スコアが算出されます。ドキュメントのスコアは、結果列として利用できます。SCORE 結果列は、取り出されたドキュメントの関連スコアを得るために使用できます。次の表で、スコア演算子について説明します。要素のスコアが 0 以外の値の場合に、そのスコアを強制的に 1 にします。YESNO 演算子を使用して、適合度によるランク付けを行わないようにすることもできます。クエリーと一致する各ドキュメントの検索要素のスコアを乗算します。クエリーと一致した各ドキュメント内の検索要素のスコアを最高値 1 になるまで加算します。クエリーの検索要素のスコアの補数を取る (1 から減算する) ことによって、クエリーと一致するドキュメントのスコアを計算します。新しいスコアは、1 から検索要素の元のスコアを引いた値になります。
検索要素の元のスコアが 0
演算子の標準動作を変更するには、修飾子を演算子と組み合わせて使用します。次の表で、使用可能な修飾子について説明します。大文字と小文字を区別する検索を指定します。通常、Verity では、すべて大文字またはすべて小文字で入力された検索テキストに対しては大文字と小文字を区別しない検索が行われ、大文字と小文字が混在した検索文字列に対しては大文字と小文字の区別をした検索が行われます。ドキュメント内の単語、語尾変化した語、または語句の密度を算出し、検索されたドキュメントの適合度ランク付けスコアを生成します。次の演算子と併用します。MANY 修飾子は次の演算子とは使用できません。指定された単語または句を含んでいるドキュメントを除外します。AND および OR 演算子とのみ組み合わせて使用できます。クエリー内に指定した順序で検索要素が表示されるように指定します。次の演算子と併用します。ORDER 修飾子は演算子の前に配置してください。メソッドの引数および戻り値は、単純な配列やオブジェクトなどの有効な Java タイプであればどのようなタイプでもかまいません。ColdFusion では、文字列を引数として渡した場合は適切に変換されますが、文字列を戻り値として受け取った場合は適切に変換されません。メモ: cfdump タグは、オブジェクトのパブリックメソッドおよびデータを表示します。
基本的なオブジェクトテクニックの使用
次の項では、Java オブジェクトの呼び出し方法について説明します。
オブジェクトの呼び出し
次に例を示します。クラスは cfobject タグによってロードされますが、インスタンスオブジェクトは作成されません。スタティックメソッドおよびフィールドは、cfobject の呼び出し直後にアクセス可能です。そのオブジェクトに対して init メソッドを呼び出す前にスタティックでないパブリックメソッドを呼び出すと、ColdFusion によってデフォルトコンストラクタの暗黙的な呼び出しが行われます。したがって、Java オブジェクトに init メソッドがある場合は、名前が重複するため、そのオブジェクトの init メソッドを呼び出すことはできません。オブジェクトに継続的にアクセスするには、init 関数を使用する必要があります。これは、init 関数がオブジェクトのインスタンスへのリファレンスを返すのに対し、cfobject はそれを返さないためです。cfobject を使用して作成されたオブジェクト、または他のオブジェクトによって返されたオブジェクトは、ColdFusion ページ実行の最後に暗黙的に解放されます。
プロパティの使用
オブジェクトが次のいずれかのアクションを実行する場合は、次のコーディングシンタックスを使用してプロパティにアクセスします。プロパティを public プロパティとして公開します。
プロパティを設定するには :
プロパティを取得するには :
メモ: ColdFusion では、プロパティおよびメソッド名を大文字に統一する必要はありません。
メソッドの呼び出し
オブジェクトメソッドは通常、0 個以上の引数を取ります。メソッドには、値を返すものと返さないものがあります。次の方法を使用してメソッドを呼び出します。メソッドに引数がない場合は、次の cfset タグのように、メソッド名に空の括弧を続けます。メソッドに 1 つ以上の引数がある場合は括弧に引数を入れます。次の例のように、整数引数と文字列引数が 1 つずつある場合はそれらをカンマで区切ります。メモ: Java メソッドを呼び出す場合は、使用するデータのタイプが重要です。したがって、メソッドを明示的に呼び出さなくても、プロパティを直接参照することでプロパティの設定および取得を行うことができます。
ネストされたオブジェクトの呼び出し
ColdFusion では、ネストされた (スコープが指定されている) オブジェクトの呼び出しがサポートされています。たとえば、オブジェクトメソッドが他のオブジェクトを返し、そのオブジェクト上のプロパティまたはメソッドを呼び出す必要がある場合は、次のシンタックスを使用できます。
コードの確認
次の表で、前述の CFML コードについて説明します。アプリケーション名を myApp と指定し、セッション管理を有効にします。名前パラメータを URL に渡します。name パラメータはヘッダに表示され、3 つの変数は本文に表示されます。
コードの確認
次の表で、前述の JSP コードについて説明します (わかりやすくするために改行を追加しています)
util パッケージをインポートします。このパッケージには、JSP ページに必要なメソッドが含まれています。このパラメータ名は大文字と小文字が区別されます。JSP ページでは、CFML ページと共有するすべての Request スコープ変数を参照するためには、すべて小文字の名前を使用する必要があります。CFML ページでは大文字も小文字も使用できますが、JSP ページで大文字と小文字が混在する名前やすべて大文字を使用した場合、変数は ColdFusion ページの値を取得しません。
コードの確認
次の表で、前述の JSP コードについて説明します。util パッケージをインポートします。このパッケージには、JSP ページに必要なメソッドが含まれています。JSP ページでは、CFML ページと共有するすべての Request スコープ変数を参照するためには、すべて小文字の名前を使用する必要があります。CFML ページでは大文字も小文字も使用できますが、JSP ページで大文字と小文字が混在する名前やすべて大文字を使用した場合、JSP ページはその変数を ColdFusion ページと共有しません。名前パラメータはヘッダに表示され、3 つの変数は本文に表示されます。
コードの確認
次の表で、前述の CFML コードについて説明します。アプリケーション名を myApp と指定し、セッション管理を有効にします。このパラメータ名は大文字と小文字が区別されません。CFML ページの変数名はすべて大文字小文字を区別しません。
ディレクトリスキーマの表示
LDAP v3 では、ルート DN 内の特別なエントリにディレクトリのスキーマ情報が提供されます。次の ColdFusion クエリーは、ディレクトリスキーマの入手方法と表示方法を示しています。スキーマのオブジェクトクラスおよび属性タイプ定義の情報を表示します。オブジェクトクラスの場合は、クラス名、上位クラス、必須属性タイプ、およびオプション属性タイプが表示されます。属性タイプの場合は、タイプ名、タイプについての説明、および単一値かまたは多値かが表示されます。この例では、スキーマ内のすべての情報は表示されません。たとえば、一致ルールは表示されません。また、オブジェクトクラス ID、属性タイプ ID、属性タイプシンタックス ID、またはオブジェクトクラスの説明も表示されません。0 では実行できません。x サーバーで動作します。
LDAP ディレクトリのスキーマを表示するには :
次のような新規ファイルを作成します。cfldap タグで、ユーザー ID およびパスワードの指定が必要になる場合もあります。
コードの確認
次の表で、前述のコードについて説明します。各オブジェクトクラスのオブジェクトクラス名、上位クラス、必須属性、およびオプション属性が表形式で表示されます。スキーマには、カンマ区切りのリストとしてすべてのオブジェクトクラスの定義が含まれるため、コードはリストタイプの cfloop タグを使用します。
前後のスペースをすべて削除したら、Find 関数のクラス定義フィールドキーワードを使用して、オブジェクトクラス ID を含む必要なフィールドの開始位置を取得します (ID は表示されません)
フィールド値を表示します。最上位のオブジェクトクラスには、上位オブジェクトクラスのエントリがありません。このような特殊な場合は、suploc 位置変数をテストして処理します。値が 0 でない場合は通常どおりに処理し、値が 0 の場合は "なし" を出力します。オプション属性がない可能性があります。この場合は上位クラスと同様に処理します。必須属性の位置を計算する場合、フィールドが存在するときはオプション属性の位置を使用します。オブジェクトクラスの場合と同じタイプの計算を属性タイプの計算で実行します。" というテキストが含まれていることがあります。このテキストには、属性エントリの区切り文字としても使用されるカンマが含まれています。属性定義には、コードに表示されないが、他のフィールドの位置の計算にこの位置を使用する、数値シンタックス識別子が含まれます。
フィールドおよび入力パラメータの定義、変更、使用
Report Builder は、次のとおり、クエリーフィールド、入力パラメータ、および計算されるフィールドを介した変数データをサポートしています。クエリーフィールド : レポートに関連付けられたデータベース結果セットの列にマップします。関連付けられたデータベースクエリーの各列に対して 1 つのクエリーフィールドを定義します。計算されるフィールド : レポート内の複数の詳細行の分析または合計算出を実行します。ColdFusion はレポート生成時に、計算されるフィールドの値を動的に生成します。オプションで、新しいレポート、ページ、列、またはグループを使って値の再計算を実行することができます。入力パラメータ : cfreportparam タグを使って実行時にレポートに渡す、またはメインレポートからサブレポートに渡すデータフィールドを指定します。入力パラメータをレポートバンドに直接配置することも、計算されるフィールドへの入力として使用することもできます。
クエリーフィールドを定義するには :
[フィールドとパラメータ] タブをクリックします。[クエリーフィールド] をクリックします。タブの一番上にあるプラス記号 (+) をクリックします。[クエリーフィールドの追加] ダイアログボックスが表示されます。名前フィールドに値を入力します。これは、対応する cfquery ステートメントの列名と一致する必要があります。ピリオドを含むことはできません。デフォルトのラベルを入力します。次のとおり、対応するデータベース列のデータタイプを指定します。
メモ: クエリービルダーにより、結果セット内のすべてのデータベース列に対し、自動的にクエリーフィールドが定義されます (拡張クエリービルダーには適用されません)
計算されるフィールドを定義するには :
[フィールドとパラメータ] タブをクリックします。[計算されるフィールド] をクリックします。タブの一番上にあるプラス記号 (+) をクリックします。[計算されるフィールドの追加] ダイアログボックスが表示されます。名前、デフォルトのラベルテキスト、およびデータタイプを指定します。データタイプオプションは、クエリーフィールドの場合と同じです。計算オプションを指定します。「なし」を指定した場合、通常は [計算の対象:] フィールドを使用して動的な式を指定します。「なし」([計算の対象:] フィールドで使用) および「システム」(カスタマイズされたスクリプトレットクラスを記述) を除いた計算のタイプが、グループ、ページ、およびレポートの合計に使用されます。[計算の対象:] : フィールドまたは式を指定します。] ボタンをクリックして、式ビルダーを表示します。[初期値] : 計算されるフィールドの初期値を指定します。次のとおり、リセットオプションを指定します。[フィールドをリセット] : 計算されるフィールドの値をリセットするタイミングを指定します。[リセットするグループ] : [フィールドをリセット] が [グループ] に設定された場合、グループの解除によってリセットがトリガされるグループをこのフィールドに指定します。計算されるフィールドの詳細については、Report Builder のオンラインヘルプの「[計算されるフィールドの追加] ダイアログボックス」の説明および式と式ビルダーを参照してください。
入力パラメータを定義するには :
[フィールドとパラメータ] タブをクリックします。[入力パラメータ] をクリックします。タブの一番上にあるプラス記号 (+) をクリックします。[入力パラメータの追加] ダイアログボックスが表示されます。名前フィールドに値を入力します。デフォルトのラベルテキストを入力します。データタイプとデフォルトの値を指定します。データタイプオプションは、クエリーフィールドの場合と同じです。入力パラメータの使用法の詳細については、実行時に変数やその他のデータを渡すための入力パラメータの使用およびサブレポートの使用を参照してください。
クエリーフィールド、計算されるフィールド、または入力パラメータをレポートバンドに配置するには :
[フィールドとパラメータ] タブのラジオボタンを使用して、ラベル、フィールド、または両方を配置するかどうかを指定します。クエリーフィールド、計算されるフィールド、または入力パラメータを [フィールドとパラメータ] タブから適切なレポートバンドにドラッグします。クエリーフィールド、計算されるフィールド、または入力パラメータを、特定のバンドにドラッグします。(オプション) [プロパティ] シートを使って、フィールド表示をカスタマイズします。emp_salary の合計を算出する計算されるフィールドが存在するとします。この計算されるフィールドは、各グループでリセットされます。emp_salary を配置し、関連付けた計算されるフィールドをグループフッタバンドに配置します。
新規のタグ、属性、および値
属性または値
インデックスループは、数値で指定された回数だけ繰り返されます。インデックスループは FOR ループとも呼ばれます。インデックスの値です。この値は最初 from 属性の値に設定され、step 属性の値ずつ、to 属性の値まで加算または減算されます。インデックスの開始値です。インデックスの終了値です。インデックス値を加算または減算する数値です。インデックスループの from 属性と to 属性に整数値以外の値を指定すると、予期せぬ結果になる可能性があります。これは、浮動小数点数の内部表現に関するプログラミング言語の問題です。ループブロック内、またはこの値を評価する式内でこの値を変更しても、ループが実行される回数に影響はありません。このループの出力は次のとおりです。ループインデックスは 1 です。ループインデックスは 2 です。ループインデックスは 3 です。ループインデックスは 4 です。ループインデックスは 5 です。j の値はループが繰り返されるたびに減算されます。to の値はループに入る前に j からコピーされたものなので、この減算の影響を受けません。このループの出力は次のとおりです。ループインデックスは 1 です。ループインデックスは 2 です。ループインデックスは 3 です。ループインデックスは 4 です。前述のように、j の値はループが繰り返されるたびに減算されますが、to 値は j がループに入る前に作成されたコピーであるため影響はありません。この例では、step にはデフォルト値 1 が使用されています。次のコードでは、インデックス値が減算されます。このループの出力は次のとおりです。ループインデックスは 5 です。ループインデックスは 4 です。ループインデックスは 3 です。ループインデックスは 2 です。ループインデックスは 1 です。ゲートウェイ設定ファイルで非同期または同期メッセージモードを指定することができます。非同期モードを指定した場合、sendGatewayMessage 関数は、SMSC に送信するために、ゲートウェイによってメッセージがサービスコードに送信されたときに空の文字列を返します。ColdFusion は、このポイントの後で発生する可能性のあるエラー、たとえば、ゲートウェイによって SMSC に送信されたメッセージがタイムアウトになった場合やゲートウェイがエラー応答を取得した場合などを記録します。アプリケーションがエラーについて通知を受けることはありません。メッセージが正常に送信されると、この関数は SMPP メッセージ ID 文字列を返します。エラーが発生した場合、関数はエラー文字列を返します。同期モードは、メッセージが SMSC に届いたのかどうかをアプリケーションが確認する必要がある場合に使用します。アプリケーションが受信の確認を必要とする場合にも、同期モードを使用します。この例は、空以外の戻り値をチェックし、SMS によって返されるメッセージ番号を表示します。SendGatewayMessage 関数で指定したゲートウェイを変更する場合、ゲートウェイの設定ファイルで同期モードが指定されていることを確認します。/* メッセージを含む構造体を作成します。
着信メッセージの処理
こうした PDU は、ゲートウェイに対して、次のいずれかのタイプのメッセージを配信するよう要求します。
ユーザーまたはアプリケーションにより生成されたテキストメッセージ
イベントゲートウェイは、オブジェクトをイベントゲートウェイサービスに送信します。このサービスはリスナ CFC にオブジェクトを配信します。
メッセージ内容の文字セットまたは文字以外のデータタイプ
メッセージの送信先アドレス
メッセージの内容
メッセージの優先度レベル
他のネットワークでは使用しません。
配信の受信または承認について要求されるタイプ (存在する場合)
このメッセージの送信元デバイスのアドレス
メッセージの送信元デバイスのアドレス
MESSAGE フィールドからメッセージを取り出し、アプリケーションに対し必要に応じてメッセージを処理します。必要な場合、リスナは次の 2 つのフィールドを使用して、要求されたアクションを判別します。Message フィールドにメッセージが含まれているのか、次の種類のメッセージ処理応答が含まれているのかどうかを識別します。MESSAGE フィールドには承認または受信情報が含まれます。ショートメッセージテキストには、元のメッセージのメッセージ ID、送信および配信されたメッセージ (配布リストに送信されたメッセージ) の数、メッセージが送信/配信または処理された日時、メッセージ処理、ネットワーク固有のエラーコード (利用可能な場合)、およびメッセージの最初の 20 バイトが含まれています。
SME 配信承認 : ユーザーがショートメッセージを受け取った受信デバイスからの表示
TDMA および CDMA ワイヤレスネットワークでのみサポートされています。
SME 手動/ユーザー承認 : アプリケーションリクエストメッセージに応答して送信される、アプリケーション生成の返信メッセージ
TDMA および CDMA ワイヤレスネットワークでのみサポートされています。
中間配信通知 : まだ配信されていないメッセージのステータスに関するプロバイダ固有の通知
このメッセージの SMSC 再試行ライフタイム中に送信されます。中間通知をサポートするかどうかは、SMSC の実装と SMSC サービスプロバイダに依存します。詳細については、プロバイダのドキュメントを参照してください。メッセージを送信する際、発信メッセージの registered_delivery パラメータでメッセージ処理応答の任意の組み合わせをリクエストできます。アプリケーションが応答をリクエストする場合、リスナ CFC は、必要に応じてこうしたメッセージを処理する準備を行う必要があります。
アプリケーションは、SME 配信承認または SME 手動/ユーザー承認に対するリクエストに応答することができます (その他の通知タイプは、SMSC によってのみ送信されます)
こうした通知タイプの詳細については、SMS 3
4 の仕様を参照してください。
着信メッセージの処理例
このサンプルにより、SMS メッセージの受信および応答に必要な最低限のコードが示されます。Params 配列に追加されたパラメータ名を使用します。
Flash アプリケーションに返される、クエリーオブジェクト内のレコードに増分値を設定するには、Flash
次の表に、Flash スコープに含まれる変数を示します。
Flash アプリケーションから渡されるパラメータを含む配列
パラメータを渡さなかった場合、Flash
Flash から渡されたパラメータへのアクセスを参照してください。Flash に結果を返す場合を参照してください。
Flash アプリケーションに対し、1 つのレコードセットで返されるレコードの数
Flash に順番にレコードを返す場合を参照してください。
サービス関数の引数
名前付き配列または連想配列
クエリーオブジェクト (Flash アプリケーションのみに返された場合
また、データタイプに関して次の項目も検討する必要があります。サーバー上の文字列データタイプが ActionScript で有効な数値を表す場合、Flash は、そのデータタイプを必要に応じて数値に自動変換することができます。複数の独立した値を Flash アプリケーションに返すには、こうした値を、Flash オブジェクト、配列、または連想配列に変換する複合変数に入れます。こうすると、すべての必須データを保持できます。単一の変数を返し、Flash アプリケーションでその要素にアクセスします。
Flash から渡されたパラメータへのアクセス
Flash から値を渡された方法によって、順序配列のシンタックスまたは構造体名のシンタックスを使用して配列値にアクセスします。
パラメータを名前付きのパラメータとして渡した場合は、params
name のような標準の構造体名シンタックスを使用します。すべての CFML 配列オペレーションは予想どおりに実行されます。
名前付き配列または連想配列
ただし、数字で始まるキーは、無効な CFML 変数名です。たとえば、次の CFC メソッドでは例外が発生します。次の CFC メソッドでは例外が発生しません。または、CFC メソッドの標準の名前付き引数としてこれらの引数にアクセスできます。Params 配列では、メソッドに渡されたパラメータの順序が保持されます。次のような標準の構造体名シンタックスを使用して、パラメータを参照します。
この例では、渡される配列の最初のパラメータを参照する Flash
パラメータが順序配列として Flash アプリケーションから渡された場合は、次のような標準の構造体名シンタックスを使用します。次の手順では、簡単なメッセージが含まれている構造体を Flash アプリケーションに返すサービス関数 helloWorld を作成します。この例では、2 つの文字列変数が構造体に追加されます。1 つは形式が設定された日付が含まれている変数で、もう 1 つは簡単なメッセージが含まれている変数です。ファイルを保存します。ディレクトリ名がサービスアドレスであることに注意してください。// メソッドが結果およびエラーの状況をどのように処理するのかをサービスに示します。// 成功した結果を表示します。// サービスから返されたエラーを表示します。増分結果セットを使用すると、アプリケーションサーバーのデータがロードされるまでの Flash アプリケーションの待機時間を最小限に抑えることができます。それ以外の場合、変数の値はデフォルトである 10 に設定されます。次に、cfquery ステートメントがデータベースに対してクエリーを実行します。ファイルを保存します。
Pagesize 変数に値を割り当てるとき、レコードセットが特定のレコード数より多い場合は、レコードセットがページに分けられ、Flash
Pagesize 変数に指定したレコード数が返されるように指定します。// メソッドが結果およびエラーの状況をどのように処理するのかをサービスに示します。// 成功した結果を表示します。// サービスから返されたエラーを表示します。この場合、リストボックスは、ユーザーがリストボックスをスクロールするときに、より多くのレコードを要求します。
検証方法の選択
検証方法を選択する際、次の要素を検討する必要があります。フォームのデータを検証している場合、使用可能な検証方法は、HTML、Flash、XML フォームのどれを使用しているかによって異なることがあります。たとえば、フォームのタイプが異なると、検証の制限も異なります。検証方法が異なると、それに適切なフォームコントロールとデータタイプも異なります。データの検証を実行するタイミングと場所は、利用可能な検証方法により異なります。場所としてはクライアントかサーバー、タイミングとしては、ユーザーがデータを入力するとき、またはフォームを送信するとき、ColdFusion が変数または関数の引数を処理するときが挙げられます。各検証方法には、固有の特徴と検討事項が存在します。たとえば、ユーザーフィードバックの形式、機能の制限などに注意する必要があります。ご自分の環境やアプリケーションに適用されるセキュリティ問題や懸念によって、選択する検証方法が決定される場合があります。検証方法に記載した表は、検討事項の一部を示しています。次の表は、検証方法を選択するための追加の検討事項について示します。フォームフィールドのみに適用される追加の検討事項については、検証タイプに関する検討事項を参照してください。ユーザーの入力を直接制御します。ユーザー入力パターンに関する制限されたコントロールを提供します。ユーザーが無効なデータを入力した場合に、即座にフィードバックを提供します。ユーザーは入力したデータをすべて利用できますが、無効なデータは再入力の必要があります。ブラウザサポートを必要としません。フォームを使って検証ルールが送信されるので、この検証方法は回避される場合があります。ブラウザサポートを必要としません。フォームに制限されます。フォームを使って検証ルールが送信されるので、この検証方法は回避される場合があります。ブラウザでサポートされているすべてのクライアント側処理を許可します。サポートの対象となる JavaScript のレベルは、ブラウザによって異なる場合があります。JavaScript はブラウザで直接実行するので、この検証方法が回避される場合があります。フォームフィールドだけでなく、すべての変数で使用できます。さらなる処理が必要かどうかを判別するために使用する Yes または No の結果を返します。フォームフィールドで使用した場合、データの送信後に実行します。変数の検証が必要になるたびに使用する必要があります。フォーム検証方法では利用できないデータタイプチェックを提供します。フォームフィールドだけでなく、すべての変数で使用できます。このタグは、データの検証に加えて、デフォルト値を設定できます。フォームフィールドで使用した場合、このタグは、データの送信後に実行します。検証エラーが発生した場合、エラー処理コードを使ってエラーに応答します。サーバーで関数が呼び出されたときに実行します。検証エラーが発生した場合、エラー処理コードを使ってエラーに応答します。
セキュリティに関する検討事項
フォーム固有の検証方法を使用して、ユーザーが無効なデータまたは誤った書式のデータを送信できないようにすることが可能です。ただし、こうした検証方法を使用しても、ユーザーが悪意のある書式が設定されたデータを HTML フォームから送信できないようにすることは不可能です。悪意のあるユーザーは、ブラウザで JavaScript を使って検証する必要のある検証方法を回避することができます。また、非表示フィールドにおける検証ルールの送信を回避することもできます。悪意のあるデータの送信を阻止する必要がある場合には、次の検証方法の使用を検討してください。こうしたフォームでは、Flash ビルトイン検証が使用されます。これらを使用して、CFML コードで変数と引数をテストすることができます。このタグにより、悪意のあるクエリー入力からデータベースを保護することができます。このオプションにより、クロスサイトのスクリプト攻撃を阻止できます。クロスサイトのスクリプト攻撃およびこのオプションの詳細については、『CFML リファレンス』の cfapplication タグに関するページを参照してください。
ドキュメント-リテラルスタイルの Web サービスの公開
ColdFusion では、コンシューマがメソッドと引数を指定できる RPC 指向のオペレーションに加えて、ドキュメント-リテラルスタイルを使用している Web サービスを公開することができます。ドキュメント-リテラルスタイルを使用すると、Web サービスの WSDL はクライアントに対し、RPC 呼び出し規則ではなく XML スキーマを使用するよう指示します。ほとんどの場合、Web サービスのパブリッシャは、Web サービスをドキュメント-リテラルスタイルまたは RPC スタイルとして識別します。この例では、スタイルはドキュメント-リテラルです。さらに WSDL を調べて、呼び出すことができるメソッドと、各メソッドのパラメータを確認する必要があります。ほとんどの場合、変更の必要はありません。こうした属性を使用して、次の例に示すとおり、意味のある WSDL 属性名を作成することができます。XML ドキュメントオブジェクトは構造体として表現されるので、XML ドキュメントの内容にアクセスするには、次のいずれかまたは両方の方法を使用できます。同様に、次のいずれかあるいは両方の表記法を使用できます。
XML オブジェクトの内容に対する参照
代入式の "右辺" または関数の引数に指定した XML ドキュメントの内容を参照する際には、次のルールに従う必要があります。大文字と小文字が区別される XML オブジェクト内では、要素名や属性名にドット表記法を使用することはできません。名前を連想配列表記法 (括弧表記法) で使用するか、大文字と小文字が区別される名前を使用しない参照にする必要があります。たとえば、次のような名前は使用できません。代わりに次のような名前を使用してください。注意: ColdFusion では変数名の大文字と小文字を区別しないので、大文字と小文字が区別される XML ドキュメント内で要素名や属性名にドット表記法を使用すると、予期しない結果が生じる (変数名がすべて大文字になるなど) 場合や、例外が発生する場合があります。大文字と小文字が区別される XML オブジェクト内では、要素名や属性名にドット表記法を使用することはできません。名前を連想配列表記法 (括弧表記法) で使用するか、大文字と小文字が区別される名前を使用しない参照 (XmlChildren[1] など) にする必要があります。複数ある同じ名前の要素のうち 1 つを指定するには、配列インデックスを使用します。要素識別子の最後のコンポーネントで配列インデックスを省略すると、ColdFusion は、指定された名前を持つすべての要素の配列としてリファレンスを扱います。名前を使用せずに XmlChildren 配列内の要素を指定するには、配列インデックスを使用します。名前にピリオドやコロンが含まれる要素を指定するには、連想配列表記法 (括弧表記法) を使用します。構造体エントリ名の代わりに DOM メソッドを使用できます。これらのリストは、値または属性へのリファレンスを構成するすべての可能な組み合わせを示すものではありません。
XML オブジェクトへのデータの割り当て
式の左辺で XML オブジェクト参照を使用する際には、参照文字列の最後の要素までの参照に関して、上のルールのほとんどが該当します。first にはXML オブジェクトの内容に対する参照のルールが適用されます。ただし、次の注意で説明するとおり、ドキュメントオブジェクトの名前の大文字と小文字を正しく使用することについてのルールが参照文字列全体に適用されます。注意: ColdFusion では変数名の大文字と小文字を区別しないので、大文字と小文字が区別される XML ドキュメント内で要素名や属性名にドット表記法を使用すると、予期しない結果が生じる (変数名がすべて大文字になるなど) 場合や、例外が発生する場合があります。
式の左辺の最後の要素の参照
次のルールは、式の左辺の最後のコンポーネントの意味に適用されます。
コンポーネント名で要素名を指定し、最後に数値インデックスを付加しない場合 (たとえば、mydoc
コンポーネント名が既存の要素と一致しない場合は、式の左辺と右辺の要素名が一致する必要があります。要素名が一致しないとエラーが発生します。次の式ではエラーが発生します。コンポーネント名が既存の要素と一致せず、コンポーネントの親が存在しない場合、ColdFusion は、左辺に指定されたとおりに親ノードを作成し、前述のルールをその最後の要素に使用します。この作業が必要な理由は、XmlText エントリにテキストを割り当てると、要素テキストに含まれる記号 < および > がエスケープされるからです。一方に値を代入するともう一方は上書きされます。ドキュメントオブジェクトからデータを取り出すときには、XmlCdata を参照しても XmlText を参照しても同じ文字列が返されます。xf:bind 要素の後に続く XML タグにより、フォームのコントロールとそのレイアウトが指定されます。
なし : インスタンスデータのみ
XSLT はこれらの要素を処理して、意味のある出力を生成する必要があります。
コントロール要素の一般的な構造体
次の表は、この構造体の変数部分について説明します。
コントロールのラベルテキスト
次のいずれかで指定します。
コントロールのタイプ
次のいずれかです。
タグ固有要素の構造体
次の項では、いくつかの入力タグで使用する XML のタグ固有の機能について説明します。これは包括的ではありません。チェックボックスには単一の項目が含まれ、選択およびラジオボタンコントロールには複数の項目が含まれます。次の例は、2 つのラジオボタンを含むグループの CFML コードを示しており、その後に、生成される XML コントロール要素が続きます。また、この例では、cfformgroup タグを使用した、ラジオボタングループの配置およびラベル設定も示します。このタグには 4 つの属性があります。こうしたコントロールは、Java アプレットか SWF ファイル形式のいずれかになります。
(指定した値またはデフォルト値が設定された属性のエントリが存在します)
次の例は、2 つのノードを持つ最小グリッドを示しています。ほとんどのメタデータ行は、簡潔にするために削除されます。次の例は、2 つのノードを持つ最小ツリーを示しています。次のコードでは、ツリーの外観に関連する XML だけを示します。要素の構造は次のルールにより決定します。次のコードは、XML スキン可能フォームについての図で示したフォームの入力コントロールに関する XML を示しています。たとえば、Flash Player 7 でネイティブにサポートされていないデバイス固有のメディアタイプ (イメージ、サウンド、ビデオ) をロードできます。また、電話をかけたり、他のユーザーにテキストメッセージを送信したりするデバイス統合機能も備えています。本章では次のトピックを取り上げます。
0 の機能について
0 のコンポーネントについて
Flash Lite 共有オブジェクトを使用すると、ユーザーのデバイスにデータを永続的に保存できます。たとえば、共有オブジェクトを使用すると、ユーザーの環境設定やゲームスコアなど、アプリケーションセッション間で共有する情報を保存できます。0 で共有オブジェクトを実装しても、それにより複数の SWF ファイルが同じデータを共有できるようになるわけではありません。ボタンを使用すると、Flash Lite アプリケーションにインタラクティブ機能を簡単に追加できます。ただし、イベントによっては (onDragOut など)、マウスやペンインターフェイスのあるデバイスでのみ利用可能なものもあります。キーインターフェイスのみを持つデバイスでは、キーフォーカスがボタンにないと、いずれのイベントも生成されません。マウスやペンがあるデバイスでのみサポートされます。ユーザーがマウスボタンをボタン上で押した後、ポインタをボタンの外側にドラッグすると、呼び出されます。マウスやペンがあるデバイスでのみサポートされます。ユーザーがマウスボタンを押したまま、一度ボタンの外側に移動し、次にボタン上に戻ると、呼び出されます。ボタンにフォーカスがあるときにキーを押すと、呼び出されます。ボタンにフォーカスがあるときにキーを離すと、呼び出されます。ボタンからフォーカスが離れると、呼び出されます。ボタンにフォーカスがあるときにデバイスの選択キーを押すと、呼び出されます。ボタンにフォーカスがあるときにデバイスの選択キーを放すと、呼び出されます。ポインタがボタン内にあるときにボタンを押した後で、ポインタがボタン外にあるときにマウスボタンを離すと、呼び出されます。ボタンがフォーカスを失うと、呼び出されます。ボタンがフォーカスを受け取ると、呼び出されます。ボタンに入力フォーカスがあるときにキーを離すと、呼び出されます。次の手順では、ボタンイベントを処理する単純なアプリケーションを作成する方法を説明します。ボタンを使用してメニューを作成する例については、ボタンとデフォルトのナビゲーションを使用した単純なメニューの作成 (Flash Professional のみ)を参照してください。
ボタンイベントハンドラを作成するには :
fla という名前で保存します。[ウィンドウ]-[サンプルライブラリ]-[ボタン] を選択して、作成済みのボタンシンボルの外部ライブラリを開きます。メニューボタンシンボルのインスタンスをステージにドラッグします。プロパティインスペクタの [インスタンス名] テキストボックスに、「btn_1」と入力します。同じボタンの別のインスタンスをステージにドラッグし、最初のボタンのすぐ下に配置します。プロパティインスペクタの [インスタンス名] テキストボックスに、「btn_2」と入力します。[アクション] パネルを開き ([ウィンドウ]-[アクション])、次のコードを入力します。// ボタンがオーバー状態なのでフォーカス矩形を無効にします。エミュレータでアプリケーションをテストします ([制御]-[ムービープレビュー])エミュレータの上および下矢印キーを押したときに [出力] パネルに表示されるメッセージを確認します。オブジェクトタイプによって、サポートされるイベントは異なります。この手順のボタンイベントハンドラと同じ形式で、これらのイベントのイベントハンドラコードを記述できます。
テキストフィールドおよびムービークリップでサポートされているイベントの詳細については、『Flash Lite 2
次の手順は、キーリスナーを使用して、簡単なアプリケーションのキー押下イベントを処理する方法を示します。このアプリケーションでは、4 方向ナビゲーションキーを使用して、ステージ上でムービークリップを移動します。
イベントリスナーを使用してキー押下イベントを処理するには :
fla という名前で保存します。Content という名前のタイムラインでレイヤーを選択します。楕円ツールを使用して、ステージ上に楕円または円を作成し、ムービークリップに変換します。新しいムービークリップが選択されている状態で、プロパティインスペクタの [インスタンス名] テキストボックスに「circle」と入力します。タイムラインで、レイヤー 1 の最初のフレームを選択します。[アクション] パネルを開き ([ウィンドウ]-[アクション])、次のコードを入力します。[制御]-[ムービープレビュー] を選択して、アプリケーションをテストします。エミュレータの 4 方向キーを押すか、キーボードの対応する矢印キーを押して、ステージ上で円を移動します。
8kHz サンプリングレート機能の使用
x アプリケーションの開発 > サウンド、ビデオおよびイメージの操作 > Flash ネイティブサウンドの使用 > 8kHz サンプリングレート機能の使用
8kHz サンプリングレート機能の使用
しかし、多くのデバイスでは、これらのサンプリングレートでのオーディオデータの再生はサポートされていません。旧バージョンの Flash Lite では、デバイスのネイティブサウンドのアプリケーションプログラミングインターフェイス (API) を呼び出してサウンドを再生する前に、実行時のオーディオを 8 kHz にリサンプリングします。このリサンプリングでは、処理時間とメモリの消費量がさらに必要です。この設定は、アプリケーションのすべてのストリーミングサウンドとイベントサウンド、またはドキュメントの [ライブラリ] パネルの特定のサウンドのみに適用します。次に述べる最初の手順では、[サウンドプロパティ] ダイアログボックスで、個々のサウンドに 8kHz のサンプリングレートオプションを有効にする方法について説明しています。次に続く 2 番目の手順では、[パブリッシュ設定] ダイアログボックスを使用して、このオプションをすべてのイベントサウンドとストリーミングサウンドにグローバルに設定する方法について説明しています。ストリーミングサウンドでは、[パブリッシュ設定] ダイアログボックスで指定した、サウンドのグローバル圧縮オプションが常に適用されます。[サウンドプロパティ] ダイアログボックスで指定したサウンドごとの圧縮オプションは、イベントサウンドにのみ適用されます。
個々のサウンドに 8kHz のサンプリングレート機能を有効にするには :
表示された [サウンドプロパティ] ダイアログボックスで、[圧縮] ポップアップメニューから [MP3] を選択します。8kHz サンプリング機能は、MP3 圧縮オーディオでのみ使用できます。選択されていれば、[読み込んだ MP3 の音質を使用する] の選択を解除します。
すべてのネイティブサウンドに 8kHz サンプリングレート機能をグローバルに有効にするには :
[パブリッシュ設定] ダイアログボックスで、[Flash] タブをクリックします。8kHz サンプリングレートをアプリケーションのストリーミングサウンドすべてに有効にするには、次の操作を行います。[ストリーミングの設定] サウンドオプションをクリックします。表示された [サウンドプロパティ] ダイアログボックスで、[圧縮] ポップアップメニューから [MP3] を選択します。8kHz サンプリング機能は、MP3 圧縮オーディオでのみ使用できます。[OK] をクリックして [パブリッシュ設定] ダイアログボックスを閉じます。すべてのイベントサウンドに 8kHz サンプリングレートを有効にするには、次の操作を行います。[イベントの設定] サウンドオプションをクリックします。表示された [サウンドプロパティ] ダイアログボックスで、[圧縮] ポップアップメニューから [MP3] を選択します。8kHz サンプリング機能は、MP3 圧縮オーディオでのみ使用できます。[OK] をクリックして [パブリッシュ設定] ダイアログボックスを閉じます。
ビットマップ圧縮オプションの設定
x アプリケーションの開発 > コンテンツのパフォーマンスとメモリ使用の最適化 > パフォーマンスの最適化 > ビットマップグラフィックとベクターグラフィック > ビットマップ圧縮オプションの設定
ビットマップ圧縮オプションの設定
ビットマップを使用する場合は、Flash でイメージ圧縮オプションを設定して、SWF ファイルのサイズを小さくすることができます。ビットマップの圧縮は、イメージごとに設定することも、すべてのビットマップイメージについてグローバルに設定することもできます。
ビットマップのイメージ圧縮を設定するには
[ライブラリ] ウィンドウでビットマップを選択します。[圧縮] ポップアップメニューで、次のいずれかのオプションを選択します。グラデーション塗りを含むイメージや写真のように、カラーやトーンが複雑に変化するイメージの場合は、[写真画質 (JPEG)] オプションを選択します。このオプションにより、JPEG 形式のファイルが生成されます。[読み込んだ JPEG データを使用する] チェックボックスをオンにして、読み込まれたイメージに指定されているデフォルトの圧縮形式を使用します。新しい圧縮形式を設定するには、[読み込んだ JPEG データを使用する] をオフにして、[画質] テキストボックスに 1 ~ 100 の範囲で値を入力します。設定値が高いほど高い画質が得られますが、同時にファイルサイズも大きくなるため、値を適切に調整します。形状が単純な場合や色数が比較的少ないイメージの場合は、[ロスレス (PNG/GIF)] オプションを選択します。このオプションを選択すると、イメージがロスレス圧縮され、イメージからデータが削除されません。[テスト] ボタンをクリックすると、ファイル圧縮の結果がわかります。元のファイルサイズと圧縮後のファイルサイズを比較し、選択した圧縮設定で問題がないかどうかを確認します。ビットマップイメージの圧縮設定はグローバルに調整することもできます。
ビットマップイメージのビットマップ圧縮を一括設定するには
JPEG 画質の値が高いほど、画質は向上しますが、SWF ファイルのサイズも大きくなります。画質を落とすと、SWF ファイルのサイズは小さくなります。さまざまな設定を試して、ファイルサイズと画質の最適な組み合わせを見つけます。ほとんどのモバイルデバイスには処理速度やメモリの制限があるため、携帯端末で使用する Flash Lite コンテンツ用の ActionScript を開発する場合は、次のガイドラインに従ってください。使用するループの数と、各ループ内のコードの量を制限します。フレームベースのループは、不要になったらすぐに停止します。文字列や配列の処理はできるだけ避けます。この処理では CPU に高い負荷がかかることがあります。これらのメソッドでは、他のメソッドの呼び出しよりも多くのオーバーヘッドが生じます。イベントを有効にかつ明確に管理してください。条件を使用してイベントリスナーの配列を最適化し、イベントを呼び出す前にリスナーの存在 (null ではない) をチェックしてください。変数が不要になった場合は、変数を削除するか null に設定します。これにより、データがガベージコレクション用としてマークされます。変数を削除すると、不要なアセットが SWF ファイルから削除されるため、実行時のメモリ使用が最適化されます。変数を null に設定するよりも、変数を削除する方が適切です。ガベージコレクションとメモリ管理の方法については、アプリケーションメモリの管理を参照してください。ガベージコレクションを実行する前に removeListener() を呼び出して、オブジェクトからリスナーを明示的に削除します。動的に関数を呼び出し、固定パラメータのセットの受け渡しをする場合は、apply() の代わりに call() を使用します。パスなどの名前空間を簡潔にすると、起動時間を短縮できます。パッケージの各レベルは IF ステートメントにコンパイルされ、新規に Object() が呼び出されます。したがって、パスのレベルがより少ないと時間の短縮になります。アプリケーションが、同じ ActionScript のクラスを使用した複数の SWF ファイルで構成されている場合、コンパイル時には、選択した SWF ファイルからそれらのクラスを除外することができます。これにより、アプリケーションのダウンロード時間を短縮し、実行時メモリ要件を軽減できます。詳細については、コンパイル時のクラスの除外 を参照してください。
オブジェクトプロパティが変更されるたびに、変更通知を送信するかどうかをプレーヤーが決定する必要があるので、Object
タイムライン上のキーフレームで実行する ActionScript コードが完了するのに 1 秒より多くかかる場合、そのコードを分割して、複数のキーフレーム上で実行することを検討してください。SWF ファイルをパブリッシュするときは、trace() ステートメントをコードから削除します。継承を使用すると、メソッド呼び出し回数とメモリ使用量が増加します。実行時には、一部の機能をスーパークラスから継承するクラスより、必要な機能がすべて含まれているクラスの方が効率的です。したがって、クラスの拡張性とコードの効率性との間で、設計上のバランスを取る必要があります。メモリを節約するには、アンロードされた SWF ファイル内のカスタムクラスを明示的に削除します。delete ステートメントを使用して、次の例のように完全修飾クラス名を指定します。グローバル変数は多用しないでください。グローバル変数を定義したムービークリップが削除されても、グローバル変数はガベージコレクションされないからです。これらのコンポーネントはデスクトップコンピュータで実行するために設計されており、モバイルデバイスでの実行には最適化されていません。深くネストされた関数は、できるだけ使用しないでください。存在しない変数、オブジェクト、関数を参照することを避けます。0 では、存在しない変数への参照を調べるのに時間がかかり、アプリケーションのパフォーマンスに著しく影響します。コンピュータのマウスまたはキーボードショートカットを使用して、エミュレータのキーを操作できます。エミュレータでは次のキーを操作できます。
左右のソフトキー
マウスを使用して Flash Lite エミュレータのキーを直接クリックするか、次の対応するキーボードショートカットを使用することができます。キーボードの矢印キー (左、右、上、下) は、エミュレータの方向キーにそれぞれ対応します。キーボードの数値キーは、エミュレータの数値キーと対応します。次の表は、Flash Lite エミュレータで表示されるすべての情報メッセージの一覧です。この関数呼び出しは、選択したテストデバイスではサポートされません。デバイス固有の SWF ファイルは変更されません。これは単なる警告です。この関数呼び出しは、選択したテストデバイスおよびコンテンツタイプではサポートされません。デバイス固有の SWF ファイルは変更されません。これは単なる警告です。この関数呼び出しは、選択したテストデバイスおよびコンテンツタイプではサポートされません。デバイス固有の SWF ファイルは変更されません。これは単なる警告です。キー入力ごとに複数の要求があったため、<URL> に対する GetURL の呼び出しは無視されました。エミュレータは複数の getURL() が存在することを検知したので、最初のコマンドだけが処理されます。その他のコマンドは無視されます。キー入力に関連付けられていなかったため、<URL> に対する GetURL の呼び出しは無視されました。現在選択しているテストデバイスおよびコンテンツタイプは、ユーザーがデバイスのキーを押した結果として実行される getURL() 関数呼び出しのみを処理します。エミュレータは、キー押下に関連付けられていない getURL() 呼び出しをアプリケーションが行ったことを検知しました。Flash Lite は指定されたムービークリッププロパティをサポートしていません。Flash Lite は指定されたムービークリッププロパティを完全にはサポートしていません。この関数呼び出しは、選択したテストデバイスおよびコンテンツタイプではサポートされません。デバイス固有の SWF ファイルは変更されません。これは単なる警告です。エミュレータは複数の loadMovie() が存在することを検知したので、最初のコマンドだけが処理されます。その他のコマンドは無視されます。現在選択しているテストデバイスおよびコンテンツタイプは、ユーザーがデバイスのキーを押した結果として実行される loadMovie() 関数呼び出しのみを処理します。エミュレータは、キー押下に関連付けられていない loadMovie() 呼び出しをアプリケーションが行ったことを検知しました。その他のコマンドは無視されます。現在選択しているテストデバイスおよびコンテンツタイプは、ユーザーがデバイスのキーを押した結果として実行される loadVariables() 関数呼び出しのみを処理します。エミュレータは、キー押下に関連付けられていない loadVariables() 呼び出しをアプリケーションが行ったことを検知しました。キー入力ごとに複数の要求があったため、パラメータ <コマンド引数> を使用した FSCommand の呼び出しは無視されました。エミュレータは複数の fscommand() が存在することを検知したので、最初のコマンドだけが処理されます。その他のコマンドは無視されます。キー入力に関連付けられていなかったため、パラメータ <コマンド引数> を使用した FSCommand の呼び出しは無視されました。現在選択しているテストデバイスおよびコンテンツタイプは、ユーザーがデバイスのキーを押した結果として実行される fscommand() 関数呼び出しのみを処理します。エミュレータは、キー押下に関連付けられていない fscommand() 呼び出しをアプリケーションが行ったことを検知しました。エミュレータは、Flash Lite でサポートされていないデバイスキーが押されたことを検知しました。このキーの押下は無視されます。テキスト入力フィールドは、このデバイスの選択されたコンテンツタイプではサポートされません。現在のテストデバイスおよびコンテンツタイプはテキスト入力フィールドをサポートしません。ストリーミングサウンドはサポートされません。選択したテストデバイスおよびコンテンツタイプはストリーミングサウンドをサポートしません。
一度に再生できるのは、1 つのサウンドだけです (ミキシングなし)
エミュレータは、SWF ファイル内の複数のサウンドが同時に再生されていることを検知しました。キー入力と関連付けられていなかったため、イベントサウンドは無視されました。0 では、ユーザーがデバイスのキーを押した場合にのみサウンドを再生できます。0 には適用されません。サウンドは、このデバイスの選択されたコンテンツタイプではサポートされません。選択したテストデバイスおよびコンテンツタイプはサウンドをサポートしません。ADPCM サウンドは、このデバイスの選択されたコンテンツタイプではサポートされません。エミュレータは ADPCM 圧縮方式で圧縮されたネイティブ (非デバイス) サウンドを検知しました。ADPCM 圧縮方式は、このデバイスの選択されたコンテンツタイプではサポートされません。デバイス固有の SWF ファイルは変更されません。これは単なる警告です。MP3 サウンドは、このデバイスの選択されたコンテンツタイプではサポートされません。エミュレータは MP3 圧縮方式で圧縮されたネイティブ (非デバイス) サウンドを検知しました。MP3 圧縮方式は、このデバイスの選択されたコンテンツタイプではサポートされません。デバイス固有の SWF ファイルは変更されません。これは単なる警告です。MIDI サウンドは、このデバイスの選択されたコンテンツタイプではサポートされません。エミュレータは MIDI サウンドを検知しました。MIDI サウンドは、このデバイスの選択されたコンテンツタイプではサポートされません。PCM サウンドは、このデバイスの選択されたコンテンツタイプではサポートされません。エミュレータは PCM 圧縮方式で圧縮された Flash サウンドを検知しました。PCM 圧縮方式は、このデバイスの選択されたコンテンツタイプではサポートされません。ムービーのデバッグは指定したムービープレビュープレーヤーではサポートされていません。サウンドバンドルが見つかりました。エミュレータは、SWF ファイルにサウンドバンドルファイルが含まれていることを検知しました。デバイス上でテストしてください。指定したコマンドが意図したとおりに機能するかどうかを確認するには、Flash Lite がインストールされたデバイスでこの SWF ファイルをテストする必要があります。URL リクエストを呼び出すインスタンスが複数見つかりました。キー入力/フレームごとに許可される呼び出しは 1 つだけです。エミュレータは複数の getURL() が存在することを検知したので、最初のコマンドだけが処理されます。その他のコマンドは無視されます。制限が適用される場合があります。この関数呼び出しを選択したデバイスで実行したときに、実行時の制限が適用される場合があります。コマンドが意図したとおりに機能するかどうかを確認するには、実際のデバイスで SWF ファイルをテストします。制限が適用される場合があります。この関数呼び出しを選択したデバイスで実行したときに、実行時の制限が適用される場合があります。コマンドが意図したとおりに機能するかどうかを確認するには、デバイスで SWF ファイルをテストします。制限が適用される場合があります。コマンドが意図したとおりに機能するかどうかを確認するには、デバイスで SWF ファイルをテストします。制限が適用される場合があります。この関数呼び出しを選択したデバイスで実行したときに、実行時の制限が適用される場合があります。コマンドが意図したとおりに機能するかどうかを確認するには、デバイスで SWF ファイルをテストします。サウンドバンドルに <N> キロバイトの <デバイスサウンド> サウンドが見つかりました。サウンドバンドルのサウンドごとに、エミュレータは種類 (MIDI や SMAF など) とサイズを報告します。SMAF サウンドは、このデバイスの選択されたコンテンツタイプではサポートされません。エミュレータは SMAF デバイスサウンドを検知しました。このデバイスの選択されたコンテンツタイプではサポートされないサウンドです。1 つのフレームまたはイベントに対し複数の要求があるため、StartVibrate 呼び出しは無視されました。エミュレータは複数の呼び出しを検知したので、最初のコマンドだけが処理されます。その他のコマンドは無視されます。デバイス上でテストしてください。実際のデバイスでテストする必要があります。4 方向ナビゲーションは、このデバイスではサポートされていません。選択したテストデバイスおよびコンテンツタイプは 2 方向ナビゲーションをサポートしています。エミュレータの 5 方向キーの左または右矢印キーを押しましたが、2 方向ナビゲーションではサポートされていません。詳細については、デフォルトのナビゲーションモードを参照してください。このデバイスでは、折り返しつきの 4 方向ナビゲーションをサポートしていません。選択したテストデバイスおよびコンテンツタイプは 4 方向ナビゲーションをサポートしています。デバイスのいずれかの矢印キーを押しましたが、ステージ上で押した矢印キーの方向にはフォーカスを受け取るオブジェクトがありませんでした。詳細については、デフォルトのナビゲーションモードを参照してください。汎用 MFI サウンドは、このデバイスの選択されたコンテンツタイプではサポートされません。エミュレータは汎用 MFi デバイスサウンドを検知しました。汎用 MFi デバイスサウンドは、このデバイスの選択されたコンテンツタイプではサポートされません。サポートされていないマウスイベント (イベント名) が見つかりました。指定したマウスイベントは、選択したテストデバイスおよびコンテンツタイプではサポートされていません。SMAF (MA-2) サウンドは、このデバイスの選択されたコンテンツタイプではサポートされません。このデバイスの選択されたコンテンツタイプではサポートされないサウンドです。SMAF (MA-3) サウンドは、このデバイスの選択されたコンテンツタイプではサポートされません。このデバイスの選択されたコンテンツタイプではサポートされないサウンドです。SMAF (MA-5) サウンドは、このデバイスの選択されたコンテンツタイプではサポートされません。このデバイスの選択されたコンテンツタイプではサポートされないサウンドです。Fujitsu 拡張形式の MFI サウンドは、このデバイスの選択されたコンテンツタイプではサポートされません。このデバイスの選択されたコンテンツタイプではサポートされないサウンドです。Mitsubishi 拡張形式の MFI サウンドは、このデバイスの選択されたコンテンツタイプではサポートされません。このデバイスの選択されたコンテンツタイプではサポートされないサウンドです。NEC 拡張形式の MFI サウンドは、このデバイスの選択されたコンテンツタイプではサポートされません。エミュレータは NEC 拡張形式の MFi デバイスサウンドを検知しました。このデバイスの選択されたコンテンツタイプではサポートされないサウンドです。Panasonic 拡張形式の MFI サウンドは、このデバイスの選択されたコンテンツタイプではサポートされません。このデバイスの選択されたコンテンツタイプではサポートされないサウンドです。Sharp 拡張形式の MFI サウンドは、このデバイスの選択されたコンテンツタイプではサポートされません。このデバイスの選択されたコンテンツタイプではサポートされないサウンドです。Sony 拡張形式の MFI サウンドは、このデバイスの選択されたコンテンツタイプではサポートされません。エミュレータは Sony 拡張形式の MFi デバイスサウンドを検知しました。このデバイスの選択されたコンテンツタイプではサポートされないサウンドです。プリントコマンドはサポートされていません。<デバイスサウンド> サウンドはサウンドバンドルで選択されています。エミュレータが再生したサウンドバンドル内のデバイスサウンド名を示します。サウンドバンドルのいずれの形式も、このデバイスではサポートされていません。このデバイスの選択されているコンテンツタイプでサポートされているサウンドバンドル内のデバイスサウンドはないことを示します。SMAF サウンド再生に失敗しました。エミュレータは SMAF サウンドを再生できませんでした。エミュレータは、Flash Lite アプリケーションのボタン上でマウスイベントを検知しました。現在のテストデバイスはペンまたはタッチスクリーンインターフェイスをサポートしていないので、スクリーン上のボタンの操作に使用できるのは、エミュレータのキーまたは相当するキーボードショートカットだけです。
キーは処理されません : <デバイスキー>
最初に SetSoftKeys コマンドを呼び出さずに、エミュレータでいずれかのソフトキーを押しました。デバイス上でテストしてください。指定したコマンドが意図したとおりに機能するかどうかを確認するには、Flash Lite がインストールされたデバイスでこの SWF ファイルをテストする必要があります。0 プレーヤーではサポートされません。
エミュレータはいずれかのソフトキーが押されたことを検知しましたが、ドキュメントの SWF ファイルのパブリッシュ設定でバージョンが Flash Lite 1
0 に設定されています。0 はソフトキーをサポートしていません。このセクションでは、コンパイラで特定の命令を前処理するために ActionScript ファイルで使用するディレクティブについて説明します。コンパイラディレクティブ : 初期化アクションのブロックの終わりを示します。コンパイラディレクティブ : 指定したファイル内のコマンドを呼び出し元のスクリプトにインクルードし、そのスクリプトの一部であるかのように扱います。コンパイラディレクティブ : 初期化アクションのブロックの始まりを示します。false の逆を表す一意のブール値です。自動的な型指定により true を数値に変換すると、その結果は 1 となります。次の例では、自動的な型指定によって true を数値 1 に変換する方法を示しています。
通常、変数に値がまだ割り当てられていないことを示すために使用される特別な値
次の結果が [出力] パネルに表示されます。SWF ファイルの再生時に一定の間隔で関数、メソッド、またはオブジェクトを呼び出します。インターバル関数を使用して、データベースから変数を更新したり、時間表示を更新したりできます。interval が SWF ファイルのフレームレートを超える場合は、画面の更新に伴う影響を最小限に抑えるために、インターバル関数は再生ヘッドがフレームに入ったときにのみ呼び出されます。0 では、インターバルが SWF ファイルのフレームレートより短い場合、このメソッドに渡されたインターバルは無視され、インターバル関数は、SWF ファイルのフレームレートの間隔でのみ呼び出されます。間隔が、SWF ファイルのフレームレートより長い場合、イベントは、間隔が経過した後の次のフレームで呼び出されます。複数のパラメータはカンマで区切ります。シンタックス 2 : 次の例では、2 つのイベントハンドラを定義し、各イベントハンドラを呼び出します。シンタックス 3 : 次の例では、オブジェクトのメソッドを使用します。オブジェクトに対して定義されたメソッドを呼び出す場合は、このシンタックスを使用する必要があります。オブジェクトのメソッドを呼び出すには、次の例に示すように、2 つ目の形式の setInterval() シンタックスを使用する必要があります。この関数を使用する場合は、SWF ファイルで使用するメモリに注意する必要があります。// インスタンス名および任意のテキストを示す簡単なメッセージを表示する。// ターゲットムービークリップを削除する。setInterval() をクラス内で使用する場合は、この関数を呼び出すときに this キーワードを使用していることを確認する必要があります。次に、このことを説明する例を示します。as というファイルを作成します。指定されたエレメント (a0 など) で新しい配列または多次元配列を初期化するか、配列内のエレメントにアクセスします。配列アクセス演算子を使用すると、インスタンス、変数、およびオブジェクト名を動的に設定および取得できます。この演算子を使用してオブジェクトのプロパティにアクセスすることもできます。シンタックス 1 : 配列は、エレメントと呼ばれるプロパティを持つオブジェクトです。各エレメントは、インデックスと呼ばれる番号で識別されます。配列を作成する場合は、エレメントを配列アクセス演算子 ([]) (角カッコ) で囲みます。配列には、さまざまなタイプのエレメントを格納できます。最初のエレメントは数値、2 番目と 3 番目のエレメントはストリング (引用符内) です。カッコをネストすると、多次元配列をシミュレートできます。ネスト可能な配列の深さは、256 レベルまでです。各エレメントはそれぞれが 3 つのエレメントで構成される配列になっています。