IRIS における Python サポートの最近の改善と、InterSystems による Python DB-API サポートへの継続的な作業により、 Django プロジェクトに IRIS サポートを実装しました。Python DB-API の使用により、他のデータベースと連携することが可能です。
Django で、IRIS にデータを保存する単純なアプリケーションを試してみましょう。

InterSystems IRIS for Health™は、世界で最も重要なデータを管理する医療アプリケーションの迅速な開発を目的に特別に設計された世界初、かつ唯一のデータプラットフォームです。 トランザクションの処理と分析、拡張可能な医療データモデル、FHIRベースのソリューション開発、医療情報の相互運用性に関わる標準規格への対応など、すぐに使える強力な機能を搭載しています。 これらすべての機能により、開発者は価値を実現し、画期的なアプリケーションをすばやく構築することができます。 詳細はこちらをご覧ください
IRIS における Python サポートの最近の改善と、InterSystems による Python DB-API サポートへの継続的な作業により、 Django プロジェクトに IRIS サポートを実装しました。Python DB-API の使用により、他のデータベースと連携することが可能です。
Django で、IRIS にデータを保存する単純なアプリケーションを試してみましょう。

開発者の皆様、こんにちは。
インタ―システムズでは、本年7月に、「国際モダンホスピタルショウ 2022」に、3年ぶりに出展致しました。
ブースには、ミニシアターを設け、業界をリードする多くの方やパートナー企業様にプレゼンテーションをいただき、その動画を公開しています。
本日は、その中で、アプリケーション開発者の皆様に参考となる IRISを解説いただいたプレゼンテーション動画をご紹介させていただきます。
「Python + iknowpy... + IRISが変えるデータ分析 アプリケーション編」
「Python + iknowpy... + IRISが変えるデータ分析 アーキテクチャ編」
<プレゼンター>
群馬大学医学部附属病院
システム統合センタ― 副センター長 准教授 鳥飼 幸太先生
.png)
その他、HL7 FHIRを解説やパートナーソリューション紹介など、国際モダンホスピタルショウ2022 インタ―システムズブースでのプレゼンテーション動画は、こちらからご覧いただけます。
よろしければ、ご覧ください。
これは InterSystems FAQ サイトの記事です。
Question:
InterSystems IRIS は 2フェーズコミットをサポートしていますか?
Answer:
サポートしていません。
2フェーズコミットはデータベースシステムがサポートしているだけでは十分ではなく、アプリケーションサーバ等の各実装が定めている2フェーズコミットのプロトコルを駆使して、アプリケーションを構築する必要があります。
また関連するシステムの全てのコンポーネントが対応している必要がある、ロングトランザクションには向いていないなど、現実に実装する局面では様々な制約事項があります。
2フェーズコミットは、技術面、設計および実装面、コスト面、性能面などハードルが非常に高いため、実際には限られた領域での利用に留まっています。
プログラムで本番環境(インターフェース)を編集するには、相互運用性 apis と SQL クエリを組み合わせて使用できます。
大まかに言えば、その時点で作業しているネームスペースと本番環境を知ることが重要です。
// Object script
// アクティブなネームスペースはこの変数に格納される
$$$NAMESPACE
// ネームスペースを出力
Write $$$NAMESPACE
# Python
import iris
# このメソッドからアクティブなネームスペースが返される
iris.utils._OriginalNamespace()
# ネームスペースを出力
print(iris.utils._OriginalNamespace())
>>> DEMONSTRATION
本番環境の名前を知ることも重要です。次の API を使用してネームスペース内のアクティブな本番環境を取得できます。
// ObjectScript
USER>ZN "DEMONSTRATION"
// 現在または最後に実行した本番環境を取得
DEMONSTRATION>W ##class(Ens.Director).GetActiveProductionName()
>>> HSQL ゲートウェイ接続を使用した、外部データベースへのアクセス方法についてご説明します。
手順は以下になります。
1. 外部ソースへの SQL ゲートウェイ接続の作成を行います
※こちらの例では、IRISの別インスタンスへの接続を試しています。
※ODBCを使用される場合は、事前にシステムDSN(64bit)の準備が必要です。
管理ポータルより
[システム管理] > [構成] > [接続性] > [SQLゲートウェイ接続] の 新規接続作成 ボタンをクリックします。
接続の種類を選択し、必要項目を設定します。以下のサンプルは、ODBC接続(別IRISインスタンスのDSN設定)を行っています。
※ODBC/JDBC 各接続定義の作成の詳細は、以下のドキュメントをご覧ください。
JDBC 経由での SQL ゲートウェイへの接続
ODBC 経由での SQL ゲートウェイへの接続
2. リンクテーブルウィザードを使用して、1で作成したSQLゲートウェイ接続に対してリンクテーブルを作成します
管理ポータルより
[システムエクスプローラ] > [SQL] ページより、
[ウィザード] > [リンクテーブル] をクリックしリンクテーブルウィザードを開きます。
手順に従ってリンクテーブルを作成します。
・目的ネームスペース:リンクテー

