前の記事では、smolagentsとInterSystems IRISを使用して、SQL、ベクトル検索を使用したRAG、interoperabilityを組み合わせたカスタマーサービスAIエージェントをビルドしました。
その際、LLMと埋め込み表現のためにクラウドモデル(OpenAI)を使用しました。
今回はさらに一歩進めます。Ollamaを利用して、同じエージェントをローカルモデルで実行します。
前の記事では、smolagentsとInterSystems IRISを使用して、SQL、ベクトル検索を使用したRAG、interoperabilityを組み合わせたカスタマーサービスAIエージェントをビルドしました。
その際、LLMと埋め込み表現のためにクラウドモデル(OpenAI)を使用しました。
今回はさらに一歩進めます。Ollamaを利用して、同じエージェントをローカルモデルで実行します。
これは InterSystems FAQ サイトの記事です。
こちらの記事では、コマンド・パイプデバイスを使用して、外部コマンドの出力を取得する方法をご紹介します。
以下のように行います。
★コマンド出力を取得する例:
USER>kill
USER>set cmd="netstat -anp tcp"
USER>set pipe=##class(%File).%New(cmd)
USER>write pipe.Open("rq")
1
USER>while 'pipe.AtEnd { write !,pipe.ReadLine() }
アクティブな接続
プロトコル ローカル アドレス 外部アドレス 状態
TCP 0.0.0.0:23 0.0.0.0:0 LISTENING
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
(中略)
TCP 192.168.172.1:139 0.00.カスタマーサポートの質問は、構造化データ(オーダー、製品 🗃️)、非構造化知識(ドキュメント/よくある質問 📚)、およびライブストリーム(出荷更新 🚚)と多岐にわたります。 この投稿では、以下を使用して、3つすべてに対応するコンパクトなAIエージェントを作成します。
開発者の皆さん、こんにちは。
先日の 第3回InterSystemsJapan開発者コミュニティミートアップでは、Google Colab を使ったワークショップを実施しました。
その際、解説を読みながら、その場でコードを実行できる Jupyter Notebook の良さを改めて実感しました。
こうした課題は、Notebook 形式にするだけで驚くほど解決します。
サンプルコードのすぐ横に解説を置けるので、迷う時間が減り、そのまま作業ドキュメントにもできます。
ObjectScript でも同じことができれば、学習にも現場作業にもとても便利ですよね。
実は以前、開発者コミュニティに Jupyter Notebooks に ObjectScript を追加する方法(https://jp.community.intersystems.com/node/521496)といった記事が紹介されていました。「これは便利そう!」と思い GitHub リポジトリ(https://githu

このセクションでは、IRISでPythonを主要言語として使用する方法について紹介します。これにより、IRISの強力な機能を活用しながら、Pythonでアプリケーションのロジックを書くことができます。
これは InterSystems FAQ サイトの記事です。
この記事では、ミラーリングの構成方法をご紹介します。
本記事では、「自動ダウンロード」の機能についても、あわせてご紹介します。
では、ミラーの構成手順をご紹介します。
今回ご紹介するのは、同期ミラーによるフェールオーバー(常にデータベースが同期されて複製、障害時に自動でフェールオーバー)構成です。
手順は以下になります。
これは InterSystems FAQ サイトの記事です。
WebSocketは、リアルタイム双方向通信を可能にするプロトコルで、Webアプリケーションの動的な操作性を向上させるために広く活用されています。
この技術は、TCP上で動作し、HTTPプロトコルを介して接続を確立します。
一度接続が確立されると、持続的な接続が維持され、サーバーとクライアントが効率的にデータを交換できるのが特徴です。
通常のHTTP通信の場合、クライアントからのリクエストに対してサーバーが応答するというのが基本的な動作になるため、サーバーから非同期にデータを送信することが難しいですが、WebSocketを利用することでそのような機能を簡単に実現できます。
一方で、サーバーからの一方向の非同期通信が実現できれば良いという要件であれば、SSE (Server-Sent Events)を使用することもできます。
一般的にWebSocket通信が最も適していると考えられるのは、クライアント・サーバー間で双方向にデータを交換する必要がある場合になります。
双方向の接続を維持する必要があるため、状況によって、サーバー上のコンピュータ資源の消費(メモリー、CPU、IRISライセンス使用量など)に注意する必要があります。
これは InterSystems FAQ サイトの記事です。
PythonからIRISにアクセスするためのNative SDK for Pythonと呼ばれるインタフェースが用意されています。
Javaや.Net用に用意されているNative SDKと同等な機能が提供されています。
(一部異なる機能があります)。
また、Python用にはEmbedded Pythonと呼ばれるIRISと密に連携した機能があります。
IRISから最大限の性能を得るためには、Embedded Pythonが適していますが、以下のような場合、Native SDKが適しているケースもあります。
Native SDKを利用することで以下のようなことを実装することができます。
以下からこれらのサンプルプログラムを取得することができます。
これは InterSystems FAQ サイトの記事です。
.NETからIRISにアクセスするためのNative SDK for .NETと呼ばれるインタフェースが用意されています。
JavaやPython用に用意されているNative SDKと同等な機能が提供されています。
(一部異なる機能があります)。
Native SDKを利用することで以下のようなことを実装することができます。
以下からこれらのサンプルプログラムを取得することができます。
詳細は、以下のドキュメントをご参照ください。
CSPでWebアプリケーションを開発する方法は今では推奨されていませんが、既存資産が膨大にあって、他の手法への書き換えには相当の時間がかかりそうな方々はたくさんおられることでしょう。
そういう方々は、しばらくはそれらCSPファイルのメンテナンスの必要性があるかと思います。
IRISではVSCodeが主たるIDEとなっていますが、開発環境がWindowsのみであれば、CSPファイルをSJISでメンテナンスしておけば、問題は起こりません。
ところが、それらのファイルをUNIX環境(LinuxやMac)に持っていって、VSCodeで編集作業を開始すると、文字化けの嵐となってしまいます。
これは以前にポストしましたが、UNIX環境のIRISは何も設定しないとロケールがenuw(英語)となっているためです。
さらにこれを日本語専用ロケールに変えても、unix環境ではロケールがjpuwの場合、ファイルの読み書きのエンコーディングが、utf8となっているので、cspファイルのエンコーディングがSJISのままでは都合が悪いです。
従ってCSPファイルのエンコーディングをUTF8に変更する必要があります。
しかし、プラットフォームの切り替えのたびにエンコーディングを変更するのも面倒です。
そこで推奨の方法は、ファイルのエンコーディングをUTF8のBOM付きに変更することです。
.png)
.png)
.png)
OHDSI のウェブブックからアキレスに続くこの OMOP の旅シリーズに沿って、適切に記述された R と SQL の組み合わせによって、組織間で共有可能な大規模な分析の結果が導き出されるのを見れば、OMOP 共通データモデルの威力を理解し始めることができます。 とは言え、私には第 3 正規形の知識がないので、約 1 か月前の旅において、Databricks Genie を使って、InterSystems OMOP と Python 相互運用性を活用して SQL を生成しました。 非常にうまくいきましたが、RAG「モデル」がどのように構築され、それを実現するための LLM の使用については、Databricks の内部に魔法が残されています。
OMOP の旅のこの時点で、同じ道で Vanna.ai と出会いました...
Vanna は、LLM を使用してデータベースの正確な SQL クエリを生成するのに役立つ、検索拡張を使った Python パッケージです。

