開発者の皆さん、こんにちは!
InterSystems IRIS Cloud SQL and IntegratedMLコンテストの投票が開始されました。
🔥 ベストアプリケーションはこれだ!! 🔥と思う作品にぜひ投票をお願いします。
%20(3).jpg)
投票方法は以下ご参照ください。
開発者の皆さん、こんにちは!
InterSystems IRIS Cloud SQL and IntegratedMLコンテストの投票が開始されました。
🔥 ベストアプリケーションはこれだ!! 🔥と思う作品にぜひ投票をお願いします。
%20(3).jpg)
投票方法は以下ご参照ください。
開発者のみなさん、あけましておめでとうございます🎍 今年もどうぞよろしくお願いします!
さて、この記事では、IRIS ターミナルに(こっそり)追加された便利機能をご紹介します!(つい最近知りまして、びっくりしました
)
2023/4/13 追記:Pythonシェルへ切り替えるメソッドのショートカットが追加されていたので返信欄に追記しました。
IRIS ターミナルで以前実行したコマンドを再実行する場合、上矢印キーを連打しながらコマンドを探されていると思うのですが、IRIS 2021.1 から履歴表示と、履歴番号を指定した実行ができるようになっていました!
では早速、履歴(history)の使い方をご紹介します。これがあれば、もう、上矢印キーを連打せずに以前実行したコマンドを再実行できます!!
まずは、履歴を作るため、いくつかコマンドを実行します。
ユーザ名:_system
パスワード:***
USER>
USER>write $ZDATE($NOW(),16)
2022年1月6日
USER>
USER>write $ZV
IRIS for Windows (x86-64) 2021.1 (Build 215U) Wed Jun 9 2021 09:39:22 EDT
USER>
USER>write $system.これは InterSystems FAQ サイトの記事です。
Question:
TIMESTAMP型の項目に対して、TO_CHAR() や TO_DATE() を用いた SELECT を実行すると以下のエラーになります。
実行SQL:
select
TO_CHAR(xxxDateTime,'YYYY-MM-DD')
from
Testエラー:
[SQLCODE: <-400>:<深刻なエラーが発生しました>]
[%msg: <Unexpected error occurred: <ZCHAR>IllegalValuePassedToTOCHAR^%qarfunc>]
エラーの原因を教えてください。
Answer:
こちらは、IRIS2022.1以降のバージョンで CREATE TABLE (DDL) の TIMESTAMP 型が IRIS側クラスで %Library.PosixTime にマッピングするように変更されているためです。
(アップグレードした環境の場合は、従来のままの %Library.TimeStamp にマッピングされています)
%TimeStamp は、データを人が読める文字列(yyyy-mm-dd hh:mm:ss.ffff)として保存します。
これは、InterSystems FAQサイトの記事です。
管理ポータルの監査メニューを使用する場合、ユーザに監査データベースの閲覧のみを許可するということはできません。
管理ポータルから監査データベースを閲覧する場合は、そのユーザに、
・%Admin_Secure:U(監査以外にもセキュリティ関連の操作が可能となる)
・%DB_IRISAUDIT:RW(監査データベースへの読み込み/書き込み権限)
等のリソースへの権限が必要になりますが、これを与えることにより、監査データベースの閲覧以外の操作も可能となってしまいます。
監査データベースの閲覧のみを許可したい場合には、管理ポータルの監査メニューは使用せず、外部ツール等からSQLで監査テーブルを参照するようにします。
このとき、ユーザに必要な権限は以下の通りです。※他の権限は与えないようにします。
・IRISAUDITデータベースへのRW権限 ⇒ %DB_IRISAUDITロールの付与
・%SYS.AuditテーブルへのSelect権限
1.新規ロールの作成
必要な2つの権限のみを含むロールを作成します。
これは、InterSystems FAQサイトの記事です。
%Library.GlobalクラスのExport()メソッドを使用してエクスポートする際に、エクスポート形式(第4引数:OutputFormat)を 7 の「ブロックフォーマット/Cachéブロックフォーマット(%GOF)」にした場合、マッピングされたグローバルはエクスポートできない仕様となっています(対象はネームスペースのデフォルトグローバルデータベースのグローバルのみ)。
マッピングされたグローバルを「ブロックフォーマット/Cachéブロックフォーマット(%GOF)」でエクスポートする為には、%Library.Global.Export()の第1パラメータにマッピング先のデータベースディレクトリを指定します。
実行例は以下の通りです。
これは、InterSystems FAQサイトの記事です。
HL7の仕様では、日本語データを送受信する場合はJISを文字コードとして利用し、メッセージヘッダ(MSH)の18番目の2項目に iso-ir87 を指定します。
HL7用プロダクションでは、情報の入力はビジネスサービス、情報の出力はビジネスオペレーションを利用します。
日本語を含むHL7を送受信する場合は、入力/出力の対象となる全てのコンポーネントの設定で [追加の設定] の「キャラクターセット(Charset)」に iso-ir87 を指定することで正しく日本語データを取り扱うことができます。