開発者の皆さん、こんにちは!
InterSystems Interoperability コンテスト: サステナブルなソリューションの構築 の勝者が発表されました!
この記事ではコンテスト受講者を発表します 📢
.png)
開発者の皆さん、こんにちは!
サステナブルなソリューションの構築をテーマとした Interoperability プログラミングコンテストの投票が開始されました!
🔥 ベストアプリケーションはこれだ! 🔥 と思う作品にぜひ投票お願いします!
.png)
投票方法は以下ご参照ください。
VSCode から直接 Web ターミナルにアクセスしたいと思いませんか?
.png)
これは InterSystems FAQ サイトの記事です。
外部バックアップ機能と、SANソリューションが提供するスナップショット(スナップクローン、ミラークローンなど呼び方はベンダ毎に異なります)などのテクノロジを利用することで、バックアップ時のインスタンス停止時間を最短にすることができます。
操作手順概要は以下の通りです。
%SYS>set status=##class(Backup.General).ExternalFreeze()%SYS>set status=##class(Backup.General).ExternalThaw()
【ご参考】
ExternalFreeze() の処理は以下のようになります。
1. ジャーナルファイルの切り替え
2. データベースバッファ上の書き込み待ちバッファをすべてデータベースファイルに書き出す
3. ライトデーモ