この記事では、Pythonでの仮想環境の概念を紹介します。仮想環境は、依存関係を管理してプロジェクトをOSから分離するために不可欠です。
仮想環境とは、次が含まれているフォルダのことです。
仮想環境により、OSのPythonインストールとその他のプロジェクトからプロジェクトを分離できるようになります。
仮想環境を使用するには、これらの手順に従います。
仮想環境を作成する:Pythonに標準搭載されている venv モジュールを使用すると、仮想環境を作成できます。 ターミナルを開いて、以下を実行します。
python -m venv .venv
.venv を希望する環境名に置き換えます。
仮想環境を有効化する:仮想環境を作成した後に、有効化する必要があります。 コマンドは、オペレーティングシステムによって異なります。
.venv\Scripts\Activate.ps1
エラーが発生した場合は、ターミナルで以下のコマンドを実行する必要がある可能性があります。
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force; .venv\Scripts\Activate.コミュニティの皆さま、初投稿になりますが、何か少しでも興味深い知見を共有できると幸いです。
今回の内容は、筆者が%Persistentを中心に据えたデータ構造管理の検討の過程で必要性を感じ行った、「列挙体」Likeな「データ型クラス」(%DataTypeのサブクラス)構築に関するレポートです。
内容面では、筆者が「データ型クラス」の特性に不勉強だったことに由来しての躓きに関するものも多くなりますが、ご容赦願います。 また、内容の中には、筆者が思い当たらなかった手段の活用により、よりシンプルに回避できた部分もある可能性が大いにございます。 そういった内容にお気づきの場合、ご指摘いただけますと大変ありがたいです。
筆者が関与したDB層にIRISを採用するプロジェクトの多くでは、永続化されるデータの構造の定義に(ごく順当に)%Persistentが用いられていました。
また、この定義クラスの永続化対象のプロパティには、データ構造の仕様書の記載に対応させて以下のような型をあてがうケースが数多く見られました。
開発者の皆さん、はじめまして!
普段はサーバーレス環境での開発をしていて、AWS Lambda を使ったアプリケーション構築を主に行っています。IRIS についての実装経験はまだ浅いのですが、その高速で柔軟なデータベース機能の素晴らしさはよく知っています。
「このパワフルな IRIS を、使い慣れたサーバーレスアプリから呼び出せたらいいのにな...」
そんな思いから、今回 AWS Lambda と IRIS Native API を組み合わせた実装に挑戦してみました。これを通して、IRIS のことをもっと好きになれたらいいなと思っています。まだ IRIS の実装経験が浅いため、もっと良いアプローチや最適な方法があるかもしれません。もし改善点や間違いがあれば、ぜひコメントで教えていただけると嬉しいです!
この記事では、AWS Lambda から IRIS Native API を使用してデータを取得する方法を実装例とともに解説します。この基本実装をベースに、S3 トリガーや他の AWS サービスとの連携も可能です。ぜひ最後までお付き合いいただけると嬉しいです!
今回扱う実装は、以下のような AWS

