InterSystems IRIS デプロイガイド - AWS CloudFormation テンプレート
注意: 本ガイド (特に前提条件のセクション) を理解するには、AWS に関する中級から上級レベルの知識が必要になります。 S3 バケット、EC2 インスタンスの IAM ロール、VPC、サブネットを作成する必要があります。 また、InterSystems バイナリへのアクセス (通常は WRC サイトからダウンロード可) および IRIS のライセンスキーも必要になります。
注意: 本ガイド (特に前提条件のセクション) を理解するには、AWS に関する中級から上級レベルの知識が必要になります。 S3 バケット、EC2 インスタンスの IAM ロール、VPC、サブネットを作成する必要があります。 また、InterSystems バイナリへのアクセス (通常は WRC サイトからダウンロード可) および IRIS のライセンスキーも必要になります。
開発者の皆さん、こんにちは!
InterSystems 開発者コミュニティでは、初めてIRIS を使われる方向けに、IRIS の概要をご紹介するウェビナーを開催致しました。そのウェビナーのアーカイブを公開致しました。
インターシステムズのデータプラットフォーム製品をご覧になるソフトウェアエンジニアの方向けに、弊社のエンジニアが 約 30分でその特徴をご紹介します。ぜひご覧ください。
ウェビナー(アーカイブ配信)「InterSystems IRIS データプラットフォーム 概要」
アーカイブはこちら(ON24を使用しています)
https://event.on24.com/wcc/r/2982378/17DE6BE0C44C34513F10A8D7C7B68FB0
以下のような開発者の方におすすめです。
ぜひご視聴ください!
これで 3 記事目になります (パート 1 と パート 2 をご覧ください) が、引き続き Caché データベースの内部構造をご紹介いたします。 今回は、興味深い内容をいくつかご紹介し、私の Caché Blocks Explorer プロジェクトを使って作業の生産性をアップさせる方法について説明します。
開発者の皆さん、こんにちは!
第10回のグランプリ・プログラミングコンテストの 続報 📣 の「テクノロジーボーナス」についてご紹介します。
今回のコンテストでは、チームで開発した作品もご応募いただけます!ぜひコンテスト詳細ページもご確認ください!
| Group | Bonus | Points |
| General | Docker | 2 |
| ZPM | 2 | |
| Unit Testing | 2 | |
| API | REST API | 2 |
| ODBC/JDBC | 2 | |
| Native API in Java, Python, .NET, node. |
これは InterSystems FAQ サイトの記事です。
システムのパフォーマンスが低下した場合、OSやインターシステムズ製品の様々なツールを使用して情報収集を行い
”通常時と比較して、どこがどの程度変わっているか”
を確認することで、問題のある箇所を特定できます。
(逆に、通常時の状況が不明な場合、パフォーマンス問題点の切り分けが非常に困難となる場合もあります。)
いざ という時に備え、通常時のパフォーマンスを確認することは、大変重要な情報となります。
収集情報詳細は、以下のドキュメントをご参照ください。
ガイド内でご紹介しているサンプルは、https://github.com/Intersystems-jp/performance-sample からダウンロードいただけます。
パフォーマンス低下時の情報収集ツールについては、以下の関連FAQトピックをご参照ください。
これは InterSystems FAQ サイトの記事です。
Java ゲートウェイを使用することで、Java クラスのモジュールを InterSystems IRIS から実行できます。
【メモ】Java ゲートウェイは、外部 Java オブジェクトを InterSystems IRIS 内のネイティブ・オブジェクトと同じようにインスタンス化し、Javaオブジェクトを操作するための方法です。
詳細は以下ドキュメントをご参照ください。
Java ゲートウェイについて
Java ゲートウェイを使用する手順は以下の通りです。
1) Java ゲートウェイサーバを開始する
2) プロキシオブジェクト(ダイナミック・プロキシ・オブジェクト)を作成して Java オブジェクトを操作する
Java ゲートウェイサーバを開始する方法は 3 種類あります。以下のいずれかの方法で、Java ゲートウェイサーバを開始します。
A) 管理ポータルの「オブジェクトゲートウェイ」を利用する
B) プロダクションにJavaゲートウェイサービスを追加する
C) java コマンドを使用する
A)~C) の方法は以下の通りです。
開発者の皆さん、こんにちは!第10回目のコンテストが発表されました👏👏
今回は 🏆 InterSystems グランプリ・プログラミングコンテスト🏆 です!
今回は、いつものコンテストと賞金が異なり 賞金総額:16,000ドルです( ゚Д゚)

