ネームスペースの構成
ネームスペースは、仮想の作業スペースにおけるデータとプログラムのコレクションです。ネームスペース内では、さまざまなグループやユーザが必要とするグローバルを定義できます。例えば、会社の経理部門が、異なるシステムや異なるディレクトリに存在する特定のグローバルを使用する必要がある場合、ネットワーク上のすべての経理のグローバルやデータベースを参照できる単独のネームスペースを設定できます。
InterSystems IRIS には、以下のようにあらかじめ定義されたネームスペースが用意されています。
以下の手順を実行して、管理ポータルの [ネームスペース] ページでネームスペースを構成できます。目的のページに移動するには、ホーム・ページで [システム管理] を選択してから、[構成]、[システム構成]、[ネームスペース] の順に選択します。
Note:
上記のトピックでは、管理ポータルを使用して、ネームスペースを手動で構成するプロセスを説明しています。InterSystems IRIS には、ネームスペース構成の自動化に役立つ、プログラムによるツールも含まれています。Config.NamespacesOpens in a new tab クラスを使用して、ネームスペースを作成および構成できます。詳細は、"インターシステムズ・クラス・リファレンス" を参照してください。
構成マージ・アクションのパラメータである CreateNamespace、ModifyNamespace、DeleteNamespace を使用してネームスペースを作成、変更、削除することもできます。構成マージでは、宣言型マージ・ファイルを適用することによって、目的のオブジェクトと設定で InterSystems IRIS のインスタンスをデプロイまたは再構成できます。この機能の詳細は、"構成マージを使用した InterSystems IRIS の自動構成" を参照してください。
1 つの InterSystems IRIS インスタンス内のネームスペース数の絶対上限は、2048 です。ネームスペース・テーブルのサイズは、自動的に決定されます。構成することはできません。
ネームスペースの詳細は、"サーバ側プログラミングの入門ガイド" の “ネームスペースとデータベース” の章を参照してください。
ネームスペースの作成/変更
新規ネームスペースは常時作成できますが、システムを設定する際にあらかじめユーザが必要とする基礎的なネームスペースを作成しておきます。ネームスペースを作成するには、[新規ネームスペース作成] をクリックして [新規ネームスペース] ページを表示してから、以下の手順を実行します。
-
ネームスペースの [名前] を入力します。
ネームスペースの名前には 1 つ以上の文字 (ただし、255 文字以内) を使用して、先頭の文字はアルファベットまたはパーセント記号 (%) とし、その後に任意の数の英数字、ダッシュ、またはアンダースコア文字を使用する必要があります。
Important:
予約システム名である BIN、BROKER、DOCUMATIC、%SYS は指定しないでください。
-
[コピー元] を使用して既存のネームスペースからコピーして、選択したネームスペースの複製を作成することができます。この場合、後述のステップ 6 で説明されている Web アプリケーション用チェックボックス以外のオプションは、すべて使用できなくなります。
-
グローバルの既定のデータベースを [ローカルデータベース] または [リモートデータベース] のどちらにするか選択します。
-
[グローバルに既存のデータベースを選択] で、このネームスペースの既定のグローバル・マッピングを選択するか、[新規データベース作成] をクリックします。[新規データベース作成] をクリックすると、データベース・ウィザードまたはリモート・データベース・ウィザードのいずれかが起動します。
-
オプションで、ルーチンの既定のデータベースを [ローカルデータベース] または [リモートデータベース] のどちらにするか選択できます。その後で、[ルーチンに既存のデータベースを選択] ドロップダウンを使用して、このネームスペースの既定のルーチン・マッピングのデータベースを選択するか、[新規データベース作成] をクリックします。[新規データベース作成] をクリックすると、データベース・ウィザードまたはリモート・データベース・ウィザードのいずれかが起動します。
-
このネームスペースにアクセスする Web アプリケーションを作成する場合は、[このネームスペースの既定の Web アプリケーションを作成する] チェック・ボックスにチェックを付けます。
-
必要に応じて、[相互運用プロダクション用にネームスペースを有効化] チェック・ボックスのチェックを外すことができます。詳細は、下記の "相互運用対応ネームスペースの作成" を参照してください。
-
必要な情報を入力したら、[保存] をクリックし、構成にネームスペースを追加します。
相互運用対応ネームスペースの作成
InterSystems IRIS インスタンスでネームスペースを作成する場合、[ネームスペースを相互運用プロダクション対応にする] チェック・ボックスが [新規ネームスペース] ページの最下部に表示され、自動的にチェックが付きます。相互運用対応でないネームスペースを作成するには、このチェック・ボックスをクリアしてから [保存] をクリックします。
このチェック・ボックスをクリアせずに相互運用対応のネームスペースを作成すると、以下のように、システムにより自動的にこの新規ネームスペース用の追加構成タスクが実行されます。
-
このネームスペースの既定グローバル・データベースが既存のデータベースである場合、そのデータベースで一部のクラスのアップグレードとリコンパイルが実行されます。
Caution:
他のネームスペースでもこのデータベースを使用している場合、この変更が適切でないことがあります。InterSystems IRIS インスタンスで新規ネームスペースを作成する場合は、既存データベースの再使用がこのネームスペースに対して適切であるかどうか注意深く検討してください。
-
これにより、グローバル・マッピング、ルーチン・マッピング、およびパッケージ・マッピングが定義され、InterSystems IRIS システムのクラスおよびデータがこのネームスペースで使用可能になります。
-
ノードが ^%SYS グローバルに追加されます。
-
InterSystems IRIS で必要となるアプリケーション名 /csp/namespace を使用して、このネームスペースの Web アプリケーションが作成されます。
医療用途の相互運用性向けの Foundation ネームスペースの作成
医療用途の相互運用性向けに Foundation ネームスペースと Foundation プロダクションを作成するには、InterSystems IRIS for Health™ のインストーラ・ウィザードまたは HealthShare® HealthConnect のインストーラ・ウィザードを使用します。[新規ネームスペース] ページは使用しません。インストーラ・ウィザードで Foundation ネームスペースを有効にしておくと、後でルーチン・データベースなどのオプションの変更が必要になった場合でも [ネームスペース] ページを使用して処理できます。
ネームスペースの名前変更または既定マッピングの変更
以下の手順を実行することで、InterSystems IRIS を再起動せずにネームスペースの名前変更や、ネームスペースがマップされるデータベースの変更を行うことができます。
-
[ネームスペース] ページに移動します ([システム管理]→[構成]→[システム構成]→[ネームスペース])。
-
[ネームスペース] ページで、変更するネームスペースの名前をクリックします。
-
既存の名前を変更または置換してネームスペースの名前を変更します。
Important:
相互運用対応のネームスペースの名前を変更している場合、プロセスを完了するには追加手順が必要となります。
-
システム・トレイから InterSystems ターミナルを開きます。
-
以下のように入力します。
do ##class(%Library.EnsembleMgr).EnableNamespace("<NewNamespace>",1)
<NewNamespace> は既存のネームスペースの新しい名前です。
-
[ウェブ・アプリケーション] ページ ([システム管理]→[セキュリティ]→[アプリケーション]→[ウェブ・アプリケーション]) に移動します。
-
ネームスペースの古い名前に対応するアプリケーションの名前を検索し、[削除] をクリックします。
-
ネームスペースの新しい名前に対応するアプリケーションの名前をクリックします。
-
[ネームスペースのデフォルト・アプリケーション] を選択し、[保存] をクリックします。
-
ターミナルで、次のように入力します。
do ##class(%EnsembleMgr).DisableNamespace("<OldName>",1)
<OldName> は、名前を変更しているネームスペースの元の名前です。
-
定義済みのデータベースのリストから [グローバルの既定のデータベース]、[ルーチンの既定のデータベース]、および [一時的な格納場所の既定のデータベース] を選択します。
Note:
[仮ストレージのデフォルトデータベース] ドロップダウン・リストからジャーナル・グローバル以外 (つまり、[ジャーナルグローバル] プロパティを [いいえ] に設定) で構成されたデータベースを選択することは、IRISTEMP の選択と同じではありません。詳細は、"データ整合性ガイド" の “ジャーナリング” の章の "一時グローバルと CACHETEMP の使用" を参照してください。
-
[保存] をクリックします。
Note:
変更時にデータベースに直接アクセスしているユーザは、ネームスペース・マッピングを更新するために、一度 InterSystems IRIS をログアウトして、再度ログインする必要がある場合もあります。
ネームスペースへのグローバル、ルーチン、およびパッケージ・マッピングの追加
マップされたデータベース内のグローバルやルーチンにアクセスできるだけでなく、同じシステムまたは異なるシステムに存在する、他のデータベースのグローバル、ルーチン、およびクラス・パッケージをマップすることもできます。これによって、さまざまな場所に存在するデータを、簡単に参照できるようになります。グローバル全体でも一部でもマップできます。これによって、データはディスクを簡単に行き来できます。
Note:
マッピングはアルファベット順に並べ替えられ、添え字が指定されている場合は、名前と添え字を基準にして並べ替えられます。詳細は、"グローバルの使用法" の “グローバル構造” の章を参照してください。
適切な項目をクリックし、マッピングを開始します。
以下は、飛行機の予約アプリケーションのサンプルで、どのようにマッピングが作動しているかの概略図です。
テスト・ネームスペース・マッピング
データやプログラムは、物理的なストレージ場所であるデータベースに保存され、論理的なリファレンスであるネームスペースによって参照されます。
Important:
マップされたコンテンツの識別子がローカル・コンテンツ (パッケージ、クラス、グローバル、またはルーチン名) と同じ場合、ローカル・コンテンツではなくマップされたコンテンツが表示されます。そのため、マッピングが既存のコンテンツから切り離されないよう、マッピングはできる限り具体的にする必要があります。
コンテンツを命名したり、マッピングを作成する際は、不要な競合を避けるため、必ず "識別子のルールとガイドライン" に従ってください。
グローバル・マッピング
グローバルおよびグローバル・サブスクリプト・レベルで、ネームスペースに新規グローバルのマッピングを追加し、そのマッピングをそのネームスペースのグローバルに対する既定のデータベース・マッピングよりも優先させるようにできます。
-
[ネームスペース] ページに移動して ([システム管理]→[構成]→[システム構成]→[ネームスペース])、グローバルをマッピングするネームスペースの行で [グローバルマッピング] をクリックします。
-
[グローバルマッピング] ページで、[新規] をクリックします。
-
グローバルが配置されるデータベースの [グローバル・データベースの位置] を選択します。
-
[グローバル名] を入力します。ABC* のようにグローバル名の一部として * 文字を使用すると、複数のグローバルを指定できます。
-
[マップするグローバルサブスクリプト] を入力します。添え字参照は開き括弧で始まる必要があります。以下はその例です。
(1)
("A")
(1):(5)
("A"):("Z")
("B",23,"m"):("E",5)
(BEGIN):("X")
("Y"):(END)
Note:
範囲 (例 : ("A"):("Z")) を指定する場合、指定された添え字の範囲は “~から、~以内” ではなく “~から、~未満” になります。つまり、定義された添え字範囲の下限は含まれますが、上限は含まれないことになります。例えば、Name (1):(10) の場合、Name (1) は含まれますが、Name (10) は含まれません。範囲の上限を除外することによって、添え字の範囲を Name ("a"):("b") のように指定して処理すると、Name ("aa") および Name ("aaaaa") を含め Name ("b") の直前までを有効範囲とする上限境界を指定できます。
予約語 BEGIN および END を使用して、使用可能な先頭および最後の添え字を示すことができますが、グローバルの添え字は個別にマッピングする必要があるため、添え字のあるグローバルで アスタリスク (*) を使用することはできません。
添え字レベル・マッピング (SLM) の範囲に関する詳細は、"グローバルの使用法" の “グローバル構造” の章の "グローバル・マッピングの設定" を参照してください。
-
[詳細] をクリックすると、以下のオプションが表示されます。
-
[照合] を選択します。照合は新規添え字レベルのマッピング・グローバルのみに適用されます。
-
[ロックデータベース位置] を選択します。詳細は、"構成パラメータ・ファイル・リファレンス" の “[Map]” セクションの "Global" を参照してください。
-
[OK] をクリックします。
Note:
新規のマッピング行の最初の列に表示される [>>] は、マッピングを編集可能で開いていることを示します。
-
マッピングを cpf ファイルに保存するには、[変更を保存] をクリックします。
Important:
既存のグローバルのデータベースの場所を変更するマッピングを追加することもできますが、これは実際にはグローバルを移動させません。グローバルは元のデータベース内にあるものの、ネームスペースはそのグローバルを新しくマップされたデータベース内で見つけようとするため、結果としてグローバルはアクセスできなくなります。既存のグローバルの新規マッピングを成功させるには、グローバルを手動で再配置する必要があります。これは例えばターミナルやスタジオを使用して、グローバルを新規データベース上で作成し、元のデータベースから削除することで実行します。
ルーチン・マッピング
ルーチン・レベルでネームスペースにマッピングを追加すると、そのマッピングでそのネームスペースのルーチンに対する既定のデータベース・マッピングをオーバーライドできます。
-
[ネームスペース] ページに移動して ([システム管理]→[構成]→[システム構成]→[ネームスペース])、グローバルをマッピングするネームスペースの行で [ルーチンマッピング] をクリックします。
-
[ルーチンマッピング] ページで、[新規] をクリックします。
-
ルーチンが配置される [ルーチン・データベースの場所] のデータベースを選択します。
-
[ルーチン名] を入力します。このルーチンは、マッピングの際に存在していなくてもかまいません (つまり、作成を計画しているルーチンの名前を使用できます)。
-
[OK] をクリックします。
Note:
新規のマッピング行の最初の列に表示される [>>] は、マッピングを編集可能で開いていることを示します。
-
マッピングを cpf ファイルに保存するには、[変更を保存] をクリックします。
例えば、前出のテスト・ネームスペース・マッピングを例にして考えてみましょう。airports データベース (FlightSchedule ネームスペース内) でスケジュール・ルーチン (例えば BOSZZairline) を作成し、TravelAgent ネームスペースのユーザに利用を許可する計画がある場合、[ルーチンマッピング] ページ (TravelAgent ネームスペース行) に移動して、[新規ルーチンマッピング] をクリックします。下図の [ルーチン・マッピング] ダイアログ・ボックスに情報を入力します。
Important:
1 つ以上のルーチンをマップするときには、それらのルーチンが必要とするすべてのコードとデータを必ず特定して、そのすべてのコードとデータがすべてのターゲット・ネームスペースで使用できることを確認します。マップされるルーチンは、以下の項目に依存している可能性があります。
-
インクルード・ファイル
-
その他のルーチン
-
クラス
-
テーブル
-
グローバル
追加のルーチン、パッケージ、およびグローバル・マッピングを必要に応じて使用して、これらの項目がターゲット・ネームスペースで使用できるようにします。
パッケージ・マッピング
クラス・パッケージ・マッピングを追加すると、特定のデータベースのパッケージにあるすべてのクラス (および、それらのクラスの生成されたすべてのルーチン) を、別のネームスペースから認識できるようになります。
-
[ネームスペース] ページに移動して ([システム管理]→[構成]→[システム構成]→[ネームスペース])、パッケージをマッピングするネームスペースの行で [パッケージマッピング] をクリックします。
-
[パッケージマッピング] ページで、[新規] をクリックします。
-
パッケージが配置される [パッケージデータベース位置] のデータベースを選択します。
-
[パッケージ名] を選択します。このパッケージは、マッピングの際に存在していなくてもかまいません (つまり、作成を計画しているパッケージの名前を使用できます)。新規パッケージ名を指定する手順は以下のとおりです。
-
[新規パッケージ] をクリックします。
-
[新規パッケージ名] テキスト・ボックスに名前を入力します。
-
[OK] をクリックします。
Note:
新規のマッピング行の最初の列に表示される [>>] は、マッピングを編集可能で開いていることを示します。
-
マッピングを cpf ファイルに保存するには、[変更を保存] をクリックします。
パッケージの説明とそのマッピング手順は、"クラスの定義と使用" の “パッケージ” の章の "パッケージ・マッピング" のセクションを参照してください。
Important:
パッケージをマップするときには、そのパッケージ内のクラスが必要とするすべてのコードとデータを特定して、そのすべてのコードとデータがすべてのターゲット・ネームスペースで使用できることを必ず確認します。マップされるクラスは、以下の項目に依存している可能性があります。
-
インクルード・ファイル
-
ルーチン
-
その他のクラス
-
テーブル
-
グローバル
追加のルーチン、パッケージ、およびグローバル・マッピングを必要に応じて使用して、これらの項目がターゲット・ネームスペースで使用できるようにします。
すべてのネームスペースへのデータのマッピング
グローバル、ルーチン、およびパッケージは、特定のネームスペースにマッピングされるだけではなく、すべてのネームスペースにマッピングすることもできます。この形式のマッピングを有効にするには、以下を行います。
-
まず、%ALL という名前のネームスペースを作成します ("ネームスペースの作成/変更" のセクションを参照)。
Note:
%ALL は、データのマッピング時以外は表示されません。つまり、これは現実のネームスペースではなく、すべてのネームスペースにデータをマッピングするための機能です。
-
次に、%ALL ネームスペースで目的のマッピングを行います ("ネームスペースへのグローバル、ルーチン、およびパッケージ・マッピングの追加" のセクションを参照)。
これらの %ALL マッピングは、すべてのネームスペースに適用されます。%ALL ネームスペースでマップされているリソースに対する、ネームスペース固有のマッピングを作成することはできません。%ALL のマッピングが、同じリソースへのすべてのネームスペース固有のマッピングをオーバーライドするためです。
Caution:
%ALL のマッピングは、%SYS を含むすべてのネームスペースに適用されます。インスタンスが使用するルーチンまたはグローバルを上書きするマッピングを作成すると、特定の機能が壊れる可能性があります。
%ALL を使用する場合、マッピングはできる限り限定的にする必要があります。また、"識別子のルールとガイドライン" に厳格に従ってください。特に、"回避する必要があるグローバル変数名" にリストされたグローバルに対して %ALL のマッピングを作成しないでください。
%ALL ネームスペースに添え字レベルのマッピングを作成する場合、ルート・グローバルのマッピングが %DEFAULTDB に自動的に作成されます。%DEFAULTDB 変数は、任意のネームスペースの既定のデータベースを表します。
ネームスペースの削除
ネームスペースとそれに関連付けられたすべてのマッピングを次の手順で削除できます。
-
[ネームスペース] ページに移動して ([システム管理]→[構成]→[システム構成]→[ネームスペース])、削除するネームスペースの行で [削除] をクリックします。
-
物理パスから Web ゲートウェイ・ページを削除するには、[ネームスペースの削除] ページで該当のチェック・ボックスにチェックを付けます。
-
ネームスペースとそれに関連付けられたマッピングを削除するには、[すぐに実行する] をクリックします。