InterSystems Kubernetes Operator (IKO) 3.8 がリリースされました。 IKO 3.8 は、多くのバグ修正とセキュリティ更新に加えて、新機能を追加しました。注目の機能は以下のようになっています。
これは InterSystems FAQ サイトの記事です。
InterSystems 製品では、ユーザが持つロールによって「InterSystems 製品内で何ができるのか」が決まります。
では、ロールには何が含まれているのでしょうか。
ロールには、複数の特権を含めることができます。特権とは、リソース(保護対象)に対する許可の設定を指しています。
本記事では、IRIS の開発者である山田さん(Yamada) を例に、以下の内容をご説明します。
1) ロールから付与される特権(=リソースに対する許可)について具体例を利用した確認方法
《ご参考》
ビデオでの解説もあります。ラーニングパスの「InterSystems IRIS 管理の基本」の「4. セキュリティの構成と管理」をご参照ください。
ラーニングパスには、管理者ではないけれど管理概要も知っておきたい方向けの「開発者向け InterSystems IRIS の管理概要」もあります。ぜひご参照ください。
1) ロールから付与される特権(=リソースに対する許可)について具体例を利用した確認方法
山田さんは開発者であるため、VSCode から T1 ネームスペースにアクセスし開発をしています。
これは InterSystems FAQ サイトの記事です。
ロックテーブルを参照する方法として、主に以下の3つの方法が挙げられます。
1. 管理ポータルで参照する方法
⇒ 管理ポータル:システムオペレーション > ロック > ロックを表示(または管理)
2. ^LOCKTAB ユーティリティ を使用する方法
⇒ %SYS> do ^LOCKTAB
3. プログラムで参照する方法
⇒ プログラム内でロック情報を取得する方法
こちらの記事では、ロックテーブルで参照できる情報について、以下の3つのケースに分けて、かかるロックとその意味をご説明します。
1.トランザクションで更新クエリ実行時、他のプロセスで更新・参照した状態 2.デッドロックとなった状態 3.テーブルロックがかかった状態
目視で一番わかり易いのは、1の 管理ポータルで参照する方法 になるので、こちらで説明したいと思います。
最初に、
1.トランザクションで更新クエリ実行時、他のプロセスで更新・参照をすると、どのようなロックがかかるのか見ていきます。
a. プロセスA(PID=10044)にてトランザクションで、Sample.Personテーブルの ID=1 を更新します。 ⇒ Exclusive_e->Delock ロック
[SQL]TL1:USER>>updateNameb.
次のようなプログラムです。
<a href=# onclick='Js_StageCNG(3)'>ステージ3に進む</a>
・・・
Set Stage=%session.Get("STAGE")
if Stage="" set Stage=1
・・・
if Stage=3 {
動かなかったので、すべてコメントに変えたがやはり動かなかった
}
<script language=javascript>
function Js_StageCNG(key) {
ans=#server(..StageCNG(key))#
window.location.href="...csp"
}
</script>
<script language=cache method="StageCNG" arguments="key:%Library.String" returntype="%Boolean">
do %session.Set("STAGE",key)
quit 1
</script>
この現象は、最近、突然に起こるようになりました。
これは InterSystems FAQ サイトの記事です。
InterSystems製品では、複数のプロセスが同時に同じデータにアクセスする場合、排他制御を行うためにロックを使用できます。
ロックは、データの更新を正しく行い整合性を保つための仕組みで、あるデータに対する更新処理を制御するために使用します。
ロックを操作するには、LOCK(L)というコマンドが使用できます。
こちらの記事では、InterSystems製品で使用できるロックの種類、LOCKコマンドの使い方をご紹介します。
★ロックの種類
| 増分 | 単純 | |
| 排他(既定) | LOCK +^A | LOCK ^A |
| 共有 | LOCK +^A#"S" | LOCK ^A#"S" |
プラス記号 (+) をつけると、増分ロックになります。1つのプロセスで複数の増分ロックを追加できます。
プラス記号 (+) をつけないと、単純ロックになります。こちらは、1つのプロセスで1つのロックのみ所有できます。単純ロックコマンド実行時に既存のロックがあった場合、そのプロセスが保持している既存のロックをすべて削除し、新しいロックを追加します。
排他ロック:
データを更新するために使用するロックです。
プロセスが特定のロック名の付いた排他ロックを所有している時、その他のプロセスは、そのロック名の付いたロックを取得できません。
ご好評をいただいておりますソリューションウェビナー、3回目は以下のテーマで開催します。是非ご参加ください!
日時:6月17日(火)13時半~14時半
タイトル:サイロ化されたデータを有効活用するには? InterSystems Data Fabric Studioのご紹介
参加費無料・事前登録制
【概要】
あらゆるステークホルダーが必要な時に必要なデータにアクセスするには、まずアプリケーション毎に異なる種類のデータを使いやすい、統一されたデータ形式の変換が不可欠です。データアクセスに関わる課題を弊社の新製品、InterSystems Dat Fabric Studioはどのように解決できるのか、ユースケースとデモを交えてお話します。
【こんな方にお勧め】
- データの利活用方法を検討されている方
- データサイロにお悩みの方
【前提知識】
リレーショナルデータベースの基礎知識があれば望ましいです。Data Fabric Studioはローコードツールです。
次回の Python コンテストでは、Python を使用して IRIS をデータベースとして使用する簡単な REST アプリケーションを作成する方法についての小さなデモを作成しようと思います。 以下のツールを使用します。
- FastAPI フレームワーク: 高パフォーマンス、学習しやすい、高速コーディング、プロダクション対応
- SQLAlchemy: Python SQL ツールキットで、アプリケーション開発者が SQL の全性能と柔軟性を活用できるオブジェクトリレーションマッパーです。
- Alembic: Python 用の SQLAlchemy データベースツールキットと使用する軽量のデータベース移行ツール。
- Uvicorn: Python の ASGI ウェブサーバー実装。
インターシステムズは、InterSystems IRIS、InterSystems IRIS for Health、HealthShare Health Connect のポイントリリース 2025.1 をリリースしました。
新しいバージョン番号は 2025.1.0.225.1 となります。
本リリースは、SDS対応ビジネスホストを利用するユーザに影響を与える、深刻な相互運用性の問題に対応するために行われました。
しばらくの間、私はワークフロー機能について何らかの概念実証を行おうと計画していましたが、これは IRIS に存在する他の多くの機能と同様に、お客様にほとんど気付かれないまま終わってしまう傾向があります(その点については申し訳ありません)。 そこで数日前、この機能を構成して、Angular で開発したユーザーインターフェースに接続して使用するための例を作成することに決めました。
記事が非常に長くならなずに読みやすくするために、3 部に分けて説明しようと思います。 この最初の記事では、Workflow の機能とこれから解決する例について説明します。 2 つ目の記事では、Workflow の管理を担うプロファクションの構成と実装について詳しく説明します。 最後に、ウェブアプリケーションを通じて Workflow にある情報にアクセスする方法を説明します。
InterSystems IRIS Workflow Engine
この Workflow 機能を説明するには、IRIS ドキュメントに記載の説明をコピーするのが一番でしょう。
ワークフロー管理システムは、ユーザーへのタスクの分配を自動化します。 事前定義済みの戦略に従ってタスクの分配を自動化することによって、より効率的にタスクを割り当て、タスクの実行に対する責任感を高めることができます。
前回の記事では、一般的な概念と、InterSystems IRIS に統合されたタスクエンジンを使用して解決する問題を紹介しました。今回の記事では、相互運用性プロダクションを構成してソリューションを提供する方法を確認します。
Workflow Engine の構成
First we are going to define the roles of the tasks that we are going to manage, in our example we are going to define two types:
- AutomaticBloodPressureRole: ユーザーの介入が不要な自動タスクを作成します。
- ManualBloodPressureRole: ユーザーが手動で検証する必要のあるタスクを作成します。
.png)
後で様々な患者から HL7 メッセージを受信するたびにロールをユーザーに割り当てるため、ここでは割り当てる必要はありません。
また、IRIS ユーザーを Workflow に追加する必要もありません。これはプロダクションからコードで実行します。
プロダクションのセットアップ
この例では、アドホックで作成した「WORKFLOW」というネームスペース内にプロダクションを作成します。 このプロダクションに、必要とするビジネスコンポーネントを含めます。
今回は大きなアップデートがあります。
- RHEL 10 が昨日リリースされました。関連情報を以下でお伝えしています。
- 2025.3 では、すべてのオペレーティングシステムで OpenSSL 3 が使用されます。SUSE 15 sp6 は、SUSEを利用する IRISユーザのミニマムサポート OS となります。
- ミニマムサポート CPU の基準が 2025.3 で引き上げられます。
- 古い Windows Server オペレーティングシステム は 2025.3 でサポート対象外となります。
Django フレームワークは長年学習したいと思ってきましたが、いつも他の差し迫ったプロジェクトが優先されてきました。 多くの開発者と同様に、機械学習においては Python を使用していますが、初めてウェブプログラミングについて学習したころは、PHP がまだまだ優勢でした。そのため、機械学習の作品を公開する目的でウェブアプリケーションを作成するための新しい複雑なフレームワークを選択する機会が訪れても、私は依然として PHP に目を向けていました。 ウェブサイトの構築には Laravel と呼ばれるフレームワークを使用してきましたが、この PHP フレームワークから最新の MVC(モデルビューコントローラー)というウェブプログラミングのパターンに出会いました。 さらに複雑なことに、私は最新の JavaScript フレームワークを使用してフロントエンドを構築するのを好んでいます。 React を使用するのがより一般的のようですが、私は Vue.js に一番慣れているため、このプロジェクトではそれを使用することにしました。
なぜ複雑なフレームワークを使用するのでしょうか? Django、Laravel、React、または Vue などのフレームワークを学習する際の最大の難関は何でしょうか?
Auth0 と InterSystems IRIS FHIR リポジトリ使った SMART On FHIR に関する連載最終回では、Angular 16 で開発したアプリケーションをレビューします。
このソリューションに定義されたアーキテクチャがどのように構成されているかを思い出しましょう。
フロントエンドのアプリケーションは 2 列目で、ご覧のように 2 つのことを行います。
- ログインリクエストを Auth0 にリダイレクトし、レスポンスを受信する。
- REST 経由でリクエストを FHIR サーバーに送信し、そのレスポンスを受信する。
Angular
Angular は TypeScript が開発し、Google が管理するオープンソースの Web アプリケーションフレームワークで、シングルページ Web アプリケーションの作成と管理に使用されます。 この「シングルページアプリケーション」デザイン手法によって、はるかに動的なユーザー向けアプリケーションを設計することができます。 最初の記事で説明したとおり、ここではアプリケーションサーバーとリバースプロキシとして NGINX を使用し、呼び出しヘッダーがサーバーの呼び出しヘッダーに一致するように変更して、CORS から派生する問題を回避します。
OwnObjectScriptExtension
ObjectScript は InterSystems IRIS などの InterSystems 製品に使用されている強力な言語で、堅牢なアプリケーションの構築を可能にします。 OwnObjectScriptExtension は Visual Studio Code の拡張機能として、ObjectScript 開発エクスペリエンスを強化する広範なツールと機能を提供しています。 この記事では、OwnObjectScriptExtension によって ObjectScript 開発ワークフローがどのように改善されるかを説明します。
機能
Add Method Description
メソッドの説明を包括的に記述することは、コードを明確に維持し、コラボレーションを促進する上で欠かせません。 OwnObjectScriptExtension を使用すると、メソッドの説明を簡単に生成できます。 メソッド内にカーソルを配置し、Add Method Description コマンドを実行するだけで完了です。 拡張機能によってメソッドの説明テンプレートが自動的に生成されるため、意味のあるドキュメントを簡単に提供できます。
VSCodeをサーバーサイド編集モードで使っていますが、プロジェクト内プログラムの右クリックで「Remove from Project」はありますが、逆に既存プログラムを既存プロジェクトに追加するメニューが無いように思います?
追加する方法を教えてもらえませんか?
IRIS for Windows (x86-64) 2024.3 (Build 217U) Thu Nov 14 2024 17:59:58 EST
VS InterSystems ObjectScript v3.01
Intersystems ObjectScript Extension Pack v1.0.3
InterSystems server manager v3.10.0
お客様のプロジェクトにおいて、どのようにすればいつ何時に誰がデータベースを変更したかを追跡できるか問われました。 SQL とオブジェクトへの両方のアクセスで Insert、Update、および Delete を追跡することが目的です。
以下は、変更ログを維持するために作成したテーブルです。
/// Changelog, keep track of changes to any table
Class ChangeLog.DB.ChangeLog Extends (%Persistent, %JSON.Adaptor)
{
/// Action
Property Action As %String(%JSONFIELDNAME = "action", DISPLAYLIST = ",Create,Update,Delete", MAXLEN = 1, VALUELIST = ",0,1,2");
/// Classname of the %Persistent class
Property ClassName As %String(%JSONFIELDNAME = "table", MAXLEN = "") [ SqlFieldName = TableName ];
/// ID of the record
Property DRecordId As %String(%JSONFIELDNAME = "id") [ SqlFieldName = RecordId ];
/// Name of the user that made the change
Property DUsername As %String(%JSONFIELDNAME = "user") [ SqlFieldName = Username ];
/// ISO 8601 formatted UTC timestamp e.g 2023-03-20T15:14:45.7384083Z
Property ETimestamp As %String(%JSONFIELDNAME = "timestamp", MAXLEN = 28) [ SqlFieldName = Timestamp ];
/// Changed Data (only there for Action < 2)
Property NewData As %String(%JSONFIELDNAME = "changed-data", MAXLEN = "");
/// Old Data (only there for Action > 0)
Property OldData As %String(%JSONFIELDNAME = "old-data", MAXLEN = "");
}
IRISから他DDLのデータを参照したり取り込んだりする場合、各DDLのデータ型はそれと同等の InterSystems IRIS データ型にマッピングされます。
マッピングの定義は、管理ポータル、および、下記ドキュメントページでご確認いただけます。
管理ポータル:[システム管理] > [構成] > [SQLとオブジェクトの設定] > [システムDDLマッピング]

