5月16日以降、 バージョン 2017.1 以前のInterSystems Caché® と InterSystems Ensemble® のドキュメントは、弊社ドキュメントウェブサイトで PDF フォーマットのみ公開されるよう変更となります。ご理解いただけますよう、どうぞよろしくおねがいします。もちろん、お手元の Caché / Ensemble のドキュメントについては、これまで通りのフォーマットでブラウザからご覧いただけます。
InterSystems 2022.2 では、IRIS SQL テーブルを永続化する新しいオプションとして、分析クエリを桁違いに向上させられるカラムナーストレージを導入しました。 2022.2 と 2022.3 ではこの機能は実験的としてマークされていますが、次の 2023.1 リリースでは、完全にサポートされた本番機能に「卒業」する予定です。
製品ドキュメントとこの紹介動画では、IRIS では現在でもデフォルトであり、全顧客ベースで使用されている行ストレージと、このカラムナーストレージの違いがすでに説明されており、ユースケースに適切なストレージレイアウトの選択方法に関する大まかなガイダンスが提供されています。 この記事では、このテーマについて詳しく説明し、業界で実践されているモデリング原則、内部テスト、および早期アクセスプログラム参加者からのフィードバックに基づく推奨事項をいくつか紹介します。
IRISTEMPというデータベースをご存じでしょうか?
特定の処理に対してデータを無期限に保存する必要がなく、「同一プロセス内でのみ使用したい場合」や「IRISが起動中のみ使用したい場合」に、IRISTEMPデータベースに保存されるグローバルを使用できます。
IRISTEMPデータベースに保存されるグローバルに対する操作は ”一切ジャーナルされない” ため、効率性を最大限にしたい作業に使用できます。
IRISTEMPデータベースに保存されるグローバル(データ)には、以下の種類があります。
本番環境でのopenhl pythonモジュールの使用に関する作業の説明の続きです。
Embedded Pythonを搭載しているirisは、まだ最終リリースがされていません(原文投稿当時)が、現時点で本番で使用する必要があります。 そこで、リクエストをxlsxファイルにエクスポートするサービスは別サーバーにバックアップし、クエリ結果は別データベースのグローバルに保存することにしました。
このデータベースは、ネットワーク化され、サービスサーバーはローカル、本番サーバーはリモートとしています。本番サーバー、サービスサーバ間のコミュニケーションは、REST サービスを使って実装しています。
インターシステムズは、IBM POWER8 以降の POWER プロセッサを搭載した AIX システムで、データベースおよびジャーナルファイルが破損する可能性がある問題を修正しました。
この問題は、データベースまたはジャーナルの暗号化が使用されている場合にのみ発生する可能性があります。
対象バージョン:
InterSystems IRIS - 2022.1.3、2023.1 を除く全てのバージョン
InterSystems IRIS for Health - 2022.1.3、2023.1 を除く全てのバージョン
HealthShare Health Connect - 2022.1.3、2023.1 を除く全てのバージョン
HealthShare ソリューション - すべてのバージョン
※HealthShareソリューションはデータ要素の暗号化機能を使用していない為、
本不具合が直接影響することはありません。ただし、HealthShare環境にて
上記のようなデータ要素の暗号化機能を使用するカスタマイズがある場合は
本アラートに記載されている回避方法に従う必要があります。
InterSystems Cache および Ensemble - 2015.1 以降の全てのバージョン
Python で可変長引数をもったメソッドを考えてみましょう。以下の a.py があるとき
deftest1(*args):return sum(args)
deftest2(**kwargs):
a1 = kwargs.get("a1",None)
a2 = kwargs.get("a2",None)
return a1+a2Global Summit 2022 または 2022.2 ローンチウェビナーの内容からよく覚えていると思いますが、InterSystems IRIS の分析ソリューションに組み込むための目覚ましい新機能をリリースしようとしています。 分析クエリを桁違いに高速化する、代替の SQL テーブルデータ格納手法であるカラムナー(列指向)ストレージです。 もともと 2022.2 の実験的機能としてリリースされましたが、最新の 2022.3 開発者プレビューには多数の更新が含まれているため、別途ここで簡単に説明したいと思います。
開発者の皆さん、こんにちは!
IRIS Cloud SQL and IntegratedML コンテストの勝者が発表されました!
この記事では、コンテスト受賞者を発表します。
今回は、8 の応募 🔥 がありました!
%20(2).jpg)
クラウド環境で Windows 英語版に日本語言語パックをインストールして日本語化している場合、設定に注意が必要です。
以下のようにランチャー(キューブ)メニューの一部が文字化けするのは、言語設定が足りていないのが原因と考えられます。
以下の設定をご確認ください。
Windows設定 > 時刻と言語 > 言語:管理用の言語設定
「Unicode 対応でないプログラムの現在の言語」が、日本語以外の言語 (例:英語(米国)) になっていないでしょうか?
この場合、システムロケールの変更 ボタンで現在のシステムロケールを「日本語(日本)」 に変更することで、文字化けが解消します。
※この変更を反映させるにはWindowsの再起動が必要です。
***
【注意】
システムロケールが「英語(米国)」のように日本語以外の言語になっている環境にIRISをインストールしている場合、IRISのデフォルトの ロケール定義 が日本語以外に設定されています。
この場合、例えばファイル入出力も日本語の言語対応がされないため、日本語を含むCSPなどのファイルインポートで文字化けが発生してしまいます。
その際には、OSのシステムロケールの変更に加えて、IRISのロケール定義も変更するようにしてください。
※以下の例は、日本語 Windows OS の場合
Azure ADをOPとして利用する
元のタイトルから外れますがAzure ADをOPとした場合に、Wepアプリケーション(CSP)とSPA+BFF形式のRPにどのような修正が必要かを調べました。
ある程度の差異は想定はしていましたが、思っていたより違うな、という印象を受けました。RP、リソースサーバ側でこれらの差異を吸収する必要がありました。
個人調べです。誤りがあるかもしれませんが、その際はご容赦ください。また、状況は刻々と変わる可能性があります。
インターシステムズは、InterSystems IRIS Data Platform、InterSystems IRIS for Health、HealthShare Health Connect、InterSystems IRIS Studio の 2023.1 リリースを一般提供開始(GA)したことを発表しました。
2023.1 は、拡張メンテナンス(EM)リリースです。2023.1では、多くのアップデートと機能拡張が追加されました。
また、Columnar Storageの本番対応、Bulk FHIR、MacOS 13 Venturaへの対応など、まったく新しい機能が追加されています。さらに、 Foreign Table を使用する機能を提供する新機能は「実験的」としてリリースされ、早期アクセスプログラム(EAP)を通じてアクセスできるようになる予定です。
リリースハイライト
プラットフォームのアップデート
InterSystems IRIS Data Platform 2023.1では、本番用に以下の新しいオペレーティングシステムをサポートします。
- MacOS 13 Ventura.
アナリティクスとAIのエンハンス
今回は、「IRIS for Health Contest」に応募するために、どのような技術を使ってアプリケーションを開発していたのか、その詳細を紹介したいと思います。
- OpenAPI仕様からのREST API生成
- APIとWebページを保護する役割ベースのアクセス(RBAC)
- InterSystems FHIR サーバー
内容
アプリケーション概要
まず、それらの技術に支えられたアプリケーションを簡単に紹介します。
このアプリケーションは、妊娠中の女性が簡単に症状を報告できるように設計されています。このアプリケーションはレスポンシブであるため、モバイルデバイスを使用して症状を簡単に報告することができます。このような症状は、FHIR Observation リソース のInterSystems FHIR サーバーを使って記録されます。.
InterSystems Kubernetes Operator (IKO) 3.5 が一般公開されました。 IKO 3.5では、多数のバグフィックスとともに、重要な新機能が追加されています。
主な内容は以下の通りです
- Web Gateway、ECP、Mirroring、Super Server、IAM間でのTLSのセットアップを簡素化。
- コンピュートノードやデータノードとともにサイドカーコンテナを実行する機能 - コンピュートノードとともにWebゲートウェイをスケーリングするのに最適な機能です。
- IRIS 2023.1以降、IKO 3.5を使用する場合、CPF configmapとIRIS 秘密鍵はIRISインスタンスによって自動的に処理されます。
- initContainerがUID/GIDとイメージの両方で設定できるようになりました。
- IKOがtopologySpreadConstraintsをサポートし、ポッドのスケジューリングをより簡単に制御できるようになりました。
- より幅広いIRISインスタンスに対応する互換性バージョン
- コンピュートノードの自動スケール化 (体験版)
- IKO は ARM でも実行可能
インターシステムズは、InterSystems IRIS、InterSystems IRIS for Health、HealthShare Health Connect 2022.1.3 のメンテナンスリリースを公開しましたのでお知らせします。このリリースでは、これまでの2022.1.xリリースに対して厳選された機能とバグフィックスが提供されます。
変更点についての追加情報は、これらのページでご覧いただけます
より良い製品にするため、開発者コミュニティにご意見をお寄せください。
ソフトウェアの入手方法
本ソフトウェアは、古典的なインストールパッケージとコンテナイメージの両方が利用可能です。 利用可能なインストーラとコンテナ・イメージの詳細なリストについては、「サポート対象プラットホーム」を参照してください。
InterSystems API Manager (IAM) バージョン 3.2.1 が公開されました。 IAM 3.2.1では、バグフィックスや細かな改良に加え、IRISのお客様にとって興味深い新しいプラグインが追加されています。
- OAS バリデーション (oas-validation)
- OpenAPI 3.0やSwagger API仕様を元にした HTTPリクエストや応答を検証します。
- SAML (saml)
- サービスプロバイダー (Kong Gateway)、IDプロバイダー(IdP)間のSAML v2.0 認証を提供します。
- XML 脅威保護 (xml-threat-protection)
- このプラグインは、XMLペイロードの構造をチェックすることで、XML攻撃のリスクを低減することができます。これにより、最大複雑度(ツリーの深さ)や要素、属性の最大サイズが検証されます。
- AppDynamics (app-dynamics)
- Kong GatewayをAppDynamics APM Platformと統合
- JWE Decrypt (jwe-decrypt)
- リクエストに含まれるインバウンドトークン(JWE)の復号化
これは InterSystems FAQ サイトの記事です。
以下の状態の時、ReadOnlyでマウントされます。
- データベースの構成設定「読み込み専用でマウント」にチェックをつけている
- データベースマウント時「読み込み専用」のチェックをつけている
- ミラー構成を使用していないのにデータベースにミラー属性がついている
- 詳細は「ミラー・データベースがミラー構成削除後に読み取り専用でマウントされる」をご参照ください。
- データベースファイルが存在するディレクトリを全体をコピーし、そのディレクトリに対してデータベースを作成したとき
開発者の皆さん、こんにちは!
InterSystems IRIS Cloud SQL and IntegratedMLコンテストの投票が開始されました。
🔥 ベストアプリケーションはこれだ!! 🔥と思う作品にぜひ投票をお願いします。
%20(3).jpg)
投票方法は以下ご参照ください。
開発者のみなさん、あけましておめでとうございます🎍 今年もどうぞよろしくお願いします!
さて、この記事では、IRIS ターミナルに(こっそり)追加された便利機能をご紹介します!(つい最近知りまして、びっくりしました
)
2023/4/13 追記:Pythonシェルへ切り替えるメソッドのショートカットが追加されていたので返信欄に追記しました。
IRIS ターミナルで以前実行したコマンドを再実行する場合、上矢印キーを連打しながらコマンドを探されていると思うのですが、IRIS 2021.1 から履歴表示と、履歴番号を指定した実行ができるようになっていました!
では早速、履歴(history)の使い方をご紹介します。これがあれば、もう、上矢印キーを連打せずに以前実行したコマンドを再実行できます!!
まずは、履歴を作るため、いくつかコマンドを実行します。
これは 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 にマッピングされています)
これは、InterSystems FAQサイトの記事です。
管理ポータルの監査メニューを使用する場合、ユーザに監査データベースの閲覧のみを許可するということはできません。
管理ポータルから監査データベースを閲覧する場合は、そのユーザに、
・%Admin_Secure:U(監査以外にもセキュリティ関連の操作が可能となる)
・%DB_IRISAUDIT:RW(監査データベースへの読み込み/書き込み権限)
等のリソースへの権限が必要になりますが、これを与えることにより、監査データベースの閲覧以外の操作も可能となってしまいます。
監査データベースの閲覧のみを許可したい場合には、管理ポータルの監査メニューは使用せず、外部ツール等からSQLで監査テーブルを参照するようにします。
このとき、ユーザに必要な権限は以下の通りです。※他の権限は与えないようにします。
・IRISAUDITデータベースへのRW権限 ⇒ %DB_IRISAUDITロールの付与
・%SYS.AuditテーブルへのSelect権限
1.新規ロールの作成
必要な2つの権限のみを含むロールを作成します。
(1)新規作成
システム管理>セキュリティ>[新規ロール作成]>名前入力>[保存]
↓
(2)作成したロールに%DB_IRISAUDITロールを割り当てる
ロールの定義編集>Assigned Toタブ>%DB_IRISAUDITを選択して[割り当てる]
これは、InterSystems FAQサイトの記事です。
%Library.GlobalクラスのExport()メソッドを使用してエクスポートする際に、エクスポート形式(第4引数:OutputFormat)を 7 の「ブロックフォーマット/Cachéブロックフォーマット(%GOF)」にした場合、マッピングされたグローバルはエクスポートできない仕様となっています(対象はネームスペースのデフォルトグローバルデータベースのグローバルのみ)。
マッピングされたグローバルを「ブロックフォーマット/Cachéブロックフォーマット(%GOF)」でエクスポートする為には、%Library.Global.Export()の第1パラメータにマッピング先のデータベースディレクトリを指定します。
実行例は以下の通りです。
set sc = ##class(%Library.Global).Export(DB,"TESTGBL.gbl",FULLPATH,7,,"")
これは、InterSystems FAQサイトの記事です。
HL7の仕様では、日本語データを送受信する場合はJISを文字コードとして利用し、メッセージヘッダ(MSH)の18番目の2項目に iso-ir87 を指定します。
HL7用プロダクションでは、情報の入力はビジネスサービス、情報の出力はビジネスオペレーションを利用します。
日本語を含むHL7を送受信する場合は、入力/出力の対象となる全てのコンポーネントの設定で [追加の設定] の「キャラクターセット(Charset)」に iso-ir87 を指定することで正しく日本語データを取り扱うことができます。
これは、InterSystems FAQサイトの記事です。
データの登録/更新/削除を実行中でも、インデックスを再構築することは可能です。
ただし、再構築中は更新途中の状態で参照されますので、専用ユーティリティを使用することをお勧めします。
手順は以下の通りです。
- 追加予定のインデックス名をクエリオプティマイザから隠します。
- インデックス定義を追加し、再構築を実施します。
- 再構築が完了したら、追加したインデックスをオプティマイザに公開します。
実行例は以下の通りです。
Sample.Person の Home_State(連絡先住所の州情報)カラムに対して標準インデックス HomeStateIdx を定義する目的での例で記載します。
1、追加予定のインデックス名を Caché のクエリオプティマイザから隠します。
1
2、インデックス定義を追加した後、再構築を実施します。
定義例)Index HomeStateIdx On Home.State;
3、再構築が完了したら、追加したインデックスをオプティマイザに公開します
これは、InterSystems FAQサイトの記事です。
管理ポータル:システムエクスプローラの使用には、%DevelopmentリソースのUse特権が必要です。
システムエクスプローラでの参照のみ利用可能とする権限をユーザに付与したい場合は、%DevelopmentリソースのUse特権(※1)と、該当のデータベースリソース(※2)への参照特権(R)を付与したロールを作成し、これをユーザに与えます。
※1.「%Development:U」を付与している場合はターミナルやスタジオも参照のみで使用可能となります。
※2.参照したいデータベースに割り当てられているリソースが%DB_DEFAULTリソースになっており、このデータベースのみに参照権限を設定したい場合は、事前に、このデータベース用の独自リソース(%DB_<データベース名>)を作成し、該当データベースに割り当てるようにします。
【例】:testAユーザに、TESTデータベースへの参照のみを許可する。
0.独自リソースの作成
管理ポータル:[システム管理]>[構成]>[システム構成]>[ローカルデータベース]>(該当データベースを選択)
1.新規ロール作成
2.ロール編集(リソースへの権限の追加)
テクノロジー分野で 19 年間働いてきた中、様々な分野でいくつかのプロジェクトに参加することができましたが、健康分野は私が一番惹かれている分野の 1 つです。
健康に焦点があてられたものを作成するチャンスを得るたびに、FHIR プロトコルを使用することにワクワクしています。
とは言え、テック系の 3 人の IT 男子で構成されるチームでは、本当に利用価値のあるものを作り出すのは困難であるため、女性の健康のように重要なトピックにおいては、この主題を非常によく理解している人をチームに招きました。
これは InterSystems FAQ サイトの記事です。
バージョン2017.2以降から、CREATE TABLE文で作成したテーブル定義のデータを格納するグローバル変数の命名ルールが変わり ^EPgS.D8T6.1 のようなハッシュ化したグローバル変数名が設定されます。(この変更はパフォーマンス向上のために追加されました。)
※ バージョン2017.1以前については、永続クラス定義のルールと同一です。詳細は関連記事「永続クラス定義のデータが格納されるグローバル変数名について」をご参照ください。
以下のテーブル定義を作成すると、同名の永続クラス定義が作成されます。
CREATETABLE 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の秘匿性を十分に保てる)か、というと微妙ですが、あくまで利用者は開発者のみ、という位置づけです。
開発者の皆様、こんにちは。
医療ソリューション・サービスプロバイダー様向けにシリーズでお送りしているセミナーの第三弾のお知らせを致します。
是非ご参加くださいますようご案内致します。
【開催概要】
医療ソリューション・サービスプロバイダー様向け】
第4回 InterSystems 医療 x IT セミナー:ソリューション 開発編 III
~これからの医療ITソリューションに求められる姿を探る ―データ分析/データ活用 最前線~
日時:4月20日(木)13:00 ~14:30
参加費:無料(事前登録制)
対象:医療情報システムベンダー、医療機器ベンダー、医療向けサービスベンダーの事業企画・開発の責任者の方
【プログラム】
13:00~13:05 開会挨拶
インターシステムズジャパン株式会社 カントリーマネージャー 林 雅音
13:05~13:45 ゲスト講演
「Embedded Pythonがオブジェクトデータベース/InterOperability/MLの真価を引き出す」
群馬大学医学部附属病院 システム統合センター 副センター長
准教授 鳥飼 幸太 様
13:50~14:25
「データプラットフォームとPythonの出会い:データ活用の新しいアプローチ」
インターシステムズジャパン株式会社 堀田 稔
開発者の皆さん、こんにちは!
この記事では、Developer Hub にあるチュートリアルの4番目のご紹介となる REST + Augular App チュートリアル についてご紹介します。
チュートリアルでは、IRISを利用してRESTサービスで使用するテーブル、データ、RESTサーバの機能をサンプルコードをコピーしながら作成していきます。
チュートリアルの中で作成するWebアプリはとてもシンプルな内容で、データベースにブックマークとして登録したいURLを保存し、参照するだけのページとしています。
データの登録も、IRISの管理ポータルのSQLメニューでINSERT文を実行する形式で進めていきます。
最終的には、以下の図にあるように「Add a new bookmark」以下のテキストボックスで新しいブックマークを登録できるように、Web画面とRESTサーバ用コードを追加していきます。
アカウント作成やログインも不要で
ボタンをクリックするだけで始められます👍
ぜひ、お試しください!
開発者の皆さん、こんにちは。
Python Native APIを利用すると、IRISにあるグローバル変数の参照/更新をPythonから行えたり、メソッドやルーチンをPythonから実行することができます。
この記事では「AWS Lambda の IRIS Python Native API IRIS」の記事を参考に、NativeAPIを利用してPythonからIRISに接続するAWS Lambda関数を作成する流れで必要となる、レイヤー作成と関数用コードの作成例をご紹介します。
※ 事前にAWSのEC2インスタンス(Ubuntu 20.04を選択)にIRISをインストールした環境を用意した状態からの例でご紹介します。

