これは、InterSystems FAQ サイトの記事です。
管理ポータルの [システムオペレーション] > [ジャーナル]のページで実行できる、 整合性チェックの実行や、サマリーの表示は、%SYS.Journal.File クラスのメソッドやクエリでも実行することができます。
以下、実行例です。
※全て、%SYSネームスペースで実行します。
(1) 整合性チェック
// 整合性チェックで問題なければ status=1
(2)サマリー
InterSystems IRISは総合データプラットフォームです
InterSystems IRISは、企業にとって最も価値のある資産(データ)の取得、共有、理解、そしてデータに基づく行動のために必要なすべてのものを提供します。
完全なプラットフォームである InterSystems IRIS は、複数の開発技術を統合する必要がありません。より少ないコードで開発が可能で、そのアプリケーションは、システムリソース、メンテナンスなども少なくて済みます。
これは、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 これは、InterSystems FAQサイトの記事です。
クライアントーサーバ接続を担当するスーパーサーバで、SSLバージョン3とTLSバージョン1での通信が可能です。
このオプションを利用することで、通信上のデータを暗号化できます。
その他、Kerberosを使うことで通信上の暗号化も可能です。
これはInterSystems FAQサイトの記事です。
大量の更新を行うプログラムで、処理途中に何らかの問題が発生してもデータを初期化して再度実行することができる状況では、プロセスレベルでジャーナリングを無効/有効に変更することが可能です。
※但し、トランザクションのロールバックにはジャーナルが必要ですので、ロールバックを正しく動作させたい場合にはこの方法は使用しないでください。
以下のコマンドを使用します。更新処理の開始と終了(またエラー処理での終了)の際に以下のコマンドを追加します。
//ジャーナリング無効化(停止)
do DISABLE^%SYS.NOJRN
//ジャーナリング有効化
do ENABLE^%SYS.NOJRN
【注意】
こちらの機能は、ミラーリング対象のデータベースには使用できません。
DISABLE^%NOJRN を使用してジャーナリングを無効にしても、ミラーリングされたデータベースに影響はありません。
詳細は、以下のドキュメントをご参照ください。
ドキュメント:DISABLE^%NOJRN を使用したプロセス・レベルでのジャーナリングの管理
本年よりスタートしたインターシステムズ ソリューションウェビナー、第2回は以下の日時・内容で開催いたします。
日時:4月24日(木)13時30分~14時15分(45分間)
参加費無料・事前登録制
ウェビナー概要:このウェビナーでは、InterSystems IRIS data platform の2025.1 EM(Extended Maintenance)リリースに搭載される新機能と改善点を包括的に紹介します。EMリリースは長期サポートが提供され、安定性が重視されるため、多くのお客様が本番環境で採用されるバージョンです。2024.1 EMリリース以降の機能強化も含め、技術者の皆様が新バージョンを最大限に活用できるよう情報をお届けします。
本ウェビナーでは、製品の新機能や改善点について、実際の実行環境での画面を共有しながら解説します。理論的な説明だけでなく、具体的なコード例や実際の動作デモンストレーションを通して、新機能の実用的な活用方法を分かりやすく紹介します。これにより、参加者の皆様はすぐに実践できる知識を得ることができます。
こんな方にお勧め:
前提となる知識:
これはInterSystems FAQサイトの記事です。
ISCLOG を有効にすることにより、CSP(REST)アクセスに関連するログ情報を収集できます。これを使用してCSP(REST)でのトラブル時の調査を行うことが可能です。
◎このツールをトラブルシューティングに使用する場合は、基本的に、エラーを(意図的に)再現できる状況で使用します。
他のウェブアクセス等がない状態で、単体実行してエラーを発生させ、このログを取得して調査します。
手順は以下のとおりです。
① ログをクリアします。
//IRIS
Kill ^ISCLOG
//Caché
Kill ^%ISCLOG
② ロギングレベルを設定します。
Set ^%ISCLOG=3
③ CSPでエラーになる処理を行います。
これはInterSystems FAQサイトの記事です。
質問:
オンラインバックアップの保存先にネットワークドライブ(NAS等)を指定することはできますか?
回答:
バックアップの保存先に指定することはできますが、推奨はしておりません。
推奨しない理由は、
オンラインバックアップの最終フェーズにDBアクセスを禁止して処理が実行されますが、 このとき、万一ネットワークエラー等でバックアップ処理がハングアップすることがあれば、システム全体に影響が及ぶリスクがあるからです。
これは InterSystems FAQ サイトの記事です。
ネームスペースを管理ポータルで作成する際に、デフォルトでは、『相互運用プロダクション用にネームスペースを有効化』にチェックがついているため、そのチェックを意図的に外さない限り、新規作成したネームスペースは、インターオペラビリティ機能が有効になっています。
この機能が有効であることによる実用上の弊害(パフォーマンス等に影響する)は、特にありませんが、管理ポータル上のクラス表示にこの機能に関連するクラスが先に表示されて、ユーザー作成クラスの表示に余計な操作が必要になる等の操作上の余分な手間が発生する場合があります。
管理ポータル上でこの設定を無効にするメニューは用意されていませんが、以下の手順で無効化することができます。
- 相互運用性ネームスペースの無効化
USER>set $namespace = “%SYS”
%SYS>write ##class(%EnsembleMgr).DisableNamespace("FAQ",1)
1- 管理ポータルより該当のネームスペースの削除
- 管理ポータルより該当のネームスペースの再作成
再作成の際に「相互運用プロダクション用にネームスペースを有効化」のチェックを外す
- 相互運用性ネームスペースの確認
%SYS>w ##class(%EnsembleMgr).Windows11環境で、IRISライセンス切れのため、IRIS_Community-2024.1.0.262.0-win_x64 から IRIS_Community-2024.3.0.217.0-win_x64 へアップデートしました。
Python関連の実行をすると、Failed to Load Python のエラーが出るようになりました。
例
USER>d ##Class(%SYS.Python).Shell()
エラー #5002: ObjectScript エラー:<OBJECT DISPATCH>Shell+16^%SYS.Python.1 *Failed to Load Python: Check documentation and messages.log, Check CPF parameters:[PythonRuntimeLibrary,PythonRuntimeLibraryVersion], Check sys.path setup in: $INSTANCE/lib/python/iris_site.py
message.logに
Startup of InterSystems IRIS [IRIS for Windows (x86-64) 2024.3 (Build 217U) Thu Nov 14 2024 17:59:58 EST]
InterSystems はこのたび「テーブル・パーティショニング機能」の早期アクセスプログラムを開始しました。これにより、IRIS をお使いのお客様が非常に大きなテーブルを管理したり、行データや関連インデックスをデータベースやストレージ階層間で分散できるようになります。テーブル・パーティショニングは IRIS のリレーショナル・データ管理の核心深くに関連する機能であるため、初期段階でのフィードバックを提供いただけたり、状況に応じて機能調整にご協力いただける、少数の熱心なお客様と一緒になって、確実な機能実装を進めたいと考えています。
非常に大規模なリレーショナル・データセットをご利用中で、より効率的な運用を望まれており、新機能を試してみたいというお客様は、ぜひ https://www.intersystems.com/early-access-program/ からご登録ください。登録された方には、一時的な開発ライセンス、新機能を含む最新キットとコンテナ・イメージ、チュートリアル がすべて掲載された評価ポータルをご案内するメールをお送りします。
登録された参加者のみなさまには、関連するアップデートがリリースされるたびにご連絡を差し上げます。もちろん、ご要望がございましたら、みなさまのテストを直接お手伝いさせていただくことも可能です。
InterSystems IRIS での OpenEHR を利用について
InterSystems IRIS で OpenEHR を利用することについてご質問をいただくことがあります。それに対する回答は一般的に、組織がアプリ構築において OpenEHR をなぜどのように実装したいのかに大きく左右されます。簡単なガイドはこちらになります。
これは InterSystems FAQ サイトの記事です。
8192文字を超える文字列をODBC経由で取得した場合に特定のODBCクライアントとの組み合わせにおいて文字列が途切れて取得されるケースが報告されています。
このような状況が発生した場合、該当するODBCデータソースの設定画面でUnicode SQLタイプをチェックすることで問題が解消されることがわかっています。
これは InterSystems FAQ サイトの記事です。
大量のレコードが含まれるテーブルに対して、select count(*) from テーブル名の応答が遅い、または応答がタイムアウトする場合には、ビットマップ・エクステント・インデックスを追加することで問題を解消することができます。
ビットマップ・エクステント・インデックスを追加する方法は、以下をご参照ください。
クラス定義に以下のような定義を行うことで、ビットマップ・エクステント・インデックスを追加することもできます。
Index IndexName [ Extent, Type = bitmap ];これは InterSystems FAQ サイトの記事です。
ObjectScriptの%Netパッケージのライブラリクラスを利用して、ファイルを他のサーバーにアップロードすることができます。
以下のCurl コマンドと同じことを ObjectScript で実現する方法を紹介します。
curl -X POST "http://localhost/api/upload/csv?a=123&b=999" -F file=@"C:/temp/a.csv":/temp/a.csv"クライアントのObjectScriptコードを以下の様に作成します。
Class User.MyRestClient Extends %Base
{
ClassMethod readMimeData() As %Status
{
// form-data (for CSV)
set msg= ##class(%Net.MIMEPart).%New()
set msg.ContentType = "multipart/form-data"
set inputstream=##class(%Stream.FileBinary).%New()
set sc=inputstream.LinkToFile("c:¥temp¥a.これは InterSystems FAQ サイトの記事です。
計算プロパティを定義する際に利用可能なキーワードが複数あります。
詳細は、以下をご参照ください。
実際のこれらのキーワードの関連性は、少々複雑ですので具体的なコードを作成して動作を確認してみます。
以下のようなクラス定義を作成します。(プロパティとインデックス定義のみ表示します)
完全なクラス定義は以下より、ダウンロードできます。
Class Sample.これは InterSystems FAQ サイトの記事です。
IRISには、データ項目の値を実体として持たずに、何らかの演算処理の結果として提供する機能があります。
これを計算プロパティまたは計算フィールドといいます。
計算プロパティを定義するためには、最低限以下の手順を実行します。
プロパティ定義にSqlComputedキーワードを含めます。
プロパティ定義にSqlComputedCodeを含めて、値を算出するための処理ロジックとして含めます。
または、SqlComputedCodeを含めずに、代わりに<プロパティ名>Computationという名前のクラスメソッドを記述します。
以下は、Age(年齢)プロパティを計算プロパティとして定義した例になります。
Class Sample.Person Extends %Persistent {
Property FirstName As %String;
Property LastName As %String;
Property DOB As %Date;
Property Age As %Integer [ SqlComputed ]; // ...
ClassMethod AgeComputation(cols As 開発者の皆さん、こんにちは!
今年最初のプログラミング・コンテスト(USコミュニティ)の開催が決定しました!
🏆 InterSystems AI プログラミングコンテスト:ベクトル検索、生成AI、AIエージェント 🏆
期間:2025年3月17日~4月6日
賞品総額:$12,000 + Global Summit 2025 へご招待!
開発者の皆さん、こんにちは。
この記事では、複雑なJSON形式の文書を「JSONテンプレートエンジン」を利用して生成させる方法をご紹介します。
「JSONテンプレートエンジン」については、6月のウェビナーで使用例をご紹介しましたが、JSON生成対象として医療情報交換標準規格であるFHIRリソースのJSON(例:Patientリソース)を例に解説しています。
このエンジンは、JSON形式の文書であればどのような種類のデータでもご利用いただけますので、一般的なJSON形式の文書を利用して使い方をご紹介します。
例に使用するJSONはこちら👉 https://api.openbd.jp/v1/get?isbn=978-4-7808-0204-7&pretty
このサンプルから以下の部分を抜き出して、ObjectScriptでJSON形式の文書を組み立てていく方法をご紹介します。

これは、ネイティブウェブアプリケーションとして IRIS にデプロイできる Flask アプリケーションのテンプレートです。
git clone
cd iris-flask-template
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
docker-compose up
ベース URL は http://localhost:53795/flask/ です。
/iris - IRISAPP ネームスペースに存在する上位 10 個のクラスを持つ JSON オブジェクトを返します。/interop - IRIS の相互運用性フレームワークをテストするための ping エンドポイント。/posts - Post オブジェクトの単純な CRUD エンドポイント。/comments - Comment オブジェクトの単純な CRUD エンドポイント。WSGI 導入記事をご覧ください: wsgi-introduction。
これは InterSystems FAQ サイトの記事です。
埋め込みSQLの出力ホスト変数は、SQLCODE=0(埋め込みSQL正常終了)の場合のみ、正しい値が設定されていることが保証されます。
InterSystems製品のバージョンによっては、SQLCODEが0以外の場合(該当データがない100やエラー等)で値が設定される場合もありますが、その値は無効です。
特に、IRIS2021.1以降のバージョンでは、SQLCODE=100 の場合、INTO 節で指定された出力ホスト変数は NULL("") にクリアされますので注意が必要です。
Cacheや、IRIS2020.x 以前のバージョンでは、明示的な値のクリアを行っておりませんでしたが、こちらについても値は保証されるものではありません。
埋め込みSQLを使用する場合は、必ずSQLCODEを確認してエラーチェックを行うようにして下さい。
また、エラーチェック以外でも、SQLCODE = 0(データあり) の場合と SQLCODE = 100(データなし) の場合は処理を分けるようにし、SQLCODE = 100 の場合は出力ホスト変数を参照しないようご注意ください。
例)
誤った使用例:
&sql( select name into :name from sample.これは InterSystems FAQ サイトの記事です。
以下の様なCurl コマンドで送信したファイルを受け取るRESTサービスを作成する方法を紹介します。
curl -X POST "http://localhost/api/upload/csv?a=123&b=999" -F file=@"C:/temp/a.csv"クライアントからPOSTされたファイルを受け取ってサーバーに保存するRESTサービスは以下の様に作成します。
(このサンプルでは、1000文字以下の小さいサイズおよび文字コードはutf-8のファイルを想定しています。)
Class User.MyREST Extends %CSP.REST
{
Parameter HandleCorsRequest = 1;
XData UrlMap
{
<Routes>
<Route Url="/csv" Method="POST" Call="readMimeData" />
</Routes>
}
ClassMethod readMimeData() As %Status
{
set upload=$g(%request.MimeData("csvfile", 1))
set fname=%request.MimeData("csvfile",1).2025 年 2 月 15 日 – 警告:SQLクエリが間違った結果を返す
インターシステムズは、SQL クエリが不正な結果を返す原因となる 2 つの問題を修正しました。さらに、日付/時刻データ型の処理における不整合を修正しました。この日付/時刻データ型の処理の修正により以前の不整合な動作に依存していた既存のアプリケーションでは、異なる予期しない(正しい)結果が返される可能性があります。
DP-436825: ラテラル結合を使用したSQLクエリが間違った結果を返すことがある
最初の問題 (DP-436825) は、プロセスあたりの最大メモリ (.cpf ファイルの「bbsiz」パラメータ) を既定値以外で構成されたインスタンスで、暗黙的または明示的にラテラル結合を使用する SQL クエリにのみ影響します。InterSystems IRIS を新規にインストールすると、bbsiz は既定値の -1 (つまり、メモリ制限はありません) に設定されます。一方、古いバージョンからのアップグレードでは、以前の設定が維持されます。この設定でクエリが実行時に並列処理を使用する場合 (システムが並列処理を使用する場合を含む)、クエリが正しくない結果を返すことがあります。この問題は、以下の製品のバージョン 2023.3、2024.1.0、2024.1.1、2024.1.2、2024.2、および 2024.

ウェブサーバーゲートウェイインターフェース(WSGI)は、ウェブサーバーがリクエストを Python プログラミング言語で記述されたウェブアプリケーションまたはフレームワークに転送するための単純な呼び出し規則です。 WSGI は PEP 3333 で詳しく説明された Python 規格です。
🤔 定義は良いとして、IRIS との関連性は何でしょうか?
IRIS 2024.2+ の新機能により、直接 IRIS で WSGI アプリケーションを実行できます。 この機能は、IRIS を他の Python フレームワークとライブラリに統合する優れた方法です。
これは、Python を使用して IRIS と対話できる Python ファーストエクスペリエンスのトレンドに沿ったもので、Python アプリケーションを IRIS 上で直接実行することもできるようになりました。
IRIS で WSGI アプリケーションをインスタンス化するには、IRIS 管理ポータルのセキュリティ -> アプリケーション -> ウェブアプリケーションのセクションで構成する必要があります。
単純な Flask の例:
/irisdev/app/community ディレクトリにある app.
平素は大変お世話になっております。
2025 年初の開発者向けウェビナーを開催いたします。
ご多用中とは存じますが、多数の皆様のご参加をお待ちしております。
【タイトル】
IRIS概要 システム構築編
【日時】3月19日(水)13:30⁻14:00 (参加費無料・事前登録制)
【概要】InterSystems IRIS は高機能な次世代データプラットフォームですが、独自のアーキテクチャによる高速データアクセスに加えて、優れたリソース効率・拡張性・耐障害性といった高次元のシステム管理を兼ね備えており、さまざま運用環境に耐えうる製品となっています。
このウェビナーでは、20年間にわたり InterSystems でシステムサポートを行ってきたサポートエンジニアより、InterSystems IRIS で実現可能な高可用性や耐障害性をそなえたシステム構築のパターン、またそれを運用・管理するための便利なツールなど、IRIS システムに関する主要な機能を網羅して、みなさまにご紹介いたします。
【対象者】
皆さん、こんにちは!
これから InterSystems 製品で開発を始める/未使用の機能を確認したい/運用保守を担当する など、担当される役割や学習目的に合わせた最適なラーニングパス(学習経路)を確認できるページを公開しました!
学習経路に沿った学習内容(数分の解説ビデオ、対象となる日本語ドキュメント、コミュニティ記事、セルフラーニングビデオ、体験環境付き演習(英語のみ)、オンラインラーニング(英語のみ)、講師付きトレーニングコース)を確認しながらご自身のペースで学習を進めていただくことができます。
以下、ページの使い方を簡単にご紹介します。下図のように、役割毎に各種パスが用意されています。
これは InterSystems FAQ サイトの記事です。
整合性チェックの目安の時間は、環境により異なってきます。ディスク速度やDBサイズに大きく依存してきます。
同じディスク上に置かれた比較的サイズの小さなDATでまず実施して、サイズと経過時刻からおおよその時刻を推測してください。
また、整合性チェックの方法によって要する時間が変わってきます。
詳細は参考記事で紹介しております「整合性チェックの各方法の違いについて」をご覧ください。
ターミナルで整合性チェックを実行していただく場合は、現在どのデータベース/グローバルのチェックを実行しているのかを出力ログ(画面またはファイル)にて確認することが可能です。
管理ポータルで実行する場合は、整合性チェックの実行プロセスID(※PIDの確認方法)を指定して、ターミナルで以下のコマンドを実行することにより確認することが可能です。
詳細については、ドキュメント をご覧ください。
%SYS>do Display^Integrity("^IRIS.TempIntegrityOutput(2596)") // 整合性チェック実行プロセス(2596)の場合
対象プロセス(PID)のプロセス詳細より、グローバル参照や実行されたコマンドで、稼働しているかを確認することも可能です。
これは InterSystems FAQ サイトの記事です。
インターオペラビリティ機能を使用してビジネスホストのビジネスロジックを実装する際に、デバッグ等の目的でログ出力を行うための専用マクロが用意されているので、ご紹介します。
以下のマクロが用意されています。
$$$LOGINFO("これはログです。")
$$$LOGERROR("これはエラーです。")
$$$LOGWARNING("これは警告です")
$$$LOGSTATUS(status)
$$$LOGSTATUS(status2)
$$$ASSERT("これはアサートです。")ビジネスオペレーション等のコードに上記のコードを書くことにより、インターオペラビリティのイベントログにその内容が表示されます。
以下の様に表示されます。
開発者コミュニティのみなさま、2025年もよろしくお願いします!今年も素晴らしい製品やニュースをみなさまにお届けいたします。本日は VS Code の InterSystems Language Server 拡張機能の最新バージョンをご紹介します。Language Server 拡張機能の多くは、ObjectScript 拡張機能を通じてご提供することが多いです。そのため、コード補完機能やホバー機能といった、2024年に追加された Language Server 拡張機能の新機能には、なかなか気づきにくいかもしれません。ぜひ Language Server 変更履歴 で、見逃していたかもしれない新機能がないかご確認ください。最新バージョン2.7.0では、Windows ARMプラットフォームがサポートされたので、Surface Pro 11 (私はこの記事をウキウキしながら書いています) のようなデバイスをお持ちの方は、お使いのマシンで素晴らしい ObjectScript 開発を体験いただけます。Language Server 拡張機能をお試しいただき、何かありましたらぜひコメントをお寄せくださいませ。お待ちしております。