開発ツール
この章では、開発者がよく使用するツールを紹介します。項目は以下のとおりです。
管理ポータル
管理ポータルは、データ管理および Caché の構成に使用できるブラウザベースのツールです。システム管理者は、それを後で他のタスクのために使用できます。
ポータルへのアクセス
管理ポータルは、次の方法で起動できます。
-
Web ブラウザで、以下の URL に移動します。
http://localhost:57772/csp/sys/UtilHome.csp
ここで、localhost は使用しているシステムの IP アドレスで、57772 は Caché によってインストールされた Web サーバのポート番号です。
-
Microsoft Windows プラットフォームで、[InterSystems ランチャー] を選択し、[管理ポータル] を選択します。
Microsoft Windows 2003 ユーザの信頼済みサイトのセキュリティ設定 — 管理ポータルを初めて表示したときに、Web サイトがブロックされているという警告が表示されることがあります。プロンプトが表示されたら、このサイトを信頼済みサイト・ゾーンに追加します。インターシステムズでは、ポータルのプロシージャが正しく機能するために、セッション・クッキーを許可することをお勧めします。
プロンプトが表示されたら、Caché のユーザ名およびパスワードを入力します。
“習得する必要がある役立つスキル” の章に、このツールで実行できる多数のタスクの説明があります。
スタジオ
スタジオは、Caché がサポートするすべての言語でコードを構築およびデバッグするために使用するツールです。これは、Windows ベースのオペレーティング・システム上で動作します。サーバが使用しているプラットフォームやオペレーティング・システムに関係なく、(スタジオの現在のバージョンと互換性のある) すべての Caché サーバに接続できます。
スタジオの開始
スタジオを起動するには、[InterSystems ランチャー] を選択し、[スタジオ] を選択します。プロンプトが表示されたら、Caché のユーザ名およびパスワードを入力します。
または、InterSystems ランチャーの他のオプションを使用して、リモート・システムにアクセスします。詳細および追加のオプションは、"スタジオの使用法" を参照してください。
同時に複数のスタジオを開くことができ、複数のネームスペースで作業する場合に便利です。
オリエンテーション
スタジオでは、一度に 1 つのネームスペース内で作業します。ネームスペースを選択するには、[ファイル]→[ネームスペース変更] を選択するか、F4 キーを押します。
スタジオには、このネームスペースがアクセスできるすべてのコードが表示されます。このドキュメントで前述した “ネームスペースで何にアクセス可能か” を参照してください。CACHELIB に格納されているコードは編集できません (これは読み取り専用です)。インターシステムズによって提供されているいくつかのクラスは、“配置” モードで出荷されており、それらの内部の詳細は表示できません。
ドキュメント (“ファイル“)
スタジオは、ファイルとして参照されるコード・ユニットを管理します。正確に言えば、それらは単なるドキュメントであり、それらの大部分は現在表示されているネームスペースによって使用される Caché データベースに格納されています。[ワークスペース] ウィンドウでは、以下のように、ドキュメントの名前が表示されてグループ化されます。
-
[クラス] フォルダ — クラス定義をリストします。この名前の形式は package.classname.cls です。
-
[ルーチン] フォルダ — 以下の項目をリストします。
-
ObjectScript ルーチン。この名前の形式は name.mac です。
-
Caché Basic ルーチン。この名前の形式は name.bas です。
-
Caché MVBasic ルーチン。この名前の形式は name.MVB です。
-
中間コード。この名前の形式は、INT コードの場合は name.int、MVI コードの場合は name.mvi です。
-
インクルード・ファイル。この名前の形式は name.inc です。
-
-
CSP ファイル・フォルダ — CSP (Caché Server Page) ファイルのリストを表示します。この形式は csp.pagename.csp です。
他のドキュメントと異なり、これらは、実際はデータベースの外に配置されています。それは、そこに配置することが Web サーバで必要とされているためです。スタジオでこれらの 1 つを開くと、スタジオはディスクからファイルを取得して表示します。変更を保存すると、スタジオによってディスク上のファイルが更新されます。
スタジオでは、これらの種類の各ドキュメントに対して、構文のカラー表示と構文チェックをサポートしています。
同時に複数のスタジオを開いている場合、ドキュメントを 1 つのスタジオから別のスタジオにドラッグできます。このアクションにより、ドキュメントがもう一方のスタジオ (これは 通常、異なるネームスペースを使用している) にインポートされます。
ソース・コントロールとの統合
すべてのルーチンとクラス定義は、大部分の開発ツールキットとは異なり、Caché データベースに格納されます。スタジオには、インターシステムズの開発者が使用する一連のソース・コントロール・フックがあり、一般の開発者もそれらを使用できます。"スタジオの使用法" を参照してください。
これらをソース・コントロール・システムに対して構成した場合、他の開発者とともに以下のように連携できます。
-
各ドキュメントは、実際はディスク上のファイルにマップされています。ファイルには、ルーチンまたはクラス定義の XML 表現が含まれています。
-
ルーチンまたはクラスに対する編集を開始すると、スタジオによってソース・コントロール・システムからそのファイルをチェック・アウトするように求められ、必要に応じてスタジオとソース・コントロール・システムとの間で通信が行われます。
-
変更を保存すると、スタジオから該当するファイルに対してもルーチンまたはクラス定義がエクスポートされます。
-
スタジオによって、ファイルをチェック・インできるメニュー・オプションが表示されます。このオプションによって、ソース・コントロール・システムにコマンドが送信され、それによってファイルがチェック・インされ、変更内容がソース・コントロール・サーバに送信されます。
-
スタジオには、通常、ソース・コントロール・システムと対話するための他のメニュー・オプションも表示されます。
場合によっては、これらのソース・コントロール・フックを直ちに使用する必要はありませんが、それらについては把握しておく必要があります。
その他の環境オプション
スタジオで使用されているオプションで、現在のニーズが満たせないかどうか確認すると役立ちます。[ツール]→[オプション] を選択します。オプションのいくつかを以下に示します。
-
フォントの種類とサイズ ([環境]→[フォント])
-
ストレージの既定表示 ([環境]→[クラス])
-
[ワークスペース] ウィンドウの [ネームスペース] タブでの、生成済み INT コードの表示 ([環境]→[詳細])
-
構文チェックのオプション ([エディタ]→[シンタックスチェックおよびアシスト])
-
インデントの制御 ([エディタ]→[インデント])
-
コンパイラ・フラグ ([コンパイラ]→[フラグと最適化])
Tip:[生成されたソースコードを保存] は、コンパイラで OBJ コードを生成した後に、INT コードを破棄しないで保持するかどうかを制御します。
この章で後述する “システム修飾子およびフラグ” も参照してください。
ターミナル
ターミナルは、Caché コマンドを入力したり現在値を表示したりするためのコマンド行インタフェースです。これは、学習、開発、およびデバッグのときに有用です。
ターミナルの起動
ターミナルを起動してローカル・データベースを使用するには、[InterSystems ランチャー] を選択し、次に [ターミナル] を選択します。
オリエンテーション
ターミナルでは、一度に 1 つのネームスペース内で作業します。このウィンドウに表示されるプロンプトは、現在作業中のネームスペースを示しています。以下はその例です。
USER>
新しいネームスペースに変更するには、ZNSPACE コマンド (短い形式は ZN) を使用します。
USER>ZN "SAMPLES"
SAMPLES>
(ZNSPACE コマンドはターミナルでの使用を意図したものであることに注意してください。コード内のネームスペースを変更する場合は、$NAMESPACE リファレンス・ページで説明されているように、NEW $NAMESPACE および SET $NAMESPACE を使用することをお勧めします。)
環境オプション
場合によっては、ターミナルを以下のように自分用にセットアップすると便利です。
-
ログインするたびに使用するネームスペースを指定します。そのためには、ログイン時に使用したユーザに対して [開始ネームスペース] オプションを指定します。"Caché セキュリティ管理ガイド" の “ユーザ” の章を参照してください。
-
Windows スタイルのエディット・アクセラレータを有効にします。[編集]→[ユーザ設定] を選択して、[Windowsエディットアクセラレータ] オプションを選択します。
[保存] を選択して、後のセッションのために選択内容を保存します。
-
ウィンドウ・サイズを拡大します。[編集]→[ウィンドウサイズ] を選択し、列数、行数、およびスクロールバックの行数を指定します。
[保存] を選択して、後のセッションのために選択内容を保存します。
-
フォント・サイズと他のフォント・オプションを変更します。[編集]→[フォント] を選択して変更を行います。
[OK] を選択して、後のセッションのために選択内容を保存します。
-
前景色と背景色を変更します。[編集]→[カラー] を選択して変更を行います。
[保存] を選択して、後のセッションのために選択内容を保存します。
ターミナル画面を更新するには [編集]→[削除] を使用します。
Caché の複数のインスタンスをマシンで実行している場合には、ターミナルの色とフォントをカスタマイズすれば、異なるターミナル・ウィンドウを簡単に区別できるため便利です。以下はその例です。
ターミナルの使用法
ターミナルでは、大部分の Caché コマンドを入力できます (また、行の先頭にスペースを含める必要はありません)。以下はその例です。
d ^myroutine
set dirname = "c:\test"
set obj=##class(Test.MyClass).%New()
write obj.Prop1
ラベル、複数行構成、およびマクロは使用できません。
ターミナルを終了すると、開いているすべてのファイルが閉じられて、フォアグラウンドのすべての実行内容が停止されます。
一般的なキーボード・アクセラレータ
基本的なキーボード・アクセラレータを覚えておくと便利です。
-
ターミナルを中断して、フォアグラウンドのすべての実行内容を停止するには、次のいずれかのキー組み合わせを使用します。
-
Ctrl-C — [Windowsエディットアクセラレータ] オプションが有効になっていない場合に使用します。
-
Ctrl-Shift-C — [Windowsエディットアクセラレータ] オプションが有効になっている場合に使用します。
このオプションを見つけるには、[編集]→[ユーザ設定] を選択します。
-
-
ターミナルのスクロールを一時停止するには、Ctrl+s を押します。
スクロールが一時停止されている間、ターミナルは、コマンドを受け入れて処理しますが、画面にコマンドや出力を書き込むことはありません。
Tip:ターミナルが応答しないように見える場合は、誤って Ctrl+s が押されていることがあります。
-
再開するには、Ctrl+q を押します。
-
前のコマンドを繰り返すには、必要なコマンドが表示されるまで上矢印キーを繰り返し押します。コマンドを入力するには、Enter を押します。
システム修飾子およびフラグ
外部ソースの Caché へのインポート、コンパイル・プロセス、外部の宛先へのコードのエクスポートに作用するシステム識別子およびフラグがあります。これらの設定は、各ネームスペースのシステム・グローバルに保存されますが、以下のようにオーバーライドを提供できます。
-
スタジオでは、このネームスペースに対してシステムに格納されている設定より優先される設定を指定できます。
この章で前述した “その他の環境オプション” を参照してください。
-
コンパイル、エクスポートなどを呼び出すときに、qspec 引数を指定できます。これは、使用するフラグと識別子の連結です。この場合、使用しているのは、クラス %SYSTEM.OBJOpens in a new tab のメソッドです。詳細は、インターシステムズ・クラス・リファレンスを参照してください。
現在の既定の識別子とフラグの表示
ネームスペースで現在使用されているフラグと識別子を表示するには、以下のコマンドを使用します。
DO $system.OBJ.ShowFlags()
あるいは以下のコードを入力します。
DO $system.OBJ.ShowQualifiers()
これらのメソッドで、フラグと識別子のヘルプ情報も表示されます。
既定の動作の変更
作業しているネームスペースの既定の動作を変更できます。そのためには、$system.OBJ.SetFlags() および $system.OBJ.SetQualifiers() を使用します。以下はその例です。
DO $system.OBJ.SetFlags("ck")
DO $SYSTEM.OBJ.SetQualifiers("/skipstorage")
キー・フラグ
以下の表に、いくつかのキー・フラグを示し、それらのフラグに焦点を当てて各フラグの作用を簡単に説明します。
フラグ | 意味 | 既定 |
---|---|---|
b | サブクラスおよび SQL 使用で現在のクラスを参照しているクラスを含めます。 | |
c | ロード後、クラス定義をコンパイルします。 | |
e | エクステントを削除します。 | |
k | ソースを保持します。このフラグを設定すると、生成されたルーチンのソース・コードが保持されます。 | |
l | コンパイル時にクラスをロックします。 | X |
r | 処理を再帰的に実行します。先行依存するすべてのクラスをコンパイルします。 | |
u | アップデートのみ実行します。 最新状態であればクラスのコンパイルをスキップします。 |
ヒストリカル・ノート
フラグのほうが長い間使われています。これらは UNIX® のコマンド行パラメータでモデル化されており、1 文字または 2 文字のシーケンスで構成されています。識別子は、より豊富で拡張可能な制御として後で追加されました。下位互換性を保持するため、フラグ・メカニズムも依然としてサポートされています。さらに、既存のフラグと同じ意味を持つ修飾子もあり、これらの 2 つは同じ指定子内で使用できます。
インターシステムズのクラスとルーチン
Caché は、前述の基本クラス (%RegisteredObjectOpens in a new tab や %PersistentOpens in a new tab など) の他に役に立つクラスを広範囲に提供しており、それらを使用すると開発期間を短縮できます。例えば、以下のようなタスクに使用できるクラスがあります。
-
Caché SQL 文の実行、および結果セットを使用した作業
-
ファイルを使用した作業
-
HTTP 要求の作成と送信
-
XML ファイルを使用した作業
-
プログラムによるコードのコンパイル
-
システム・プロセスの管理
Caché には、言語バインディングやその他のツールに加え、特定の用途 (典型的な例ではデバッグや管理) のためのルーチンも用意されています。特定の用途のツールを見つけるには、"インターシステムズ・プログラミング・ツールの索引" を参照してください。
インターシステムズ・クラス・リファレンス (Documatic)
Caché には、インターシステムズ・クラス・リファレンスまたは (非公式には) Documatic と呼ばれる一連の Web ページが用意されています。これらのページには、インターシステムズで提供しているすべてのクラスとユーザが作成するすべてのクラスに関する情報が記載されています。このリファレンス情報には、すべてのクラス・メンバの定義が示されていますが、それはそれらの実際の実装とは関係ありません。つまり、メソッド・シグニチャは表示されますが、それらの内部の定義は表示されません。これには、要素間のリンクが含まれており、コードのロジックをすばやく、場合によってスタジオよりも迅速にたどることができます。また、検索オプションも用意されています。
クラスをすばやく見つけるには、"インターシステムズ・プログラミング・ツールの索引" を参照してください。このドキュメントは、プログラマの興味ごとに大まかなレベルで分類されており、"インターシステムズ・クラス・リファレンス" の特定のクラスへ多数のリンクが掲載されています。
インターシステムズ・クラス・リファレンスへのアクセス
インターシステムズ・クラス・リファレンスを表示するには、以下のいずれかを実行します。
-
オンライン・ドキュメント・システムを起動します。メイン・ページで [InterSystemクラスリファレンス] を選択します。
-
ローカルのインターシステムズ・サーバでブラウザのページに次の URL を入力します。57772 は、このサーバに構成されている Web サーバ・ポート番号です。
http://localhost:57772/csp/documatic/%25CSP.Documatic.clsOpens in a new tab
-
スタジオで、[表示]→[クラスドキュメントの表示] を選択します。
-
スタジオでコードを表示し、クラスの名前を選択して F1 キーを押します。クラスの説明が表示されたインターシステムズ・クラス・リファレンスが開きます。
インターシステムズ・クラス・リファレンスの概要
この例では、このドキュメントをオンラインで読んでいる場合に混同を避けるため、インターシステムズ・クラス・リファレンスの背景を、既定の白ではなく、グレーで表示します。
以下は、全体的なナビゲーションに使用する、左側の領域を示しています。
ここでは次の操作を実行できます。
-
目的のネームスペースを選択します。
-
システム・クラスの表示と非表示を切り替えます。
-
パッケージを展開し、それらのクラスを表示します。
-
パッケージまたはクラスを選択し、その詳細を表示します。それにより、右側にリファレンス・ページが表示されます。
次の図は、%Library.StringOpens in a new tab のリファレンス・ページを示しています。
これから以下の点がわかります。
-
[DocBook] は、DocBook アプリケーションへのリンクです。
-
[検索] によって検索ページが表示されます。
-
最初の行は、%Library.StringOpens in a new tab の継承元のクラスを示しています。このクラス名は、そのクラスのリファレンス・ページへのリンクです。
-
その下の領域は、クラス定義に含まれている、そのクラス自体のコメントを示しています。3 つのスラッシュ (///) で始まるコメントがあれば検出され、それらのコメントは、それに続く項目の説明として扱われます。
-
ここに表示される [要約] 領域には、このクラスのパラメータ、プロパティ、およびメソッドがリストされます。これらの項目のいずれかを選択すると、ページがその要素まで下方にスクロールします。
-
[プライベート] チェック・ボックスにチェックを付けると、そのページには、プライベートとマークされたクラス・メンバも表示されます。Private キーワードは、クラス・メンバをプライベートとして指定し、それによってそれは同じクラスの他のメンバのみが使用できるようになります。
-
[ストレージ] チェック・ボックスにチェックを付けると、そのページには、ストレージ情報も表示されます。
リファレンス・ページの下部の領域には、以下の例のようにクラス・メンバの詳細が表示されます。
メソッド・シグニチャまたはコメント内のリンクを選択すると、参照されるクラスが表示されます。
デバッグのためのツール
このセクションでは、Caché でのデバッグのための主なツールについて簡単に説明します。
"Caché ObjectScript の使用法" の “コマンド行ルーチンのデバッグ” の章も参照してください。いくつかの追加のツールのリストが記載されています。
スタジオ・デバッガ
スタジオのデバッガを使用すると、Caché サーバで動作するプログラムをステップ実行できます。デバッグ可能なプログラムとしては、INT ファイル、BAS ファイル、MAC ファイル、CLS ファイル内のメソッド、HTTP 要求に応答する CSP クラス、Java や ActiveX のクライアントから呼び出されるサーバ側のメソッド、サーバでホストされるアプリケーションなどがあります。クラスや CSP ページでステップ実行やブレークポイントの設定を行うには、対応する INT ファイルまたは BAS ファイルを開き、そのファイルでデバッグ・コマンドを使用します。INT ソース・コード・ファイルを表示するには、[ツール]→[オプション] ダイアログの [コンパイラ]→[一般フラグ] タブで、[生成されたソース・コードを保存] オプションにチェックを付けます。
以下のいずれの方法でも、デバッガをターゲット・プロセスに接続することができます。
-
デバッグ, デバッグ対象 を使用してデバッグ対象を定義します。次に、[デバッグ]→[実行] を選択して対象のプログラムを起動し、そのサーバ・プロセスに接続します。
-
[デバッグ]→[アタッチ] を選択して、Caché サーバで実行中のプロセスを選択します。
詳細は、"スタジオの使用法" の “スタジオ・デバッガの使用” を参照してください。
ZBREAK
場合によっては、Caché デバッガ および ZBREAK コマンドを使用してコマンド行デバッグを実行したほうが、容易に制御できます。
Caché デバッガ を使用すると、デバッグ・コマンドを、ルーチンのコードに直接挿入されているかのように実行できます。コードの実行時にコマンドを発行し、アプリケーションの実行状況と処理フローをテストできます。以下は主な機能です。
-
ZBREAK コマンドを使用してコードにブレークポイントを設定し、その場所に達したときに特定の動作を実行します。
-
ローカル変数にウォッチポイントを設定し、その変数の値が変更されたときに特定の動作を実行します。
-
ブレークポイントとウォッチポイントの実行中は、別々のウィンドウで Caché とやり取りします。
-
実行パスが変更されたときは常に実行をトレースし、その記録を (ターミナルあるいは別のデバイスに) 出力します。
-
実行スタックを表示します。
-
デバイスでアプリケーションを実行中、デバッグの入出力はセカンド・デバイスで行われます。これにより、Caché アプリケーションを全画面で実行しながら、アプリケーションのターミナル入出力を中断せずにデバッグできます。
詳細は、"Caché ObjectScript の使用法" の “Caché デバッガによるデバッグ” を参照してください。
^%STACK
^%STACK ルーチンでは、プロセス実行スタックを検証できます。これを使用すると、以下を実行できます。
-
NEW コマンドあるいはパラメータ渡しで “隠された“ 値を含むローカル変数値の表示
-
$IO や $JOB などのプロセス状態変数値の表示
詳細は、"Caché ObjectScript の使用法" の “スタックを表示する %STACK の使用法” を参照してください。
トレース文
他のプログラミング言語と同様に、コードを編集し、目的の変数の現在の状態に関する出力を生成する文を含めることができます。他の言語では、出力を現在のデバイスまたはファイルに書き込むことがありますが、Caché でも、必要であればそのようにすることができます。
Caché には、自身のグローバルのノードを設定するという代替方法があります。$INCREMENT 関数を使用して、整数キーを持つ一連のノードを作成します。以下はその例です。
if (myval=mytestval) {
//do stuff
set ^CacheTempUserMyTrace($increment(^CacheTempUserMyTrace))="main branch"
} else {
//do other stuff
set ^CacheTempUserMyTrace($increment(^CacheTempUserMyTrace))="else branch"
}
もう 1 つの方法は、以下のとおりです。
set ^CacheTempUserMyTrace($increment(^CacheTempUserMyTrace))=$LISTBUILD("message",data)
自身のグローバルについては、^CacheTempUser* という形式の名前を使用します。これは CACHETEMP データベースに書き込まれます。トランザクションがロールバックされる場合でも、グローバルはロールバックされず、一連のイベントの正確なレコードが格納されます。
監査ログ
コードをデバッグするときは、管理ツールにアクセスできる場合は、監査を有効にし、監査ログを表示すると役立ちます。
Caché を使用すると、イベントを監視し、これらのイベントが発生したときに監査データベースにエントリを追加できます。監査できるイベントは、次の 2 つのカテゴリに分類できます。
-
システム・イベント — Caché 内で発生する起動、シャットダウン、ログインなどの動作を監視するイベント。システム・イベントでは、セキュリティ設定や監査設定の変更など、セキュリティに関するイベントも監視します。これらのイベントには、<PROTECT> エラーと異常終了も含まれます。
-
ユーザ・イベント — ユーザが定義したカスタム・イベント。
監査の有効化と監査ログの表示の詳細は、"Caché セキュリティ管理ガイド" の “監査” の章を参照してください。
システム・ログ
システム管理者のディレクトリ。通常は、installdir\mgr になり、デバッグに役立ついくつかのログ・ファイルを含んでいます。ログ・ファイルには、コンソール・ログ (cconsole.log)、システム・モニタ・ログ (SystemMonitor.log)、および初期化ログ (cboot.log) などがあります。これらのログ・ファイルの詳細は、"Caché 監視ガイド" の “ログ・ファイルの監視” を参照してください。
詳細
この章で説明したトピックの詳細は、以下を参照してください。
-
"Caché システム管理ガイド" には、管理ポータルの大部分の使用方法が記載されています。
-
"スタジオの使用法" には、スタジオの使用方法が、そのソース・コントロール・フックの使用に関する情報も含めて記載されています。
-
"ターミナルの使用法" には、ターミナルの使用方法が、MV シェルや TSQL シェルなどさまざまなシェルの起動方法を含めて記載されています。
-
"Caché ObjectScript リファレンス" には、ObjectScript の演算子、コマンド、関数、特殊変数、およびその他の部分に関する参照情報が記載されています。
-
"インターシステムズ・プログラミング・ツールの索引" は、インターシステムズのクラス、ルーチン、バインディング、およびその他のプログラム・ツールについて要約した一覧であり、トピックごとにグループにまとめられています。