これは、InterSystems FAQサイトの記事です。
データの登録/更新/削除を実行中でも、インデックスを再構築することは可能です。
ただし、再構築中は更新途中の状態で参照されますので、専用ユーティリティを使用することをお勧めします。
手順は以下の通りです。
実行例は以下の通りです。
Sample.Person の Home_State(連絡先住所の州情報)カラムに対して標準インデックス HomeStateIdx を定義する目的での例で記載します。
1、追加予定のインデックス名を Caché のクエリオプティマイザから隠します。
2、インデックス定義を追加した後、再構築を実施します。
定義例)Index HomeStateIdx On Home.State;
これは、InterSystems FAQサイトの記事です。
管理ポータル:システムエクスプローラの使用には、%DevelopmentリソースのUse特権が必要です。
システムエクスプローラでの参照のみ利用可能とする権限をユーザに付与したい場合は、%DevelopmentリソースのUse特権(※1)と、該当のデータベースリソース(※2)への参照特権(R)を付与したロールを作成し、これをユーザに与えます。
※1.「%Development:U」を付与している場合はターミナルやスタジオも参照のみで使用可能となります。
※2.参照したいデータベースに割り当てられているリソースが%DB_DEFAULTリソースになっており、このデータベースのみに参照権限を設定したい場合は、事前に、このデータベース用の独自リソース(%DB_<データベース名>)を作成し、該当データベースに割り当てるようにします。
【例】:testAユーザに、TESTデータベースへの参照のみを許可する。
0.独自リソースの作成
管理ポータル:[システム管理]>[構成]>[システム構成]>[ローカルデータベース]>(該当データベースを選択)
1.新規ロール作成
2.ロール編集(リソースへの権限の追加)
3.上記で作成したロールをユーザに付与。
テクノロジー分野で 19 年間働いてきた中、様々な分野でいくつかのプロジェクトに参加することができましたが、健康分野は私が一番惹かれている分野の 1 つです。
健康に焦点があてられたものを作成するチャンスを得るたびに、FHIR プロトコルを使用することにワクワクしています。
とは言え、テック系の 3 人の IT 男子で構成されるチームでは、本当に利用価値のあるものを作り出すのは困難であるため、女性の健康のように重要なトピックにおいては、この主題を非常によく理解している人をチームに招きました。
これは InterSystems FAQ サイトの記事です。
バージョン2017.2以降から、CREATE TABLE文で作成したテーブル定義のデータを格納するグローバル変数の命名ルールが変わり ^EPgS.D8T6.1 のようなハッシュ化したグローバル変数名が設定されます。(この変更はパフォーマンス向上のために追加されました。)
※ バージョン2017.1以前については、永続クラス定義のルールと同一です。詳細は関連記事「永続クラス定義のデータが格納されるグローバル変数名について」をご参照ください。
以下のテーブル定義を作成すると、同名の永続クラス定義が作成されます。
CREATE TABLE Test.Product(
ProductID VARCHAR(10) PRIMARY KEY,
ProductName VARCHAR(50),
Price INTEGER
)永続クラス:Test.Productの定義は以下の通りです。(パラメータ:USEEXTENTSETに1が設定されます)
「IRISだけでoAuth2/OpenID ConnectのSSO/SLO環境を実現する/サーバ編」 のクライアントアプリケーション編です。サーバ編の構成が既に稼働していることを前提にしています。
既にサーバ編でgit clone実行された方(ありがとうございます)、若干の変更がありますのでgit pullと./build.shの実行をお願いします。
oAuth2クライアントアプリケーション(OICD用語ではRP。以下RPと称します)の形態として、5種類用意しています。
| 形態 | ライブラリ | 登録クライアントタイプ | SSO | SLO |
|---|---|---|---|---|
| Webアプリケーション | IRIS/CSP | Confidential | 実装あり | 実装あり |
| SPA | Angular | Public | 実装あり | 実装なし |
| SPA+BFF | Angular,IRIS/REST | Confidential | 実装あり | 実装あり |
| Python | oauthlib | Confidential | N/A | N/A |
| curl | N/A | Confidential | N/A | N/A |
PythonやcurlがConfidential(client_secretの秘匿性を十分に保てる)か、というと微妙ですが、あくまで利用者は開発者のみ、という位置づけです。
開発者の皆様、こんにちは。
医療ソリューション・サービスプロバイダー様向けにシリーズでお送りしているセミナーの第三弾のお知らせを致します。
是非ご参加くださいますようご案内致します。
開発者の皆さん、こんにちは!
この記事では、Developer Hub にあるチュートリアルの4番目のご紹介となる REST + Augular App チュートリアル についてご紹介します。
チュートリアルでは、IRISを利用してRESTサービスで使用するテーブル、データ、RESTサーバの機能をサンプルコードをコピーしながら作成していきます。
チュートリアルの中で作成するWebアプリはとてもシンプルな内容で、データベースにブックマークとして登録したいURLを保存し、参照するだけのページとしています。
データの登録も、IRISの管理ポータルのSQLメニューでINSERT文を実行する形式で進めていきます。
最終的には、以下の図にあるように「Add a new bookmark」以下のテキストボックスで新しいブックマークを登録できるように、Web画面とRESTサーバ用コードを追加していきます。
.png)
アカウント作成やログインも不要で
ボタンをクリックするだけで始められます👍
ぜひ、お試しください!
開発者の皆さん、こんにちは。
Python Native APIを利用すると、IRISにあるグローバル変数の参照/更新をPythonから行えたり、メソッドやルーチンをPythonから実行することができます。
この記事では「AWS Lambda の IRIS Python Native API IRIS」の記事を参考に、NativeAPIを利用してPythonからIRISに接続するAWS Lambda関数を作成する流れで必要となる、レイヤー作成と関数用コードの作成例をご紹介します。
※ 事前にAWSのEC2インスタンス(Ubuntu 20.04を選択)にIRISをインストールした環境を用意した状態からの例でご紹介します。
- 「AWS Lambda の IRIS Python Native API IRIS」の記事では、レイヤーとコードをまとめたZipを用意してLambda関数を作成していますがこの記事ではレイヤーとコード用Zipをそれぞれ用意して作成する流れでご紹介します。
- NativeAPIについて詳しくは、「【はじめての InterSystems IRIS】セルフラーニングビデオ:アクセス編:Python の NativeAPI に挑戦」をご参照ください。
開発者の皆さん、こんにちは。
技術文書ライティングコンテストの受賞者が発表されたばかりですが、次のコンテスト:InterSystems IRIS Cloud SQL and IntegratedML コンテスト 2023 のテクノロジーボーナス詳細が決定しましたのでお知らせします📣
獲得ポイントについて詳細は、以下ご参照ください。
本記事は、あくまで執筆者の見解であり、インターシステムズの公式なドキュメントではありません。
IRISのoAuth2機能関連の情報発信は既に多数ありますが、本稿では
ということを主眼においています。
コミュニティ版で動作しますので、「とりあえず動かす」の手順に従って、どなたでもお試しいただけます。
現状、使用IRISバージョンはIRIS 2023.1のプレビュー版になっていますが、ソースコードは適宜変更します。
手順に沿ってコンテナを起動すると下記の環境が用意されます。この環境を使用して動作を確認します。