これは、InterSystems FAQサイトの記事です。
%SQL.Util.Proceduresクラスの CSV() プロシジャを使用することにより、実現できます。
下記が使用例のコードとなります。(test.csvというファイルが c:\temp にあるという前提)
Set filename="c:\temp\test.csv"
Set result=##class(%SQL.Statement).%ExecDirect(,"call %SQL_Util.CSV(,?,?)",.rowtype,filename)
Set rset =result.%NextResult()
// 全件表示したい場合は、do rset.%Display()
While rset.%Next() {
Write "Name:",rset.%GetData(1)," UID:",rset.%GetData(2)," PHONE:",rset.%GetData(3),!
}
Set rset="",result=""
Quit
上記を実行することにより結果セットとして各行およびフィールドにアクセスできます。
開発者の皆さん、こんにちは!
次のコンテストの詳細が発表されましたのでご案内します。
🏆 InterSystems FHIR とデジタルヘルスの相互運用性コンテスト 2025🏆
期間:2025年5月12日~6月1日
賞金総額:$12,000
.jpg)
これは InterSystems FAQ サイトの記事です。
InterSystemsでは、既存のお客様および見込みのお客様と実施した他DBMS製品との比較を行った様々なベンチマーク結果を持っています。
しかし、それらの結果に関して、ほとんどのRDBMSベンダのライセンス条項に当該RDBMSベンダの承諾なしにベンチマーク結果を公表してはならないという条項があるため、現実問題として一般的な公表は、難しい状況です。
一方、TPC等の公共の機関等がベンチマーク条件を策定、公開しているベンチマークに関しては、必要な実施コストに対して得られるものが少ないと考えており、過去にも実施しておりませんし、将来も実施する予定はありません。
InterSystemsは、TPCの様な現実のシナリオからかけ離れたベンチマークを実施するのではなく、実際のアプリケーションを模したベンチマークシナリオを構築し、それに基づき、各ハードウェアベンダ、パートナ企業、エンドユーザとの協力の基、ベンチマークを実施しております。
様々なベンチマークの結果をまとめた記事があります。ぜひご参照ください。
これはInterSystems FAQ サイトの記事です。
LAST_IDENTITY() SQL関数を使用すると取得できます。
※ この関数は、埋め込み SQL または ODBC 利用時に使用できます。ダイナミック SQL、SQL シェル、または管理ポータルの SQL インタフェースによる値には設定されません。
簡単な埋め込み SQL での例をご紹介します。
{
ClassMethod GetLastID() As %Integer [ SqlProc ]
{
//ソースコードコンパイル時に存在しないテーブルがあるので実行時にコンパイル
#SQLCompile Mode=Deferred
//テーブル作成
&sql(CREATE TABLE Sample.Students (
StudentName VARCHAR(30),
StudentAge INTEGER,
StudentID IDENTITY))
//データ登録
&sql(INSERT INTO Sample.Students (StudentName,StudentAge) values('生徒1',16))
&sql(INSERT INTO Sample.
いつもお世話になっております。
さて今年二回目となる開発者向けウェビナーの日時、内容が決まりました。
【日時】 6月10日(火) 13:30-14:00
【タイトル】 IRISのベクトル検索を使ってテキストから画像を検索してみよう
【概要】
昨年5月のウェビナーで紹介したIRISのベクトル検索が、2025.1でパワーアップしました。特に、ANN(近似最近傍探索)インデックスのサポートにより、大量のベクトルに対する検索性能が劇的に向上しました。前回のウェビナーではテキストに対するベクトル検索を取り上げましたが、CLIPと呼ばれる技術により、画像とテキストを比較可能なベクトルに変換して、例えば、テキストから画像を検索するといったことが可能になります。
本ウェビナーでは、IRISのベクトル検索について再度説明し、画像とテキストを組み合わせた検索シナリオについて説明します。
【こんな方にお勧め】 機械学習に興味がある方。テキストの検索、画像の検索に興味がある方。
ご多用中とは存じますが、皆様のご参加をお待ち申し上げております。
インターシステムズジャパン
インターシステムズは、InterSystems IRIS®データプラットフォーム、InterSystems IRIS® for HealthTM、HealthShare® Health Connect のメンテナンスバージョン 2024.1.4 と 2023.1.6 をリリースしました。このリリースには以前ご案内した 警告:SQLクエリが間違った結果を返す の修正を含みます。製品の品質改善のために、開発者コミュニティを通じてぜひご意見をお聞かせください。
ドキュメント
詳細な変更リストとアップグレードチェックリストはこちらのドキュメントをご参照ください(すべて英語です):
✅ 2024.1.4
✅ 2023.1.6
早期アクセスプログラム (Early Access Programs; EAPs)
多くの 早期アクセスプログラムをご用意しております。こちらの ページ からご興味のあるプログラムにお申込みいただけます。
キットの入手方法
先日、お客様よりタイトルのご質問をいただき、サンプルコードを作成しました。せっかくですので、こちらでも共有したいと思います。
今回は、データベースの空き容量情報を取得する、%SYS.DatabaseQueryクラスのFreeSpaceクエリを使用したサンプルとします。
C#.Net と VB.Net で作成してみました。
★C#.Net
using System;
using InterSystems.Data.IRISClient;
{
class Program
{
static void Main(string[] args)
{
IRISConnection IRISConnect = new IRISConnection();
IRISConnect.ConnectionString = "Server=localhost;Port=1972;Namespace=USER;User ID=_SYSTEM;Password=SYS";
IRISConnect.Open();
String queryString = "select * from %SYS.DatabaseQuery_FreeSpace(?)"; // call %SYS.DatabaseQuery_FreeSpace(?) でもOK
IRISCommand cmd = new IRISCommand(queryString, IRISConnect);
IRISParameter p1 = new IRISParameter("Mask", IRISDbType.NVarChar);
p1.Value = "*";
cmd.Parameters.Add(p1);
IRISDataReader Reader = cmd.ExecuteReader();
while (Reader.Read())
{
// Select values : DatabaseName:0, Directory:1, MaxSize:2, Size:3, ExpansionSize:4, Available:5, %Free:6, DiskFreeSpace:7, Status:8, SizeInt:9, AvailableNum:10, DiskFreeSpaceNum:11, ReadOnly:12
Console.WriteLine(Reader.GetValue(0).ToString() + ", " + Reader.GetValue(3).ToString() + ", " + Reader.GetValue(5).ToString());
}
Reader.Close();
cmd.Dispose();
IRISConnect.Close();
}
}
}開発者の皆さん、こんにちは!
開発者の方なら、誰でも小さなサイドプロジェクトやアプリケーションをお持ちのはずです。新しい技術を試したり、アイデアをより大きなソリューションに実装する前の試作品、また興味ある技術を使ったアプリケーションなどなど。
今お持ちのこれらの作品が、InterSystems READY 2025 の目標達成につながるとしたらどうでしょうか?
開発者コミュニティでは、ユニークなチャンスをご用意いたしました。IRIS に対するあなたの情熱、創造性、そして想いを自由に表現して InterSystems READY への無料パスとホテル宿泊券をゲットしましょう!
応募ルールは簡単です。あなたのIRISを使用したアプリケーションを Open Exchangeにアップロードします。そして、InterSystems の年間最大イベントである InterSystems REDY の無料パス獲得に向けた意気込みを短い感動的なビデオに録画して送ってください。
期間: 2025年4月21日~5月4日
賞品: ホテル宿泊と InterSystems READY 2025 への無料パス!
.jpg)
これは、InterSystems FAQサイトの記事です。
メソッドの実装に使用する言語を明示する場合は、下記のようにメソッドキーワードで「Language=~~~」と指定します。
Method name(formal_spec) As//implementation }指定できるLanguageの値は下記のとおりです。
- objectscript (既定) — ObjectScript
- python — 組み込み Python
- tsql — Transact-SQL
- ispl — Informix ストアド・プロシージャ言語
上記の通り、ObjectScriptで記載する場合は、「Language=objectscript」と指定します。
但し、CSP内の<SCRIPT>タグ内で指定する場合は、下記の通り、「LANGUAGE=’cache’」と指定することにご注意ください。
<SCRIPT LANGUAGE='cache', ~~~>
※CSPページは、IRISでは非推奨の機能です。

説明
これは、ネイティブウェブアプリケーションとして IRIS にデプロイできる Django アプリケーションのテンプレートです。
インストール
- リポジトリをクローンする
- 仮想環境を作成する
- 要件をインストールする
- docker-compose ファイルを実行する
git clone
cd iris-django-template
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
docker-compose up
使用法
ベース URL は http://localhost:53795/django/ です。
エンドポイント
/iris- IRISAPP ネームスペースに存在する上位 10 個のクラスを持つ JSON オブジェクトを返します。/interop- IRIS の相互運用性フレームワークをテストするための ping エンドポイント。/api/posts- Post オブジェクトの単純な CRUD エンドポイント。- ``/api/comments` - Comment オブジェクトの単純な CRUD エンドポイント。
このテンプレートからの開発方法
WSGI 導入記事をご覧ください: wsgi-introduction。
これは、InterSystems FAQ サイトの記事です。
※Caché/Ensembleの「CSPゲートウェイ」は、IRISでは「Webゲートウェイ」と名称が変更されています。
これに伴い、サービス名も、「%Service_CSP」 ⇒ 「%Service_WebGateway」となっています。
以下は、IRISベースの名称で記載しておりますので、適宜読み替えてご参照ください。
Webゲートウェイ・レジストリとその関連クラスを使用すると、Webゲートウェイのインストール環境の確認、および、設定値の変更が可能です。
関連するクラスは、以下になります。
%CSP.Mgr.GatewayRegistry
例えば、以下は、アクティブなWebゲートウェイのインストール環境(リストの1番目)の情報を書き出しています。
Set$systemSet↓(結果)
サーバ・パラメータの変更は以下のように行います。
Webゲートウェイ・レジストリの詳細については、下記ドキュメントをご参照ください。
[ドキュメント] InterSystems IRIS の Web ゲートウェイ・レジストリ
これはInterSystems FAQサイトの記事です。
サーバのIPアドレスやマシン名は、%SYSTEM.INetInfoクラスのメソッドで取得することが出来ます。
set$System//マシン(ホスト)名2022年5月30日より、外部アプリからGmailを送信するには OAuth 2.0が必須になりました (リンク) そのため、IRIS から Gmail を送信したい 場合は、今後は OAuth 2.0 を利用して Gmailアカウントに接続する 必要があります。 そこで、IRIS コード ObjectScript を使って、OAuth 2.0 でGmailアカウントに接続&メール送信するサンプルを作成しました。 ぜひご活用ください!
.png)