これは InterSystems FAQ サイトの記事です。
Web 経由でのイメージファイルのアップロード/ダウンロードを行うサンプルをご紹介します。
サンプルでは、以下の手順でファイルの「アップロード/ダウンロード」を行っています。
サンプルプログラムの使い方は次のとおりです。
最初のページでファイルを選択し go ボタンをクリックすると、次のページにアップロードされた画像が表示されます。
アップロードしたファイルをダウンロードしたい場合は、download ボタンをク
これは、2022.2の開発者プレビュープログラムのリリース第6弾です。 プレビューリリースは、隔週で更新される予定で、準備が整い次第、機能を追加していく予定です。 2022.2では、SQL管理、クラウド統合、KafkaおよびJMSアダプタ、SQL Loaderなどにおいて、多くのアップデート、修正、機能強化が行われています。 製品改善のため、開発者コミュニティを通じてフィードバックをお寄せください。
列指向ストレージに関して、Early Access Program (EAP) を受け付けています。ご興味のある方はぜひ Early Access Program にご参加ください。
開発者向けプレビューでは、Ubuntu 22.04 LTSやLinux FHEL 9に対応しています。
通常、CDリリースにはサポートされているすべてのプラットフォーム向けの標準インストールパッケージと、OCI(Open Container Initiative、別名Dockerコンテナ)形式のコンテナイメージが付属しています。 詳細については、サポートされるプラットフォームのドキュメントをご参照ください。
インストールパッケージとプレビューキーは、WRCのプレビューダウンロードサイトまたは評価サービスのウェブサイト(2022.2へのアクセスには「Show Preview Software」を
これは InterSystems FAQ サイトの記事です。
InterSystems IRIS Data Platform(以下IRISと表記)ではマルチモデルのサポートにより、データに対して様々なアクセス手法を使用することができます。
主だったアクセス手法としてダイレクトアクセス、SQLアクセス、オブジェクトアクセスがあります。
ダイレクトアクセス は、IRISのネイティブ構造であるグローバルと呼ばれるキーバリュー型のデータに直接アクセスする方法です。
SQLアクセス は、リレーショナルデータベースシステムにアクセスするための標準言語であるSQLを使用してデータにアクセスする方法です。
オブジェクトアクセス は、オブジェクト指向言語でオブジェクトを操作するための表記法として幅広く利用されるドット記法を使用してデータにアクセスする方法です。
ダイレクトアクセスとSQLアクセスおよびオブジェクトアクセスでは、処理の抽象度が異なります。
抽象度が高くなるに伴い、内部的な処理のオーバヘッドが増加するため、単純な1スレッド単位でのアクセススピードの速さについては、ダイレクトアクセスが、SQLアクセスとオブジェクトアクセスに比較して速い場合が多いです。
しかしながら、今後SQLアクセスに関してより高速に処理できるよう様々な開発が進行中です。
その点を考慮すると段々とその性能
これは InterSystems FAQ サイトの記事です。
実行ログデータなどトランザクション中にロールバックが発生しても前の状態に戻ってほしくないデータがあります。
それらのデータをロールバックされないデータベースIRISTEMPに配置することで上記の要件に対応できます。
ロールバックさせたくないテーブルの実体をこのデータベースにマッピングすることでロールバック後に情報を残すことができます。
ただし、このデータベースはIRIS再起動で内容がクリアされますので、永続的に保持したい場合には、いずれかのタイミング(ロールバック後等)で永続テーブルにコピーを行う必要があります。
また、これとは別に、トランザクション対象外としたいテーブル操作の前にプロセスのジャーナル記録を停止し、操作完了後にジャーナル記録を再開することで、その操作をトランザクション対象外にすることもできます。
ただしこの方法は、ミラーリングをお使いいただく際にはご使用いただけません。
これは InterSystems FAQ サイトの記事です。
正規表現を使用する$Locate()関数がご使用いただけます。
使用方法の例は以下の様になります。
USER>write str
あいうえおかきくけこABC123456さしすせそ
USER>write$locate(str,"[A-Za-z]{3}[0-9]{6}",,,val)
11
USER>write val
ABC123これは InterSystems FAQ サイトの記事です。
クライアントからターミナルにログイン(接続)できない時、ターミナル接続を可能にするサービスが有効になっていないことが原因として考えられます。
ターミナル接続を可能にするサービスが有効になっていないことが原因として考えられます。
管理ポータル :[ホーム] > [システム管理] > [サービス]
有効になっていない場合は、リンクをクリックしてサービス定義編集画面を開き、"サービス有効"にチェックを入れて保存します。
.png)
もう一つの原因としてはOSのファイアウォールによりターミナル接続が遮断されている場合が考えられます。
リモートでターミナル接続される場合はファイアウォールの設定を無効にしてお使い下さい。
これは、2022.2の開発者プレビュープログラムのリリース第5弾です。 プレビューリリースは、隔週で更新される予定で、準備が整い次第、機能を追加していく予定です。 2022.2では、SQL管理、クラウド統合、KafkaおよびJMSアダプタ、SQL Loaderなどにおいて、多くのアップデート、修正、機能強化が行われています。 製品改善のため、開発者コミュニティを通じてフィードバックをお寄せください
列指向ストレージに関して、Early Access Program (EAP) を受け付けています。ご興味のある方はぜひ Early Access Program にご参加ください。
今後の開発者向けプレビューでは、Ubuntu 22.04 LTSへの対応や、コミュニティエディションでの制限の変更などが予定されています。ご期待ください!
通常、CDリリースにはサポートされているすべてのプラットフォーム向けの標準インストールパッケージと、OCI(Open Container Initiative、別名Dockerコンテナ)形式のコンテナイメージが付属しています。 詳細については、サポートされるプラットフォームのドキュメントをご参照ください。
インストールパッケージとプレビューキーは、WRCのプレビューダウンロードサイトまたは評価サービスのウェブサイト(2022.2へのアクセスに
Studio では、クラスを直接その名前で開くことができます。何度もクリックしながら目的のクラスに到達するまでパッケージツリー内を移動する必要はありません。
Ctrl + O(またはファイル -> 開く)を押せば、以下のようにクラス名を入力するだけです。
.png)
Enter を押すと、クラスが開きます。
VSCode ではこれをどのようにして行えるでしょうか?
これは InterSystems FAQ サイトの記事です。
テーブル(クラス) のデータを削除する際に %KillExtent() というメソッドを使用すると、レコードを1ずつ削除するのではなく、データを格納しているデータグローバル、インデックス定義のグローバル(ノード) をまとめて 削除することができます。
kill^ISJ.xxxD
kill^ISJ.xxxIのようにデータグローバルやインデックスグローバルをまとめて削除するのと同じような動作となります。
そのため、ジャーナルレコードへの出力は最小限になります。
使用例:
write##class(ISJ.xxx).%KillExtent()
ただし、トランザクション下で実行すると一括 Kill の場合でも保存されているレコードに応じたジャーナルレコードが生成されるのでご注意ください。
また、以下のドキュメントの注意書きにあるように、他クラス(テーブル)への参照などが含まれているクラスで実施されると整合性に問題が発生する場合がありますのでご注意ください。
こちらを必要なだけ記述したタスククラスを作成すると、タスクスケジューラから定期的に実行できます。
タスククラスの作成方法は、以下のトピックをご覧ください。
これは InterSystems FAQ サイトの記事です。
TCP アダプタを使用するビジネスホストの [接続中を維持(StayConnected)]と[プールサイズ(PoolSize)]のデフォルト設定値は以下の通りです。
ネットワークの問題でビジネスホストへの接続が切断された場合に、プロダクション側では切断されたことを検知できないため新しい接続を受け付けません。
またこの状況の時、イベントログにも記録されません。
StayConnected が デフォルト値(-1)の場合、接続がタイムアウトしないため新しい接続を受け付けるためには、ビジネスホストを再起動する必要があります。
このような状況を回避するためには、StayConnected を 0 以上の値に設定することを推奨します。
例えば300(秒)に設定した場合、TCP ビジネスホストは 300 秒以上新たなメッセージを受信しなかった場合に、自動的に接続を切断して再接続できます。
処理量の多いシステムの場合には、通常 StayConnected の値をさらに小さな値、例えば 5(秒)に設定します。
これは InterSystems FAQ サイトの記事です。
コンソールログに任意のメッセージを書き込む方法として%SYS.System クラスの WriteToConsoleLog メソッドを使用することができます。
以下に例を示します。
%SYS>write##class(%SYS.System).WriteToConsoleLog("xxxxx log message",0,0)
1
WriteToConsoleLogメソッドに指定できるパラメータの詳細は、以下のドキュメントをご参照下さい。
これは、2022.2の開発者プレビュープログラムのリリース第4弾です。 プレビューリリースは、隔週で更新される予定で、準備が整い次第、機能を追加していく予定です。 2022.2では、SQL管理、クラウド統合、KafkaおよびJMSアダプタ、SQL Loaderなどにおいて、多くのアップデート、修正、機能強化が行われています。 製品改善のため、開発者コミュニティを通じてフィードバックをお寄せください
列指向ストレージに関して、Early Access Program (EAP) を受け付けています。ご興味のある方はぜひ Early Access Program にご参加ください。
開発者プレビュー4ではRed Hat RHEL 9のサポートが追加されました。
CDリリースには、サポートされているすべてのプラットフォーム向けの標準インストールパッケージと、OCI(Open Container Initiative、別名Dockerコンテナ)形式のコンテナイメージが付属しています。 詳細については、サポートされるプラットフォームのドキュメントをご参照ください。
インストールパッケージとプレビューキーは、WRCのプレビューダウンロードサイトまたは評価サービスのウェブサイト(2022.2へのアクセスには「Show Preview Software」をチェックしてください)から入手
これは InterSystems FAQ サイトの記事です。
残念ながら良い方法はありません。
もし処理の流れとして突然処理を中断されると不都合がある場合には、OnunloadHandler内でalertメソッドにより、Xボタンを押さないように注意を促すようなメッセージを出す方法が考えられます。
一般的には、ユーザ都合で処理中断されてもサーバ側処理内でデータの整合性等に不都合が発生しない様にアプリケーションの実装を行う必要があります。
ページのアンロード時に呼び出されるOnunloadHandler内でサーバ・メソッドを呼び出す方法は様々な問題があるため、使用することはお勧めしません。
これは InterSystems FAQ サイトの記事です。
TRYブロック内で任意のカスタムエラーを発生させたい場合、以下のように throw で例外を渡すことが可能です。
以下のサンプルでは、Stcount が 1 より小さい場合にカスタムエラーを発生させています。
Class User.Test
{
ClassMethod ExceptionTest()
{
try
{
// : some codesif (Stcount<1) {
throw##class(%Exception.General).%New(" ユーザ定義エラー","5001","ロケーション","エラー時のデータ")
// ユーザ作成エラーは5001以降
}
}
catch ex
{
write"エラー #", ex.Code, ": ", ex.Name, " : ", ex.Location, " ", ex.Data
return
}
}
}
上の例では、Stcount が 1 より小さい場合、以下のようなエラーが出力されます。
USER>do##class(User.Test).ExceptiEmbedded Python で Excel のデータを IRIS グローバルに格納する方法 では Excel データを pandas.DataFrame に取り込んで、それを InterSystems IRIS グローバルに保存する方法をご紹介しました。
今回は「lxml を使用し Web スクレイピングした表(テーブル)のデータを InterSystems IRIS グローバルに格納する」方法をご紹介します。
※以下は Windows 上の IRIS でのインストール方法になります。
UNIX ベースのシステムでは、pip3 コマンドを使用してインストールします。詳細は ドキュメント をご覧ください。
最初に、irispip コマンドで必要なライブラリをインストールします。
今回は、pandas、lxml の2つのライブラリをインストールします。
>cd C:\InterSystems\IRIS\bin
C:\InterSystems\IRIS\bin>irispip install --target C:\InterSystems\IRIS\mgr\python pandas
C:\InterSystems\IRIS\bin>irispip install --target C:\InterSystems\IRIS\mgr\python lxml
今回サンプルで
開発者の皆さん、こんにちは!
Flaskを使うと簡単にWebアプリが作成できるようでしたので、Embedded Pythonを利用してIRISに保存した月毎の歩数データ(テーブル/グローバル)を matplotlibを利用してグラフ表示する簡単なWebアプリを作成してみました。
使っているPythonスクリプトファイルやHTMLは以下の通りです(図例はテーブルからデータを取る例ですが、サンプルにはグローバルからデータを取得する例も含まれます)。
サンプルはこちらに置いています👉https://github.com/Intersystems-jp/WalkSteps
IRISのインストール環境に合わせて、サンプルのディレクトリを分けています。
<Windows にIRISをインストールされている場合>
https://github.com/Intersystems-jp/WalkSteps/tree/master/Windows をご覧ください。
Windows上Pythonのバージョンは3.9で試しています。3.10では動作しませんでしたので、3.9でお試しください。
<Windows以外にIRISをインストールされている場合>
https://github.com/Intersystems-jp/WalkSteps/tree/master/Linux をご覧ください。
.png)
これは InterSystems FAQ サイトの記事です。
ObjectScript言語は、Java言語等がサポートしている型キャストをサポートしていません。
ただし、メソッドのキャストはサポートしています。
詳細は以下ドキュメントページをご参照ください。
InterSystems ObjectScript言語はJava言語や.NetのC#言語のような静的型付き言語とは異なり、動的型付き言語に分類される言語になります。
従って型の解釈は実行時に行われ、宣言時に型を合わせるという必要性がないため型キャストのような仕組みを用意していません。
これは InterSystems FAQ サイトの記事です。
ミラーリングが同期の対象とするのはデータベースファイルのみです。
アプリケーションに必要なその他のファイル(CSPファイル、画像ファイル、ドキュメントファイルなど)をミラーセットを構成する二台のサーバー間で同期させるには、
などの方法が考えられます。
また、2の方法ではWindows上ではRoboCopy、Linuxの場合にはrsyncという同期ソフトを使った実例があります。
irisコマンドのqlistまたはlistを使用して出力先をファイルにして出力することができます。
qlistの結果は、^を区切り文字としたテキスト形式で出力されます。
^で区切られた3番目の部分に稼働状況のデータがあります。
$ iris qlist IRIS > iris.log
$ cat iris.log
IRIS^/Applications/iris^2022.1.0.164.0^running, since Thu Apr 7 16:37:03 2022^iris.cpf^1972^52773^0^alert^IRIS^^^/Applications/iris
listの場合には、先頭にstatus:と表示された行に稼働状況のデータがあります。
Unix系のOSの場合
$ iris list IRIS > iris.log
$ cat iris.log
Configuration 'IRIS' (default)
directory: /Applications/iris
versionid: 2021.2.0.650.0
datadir: /Applications/iris
conf file: iris.cpf (SuperServer port = 1972タスク成功時・失敗時、それぞれ通知メールを送信することができます。
そのためには事前にターミナルからTASKMGRルーチン を実行して、メールサーバを登録する必要があります。
> zn"%SYS"
> do^TASKMGR1) タスク作成
2) タスク編集
3) タスク一覧
4) タスク削除
5) タスク一時停止
6) タスク再開
7) タスク実行
8) タスクリポート
9) タスクマネージャオプション
10) 終了
そして、メニューから9) タスクマネージャーオプションを選んで
オプション?9
1) タスクマネージャ情報
2) タスクマネージャを開始する
3) タスクマネージャ一時停止
4) タスクマネージャ再開
5) タスクマネージャ履歴
6) メール設定定義
7) 終了
次に6) メール設定定義を選びます。
オプション?6
1) メールサーバ定義
2) サーバポート定義
3) 返信先定義
4) 送信者定義
5) タイムゾーン
6) 認証ユーザ定義
7) SSL 構成を定義
8) 終了
そこで以下2点を最低限設定します。
1) メールサーバ定義 (SMTPサーバ名) 例: xxxxxx.xxxxx.com
4) 送信者定義 (通知メールのFROMアドレス)

これは、2022.2の開発者プレビュープログラムのリリース第3弾です。 プレビューリリースは、隔週で更新される予定で、準備が整い次第、機能を追加していく予定です。 2022.2では、SQL管理、クラウド統合、KafkaおよびJMSアダプタ、SQL Loaderなどにおいて、多くのアップデート、修正、機能強化が行われています。 製品改善のため、開発者コミュニティを通じてフィードバックをお寄せください
列指向ストレージに関して、Early Access Program (EAP) を受け付けています。ご興味のある方はぜひEarly Access Programにご参加ください。
CDリリースには、サポートされているすべてのプラットフォーム向けの標準インストールパッケージと、OCI(Open Container Initiative、別名Dockerコンテナ)形式のコンテナイメージが付属しています。 詳細については、サポートされるプラットフォームのドキュメントをご参照ください。
インストールパッケージとプレビューキーは、WRCのプレビューダウンロードサイトまたは評価サービスのウェブサイト(2022.2へのアクセスには「Show Preview Software」をチェックしてください)から入手できます。
InterSystems IRIS やIRIS for Healt