これは InterSystems FAQ サイトの記事です。
8192文字を超える文字列をODBC経由で取得した場合に特定のODBCクライアントとの組み合わせにおいて文字列が途切れて取得されるケースが報告されています。
このような状況が発生した場合、該当するODBCデータソースの設定画面でUnicode SQLタイプをチェックすることで問題が解消されることがわかっています。
これは InterSystems FAQ サイトの記事です。
8192文字を超える文字列をODBC経由で取得した場合に特定のODBCクライアントとの組み合わせにおいて文字列が途切れて取得されるケースが報告されています。
このような状況が発生した場合、該当するODBCデータソースの設定画面でUnicode SQLタイプをチェックすることで問題が解消されることがわかっています。
開発者の皆さん、こんにちは!
25人のコミュニティメンバーが参加した InterSystems 技術文書ライティングコンテスト(USコミュニティ) ですが、なんと!
🌟 38 の素晴らしい記事 🌟の投稿がありました!
コンテストは、革新性と専門知識をもった参加者による非常に質の高い記事が数多く投稿されたため、審査員によるベスト 3 の選出は簡単ではありませんでした。
(2).jpg)
それでは、受賞作品を発表します!
これは 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 %Librar開発者の皆さん、こんにちは!
今年最初のプログラミング・コンテスト(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.
2025年第1四半期のプラットフォーム最新情報をお届けします。
初めてご覧になる方、はじめまして!本記事で一番大きなトピックは、Red Hat Enterprise Linux 10 のリリースが間もなく、ということです。ぜひご確認ください。この記事では、最近おこなわれた変更点や今後予定されている変更点に関する情報を、みなさまに共有させていただきます。ただ、将来の予測は難しい側面があり、ロードマップは約束されたものではないということを十分ご理解くださいませ。
Red Hat Enterprise Linux
Ubuntu

ウェブサーバーゲートウェイインターフェース(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 拡張機能をお試しいただき、何かありましたらぜひコメントをお寄せくださいませ。お待ちしております。
これは InterSystems FAQ サイトの記事です。
整合性チェックを行う場合、管理ポータルやタスクマネージャーから行う方法と、ターミナルから ^Integrity ユーティリティを使用して行う方法があります。
こちらのトピックでは、それぞれの違いをご説明します。
こちらの方法は、選択した複数のデータベースや、1 つのデータベースに格納された選択可能な複数のグローバルを対象に整合性をチェックを行います。
管理ポータル:
[システムオペレーション] > [データベース] 整合性チェック・ボタン
※チェックを行いたいネームスペース、必要に応じてグローバルを選択し、実行・ボタンをクリック
整合性チェックタスク:
[システムオペレーション] > [タスクマネージャー] > [タスクスケジュール] 整合性チェック・タスク
SYS.Database クラスの IntegrityCheck メソッド:
%SYS>do ##class(SYS.Database).IntegrityCheck($LB("c:\intersystems\iris\mgr\user\")) // DB指定
%SYS>do ##class(SYS.Database).インターシステムズは、InterSystems IRIS、InterSystems IRIS for Health、HealthShare Health Connect のメンテナンスバージョン 2024.1.3 をリリースしました。
✅ 2024.1.3
2024.1.3 は、最近発行された以下の警告の修正を含む、以前のリリース2024.1.x のバグフィックスを提供します。
警告:特定の $List 操作でデータベースとジャーナルファイルに不正なデータが作成される
詳細な情報は、以下のページをご参照ください(すべて英語版です):
キットの取得方法
本製品は、従来からのインストーラパッケージ形式と、コンテナイメージ形式をご用意しています。その一覧は、以下のサポートプラットフォームページ(英語)をご覧ください。
Supported Platforms webpage
インストーラパッケージは WRC Direct から入手できます。
開発者の皆さん、こんにちは!
2025 年最初のコンテスト開催が決定しました!
✍️ InterSystems 技術文書ライティングコンテスト 2025(USコミュニティ) ✍️
InterSystems 製品やサービスに関連した記事であればどのような内容でもご応募いただけます。
🎁 投稿者全員に参加賞あります: コンテストに投稿いただいた参加者全員にスペシャルな参加賞をご用意いたします!

InterSystems IRIS 2021.2 のバージョンより、Embedded Python を使用できるようになりました。
Embedded Python で Excel のデータを IRIS グローバルに格納する方法 では pandas.DataFrame のデータを InterSystems IRIS グローバルに保存する方法をご紹介しました。
こちらの記事では、その逆の「InterSystems IRIS グローバル($LB) を pandas.DataFrame に変換する」方法をご紹介します。
以下のようなグローバルを、Embedded Python を使用して DataFrame に変換します。
USER>zwrite ^ISJ
^ISJ=4
^ISJ(1)=$lb("Name","Age","Address")
^ISJ(2)=$lb("佐藤","50","東京")
^ISJ(3)=$lb("加藤","40","大阪")
^ISJ(4)=$lb("伊藤","30","京都")
%Library.GlobalクラスのGetクエリ を使用して取得し、iris.sql.execを使用して DataFrame に格納する方法があります。
ただし、こちらの方法はリスト形式($LB)のまま DataFrame に変換します。
USER>do $systemPython.開発者の皆さん、こんにちは。
Teams ワークフロー Webhook を用意すると、curl コマンドや REST クライアントを利用して Teams チャネルに任意メッセージを簡単に送信できるので、IRIS や IRIS の Interoperability を使って自動的に何か情報を入手+必要なときだけ Teams チャネル通知ができたら面白いな、と思い試してみた内容をご紹介します。
以下、Teamsワークフローの作成例です。
Teams ワークフローの仕様に合わせたメッセージ用 JSON が用意できれば、こんなメッセージを出すことができます。
Teams チャネルにメッセージを通知するには「Teams ワークフローの Webhook」の用意が必要です。(この用意によってアクセスするために必要なURLが生成されます)詳しくは、「Microsoft Teamsのワークフローを使用して受信 Webhook を作成する」をご参照ください。
通知までの設定などについては、こちらのページを参考にさせていただきました:Teams チャネルへメッセージ送信する方法
以下、試した順でご紹介します。
🚨 メンテナンス予定のお知らせ 🚨
2025年1月20日(月曜日)、計画的なメンテナンスのため、Developer Communityサイトが一時的に利用できなくなる場合があります。
ご不便をおかけしますことをお詫び申し上げます。ご理解いただきありがとうございます。プラットフォームの改善に向けた取り組みにご協力いただき、感謝いたします!

これはInterSystems FAQサイトの記事です。
質問:
データベースファイルが存在するフォルダ全体をコピーしたとき、コピーしたデータベースファイルをマウントできません。なぜですか?
回答:
コピーした データベースファイル(iris.dat / cache.dat)のあるフォルダに、拡張子lck(iris.lck / cache.lck)のファイルが存在していないでしょうか?
InterSystems製品を停止せずに(もしくは、ディスマウントせずに)データベースファイルをコピーした場合、コピー前の情報を保持したままの lckファイルが残ってしまい、コピー後にマウントできない状況になります。
また、InterSystems製品を停止せずにコピーしたデータベースファイルは正しい状態ではないので、問題が生じる可能性があります。
コピー元のInterSystems製品を停止(もしくはディスマウント)した後、再度データベースファイルををコピーし直してください。
これは、InterSystems FAQサイトの記事です。
2024.1以降のバージョンにおいて、組み込みPython実行時のPythonのバージョンを自由に選択できるようになりました。(フレキシブル Python ランタイム機能)
これにより、新しいPythonバージョンへアップグレードや、特定のディストリビューションを使用する、などということが可能になります。
ドキュメント:フレキシブル Python ランタイム機能の概要
但し、オペレーションシステム及びIRISのバージョンによってサポート状況は異なります。
詳細は、下記ドキュメントページをご確認ください。
IRIS/IRIS for Health 2024.1
最新バージョン
※間のバージョンについては、それぞれ各バージョンのドキュメントをご確認ください。
また、Embedded Pythonの最新情報については、下記セミナー動画もご参考になさってください。
開発者向けオンラインセミナー:Embedded Pythonの新機能
※フレキシブルPythonランタイムについては、3'40"あたり~
これは InterSystems FAQ サイトの記事です。
SQLでのストリームフィールドの取得についてはこちらのドキュメントに記載されております。
例: キャラクターストリームデータの50文字取得する
select substring(field1,1,50) from sample.streamtable%SQL.Statement を使用したクエリでそのストリームオブジェクトのOREF値を取得して、ストリームデータにアクセスすることもできます。
set stmt=##class(%SQL.Statement).%New()
set status = stmt.%Prepare("select field1 from sample.streamtable")
set rs=stmt.%Execute()
write rs.%Next()
set clob=rs.%GetData(1)
write clob.Read(50)埋め込みSQLを使用する場合は、そのストリームオブジェクトのOREFではなくストリームIDが返ってくるので、以下のようにストリームをオープンする処理を追加する必要があります。
&sql(select field1 into :outpic from sample.これは InterSystems FAQ サイトの記事です。
何らかの理由でサーバー移行が必要になった際に、移行前の環境から移行後の環境に設定情報をコピーすることで設定作業を軽減できます。
以下の設定情報を移行できます。
注1 パスワードを設定している場合には、パスワードのみ手動で再設定が必要です。
注2 ^%ZSTART, ^ZMIRRORルーチンなど 優先接続サーバー設定に関しても、物理的には移行可能ですが、Windowsのレジストリー情報をコピーする必要があります。
レジストリー情報をコピーして他システムに移行する方法は通常推奨される方法ではありません。
各設定のエクスポート/インポート方法は、以下のリンクをご確認ください。
また、以下のドキュメントもあわせてご覧ください。