【IRIS/Cache】ターミナルからネームスペース一式を作成する

本記事は、ターミナルのコマンド入力から、無印準拠のデータベース/ネームスペースの作成を行います。

※この記事は下記の方向けになります。
  • ターミナルのコマンドでネームスペース一式を作成したい方
  • IRISHealth系のマッピング系の削除が飽きた方
  • シンプルなネームスペースを作成したい方

はじめに

IRIS for Healthのインスタンスでネームスペースを作成した時、3種のマッピング「グローバル」「ルーチン」「パッケージ」に大量のマッピングが設定されています。

■各種初期マッピング

・・・うん。多いですね。

特にグローバル・マッピングの数たるや、140件を超えています。

HealthShare系の機能を使わない場合、これらのマッピング設定が行われている為に、グローバル一覧に不要なグローバル名が並んでいたり、余計なクラスが検索されたり・・・とにかく邪魔に感じます。

そう思ったら、各マッピング設定をプチプチ削除です。

↓は全マッピングを削除し、関連グローバルを全部消した後の状態です。

ここら辺のグローバル名は、どうやってもグローバル一覧から消えないですよね。
削除してもゾンビのように復活します。
 ※グローバル名だけで中身はほぼ無いですが。

Health、Interoperability、Analytics辺りを使う予定がない場合、これらのマッピングやグローバルは使う機会がないでしょう。
とは言え、消すとしても手間ですし、全てのグローバルを消すことはできません。

まぁ、そもそもfor Healthインスタンスを使うなって話もありますが。

本記事は、IRIS for Healthインスタンスで、無印準拠のシンプルなネームスペースを作成する内容になります。

では、作成開始です!

データベースの作成

先ずは、データベースを作成します。

ターミナルを起動し、下記データベース作成コマンドを実行して下さい。

zn "%SYS"
s dir  = "D:\IRISDB\TUNAKAN"

w ##class(%File).CreateDirectoryChain(dir) // フォルダ作成
w ##class(SYS.Database).CreateDatabase(dir, 1) // 1MBでDB作成

【実行結果】

この状態だと、まだ管理ポータルの[ローカルデータベース]画面では、作成したデータベースが認識されていません。

作成したDATファイルをデータベースとして認識させるため、下記コマンドを実行します。

k p
s name = "TUNAKAN" // データベース名
s p("Directory")=dir
s p("MountRequired")=1
w ##Class(Config.Databases).Create(name, .p)

【実行結果】

無事、データベースとして認識されたようです。

これでデータベースの作成は完了となります。
次は、ネームスペースの作成を行います。

コマンドまとめ

データベース作成コマンドをまとめると下記になります。

// データベース作成コマンド
zn "%SYS"

s name = "TUNAKAN" // DB名は任意
s dir  = "D:\IRISDB\TUNAKAN" // 配置先は任意

w ##class(%File).CreateDirectoryChain(dir) // フォルダ作成
w ##class(SYS.Database).CreateDatabase(dir, 1) // 1MBでDB作成

k p
s p("Directory")=dir
s p("MountRequired")=1
w ##Class(Config.Databases).Create(name, .p) // DB認識

ネームスペースの作成

データベースを作成したら、次はネームスペースを作成しましょう。

コマンドは下記になります。

s name = "TUNAKAN"

s prop("Globals")=name // グローバル
s prop("Library")="IRISLIB" // システムライブラリルーチン
s prop("Routines")=name // ルーチン
s prop("SysGlobals")="IRISSYS" // システムグローバル
s prop("SysRoutines")="IRISSYS" // システムルーチン
s prop("TempGlobals")="IRISTEMP" // 一時グローバル
w ##Class(Config.Namespaces).Create(name,.prop)

【実行結果】

ネームスペースが作成されました。

この状態だと、3種のマッピングは全て空の状態となっています。

では、グローバル一覧を確認してみます。

グローバルが一つも表示されていません。
いやースッキリで気持ちがいいですねー!

(必要な場合)マッピング追加

何かしらのマッピングが必要な時は、ネームスペース作成後に設定します。

マッピングをコマンドで設定する方法に関しては、下記記事にて記載しています。
お手すきの際にご確認下さい。

ウェブ・アプリケーション作成

ウェブからの接続を使用する予定がない場合、ウェブ・アプリケーションの作成は不要ですが、稀にウェブ・アプリケーションが必要になります。
 → ユニットテスト実行後、管理ポータルから一覧を参照する場合等

今回は、ウェブ・アプリケーションの作成を行います。

作成手順

管理ポータルを起動し、[システム管理] > [セキュリティ] > [アプリケーション] > [ウェブ・アプリケーション]より、ウェブアプリケーション画面を起動します。

画面を起動したら、ボタン「新しいウェブ・アプリケーションを作成」をクリックし、「ウェブ・アプリケーション」画面を起動します。

画面が起動したら、下記項目を入力します。

No項目名説明
1名前任意ですが「/csp」は付与した方が良いかも?
2ネームスペース今回使用しているネームスペース名を選択します
3デフォルト設定ネームスペースに対し初作成であれば、チェックを入れておきます。
4種類CSP/ZENを選択
5認証認証なしとパスワードを選択
6物理パス「インストールディレクトリ + \csp\ネームスペース名\」で設定しておきます。

例)
s dir = “D:\IRIS\CSP\tunakan\”
w ##class(%File).CreateDirectoryChain([dir])

備えあれば憂いなしです。
作っておいても損にはならないので、手間でなければ作っておいた方が良いかもしれません。

動作確認

動作確認として、簡単な関数を作成し挙動を確認をしてみましょう。

【動作確認用サンプルPG】

Class developer.Sample
{

ClassMethod test(int As %Integer)
{
	w !,"入力値:"_int
	s ^tunakan = int
}

}

ターミナルで下記コマンドを実行します。

d ##class(developer.Sample).test(777)
w ^tunakan

【実行結果】

グローバルの入出力・関数の実行と、動作は問題なさそうです。

おわりに

いかがだったでしょうか。

本記事では、IRIS for Healthインスタンス上で、余計なマッピングを持たない「無印準拠」のネームスペースを作成する方法を解説しました。

デフォルト状態のHealthネームスペースは非常に多機能ですが、その分マッピングやグローバルの数が膨大で、使わない機能が前提の環境では管理が煩雑になります。

シンプルなネームスペースを一から作成することで、開発に必要な機能だけを残し、より見通しの良い環境を構築することが可能になります。

また、今回紹介した手順は、管理ポータルを使用せずターミナルを利用したネームスペース作成手順になります。

システムの環境作成をコマンドで行っている場合、これらのコマンドを組み込んでみてはいかがでしょうか。

ぜひ本記事の内容を参考に、ご自身の開発環境に合わせたネームスペース設計を試してみてください。