優勝特典
1、審査員から多く票を集めたアプリケーションには、以下の賞金が贈られます。
🥇 1位 - $6,000
🥈 2位 - $3,000
🥉 3位 - $2,000
2、開発者コミュニティで多く票を集めたソリューションには、以下の賞金が贈られます。
🥇 1位 - $3,000
🥈 2位 - $1,500
🥉 3位 - $500
複数の参加者が同数の票を獲得した場合、全参加者が勝者となり賞金は勝者間で分配されます。
参加資格
どなたでもご参加いただけます!(InterSystems 開発者コミュニティのアカウントを作成するだけでご応募いただけます)
コンテストのスケジュール
2月8日~28日 応募期間(Open Exchange へ作成されたアプリケーションをアップロードいただける期間=2週間です。この期間内であればアップロード後も自由に編集できます。
開発者の皆さん、こんにちは!
InterSystems ObjectScript でライブラリやツール、パッケージなどを開発していると、「このパッケージはどうすればターゲットマシンに展開できるのか?」という疑問がよく浮かびます。
また、私たちは、既に別のライブラリがインストールされていることを想定したり、その特定のバージョンのことを考慮したりしながらパッケージを開発しています。
JavaScript や Python などでコーディングを行うと、依存関係を管理しながらパッケージを展開するのに パッケージ管理システム が必要になります。
これを踏まえ、 InterSystems ObjectScript Package Manager のリリースを発表したいと思います!
これは InterSystems FAQ サイトの記事です。
※こちらの方法は、ミラーリング、シャドウイング、またはその他のメカニズムを使用して複製したデーターベースを比較したい場合に利用します。
グローバル変数の比較には、DATACHECKユーティリティを利用できます。以下ドキュメントをご参照ください。
DataCheckの概要【IRIS】
DATACHECK ユーティリティの実行サンプルは、添付のPDFをご覧ください。
***
ルーチンの比較は、システムルーチン %RCMP か、管理ポータルを使用します。
以下は、管理ポータルでの使用方法になります。
例えば、以下ルーチンがUSERネームスペースにあるとします。
以下ルーチンがUSER2ネームスペースにあるとします。
以下は、USERネームスペースに接続したターミナルで %RCOM を実行した結果になります。
※ Compare: にルーチン名を記述し、 with: に比較したいルーチン名を記載します。
別ネームスペースにあるルーチンを指定する場合は |"ネームスペース名"|ルーチン名.MAC で指定します。
これは InterSystems FAQ サイトの記事です。
下記のWebゲートウェイのエラーメッセージ/システム応答に対して、個別のエラーページを設定することができます。
設定は、Webゲートウェイ管理画面( [管理ポータル] > [システム管理] > [構成] > [Webゲートウェイ管理] )で行います。
[デフォルトパラメータ] メニュー内の [エラーページ] セクションで、各エラー発生時に表示させるhtmlページのファイル名またはリダイレクトさせるURLを設定します。
※Webゲートウェイ管理画面は、下記URLからもアクセス可能です。
詳細は、以下ドキュメントをご参照ください。
カスタムエラーページについて【IRIS】
これは InterSystems FAQ サイトの記事です。
$IsObject()を使用して判別できます。 調べたい変数をvとすると、
となります。
vが未定義の場合は、$IsObject(v)はUNDEFINEDエラーとなりますので、ご注意ください。
UNDEFINEDエラーを防止するには、次のように$Getを使用することをお勧めします。
これは InterSystems FAQ サイトの記事です。
ドキュメント上は明確に記述されていませんが、エクスポートの追加ボタンを押した時に表示されるファイルダイアログのファイル名にグローバル名 + .GBLと入力することでグローバルをエクスポートの対象にすることができます。
(例: ^aaaの場合、^aaa.gblと指定)

この機能はクラス、ルーチン等と一緒にグローバルデータを一括してエクスポート/インポートする際に、便利な機能ですが、XMLで表現されるため、データ容量は実データに比較し大きくなりますので、大量データを処理する場合には必要な容量に注意が必要です。
開発者の皆さんこんにちは!
第9回 InterSystems IRIS プログラミングコンテスト(マルチモデルコンテスト) への応募、投票が全て終了しました。コンテストへのご参加、またご興味をお持ちいただきありがとうございました。
今回のお知らせでは、見事受賞されたアプリケーションと開発者の方々を発表します!

🏆 Experts Nomination - 特別に選ばれた審査員から最も多くの票を獲得したアプリケーションに贈られます。
🥇 1位 - $2,000 は iris-image-index-demo を開発された @José Roberto Pereira さんに贈られました!
🥈 2位 - $1,000 は zapm を開発された @Sergey Mikhailenk さんに贈られました!
🥉 3位 - $500 は iris-multimodel-suite を開発された @Renato Banzai さんに贈られました!
🏆 Community Nomination - 最も多くの票を獲得したアプリケーションに贈られます。
🥇 1位 - $1,000 は HealthInfoQueryLayer を開発された @Botai Zhang さんに贈られました!
開発者のみなさん、こんにちは!
IRIS プログラミングコンテストでは、💨すぐに💨開発を開始いただけるようにコンテナ版 IRIS を利用した「開発環境テンプレート」をご提供してしていました。
終了したコンテストにはご応募いただけませんが、テンプレートは「ちょっと試したい」「加工して自分オリジナル環境を作りたい」の目的にぴったりの内容です。
また、全て Open Exchange で公開されていて、Docker、Git、VSCode をインストールした環境があればすぐにご利用いただけます。
テンプレートの使用方法については、各コンテストの紹介ページでご案内しています(日本語解説ビデオ付きもあります)。
基本は以下 3 行だけで開始できます。(とっても簡単!)
git clone <ここにテンプレートのURL>
cd <作成されたディレクトリ>
docker-compose up -d --buildご興味ある内容ありましたら、ぜひお手元で試してみてください!
| コンテスト名 | 内容紹介+テンプレート解説ビデオ(YouTube) | テンプレート |
|---|---|---|
| REST |
これは InterSystems FAQ サイトの記事です。
%SYS.Journal.File クラスの ByTimeReverseOrder クエリ と %SYS.Journal.Record クラスの List クエリを使用して検索することができます。
それぞれのクエリの役割は以下の通りです。
ジャーナルファイル名を取得できます。ジャーナルファイル名の降順で結果が返ります。
USER>set stmt=##class(%SQL.Statement).%New()
USER>set status=stmt.%PrepareClassQuery("%SYS.Journal.File","ByTimeReverseOrder")
USER>set rs=stmt.%Execute()
USER>while rs.%Next() { write rs.%Get("Name"),! }
c:\intersystems\irishcom\mgr\journal\20230725.002
c:\intersystems\irishcom\mgr\journal\20230725.これは InterSystems FAQ サイトの記事です。
システム提供の %SYS.GlobalQueryクラス の Size クエリーを使用することで取得できます。
2026/3/31 更新:%SQL.Statementクラスの利用方法を追加+サブスクリプトのサイズ取得方法を追記しました。
使用例は、以下のサンプルコードをご参照ください。
※カラムやパラメータの指定はクラスリファレンスをご確認ください。
%SQL.Statementクラス(推奨方法)を利用して実行する例は以下の通りです。
set dir="/usr/irissys/mgr/user" // データベースディレクトリ
set stmt=##class(%SQL.Statement).%New()
set status=stmt.%PrepareClassQuery("%SYS.GlobalQuery","Size")
write status // 1が戻れば実行できます。
set rset=stmt.%Execute(dir)
while rset.%Next() {
write rset.%Get("Name"),"-",rset.%Get("Used MB"),!2020年に世界を襲ったパンデミックの影響で、COVID-19のニュースや数字をみんなでフォローするようになりました。
これを機に、世界の予防接種の数を追いかけて、シンプルで楽しいものを作ってみてはいかがでしょうか。
この課題に立ち向かうために、私はOur World in Dataで提供されたデータを利用しています。世界最大の問題を解決するための研究とデータ。
Github上にCOVID-19のデータで専用のリポジトリを用意してくれていて、そのワクチンのデータを持ってトラッカーを手伝ってくれました。
もしあなたが彼らを知らなかったら、それをチェックしてみてください、それはあなたにとって価値ある時間です。 Github repository
アプリケーション iris-vaccine-trackerには、3つの異なるページがあります。
メインダッシュボードでは、世界中の予防接種の状況を簡単に知ることができます。
最初のウィジェットは:
2つ目のウィジェットでは、最も重要な予防接種数の多いトップ10の国の予防接種を時系列で見ることができます。
独自の組織データアーキテクチャを書き、InterSystems IRIS にマッピングする必要がある場合は、以下にご紹介するデータアーキテクチャダイアグラムおよび InterSystems IRIS ドキュメンテーションのリファレンスに記載されている内容を考慮してください。
.png)
皆さんこんにちは。
以下のメソッドでは日付の入った配列を受け取り、すべてのYYYY-MM-DD形式の
日付を$horologに変換しているのですが、たまに日付が古すぎるものが入っており
<VALUE OUT OF RANGE>エラーが発生して途中で止まってしまいます。
エラー時にエラーメッセージを代入してそのまま継続できる方法はないでしょうか?
プログラムは以下の通りです。
Class DC.Sample Extends %RegisteredObject [ Language = objectscript ]
{
/// 配列に入っているYYYY-MM-DD形式の日付を$horologに変換する
ClassMethod TransDate(array) As %Status
{
set key="" for {
set key=$order(array(key),1,data)
quit:key=""
set array(key)=$zdh(data,3)
}
quit $$$OK
}
}よろしくお願いいたします。
開発者のみなさん、こんにちは!
インターシステムズは、2/16(火)~ 2/18日(木)の3日間にかけて、オンラインカンファレンス「InterSystems Japan Virtual Summit 2021」を開催致します。
⚡️ 現在、事前登録受付中です! ⚡️
テーマは「データプラットフォーム最前線 ニューノーマル時代に求められるアジリティとレジリエンス」です。
InterSystems IRIS 、IRIS for Health の最新技術情報を多くのセッションを通してお届け致します。ぜひご参加ください。*本セミナーは日本語での開催となります。

これは InterSystems FAQ サイトの記事です。
InterSystems ObjectScript言語では引数の異なる同名のメソッドを定義することはできません。
InterSystems ObjectScript言語は一般的に動的言語と呼ばれるプログラミング言語に分類されます。
ObjectScriptではメソッド実行時にどの引数を使用するかどうかは自由に制御可能ですので、動的プログラミング言語ではないJava等の言語と異なり、コンパイルの段階で厳密に引数の数でメソッドを区別する必要がありません。
従って ObjectScript言語は、オーバーロードと一般に呼ばれる言語仕様を含んでいません。
Java等で記述されたプログラムを移植する際にオーバーロード相当の機能を実現するには、
ClassMethod test(args... as %String)
のように引数の後ろに ... を付加します。
これにより、可変長引数を渡すことが可能です。
このメソッドに複数の引数が渡された場合は、args(1)=第一引数 args(2)=第二引数というように順次設定されます。
これを使用して、メソッドコード中で渡された引数の個数を取得して処理を分岐させることができます。
※ただし、引数のデータタイプを判別することはできません。
これは InterSystems FAQ サイトの記事です。
クラス定義のプロパティの表示順は、スタジオのプロパティウィザードを利用して登録した場合は、末尾に追記されます。
また、エディタ上の任意の場所でプロパティ定義文を記述する場合は、その場所に追記され、クラス定義が登録されます。
つまり、定義者が記述した順番に登録されます。
(スタジオが並び換えを行ったりはしません。)
作成したクラス定義が、PersistentやSerialのようにデータベースに格納する属性を持ったクラス定義である場合、”初回のコンパイル”で クラス定義に対応するグローバル変数の定義情報=ストレージ定義を作成します。
初回コンパイル以降に、プロパティ定義の追加が行われれば、そのプロパティに対応するグローバル変数のスロット番号を、末尾に追加し、ストレージ定義を更新します。
以下の例は、クラス定義に対応するストレージ定義の例です。
(初回コンパイル時の状態)
Class Sample.
これは InterSystems FAQ サイトの記事です。
一括コメントを付与したい行全体を選択後、Ctrl + / を入力することで、選択範囲を一括でコメントにすることができます。
コメントの一括解除には、コメントを解除したい行全体を選択後 Ctrl + Shift + / を入力します。
開発者の皆さん、こんにちは!
InterSystems 開発者コミュニティでは、2021/2/5(金)に、ウェビナーを開催致します。
今回は、初めてインターシステムズのデータプラットフォーム製品をご覧になるソフトウェアエンジニアの方向けに、弊社のエンジニアが 30分でその特徴をご紹介します。
ウェビナー「InterSystems IRIS データプラットフォーム 概要」
事前登録、ウェビナ配信はこちら(ON24を使用します)
https://event.on24.com/wcc/r/2982378/17DE6BE0C44C34513F10A8D7C7B68FB0
以下のような開発者の方におすすめです。
ぜひご視聴ください!
2019年 10月 17日
Anton Umnikov
InterSystems シニアクラウドソリューションアーキテクト
AWS CSAA、GCP CACE
AWS Glue は、完全に管理された ETL (抽出、変換、読み込み) サービスです。データの分類、クリーンアップ、強化、そして様々なデータストア間でデータを確実に移動させるという作業を簡単にかつコスト効率の良いかたちで行えるようにするものです。
InterSystems IRIS の場合、AWS Glue を使用すれば、大規模なデータをクラウドとオンプレミスのデータソースの両方から IRIS に移動させることができます。 ここで考えられるデータソースは、オンプレミスのデータベース、CSV、JSON、S3 バケットに保管されている Parquet ファイルならびに Avro ファイル、AWS Redshift や Aurora といったクラウドネイティブのデータベースを含みますが、これらに限定されません。

本記事では、読者の皆さんが、AWS Glue について少なくとも AWS Glue の入門チュートリアル を完了している程度の基本的な知識をお持ちであるという前提で話を進めていきます。
開発者の皆さん、こんにちは。
第9回 IRIS プログラミングコンテスト(マルチモデルコンテスト)の投票が開始されました!
🔥 これだ!と思う一押し作品に投票お願いします! 🔥
投票期間:1月25日~31日 (1週間)
投票方法は?
Expert Nomination または Community Nomination を選択いただき、どの作品がどの順位になるかを指定しながら投票します。
Community Leaderboard:
| 順位 | ポイント |
|---|---|
| 1位 | 3点 |
| 2位 | 2点 |
| 3位 | 1点 |
そして、エキスパートノミネーションからの投票は以下の通りです(エキスパートのレベルが上がると獲得できるポイントも増えます!)。
Experts Leaderboard:
|
エキスパートレベル |
順位 | ||
| 1位 | 2位 | 3位 | |
| GM、モデレーター、プロダクトマネージャーのVIPレベル | 9点 | 6点 | 3点 |
| グローバルマスターズのエキスパートレベル | 6点 | 4点 | 2点 |
| グローバルマスターズのスペシャリストレベル | 3点 | 2点 | 1点 |
エキスパートリーダーボードの投票はコミュニティリーダーボードにもポイント(1位3点、2位2点、3位1点)が加算されます。
InterSystems Caché のグローバルは、デベロッパーにとって非常に便利な機能を提供します。 しかし、グローバルが高速な上に効率が良いのはなぜでしょう?
基本的に、Caché データベースとは、データベースと同じ名前を持ち、CACHE.DAT ファイルを含んだカタログのことです。 Unix システムでは、このデータベースを普通のディスクパーティションにすることもできます。
Caché のデータはすべてブロックとして保管され、バランスド B* ツリーとして整理されます。 基本的にすべてのグローバルがツリーに保管されると考えると、グローバルのサブスクリプトはツリーの枝を意味する一方で、グローバルのサブスクリプトの値はツリーの葉として保管されると言えます。 バランスド B* ツリーと通常の B ツリーの違いは、前者の枝には $Order と $Query の両関数を使ってサブスクリプト (この記事ではグローバル) のイテレーションをスピーディに実行するのに役立つ適切なリンクがあり、ツリーの幹に戻る必要がないという点です。
デフォルトで、データベースファイルの各ブロックのサイズは 8,192 バイトに固定されています。 既存のデータベースのブロックサイズは変更できません。