モジュールは重要なテーマです! ObjectScriptにはこの概念はありませんが、Pythonでは基本的な考え方です。 一緒に見ていきましょう。
モジュールは、クラスとパッケージの間にある中間層だと私は考えています。 例を見てみましょう。
悪い例:
# MyClass.py
class MyClass:
def my_method(self):
print("Hello from MyClass!")
別のスクリプトでこのクラスを使用する場合、次のようになります。
# class_usage.py
from MyClass import MyClass # weird, right?
my_instance = MyClass()
my_instance.my_method()
なぜこれは悪い例なのでしょうか?
まず最初に、PEP 8によると、ファイル名は snake_case(スネークケース)にする必要があり、my_class.py にするべきです。
次に、クラスと同じ名前のファイルからクラスをインポートしています。 Phthonではこれは良いプラクティスではありません。
特に、ObjectScriptのようにクラスと同じ名前のファイルにクラスを定義する環境から来ると、これは分かりにくいかもしれません。

この記事では、PythonスタイルガイドであるPEP 8について簡単に紹介します。
簡単に言うと、PEP 8は、Pythonコードの書き方に関するガイドラインとベストプラクティスを提供します。
snake_case(スネークケース)にする必要がありますCamelCase(キャメルケース)にする必要がありますsnake_case(スネークケース)にする必要がありますUPPER_CASE(大文字)にする必要があります_)で始める必要があります
全部を覚える必要はありませんが、頭の片隅に入れておくと他人のコードを理解するのに役立ち、自分のコードも他の人にとって分かりやすくなります ^^。
また、pythonic という言葉を聞いたことがあるかもしれません。
.png)

新しい InterSystems IRIS® Cloud SQL と InterSystems IRIS® Cloud IntegratedML® クラウド製品のユーザーであり、デプロイメントのメトリクスにアクセスして独自の可観測性プラットフォームに送信しようと考えている方のために、メトリクスを Google Cloud Platform Monitoring(旧称 StackDriver)に送信して手っ取り早く行う方法をご紹介します。

