IRISから他DDLのデータを参照したり取り込んだりする場合、各DDLのデータ型はそれと同等の InterSystems IRIS データ型にマッピングされます。
マッピングの定義は、管理ポータル、および、下記ドキュメントページでご確認いただけます。
管理ポータル:[システム管理] > [構成] > [SQLとオブジェクトの設定] > [システムDDLマッピング]

InterSystems IRISは総合データプラットフォームです
InterSystems IRISは、企業にとって最も価値のある資産(データ)の取得、共有、理解、そしてデータに基づく行動のために必要なすべてのものを提供します。
完全なプラットフォームである InterSystems IRIS は、複数の開発技術を統合する必要がありません。より少ないコードで開発が可能で、そのアプリケーションは、システムリソース、メンテナンスなども少なくて済みます。
IRISから他DDLのデータを参照したり取り込んだりする場合、各DDLのデータ型はそれと同等の InterSystems IRIS データ型にマッピングされます。
マッピングの定義は、管理ポータル、および、下記ドキュメントページでご確認いただけます。
管理ポータル:[システム管理] > [構成] > [SQLとオブジェクトの設定] > [システムDDLマッピング]

これは、InterSystems FAQサイトの記事です。
%SQL.Util.Proceduresクラスの CSV() プロシジャを使用することにより、実現できます。
下記が使用例のコードとなります。(test.csvというファイルが c:\temp にあるという前提)
上記を実行することにより結果セットとして各行およびフィールドにアクセスできます。
これは InterSystems FAQ サイトの記事です。
InterSystemsでは、既存のお客様および見込みのお客様と実施した他DBMS製品との比較を行った様々なベンチマーク結果を持っています。
しかし、それらの結果に関して、ほとんどのRDBMSベンダのライセンス条項に当該RDBMSベンダの承諾なしにベンチマーク結果を公表してはならないという条項があるため、現実問題として一般的な公表は、難しい状況です。
一方、TPC等の公共の機関等がベンチマーク条件を策定、公開しているベンチマークに関しては、必要な実施コストに対して得られるものが少ないと考えており、過去にも実施しておりませんし、将来も実施する予定はありません。
InterSystemsは、TPCの様な現実のシナリオからかけ離れたベンチマークを実施するのではなく、実際のアプリケーションを模したベンチマークシナリオを構築し、それに基づき、各ハードウェアベンダ、パートナ企業、エンドユーザとの協力の基、ベンチマークを実施しております。
様々なベンチマークの結果をまとめた記事があります。ぜひご参照ください。
これはInterSystems FAQ サイトの記事です。
LAST_IDENTITY() SQL関数を使用すると取得できます。
※ この関数は、埋め込み SQL または ODBC 利用時に使用できます。ダイナミック SQL、SQL シェル、または管理ポータルの SQL インタフェースによる値には設定されません。
簡単な埋め込み SQL での例をご紹介します。
いつもお世話になっております。
さて今年二回目となる開発者向けウェビナーの日時、内容が決まりました。
【日時】 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
多くの 早期アクセスプログラムをご用意しております。こちらの ページ からご興味のあるプログラムにお申込みいただけます。
先日、お客様よりタイトルのご質問をいただき、サンプルコードを作成しました。せっかくですので、こちらでも共有したいと思います。
今回は、データベースの空き容量情報を取得する、%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(?開発者の皆さん、こんにちは!
開発者の方なら、誰でも小さなサイドプロジェクトやアプリケーションをお持ちのはずです。新しい技術を試したり、アイデアをより大きなソリューションに実装する前の試作品、また興味ある技術を使ったアプリケーションなどなど。
今お持ちのこれらの作品が、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 returnclass [ Language = language ]
{ //implementation }指定できるLanguageの値は下記のとおりです。
上記の通り、ObjectScriptで記載する場合は、「Language=objectscript」と指定します。
但し、CSP内の<SCRIPT>タグ内で指定する場合は、下記の通り、「LANGUAGE=’cache’」と指定することにご注意ください。
<SCRIPT LANGUAGE='cache', ~~~>
※CSPページは、IRISでは非推奨の機能です。

これは、ネイティブウェブアプリケーションとして IRIS にデプロイできる Django アプリケーションのテンプレートです。
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 エンドポイント。WSGI 導入記事をご覧ください: wsgi-introduction。
これは、InterSystems FAQ サイトの記事です。
※Caché/Ensembleの「CSPゲートウェイ」は、IRISでは「Webゲートウェイ」と名称が変更されています。
これに伴い、サービス名も、「%Service_CSP」 ⇒ 「%Service_WebGateway」となっています。
以下は、IRISベースの名称で記載しておりますので、適宜読み替えてご参照ください。
Webゲートウェイ・レジストリとその関連クラスを使用すると、Webゲートウェイのインストール環境の確認、および、設定値の変更が可能です。
関連するクラスは、以下になります。
%CSP.Mgr.GatewayRegistry
%CSP.Mgr.GatewayMgr
例えば、以下は、アクティブなWebゲートウェイのインストール環境(リストの1番目)の情報を書き出しています。
Set reqistry = $system.CSP.GetGatewayRegistry()
Set gateways = reqistry.GetGatewayMgrs()
Set gateway = gateways.GetAt(1)
Write gateway.IPAddress," : ",gateway.Port," : ",gateway.Version↓(結果)
これはInterSystems FAQサイトの記事です。
サーバのIPアドレスやマシン名は、%SYSTEM.INetInfoクラスのメソッドで取得することが出来ます。
set hostname=$System.INetInfo.LocalHostName() //マシン(ホスト)名
set ip=$system.INetInfo.HostNameToAddr($system.INetInfo.LocalHostName()) //IPアドレス 2022年5月30日より、外部アプリからGmailを送信するには OAuth 2.0が必須になりました (リンク) そのため、IRIS から Gmail を送信したい 場合は、今後は OAuth 2.0 を利用して Gmailアカウントに接続する 必要があります。 そこで、IRIS コード ObjectScript を使って、OAuth 2.0 でGmailアカウントに接続&メール送信するサンプルを作成しました。 ぜひご活用ください!
これはInterSystems FAQサイトの記事です。
指定した文字列式のうち指定したフィールド幅(半角での文字数)に収まる文字数を取得する関数:$ZPOSITIONと、部分文字列を返す関数:$EXTRACTを組み合わせることによって、全角/半角混在文字列から、指定された幅の文字列を取得することが出来ます。
※$Extractは文字単位で処理を行いますので、全角/半角を区別した取り扱いはできません。
構文:
$ZPOSITION(<文字列式>, <フィールド幅>, <全角文字に使用するピッチ値(デフォルトは2)>)
$EXTRACT(<文字列>, <開始位置>, <終了位置>)
例:
//指定した文字列(str)のうち、全角=2/半角=1 の幅として、フィールド幅10(半角10文字分)に含まれる文字数を取得
USER>set str="あい1234うえお"
USER>write $ZPOSITION(str,10,2)
7
//指定した文字列(str)のうち、全角=2/半角=1 の幅として、フィールド幅10(半角10文字分)に含まれる文字列を取得
USER>write $extract(str,1,$zposition(str,10,2))
あい1234う
$ZPOSITION、$EXTRACTの詳細については、下記各ドキュメントページをご確認ください。
これは、InterSystems FAQ サイトの記事です。
InterSystems製品では、%Installerユーティリティによりインストール・マニフェストを定義することができます。これを利用することにより、複雑な構成設定を自動化することが可能になります。
これは特に、複数の同様なアプリケーションデプロイを行うときに大変有効です。
インストール・マニフェストの詳細については、下記のドキュメントページをご参照ください。
インストール・マニフェストの作成および使用
また、下記の トピックでも、詳しく記載されています。
%InstallerでInterSystems Cachéにアプリケーションをデプロイする
※記事ではCachéについて記述していますが、内容はIRISでも同様です。
これは、InterSystems FAQ サイトの記事です。
HTTPプロキシサーバまたは負荷分散装置(ロードバランサ)を経由してウェブサーバに接続するクライアントの送信元IPアドレスを特定する際は、HTTPヘッダ:X-Forwarded-For (XFF) を取得しますが、IRISでは以下で取得できます。
set ip = %request.GetCgiEnv("HTTP_X_FORWARDED_FOR")
もし、取得できない場合は、Webゲートウェイ 管理画面で、アプリケーションアクセス毎に指定できる「追加のCGI環境変数(Extra CGI Environment)」に HTTP_X_FORWARDED_FOR を設定し、再度ご確認ください。
管理ポータル:[システム管理] > [構成] > [ウェブゲートウェイ管理]
>>> Webゲートウェイ管理画面:[アプリケーションアクセス] > 「/csp」を選択
(英語)
これは、InterSystems FAQ サイトの記事です。
InterSystems製品は、二要素認証をサポートしています。
下記ドキュメントページに詳細について記載がありますので、ご参照ください。
2要素認証
以下、例として、スマートフォン用認証アプリを用いて、IRIS上のCSPアプリケーションの2要素認証を行うための設定方法を解説します。
1.IRIS側の設定
1-1.インスタンスに対する 2 要素認証の有効化および構成を行います。
管理ポータルで、[システム管理] > [セキュリティ] > [システム・セキュリティ] > [認証/Web セッション・オプション]と進み、[2 要素のタイムベース・ワンタイム・パスワード認証を許可] チェック・ボックスにチェックを付けます。
チェックを付けると、[2 要素のタイムベース・ワンタイム・パスワードの発行者] フィールドが表示されますので、ここに発行者を示す文字列(任意)を入力します。
1-2.次に、このアプリケーションに接続するユーザの設定を行います。
[システム管理] > [セキュリティ] > [ユーザ]で、該当のユーザの編集を行います。
[二要素認証]の[タイムベースのワンタイム・パスコード有効]にチェックを付けて保存します。
ここで、ワンタイム・パスワードキー(OTPキー)及びQRコードが表示されます。
IRIS 2024.3 で発生する2つの製品障害が確認されました。お使いの環境が該当する場合は、それぞれの解決方法にしたがってご対応いただきますよう、よろしくお願いします。
その1で設定したODBCのシステムDSNを使って、LibreOfficeからアクセスしてみたいと思います。
ここでLibreOfficeをデスクトップから起動すると、詳細は不明ですが、日本語の表示がうまくできません。
(ロケール情報が正しく取得できていない様です)
なので、少し面倒なのですがターミナルから起動する必要があります。
起動する前にロケールが正しく設定されているか確認する必要があります。
一般的には、LC_ALLは設定されていないので、この環境変数に値を設定してエクスポートします。
% locale
LANG="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_CTYPE="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_ALL=""
% export LC_ALL="ja_JP.UTF-8"
% locale
LANG="ja_JP.UTF-8"
LC_COLLATE="ja_JP.Mac版のIRISにSQLを使用して他ツールからアクセスするケースはそもそも少ないと思いますが、DBeaverにJDBCを使用してアクセスできることはこのコミュニティの住人であれば、知っている人は結構いるかと思います。
しかし今回ちょっと理由があってMac上のIRISにODBCを使ってアクセスする方法についてトライしてみました。
ここではその備忘録を書き留めておこうと思います。
実際の所、Mac上のクライアントツールでODBCでアクセスできるツールもそんなにないのですが、
候補としてMS-Excel(MS-Query経由)またはLibreOfficeがありました。
まず結論としてExcelは色々とトライしましたが、原因不明ですがうまくつながりませんでした。
(どうもExcel(MS-Query)が拒絶している感じです)
LibreOfficeは何とか接続でき、データの取得はできる様になりました。
まず、前準備としてODBC Driver Managerというものをセットアップする必要があります。
細かくいうとこれにもiODBCとUnixODBCの2系統があるのですが、ExcelおよびLibreOfficeはiODBCにしか対応していない感じです。
これは InterSystems FAQ サイトの記事です。
Content-Typeにcharset 情報が含まれていない場合、IRIS/Cachéは文字コードを判断できず文字コード変換が行われません。
そこで、以下のように、「自動的な文字変換を行わず、UTF-8に変換する処理を記述」することで、その指定がある無しに関わらず、対応することができます。
// requestオブジェクトは以下のように生成
// 詳細処理は省略
// set request=##class(%Net.HttpRequest).%New()
// リクエスト時に、文字変換を行わないように指定
set request.ReadRawMode=1
do request.Send("POST",URL)
// 受取ったデータを、UTF-8に変換してから、JSON変換
set response = request.HttpResponse.Data
set data = response.Read()
set data2 = $zcvt(data,"I","UTF8")
set response = {}.%FromJSON(data2)
write response.これは、InterSystems FAQ サイトの記事です。
小数点桁数を指定しない単純な整数への切り上げ・切り捨ては、それぞれ、以下の関数で実行できます。
(SQL関数)
(ObjectScript関数)
切り上げ: $system.SQL.Functions.CEILING()
切り捨て: $system.SQL.Functions.FLOOR()
※バージョン2021.1以前は以下のメソッドを使用します。
切り上げ: $system.SQL.CEILING()
切り捨て: $system.SQL.FLOOR()
小数桁数を指定して切り上げ・切り捨てを行いたい場合は、2つの関数を組み合わせ、以下のようなメソッドを作成して対応します。
Class Sample.これは、InterSystems FAQ サイトの記事です。
ウィンドウ関数は、結果セットを部分的に切り出した領域に集約関数を適用できるもので、WHERE GROUP BY および HAVING 節が適用された後、SELECT クエリで選択された行に対して作用します。
IRIS/IRIS for Health 2021.1からサポートしています。
サポートされるウィンドウ関数は以下の通りです。
詳細については、下記ドキュメントページをご確認ください。
ウィンドウ関数の概要
関連記事:IRIS SQLでは OFFSET/LIMIT句のような機能をサポートしてますか?
IRIS SQLクエリで取得した結果セットのランキング(順位)を算出する方法
開発者の皆さん、こんにちは。
先日、EM リリース新バージョン 2025.1 がリリースされました。
コンテナ版以外ですが、新規インストール時に指定する初期セキュリティオプションのデフォルトが「ロックダウン(Locked Down)」に変更となりましたので、今までとの違いについて以下ご説明します。
以前のバージョンのデフォルトは、IRIS:「最小(Minimal)」、IRIS for Health:「通常(Normal)」です。
ロックダウンオプションは、初期セキュリティの中で一番厳しいセキュリティ設定を行うオプションで、例えば、オブジェクト/SQL のアクセスが行えない、VSCode から IRIS にアクセスできない状況からスタートします。
そのため、使用したいアクセスに対してアクセス許可追加していく必要のあるセキュリティオプションです。

これは、ネイティブウェブアプリケーションとして IRIS にデプロイできる FastAPI アプリケーションのテンプレートです。
git clone
cd iris-fastapi-template
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
docker-compose up
ベース URL は http://localhost:53795/fastapi/ です。
/iris - IRISAPP ネームスペースに存在する上位 10 個のクラスを持つ JSON オブジェクトを返します。/interop - IRIS の相互運用性フレームワークをテストするための ping エンドポイント。/posts - Post オブジェクトの単純な CRUD エンドポイント。/comments - Comment オブジェクトの単純な CRUD エンドポイント。WSGI 導入記事をご覧ください: wsgiサポートの概要。
インターシステムズは、InterSystems IRIS®data platform、InterSystems IRIS® for HealthTM、および HealthShare® Health Connect の 2025.1 リリースを一般提供 (GA) したことを発表しました。2025.1 は、拡張メンテナンス(EM)リリースです。
リリースハイライト
今回のリリースには、以下のような数々の興味深いアップデートが含まれます:
これは、InterSystems FAQ サイトの記事です。
管理ポータルの [システムオペレーション] > [ジャーナル]のページで実行できる、 整合性チェックの実行や、サマリーの表示は、%SYS.Journal.File クラスのメソッドやクエリでも実行することができます。
以下、実行例です。
※全て、%SYSネームスペースで実行します。
(1) 整合性チェック
(2)サマリー
これは、InterSystems FAQ サイトの記事です。
システムログ(messages.log/cconsole.log)に出力される、
というログは、機能トラッカというタスクが出力しているメッセージです。
このタスクは、弊社がユーザ使用状況の統計を取得する為のデータ送信タスクになります。
エラーは弊社と通信が行われてない為に発生しています。
機能トラッカの詳細については下記ドキュメントをご確認ください。
機能トラッカによる使用量統計の収集
このタスク自体は、アプリケーションやシステムの動作自体に関連はありませんので、メッセージが出ていても影響はありませんが、タスクを無効にすることもできます。
機能トラッカのタスクを無効にする手順は以下の通りです。
1. 管理ポータルで、[システム操作]→[タスクマネージャ]→[タスクスケジュール] を選択
2. 機能トラッカの行を見つけて、[機能トラッカ] を選択
3. タスク詳細のページが表示されたら、[一時停止]
4. [タスク実行が一時停止された場合にタスクを再スケジュールしますか?] という質問に適切に回答
→ いいえ
5. [このアクションをすぐに実行する] を選択、タスクを停止
これは、InterSystems FAQサイトの記事です。
SQLでクエリ実行時、ORDER BYで並べ替えをする場合、各RDBMSによって、照合順が異なることがあります。
たとえば、NULLと空文字の混じった文字列のカラムを並べ替える場合、
IRIS SQLでは、既定の照合順は下記のようになりますが、
Oracleでは、下記のような照合順になります。
複数のDB由来のデータを取り扱う際には、このような照合順の違いを合わせたい場合があります。
IRISの場合、既定の文字列照合はSQLUPPERですが、照合タイプを変更することによって、照合順を変えることが出来ます。
ドキュメント:照合
上記のIRIS SQLとOracleの違いを合わせるためには、照合タイプを「SQLSTRING」に設定し、インデックスを作成します。
以前公開している こちら の記事では、「OAuth 2.0 を利用して IRIS から Gmail を送信する」方法をご紹介しています。
本記事では、
外部アプリからGmailを受信するには OAuth 2.0が必要となるため、こちらの手順 に従ってAccessToken を取得しておきます。
また、「2.【準備】IRIS で、SSLクライアントの設定をする : 手順(4)」の手順に従って、GMAILSSL(任意の名前)の構成を作成しておきます。
以下のサンプルでは、
1.Gmailの受信サーバ(servername = pop.gmail.com)に、ユーザ名(user = xxx@gmail.com)、パスワード(pass = パスワード)、AccessTokenを使用して接続し、
Set status=server.Connect(servername,user,pass,accesstoken)2.メールボックスの情報を取得し、
Do ..ShowMailbox(server)3.Fetch() メソッドを使用して、添付ファイルを含むメールの内容の取得し、
(添付は server.AttachDir で指定したディレクトリに保存)
Do