ユーザエージェント(ブラウザ)やPython/curlからのアクセスは、全てApache (https://webgw.localdomain/) 経由になります。青枠の中のirisclient等の文字はコンテナ名(ホスト名)です。
例えば、irisclientホストの/csp/user/MyApp.Login.clsにアクセスする場合、URLとして
https://webgw.localdomain/irisclient/csp/user/MyApp.Login.cls
と指定します。
つまり、各エンドポイントは同一のorigin (https://webgw.localdomain) を持ちます。そのため、クロスサイト固有の課題は存在しません(カバーされません)が、仮に各サーバが別のドメインに存在しても基本的には動作するはずです。
oAuth2/OIDC(OpenID Connect)の利用シーンは多種多様です。
本例は、認証・認可サーバ,クライアントアプリケーション,リソースサーバの全てがIRISで実行されるクローズドな環境(社内や組織内での使用)を想定して、認可コードフロー(Authorization Code Flow)を実現します。分かりやすい解説が、ネットにたくさんありますので、コードフロー自身の説明は本稿では行いません。
認証・認可サーバの候補はIRIS, WindowsAD, Azure AD, AWS Cognito, Google Workspace, keycloak, OpenAMなどがあり得ます。個別に動作検証が必要です。
クライアントアプリケーション(RP)は、昨今はSPAが第一候補となると思いますが、利用環境によっては、SPA固有のセキュリティ課題に直面します。
IRISには、Confidential Clientである、従来型のWebアプリケーション(フォームをSubmitして、画面を都度再描画するタイプのWebアプリケーション)用のoAuth2関連のAPI群が用意されています。
そこで、Webアプリケーション(CSP)を選択することも考えられますが、クライアント編では、よりセキュアとされるSPA+BFF(Backend For Frontend)の構成を実現するにあたり、Webアプリケーション用APIをそのまま活用する方法をご紹介する予定です。
以下、サーバ編の動作確認には、CSPアプリケーションを使用しています。これは、新規開発にCSP(サーバページ)を使用しましょう、という事ではなく、BFF実現のために必要となる機能を理解するためです。BFFについては、クライアント編で触れます。BFFについては、こちらの説明がわかりやすかったです。
リソースサーバの役割はデータプラットフォームであるIRISは最適な選択肢です。医療系用のサーバ機能ですがFHIRリポジトリはその良い例です。本例では、至極簡単な情報を返すAPIを使用しています。
少しの努力でFHIRリポジトリを組み込むことも可能です。
サーバ編とクライアント編に分けて記載します。今回はサーバ編です。
とはいえ、クライアントとサーバが協調動作する仕組みですので、境界は少しあいまいです
開発者の皆さん、こんにちは。インターシステムズジャパン、マーケティング担当・徳江です。
弊社は4月26日(水)13時30分~14時「Pythonでデータベースプログラミング」と題し、
オンラインセミナーを開催いたします。
【概要】
本セミナーでは、InterSystems IRIS Data Platformの機能であるEmbedded Pythonをご紹介し、IRISのデータベースを扱う
Pythonプログラムの基本的な書き方をご説明します。デモもお見せする予定です。
Embedded Pythonは、IRISのサーバサイドのロジックをPythonで記述するための仕組みです。Embedded Pythonによって、
・ IRISの開発者が、Pythonの豊富なライブラリを簡単に活用することが可能になります。
・ Pythonプログラマが、IRISの高性能なデータベースを利用するプログラムを容易に開発することができます。
インターシステムズは、新旧すべての製品について、お客様に高品質な製品サポートを提供することをお約束します。Caché はリリースされて 25 年になります。製品リリースを重ねるに応じてそのサポートは進展されていきます。
2018 年にリリースされた InterSystems IRIS は、Caché と Ensemble の後継製品です。 多くの Caché/Ensemble のお客様が IRIS に移行しているか、今後数年のうちに移行する予定です。 Caché や Ensemble を使い続けているお客様は、以下の重要なお知らせにご留意ください:
Caché/Ensemble のメンテナンス・リリースは、今後 4 年間 (2027 年の第 1 四半期まで) 継続されます。 2027 年 3 月 31 日以降は、Caché/Ensemble のメンテナンス・リリースの予定はありません。
これらのメンテナンス・リリースは、重要な欠陥、セキュリティの脆弱性および Windows と Red Hat Enterprise Linux (RHEL) の新しいバージョンについて、弊社の判断で対応します。
開発者の皆さん、こんにちは。
前の記事では「機械学習を試せるチュートリアル:IntegratedML」で試せる内容をご紹介しましたが、この記事では Interoperability(相互運用性)チュートリアル の内容を少しご紹介します。
Interoperability(相互運用性)チュートリアルでは、Redditに新しく投稿された記事=(https://www.reddit.com/new/)を一定間隔で取得し、全投稿の中から「猫(cat)」🐈について記載されている情報のみを抽出し、対象記事をファイル出力する流れをご体験いただけます。
これは InterSystems FAQ サイトの記事です。
テーブル名/カラム名/インデックス名を変更したい場合、以下のケース別に変更方法をご案内します。
-------------------------------------------------------------------------
A. テーブル名・カラム名の変更する方法
-------------------------------------------------------------------------
テーブル(クラス)名とカラム(プロパティ)名は基本的には変えないようにしてください。
もし「SQLアクセス時の名前だけ変更したい」場合は、以下のように新しい名前を SqlTableName(テーブル名)、SqlFieldName(カラム名) として指定することができます。
Class User.test Extends %Persistent [ SqlTableName = test2 ] {
Property p1 As %Integer [ SqlFieldName = xx ];
....
以後 "SELECT xx from test2"
開発者の皆さん、こんにちは!

技術文書ライティングコンテスト:InterSystems IRISチュートリアル へ応募いただいた記事のボーナスポイントが決定しました!
※ 14番の記事は日本のメンバーからのご応募です!💪
開発者の皆さん、こんにちは!
次のプログラミングコンテストの詳細が決定し「IRIS Cloud SQLのデータを利用してAI/MLソリューションを作成する」がテーマとなりました。
🏆 InterSystems IRIS Cloud SQL and IntegratedML コンテスト 🏆
期間: 2023年4月3日~23日
賞金総額: $13,500
こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。
私たちのシステムでは一部グローバルを利用しているものがあるのですが、
それをテーブル定義したものと同様にDbeaver等で参照できるようにしたいと考えております。
もともと定義していたグローバル(キーを二つ持つもの)に対して、対応するPersistentのクラスを作成し、
DataLocationをそのグローバルにすることで、Dbeaverからそのクラスの存在は見えるようになったのですが、
valueの値を参照することできず、困っています。
どなたか情報をお持ちでしたらご教示いただけないでしょうか…。
■グローバル
>zw ^Test
^Test(1,2)="A"
^Test(1,3)="B"
^Test(2,1)="C"
^Test(2,2)="D"
■永続クラス
Class Gbl.
開発者の皆さん、こんにちは。
AWSのEC2インスタンス(Ubuntu 20.04を選択)にIRISをインストールした環境を事前に用意した状態からの流れですが、AWS Lambda 関数からPyODBC経由でIRISに接続するまでの流れを試してみました。
- Native APIを利用する流れについては、「AWS Lambda の IRIS Python Native API IRIS」をご参照ください。
- 参考にしたAWSドキュメント:https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-python.html
以下の流れでご紹介します。
例で使用しているコード一式はこちらにあります👉https://github.com/Intersystems-jp/iris-pyodbc-lambda
腎臓病は、医学会でよく知られるいくつかのパラメーターから発見することが可能です。 この測定により、医学界とコンピューター化されたシステム(特に AI)を支援すべく、科学者である Akshay Singh は、腎臓病の検出/予測における ML アルゴリズムをトレーニングするための非常に便利なデータセットを公開しました。 このデータセットは、ML の最大級のデータリポジトリとして最もよく知られている Kaggle に公開されています。https://www.kaggle.com/datasets/akshayksingh/kidney-disease-dataset
腎臓病データセットには、以下のメタデータ情報が含まれています(出典: https://www.kaggle.com/datasets/akshayksingh/kidney-disease-dataset)
Visual Studio Code 用のエクステンション(拡張機能)には、その動作を構成するための多くの設定が用意されています。
設定可能な項目一覧は、こちらの VS Codeドキュメント でご紹介しています(英語のみ)。
今回は、これらの設定の中で「コンパイルフラグを変更したい場合」の例で、設定の変更方法をご案内します。
※コンパイルフラグの詳細については こちらの記事 をご覧ください。
① メニューから File(ファイル) > Preferences(ユーザ設定) > Settings(設定) (macOS では Code > Preferences > Settings) を選択し、設定エディタを開きます。
.png)
② 検索欄に、objectscript と入力して設定を絞り込み、今回は検索欄の下にある [Workspace(ワークスペース)] (※)を選択します。
※ユーザー:PCのユーザーごとに設定したい場合や、ワークスペースを作っていない時に利用する設定
ワークスペース:ワークスペースを作成して作業するときに、ワークスペース全体に適用して利用する設定
.png)
③ 表示されている設定項目の中から変更したい項目を見つけます。
今回は、コンパイルフラグを変更したいので「objectscript.compileFlags」になります。
開発者の皆さん、こんにちは!
21作品の応募があったデベロッパーツールコンテストが終わったばかりですが、次のコンテストの開催が決定しました!
✍️ 技術文書ライティングコンテスト:InterSystems IRIS チュートリアル ✍️
3月1日~31日までの期間に InterSystems IRISプログラマーを対象としたチュートリアルを投稿してください。
チュートリアルのレベルは初級、中級、上級のいずれでもかまいません。IRISプログラマ向けのチュートリアルを投稿してください。
🎁 参加者全員への賞品: 投稿いただいた方全員に参加賞があります。
🏆 特賞: 選ばれた6作品には特別賞があります。
.jpg)
DockerコンテナでIRISサーバーを構築していた時に、Dockerのバージョンアップによって、IRISサーバーが消滅してしまう事がありました。 その経験から、IRISサーバーを復元する為の方法と、事前のバックアップについて共有したいと思います。
###IRISのバックアップ手順
全ての構築が完了したら、事前にバックアップを取っておきます。 クラスやルーチン、グローバルのバックアップは別途、バックアップを取っておく事をお勧めします。
zn "%SYS"
write ##class(Security.Users).Export({出力先フルパス})
zn "%SYS"
write ##class(Security.Applications).Export({出力先フルパス})
iris stop {IRISインスタンス名}
iris.cpf ファイルをバックアップする。 cpfファイルはインストールディレクトリに在ります。
この度、InterSystems IRIS, InterSystems IRIS for Health, HealthShare Health Connect の追加メンテナンスリリース2021.1.3 を公開しました。
このリリースではこれまでの2021.1.xのリリースよりいくつかの機能やバグフィックスを提供しています。
変更点についての詳細な情報はこれらのページでご覧いただけます。
より良い製品を一緒に作っていくために開発者コミュニティを通じてご意見をお聞かせください。
ソフトウェアの取得方法
このソフトウェアは、通常のインストールパッケージとコンテナイメージの両方が利用可能です。 利用可能なインストーラーとコンテナイメージの全リストについては、Supported Platforms webpage をご参照ください。
各製品のインストール・パッケージは、WRCのSoftware Distribution page より入手可能です。 コンテナ・イメージは、InterSystems Container Registry
から入手できます。
このリリースでは、Community Editionのキットやコンテナは利用できません。
IRIS 2023.1でのメソッドコードの生成と呼び出し方法の変更について、お知らせしたいと思います。
IRIS のクラスは、2 つの主要なランタイムコンポーネントで構成されています。
クラス/オブジェクトのメソッドを呼び出すと、ディスパッチコードがクラス記述子からメソッドを探し、呼び出しが許可されているかどうかを確認し、正しいクラスコンテキストを設定し(その過程で $this を更新)、最後に関連するクラスルーチンにある ObjectScript コードを呼び出します。
IRIS 2023.1 では、ObjectScript の生成方法が改善され、常にクラス記述子を介してこのコードにディスパッチし、すべての正しいチェックを適用して、正しいクラスコンテキストで ObjectScript を実行するようになりました。