この記事では、IRIS環境におけるPythonプログラミングの基礎について紹介します。
本題に入る前に、重要なトピックである「Pythonの仕組み」について説明します。これは、IRIS環境でPythonを使用して作業する際に起こりうる問題や制限を理解するのに役立ちます。
すべての記事と例は、以下のgitリポジトリで確認できます: iris-python-article
Pythonはインタープリター型言語であり、コードはランタイム時に1行ずつ実行されます。スクリプトをインポートする場合でも同様です。
これはどういうことでしょうか? 以下のコードを見てみましょう。
# introduction.py
def my_function():
print("Hello, World!")
my_function()
このスクリプトを実行すると、Pythonインタープリターはコードを1行ずつ読み取ります。 まず最初に関数 my_function を定義してから、その関数を呼び出すと、コンソールに「Hello, World!」と出力されます。
スクリプトを直接実行している例:
python3 /irisdev/app/src/python/article/introduction.py
出力は以下のようになります。
Hello, World!
この記事では、マジックメソッドとしても知られるPythonダンダーメソッドについて簡単に解説します。
ダンダーメソッドは、始めと終わりに2つのアンダースコア(__)が付いているPythonの特殊メソッドです。 このメソッドを使用することで、加算や減算、文字列表現など、組み込みの操作に対するオブジェクトの動作を定義することができます。
よくあるダンダーメソッドには、次が含まれます。
__init__(self, ...):オブジェクトの作成時に呼び出されます。
%OnNew メソッドに似ています__str__(self):オブジェクトを文字列として表現するために、str() 組み込み関数と print によって呼び出されます。__repr__(self):デバッグ用のオブジェクトを表現するために、repr() 組み込み関数によって呼び出されます。__add__(self, other):+ 演算子が使用される際に呼び出されます。__len__(self):オブジェクトの長さを返すために、len() 組み込み関数によって呼び出されます。__getitem__(self, key):インデックス構文を使用してコレクションからアイテムを取得するために呼び出されまコミュニティの皆さんこんにちは。
ベクトル検索関連の処理が完全にノーマークだった私が、一先ず「やってみよう!」との事で、2つの動画のサンプルを実行してみました。
Pythonは初心者なので、アレな箇所があっても目をつぶっていただけると幸いです。
また、間違っている箇所があったら、ご指摘いただけると幸いです。
■参考にした動画
■参考にしたコミュニティ記事
本記事では、動画で紹介された内容を実際にIRIS環境上で実行できるよう、具体的な環境構築とコーディングを記載致します。
コミュニティの皆さんが簡単に試せるようになれば幸いです。
またGithubにサンプルソースを配置しているので、必要な方は参考にして下さい。
※環境作成方法に問題のない方は、読み飛ばしていただいて構いません。
| 項目 | バージョン情報・他 |
|---|---|
| OS | WIndowsServer2019 |
| IRIS | IRIS Community 2025.2.0.227.0 |
| Python | 3.12.10 |
| 開発環境 | VS Code 1. |
これは InterSystems FAQ サイトの記事です。
ルーチンやメソッドを実行した際に以下のような<FRAMESTACK>エラーが発生する場合、DOコマンドの発行の入れ子数が多すぎて、それ以上スタック情報を保持できなくなったことを示しています。
<FRAMESTACK> error is reported when the routine has too many nested calls to DO command. You can check the current stack with $STACK value.可能性として高いのはプログラミング上のミスで再起的なメソッド/ルーチン呼び出しがループしている場合などです。
以下のようなプログラミングを行い、$STACK変数の値を確認することで、スタックのレベルがどのように変化しているのかを確認できます。
main() {
write"main 1: ",$STACK,!
do l1
write"main 2: ",$STACK,!
quit
}
l1() {
write"l1 1: ",$STACK,!
for i=1:1:5 {
do l2(i)
}
write"l1 2: ",$STACK,!これは InterSystems FAQ サイトの記事です。
%String型のプロパティをOrder Byの条件にしてクエリーを発行した際のデータは以下のような順番で並べられます。
SELECT * FROM Shop.Order orderby StatusFlagnull
-1
-2
-99
0これは%String型(文字列型)のプロパティの照合順として正しい振る舞いです。
文字列プロパティに対し、+ をつけることで、数値照合と同じ照合順を得ることができます。
SELECT * FROM Shop.Order orderby +StatusFlagnull
-99
-1
-2
0これは InterSystems FAQ サイトの記事です。
SQLアクセス( ADO含む)を行う場合は、SQLトランザクションを使用して、トランザクションを制御します。
一方オブジェクトアクセス(ObjectScript)ではtstart / tcommit / trollbackコマンド
(Native SDK for .NETでは IRIS の TStart(), TCommit(), TRollback() メソッド)
によってトランザクションを制御します。
この2種類のトランザクションモードを混在させて使用することはサポートされていません。
詳細は、以下のドキュメントをご参照ください。
また関連するメソッドの以下ドキュメントの注意事項にも
「このメソッドは Native SDK トランザクション・モデルを使用し、ADO.NET/SQL トランザクション・メソッドとは互換性がありません。
この 2 つのトランザクション・モデルを混在させないでください。」
と記載をしております。
.pyファイルの中でIRISのEmbedded Pythonを動作させる際にirispythonコマンドで実行する方法はドキュメント上で紹介されていましたので、以前より使用していました。
しかし、普通のpythonコマンドを使用するとうまく実行できなかったのですが、最近その謎(原因)が解けたので紹介します。
これは、Mac特有の問題である可能性が高くWindowsやLinuxでは何の問題もなく実行できるのかもしれません。
エラーは以下のようなエラーです。
File "/opt/iris/lib/python/iris.py", line 34, in <module>
from pythonint import *
ImportError: IrisSecureStart failed: IRIS_ATTACH (-21)
このエラーの原因は、シェルの実行ユーザーとirisのオーナーが異なることが原因とのことです。
Macで普通にIRISをインストールするとそのオーナーはrootです。
従ってpython3コマンドを実行する時にsudoコマンドでrootになる必要があるということです。
そして以下のような環境変数の設定も必要です
開発者の皆さん、こんにちは!
この記事では、Developer Hub にまたまた新チュートリアル:InterSystems IRIS for Health:デジタルヘルスの相互運用性 が追加されましたので、体験内容についてご紹介します。(準備不要でブラウザがあれば試せるチュートリアルです!)
チュートリアルでは、InterSystems IRIS for Health を使用しているのですが、IRIS for Health の持つ機能により以下のような相互運用性シナリオを作成できます。
チュートリアルの中では、あるシステムから入力される HL7 メッセージを他のシステムに送信する流れをご体験いただけます。
また、データ変換が必要な場合の対応方法や HL7 メッセージの一部をテーブルに保存する流れなどもご体験いただけます。
例)HL7 メッセージの一部をテーブルに格納
.png)
アカウント作成やログインも不要で
ボタンをクリックするだけで始められます👍
ぜひ、お試しください!
私が先週リリースしたInterSystems Testing Managerの新しいバージョンでは、@Timothy Leavittの優れた
テストカバレッジツールが追加され、私は2025年度Developer Toolsコンテストに出品しました。
こちらは、IPMプロジェクトのユニットテストが、IPMリポジトリでソート順を上書きできると思われる機能をまだカバーしていないことを示すティザー的なスクリーンショットです。

開発者の皆さん、こんにちは!
この記事では、Developer Hub にあるチュートリアルに新しいチュートリアル:InterSystems IRIS ベクトル検索を使用した RAG が追加されましたので内容をご紹介します。(準備不要でブラウザがあれば試せるチュートリアルです!)
このチュートリアルでは、生成 AI アプリケーションの精度向上に向けて、ベクトル検索と検索拡張生成(Retrieval Augmented Generation)の活用を体験できます。
具体的には、InterSystems IRIS のベクトル検索機能を活用し、生成 AI チャットボット向けのナレッジベースをサンプルコードを利用して作成します。
また、Streamlit を使用して作成したチャットボットを動かしながら、ナレッジベースの情報を追加することで生成 AI からの回答が変化していくことを確認していきます。
.png)
アカウント作成やログインも不要で
ボタンをクリックするだけで始められます👍
チュートリアルへのリンクは「開発者コミュニティのリソース」からも辿れます!
.png)
ぜひ、お試しください!