#Python

1 フォロワー · 132 投稿

Pythonは、汎用プログラミング用のインタープリター型の高水準のプログラム言語です。 Guido van Rossumによって作成され、1991年に最初にリリースされたPythonは、特に重要な空白を使用してコードの可読性を強調する設計哲学を持っています。 公式サイト。

記事 Hiroshi Sato · 10月2日 2m read

IRIS 2025以降、Java、.Net、Pythonなどの外部プログラムを呼び出す共通フレームワークとして$system.externalインタフェースが導入されました。

従来は、言語別にゲートウェイ機能が提供されていましたが、インターフェースが統一され、複数言語やxDBCに対して共通の管理方法でプログラムやプロトコルの呼び出しが可能となりました。

この機能の詳細は、以下のドキュメントをご確認ください。

外部言語の操作

ここでは、.NET SDKに標準で用意されているシステム機能やユーザー作成のDllをIRISから呼び出す方法について説明します。

  1. 外部サーバの設定
    管理ポータル>システム>構成>外部言語サーバメニューから%DotNet Serverを選択し、クリックします。
      外部言語サーバー


    管理ポータル>システム>構成>外部言語サーバ>外部言語サーバを編集で以下のように.NET用の設定を行います。
    必要な情報を入力した後、保存ボタンを押します。
    前の画面に戻って、%DotNet ServerのStartをクリックします。

    しばらくして以下のようなログが出力されれば、利用可能です。
     

     2. .NET機能を呼び出すサンプル


 以下は、.NETのSystem.DateTimeのNowプロパティを取得して、現在時刻を表示するサンプルです。
 

set netGate = $system.external.getDotNetGateway()
 
set now = netGate.getProperty("System.DateTime","Now")
 
write now
// 2026-09-25 09:52:20.7335562  ; 現在時刻が表示されるサンプル
0
0 29
記事 Toshihiko Minamoto · 9月24日 4m read

InterSystems ObjectScript およびIRISプラットフォームにおけるLLMの性能を測定する、初のオープンベンチマークを公開いたしました: ObjectScript LLMベンチマーク。

その存在意義

確立されたコーディングベンチマーク(SWE-bench、LiveCodeBench、Terminal-Bench)は、Python、JavaScript、およびシェルを基にしています。これらには、ObjectScript、IRIS SQL、Embedded Python、あるいは%CSP.RESTは含まれていません。公表されているコーディングスコアは、IRISプラットフォームには適用されません。これは、そのギャップを直接測定しようとする初めての試みです。

測定内容

「コード生成」「コード理解」「バグ修正」の3つのカテゴリにわたる140件の手書き課題です。 主な採点モデルは稼働中のIRISインスタンスです。モデルの応答がコンパイル・実行され、その出力が期待される文字列と比較されます。 実行結果で採点される93件の課題については、主観的な採点は行われません。 47件の理解課題については、評価基準に基づいたLLMによる採点が行われます。

14のモデル(Claude 4.

1
0 29
記事 Kosaku Ikeda · 9月28日 10m read

1. はじめに

コミュニティの皆さんこんにちは。
SQLを実行する際、テーブル名やカラム名をついつい忘れて、思わず手を止めた経験はありませんか?
そんな時、「日常会話でデータ取得」が出来ると便利ですよね。
  
本記事は、簡易的ではありますが、LLM連携を絡めつつ自然言語でIRISのデータを取得する仕組みを作成しました。
至らない点や、もっとスマートなやり方があるかもしれませんが、自然言語検索の導入口として読んでいただければ幸いです。

【本記事の流れ】

  1. IRIS内でLLMにクエリを作成させSQLを実行する
  2. MCPサーバとツールを実装し、単体で動作確認を行う
  3. Claude CodeにMCPサーバとして登録し、日本語で検索させる
  4. 今後の課題
  5. 今後のIRISの新機能について
📍2つのテーブルを使用した簡単なサンプルアプリです。
  今回のGithubのURLはdc-ikeda/test-to-sqlになります。

2. IRIS内でLLMにクエリを作成させSQLを実行する

手始めに、IRISのみで動作する自然言語検索を動作確認してみます。

【📋用意したクラスファイル】

ファイル名 目的
Test.Order20.cls
処方情報用テーブル
Test.Patient.cls
患者情報用テーブル
Test.SQLText.cls
コンパイル時にクラス情報をグローバル(^Test.SQLText)に出力する
(Test.
0
0 56
記事 Yuji Ohata · 8月24日 2m read
こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。
今回は、IRISサーバ上にあるソースコードをAIエージェントから扱えるようにした開発環境について紹介します。
近年、社内でもAI活用が活発化してきており、フロントエンドやPython等のシステム開発ではAIを利用する機会が増えてきています。
一方、弊社では長年StudioからIRISサーバへ接続し、サーバ上のルーチンやクラスを直接編集する方法で開発を行ってきました。
ここに対してAIを利用しようとしても、IRISのソースコードはIRISインスタンス上にデータとして存在しているだけなので、AIエージェントはその内容を参照できません。
そこで、Atelier REST APIとAIエージェント向けのSkillsを組み合わせ、IRISサーバ上のコードを検索、取得、更新、
コンパイルできる仕組みを作成しました。さらに、接続先、Skills、デバッグ設定、ターミナルなどを一つのワークスペースへまとめ、他の開発者へそのまま配布できる構成にしています。
目指したのは「VS CodeでもIRISを開発できる環境」ではありません。
ワークスペースを開けば、AI支援を含むIRIS開発を始められる環境です。
■リポジトリ

1.

1
0 128
記事 Toshihiko Minamoto · 8月18日 6m read

すべては、両親を訪ねるための電車の中で始まりました。コンパートメントで隣に座った人と雑談をしていたときのことです。話はいつものように技術の話題へと移り、彼女はかなり具体的な質問を投げかけてきました。「ChatGPTを使って人間のゲノムを解析することはできるのだろうか?」というものです。私は、これほど複雑なことをChatGPTが成し遂げられるとは、非常に懐疑的でした。しかし、その質問は頭から離れず、私の心に深く食い込んでいきました。自宅の玄関を入る頃には、その懐疑心は挑戦へと変わっていました。手元にゲノムシーケンシングのデータセットはありませんでしたが、標準的なChatGPTが PyProdパッケージを使って、ゼロから機能する相互運用性プロダクションを構築できるかどうかを試してみたかったのです。 さらに、そうすれば 「アイデアからアプリケーションへ」コミュニティ・バウンティ・プログラムの第1ラウンドに参加し、第3のアイデアを実装する機会も得られると考えました。

Image

 

そこで、複数のステップからなるプロンプトを使ってテストしてみることにしました:

以下の記事およびGitHubリポジトリの情報をもとに、PyProdパッケージを使用してPythonでInterSystems Productionの完全なコードを記述してください:

ステップ1:このProductionのドメインを考案してください。

0
0 36
記事 Toshihiko Minamoto · 8月18日 15m read

Hi Developers!

前回の記事、「Electric Utility PyProd」では、PyProdフレームワークを使用して、ローカルディレクトリ内のCSVファイルを処理するシンプルな相互運用性プロダクションを構築しました。あの例では、完全にPythonで実装されたプロダクションの基本的な構成要素を紹介しましたが、実際の相互運用性ソリューションでは、外部システムとの通信が必要になることがよくあります。

この記事では、公開されている openFDA 医薬品有害事象 API(openFDA Drug Adverse Event API) から医療データを取得し、返されたデータを分析した上で、医療分析結果を InterSystems IRIS に保存する、より高度なプロダクションを構築します。

Image

 

このチュートリアルでは、以下の方法について解説していきます:

  • PyProd Inbound Adapter から外部 REST API を呼び出す方法
  • 大規模な JSON ペイロードを効率的に処理する方法
  • バッチ単位のヘルスケア分析を実行する方法
  • 結果を IRIS SQL テーブルに永続化する方法
  • Python のみを使用して、相互運用性ソリューション全体を実装する方法

セットアップ

リポジトリをクローンしてください:

git clone https://github.com/Gra-ach/openfda-healthcare-pyprod.git
cd openfda-healthcare-pyprod
0
0 42
記事 Tomo Okuyama · 6月29日 9m read

はじめに

InterSystems IRIS 2026.1 がリリースされてから、しばらく時間が経ちました。すでに手元の環境で触ってみた方もいれば、「気にはなっていたけれど、まだ試せていない」という方もいらっしゃるのではないでしょうか。

InterSystems IRIS 2026.1 の新機能を Docker で体験

そんなどちらの読者にもすぐに動作を確かめていただけるように、2025.1(前回 EM)と 2026.1 を Docker Compose で並べて起動し、新機能の挙動を Before/After で比較できるデモ環境一式とドキュメントを GitHub で公開しました。docker compose up -d 一発で、IRIS 2025.1 / 2026.1 の両管理ポータルに加え、Grafana・Prometheus・Keycloak・PostgreSQL までまとめて立ち上がります。

2026.1 は EM(Extended Maintenance)リリースで、CD版である 2025.2 / 2025.3 の機能をすべて含み、加えて 2026.1 で新たに追加された機能が組み込まれています。EM と CD はいずれも production release で、InterSystems の正式サポート対象です。

0
1 78
記事 Toshihiko Minamoto · 6月25日 3m read

現代の医療現場において、臨床的に類似した患者を見つけることは、しばしば「干し草の山から針を探すようなもの」に感じられます。医療用語には微妙なニュアンスが多いことから、従来のキーワード検索では失敗することがよくあります。「心不全(Heart Failure)」と検索しても、「うっ血性心不全(Congestive Cardiac Failure)」という表現が含まれる記録を見逃してしまう可能性があるからです。

iris-medmatchをご紹介できることを大変嬉しく思います。これは、InterSystems IRIS for Healthを基盤として構築された、AIを活用した患者マッチングエンジンです。ベクトル探索を活用することで、このツールは単なる文字列の一致だけでなく、臨床的な意図を理解することができます。 ## 革新の核心:セマンティック臨床検索

`iris-medmatch`は、FHIRの生データとAIによる実用的なインサイトとの間のギャップを埋めます。`all-MiniLM-L6-v2`モデルを活用することで、このエンジンは病状を数値ベクトルに変換します。

一般的な検索では正確な単語が検索対象となりますが、当エンジンは**臨床状況**を理解します。例えば、数値ベクトル類似度を用いて、「高血圧」という検索語に対して「高血圧症」と診断された患者を照合することができます。

0
0 45
お知らせ Mihoko Iijima · 6月21日

開発者の皆さん、こんにちは! ウェビナー&ハンズオンシリーズ 久々お知らせです!📣今回のテーマは「AI エージェントの開発」です。🤖

AI エージェントって結局何なの?

AI エージェントの開発に興味はあるけれど、何から学べばよいのか分からない。

そんな方を対象に、「仕組みを理解する → コードを見る → 実際に作る」の 3 ステップで学ぶシリーズです。

  • 「AI チャット」と「AI エージェント」の違いって?
  • どんな機能を用意したら「AI エージェント」になるの?
  • なんとなく会社で使ってるけど、実際どんな仕組みになっているの?

そんな疑問を、デモやコード例、ハンズオンを通じて一緒に解明していきましょう!

Image

0
0 164
記事 Toshihiko Minamoto · 6月11日 19m read

LangGraph を使用して、推論、ベクトル検索、ツール統合を組み合わせた、スケーラブルで自律的な AI エージェントの設計方法を学びましょう。 cover

長すぎるので読み飛ばしました

  • AIエージェントとは、メモリ・コンテキスト・主体性を組み合わせ、単なるチャットボットを超えたタスクを自動化する能動的なシステムです。
  • LangGraphは、組み込みの状態管理機能を備えたノード(タスク)とエッジ(接続)を活用し、複雑なAIワークフローを構築できるフレームワークです。
  • このガイドでは、優先度を分類し、関連するトピックを特定し、エスカレーションを行うか自動返信するかを判断する、AI搭載のカスタマーサポートエージェントの構築手順をご説明します。

では、一体、AIエージェントとは何でしょうか?

率直に言って、「AIエージェント」と聞くと、まるで役員室を乗っ取ろうとするロボットのように聞こえるかもしれません。しかし実際には、複雑なワークフローを効率化し、反復的な作業を排除してくれる、先を見越した頼もしい相棒なのです。チャットボットをさらに進化させた存在だと考えられるでしょう。AIエージェントは単に指示を待つだけでなく、自らアクションを開始し、複数のステップを調整し、状況に応じて適応していくのです。

0
0 39
記事 Toshihiko Minamoto · 6月11日 8m read

Intersystems IRIS プロダクションは、さまざまなプロトコルやメッセージ形式を持つ異種システム間を、信頼性が高く、可観測性があり、スケーラブルな方法で接続するための強力なフレームワークです。intersystems_pyprodは、 InterSystems Python Productionsの略称は、開発者がこれらの相互運用性コンポーネントをPythonで完全構築できるようにするPythonライブラリです。柔軟性を重視して設計されており、ハイブリッドなアプローチをサポートしています。つまり、既存のObjectScriptベースのコンポーネントと新しいPythonベースのコンポーネントをシームレスに組み合わせ、確立されたIRISインフラストラクチャを活用することができます。一度定義されると、これらのPythonコンポーネントは他のコンポーネントと同様に管理されます。つまり、[IRIS プロダクション構成]ページを使用して、追加、構成、接続を行うことができます。


InterSystems IRIS プロダクション:簡単な入門書

Image

プロダクションの主要な要素

画像提供:ラーニング・サービス研修資料

通常、IRISプロダクションは外部インターフェースからデータを受け取り、調整したステップを通じて処理を行い、宛先へと転送します。

0
0 39
記事 Toshihiko Minamoto · 6月3日 21m read

INTRO

Barricadeは、InterSystems OMOP向けのFHIRからOMOPへの変換を効率化し、そのサポートをスケールアップするために、ICCA Opsが開発したツールです。当社のクライアントは、InterSystems OMOPを使用してFHIRデータをこのOMOP形式に変換することになります。マネージドサービスとして、当社の役割は変換プロセスに伴うあらゆる問題のトラブルシューティングを行うことです。Barricadeは、さまざまな理由から、このプロセスを支援する理想的なツールです。第一に、効果的なサポートには、FHIR標準、OHDSI OMOPモデル、そしてInterSystems特有の運用ワークフローにわたる専門知識が必要ですが、これらはすべて高度に専門化された分野です。Barricadeは、大規模言語モデルを活用してFHIRやOHDSIに関する専門知識を提供することで、知識のギャップを埋めるお手伝いをします。さらに、特定の変換問題を解決するために詳細な説明が行われたとしても、その知識はメールやチャットの中に埋もれてしまい、将来的に活用できなくなることがよくあります。Barricadeなら、その知識を収集・再利用し、類似のケースにスケールさせることも可能です。最後に、多くの場合、ソースデータにアクセスできません。

0
0 51
記事 Hiroshi Sato · 5月28日 7m read

これは InterSystems FAQ サイトの記事です。

これらのファイルを個別にエクスポートする最も簡便で確実な方法は、VSCodeを利用してIRISのソースファイルを管理することです。

VSCodeの利用方法は、以下をご参照ください

VSCodeを使ってみよう

VSCode以外のツールとしての提供はありませんので、是非VSCodeのご利用をご検討ください。


VSCodeをご利用できない場合は、IRISが提供するAPIを使用して、個別にプログラミングする必要があります。

1) クラス定義

%SYSTEM.OBJクラスのExportAllClassesIndividualメソッドを使用してクラス毎にファイル出力できますが、その出力形式がXML形式です。

XML形式での出力は、可読性も低く、クラス数が多量にある場合には、インポートの時間も余計にかかるため、複数クラスを1ファイルにまとめる目的以外では、推奨しておりません。

可読性の高いUDL形式で出力するためには、

該当ネームスペースに存在するクラス名をクエリーで抽出し、クラス定義をUDL形式でエクスポートするメソッドで出力することができます。

以下はClaude Codeで生成したサンプルコードです。

Class Samples.ExportUDLAll
{

/// 指定されたネームスペース内のすべてのクラス定義を
/// 個別のUDL形式ファイルとして指定ディレクトリに出力する
///
/// @param pDirectory 出力先ディレクトリ名
/// @return %Status ステータスコード
ClassMethod Export(pDirectory As %String) As %Status
{
Set tSC = $$$OK
Try {
// %SYSTEM.OBJ の GetClassList メソッドでクラス名一覧を取得
// items はローカル多次元配列として ByRef で返る
// 第一サブスクリプトにクラス名が格納される
Set tSC = $SYSTEM.OBJ.GetClassList(.items, "/application=1")
If $$$ISERR(tSC) Quit

// items 配列をサブスクリプト順に走査してクラス数分繰り返す
Set tClassName = ""
For {
Set tClassName = $Order(items(tClassName))
Quit:tClassName=""

Write "class name = ", tClassName, !
Set tFileName = pDirectory _ "/" _ tClassName _ ".cls"
Write "file name = ", tFileName, !

// ExportUDL の第一パラメータ(itemname)はクラス名に ".cls" を付加
Set tSC = $SYSTEM.OBJ.ExportUDL(tClassName _ ".cls", tFileName)
If $$$ISERR(tSC) Quit

Write "Exported: ", tClassName, " -> ", tFileName, !
}
} Catch ex {
Set tSC = ex.AsStatus()
}
Quit tSC
}

}
0
0 62
記事 Hiroshi Sato · 4月6日 4m read

Claude Codeを使うようになってから、創作意欲が爆上がりです。

今までは、何かを作りたいと思っても実際にコーディングをするのが面倒なので、よっぽどのニーズがないとプログラミングまでは至らなかったのですが、仕様をちょこちょこっと書くと後はClaude Codeが勝手にやってくれるので、生産性が雲泥の差です。

私はObjectScriptネイティブ世代なので、これからはPythonと言われても少し躊躇する部分がありましたが、逆にClaude CodeはPythonが大得意なので、新規に開発する際に、ObjectScriptを選ぶ理由がほとんどなくなりました。

とはいえ、Claude CodeがEmbedded Pythonのくせをどの程度理解しているか少し懸念があったのですが、それはかなり取り越し苦労だとわかってきました。

IRISのドキュメントに書かれていることは大体ちゃんと理解してくれています。

そして、自分でPythonコードを書いたら決して書けないような簡潔で洗練されたコードを書いてくれます。

今まであったらいいなと思いつつ、面倒なので、ほとんどやっていない処理としてテーブルのインポート・エクスポートがあります。

0
0 70
記事 Toshihiko Minamoto · 2025年12月11日 3m read

開発者の皆さん、こんにちは。

先日の 第3回InterSystemsJapan開発者コミュニティミートアップでは、Google Colab を使ったワークショップを実施しました。
その際、解説を読みながら、その場でコードを実行できる Jupyter Notebook の良さを改めて実感しました。

  • 「このメソッド、どう使うんだっけ…?」
  • 「処理の途中で変数の中身を確認したい…」
  • 「現場で実行するルーチンと作業手順を一緒に残しておきたい…」

こうした課題は、Notebook 形式にするだけで驚くほど解決します。
サンプルコードのすぐ横に解説を置けるので、迷う時間が減り、そのまま作業ドキュメントにもできます。
ObjectScript でも同じことができれば、学習にも現場作業にもとても便利ですよね。


ObjectScript を Notebook から実行したい…でも...

実は以前、開発者コミュニティに Jupyter Notebooks に ObjectScript を追加する方法(https://jp.community.intersystems.com/node/521496)といった記事が紹介されていました。「これは便利そう!」と思い GitHub リポジトリ(https://github.com/Vekkby/objectsriptkernel

1
0 84
記事 Hiroshi Sato · 3月10日 2m read

すっかりClaude Codeにはまってきてしまいました。

前回はIRISデベロッパーらしくObjectScriptプログラミングの話ですが、今回は、Pythonプログラミングです。

私は、個人会社を持っていまして、経理の細かいことは、当然税理士さんにお任せなのですが、とはいえ日々の経費の管理は自分でやる必要があります。

基本はエクセルに経費情報を入力するというオペレーションなのですが、入力を省力化するためにIRISデータベースを使用したPythonプログラムを作っていました。

その中で本当はやりたいのだけれども、非常に煩雑で面倒臭い処理(決して難しい処理ではないですが)を先延ばしにしてきました。

そこでこれはClaude Codeの格好の題材だと思い、依頼してみることにしました。

結果は、三回のやり取り(実際には、二回目の依頼の際に間違えて送信ボタンを押したので、実質的に二回)で10分もかからずに修正が終わり、期待した通りの結果を得ることができました。

もし自分でコーディングをした場合、おそらく半日仕事、下手をすれば1日仕事だったかもしれません。

この経験を通して感じたのは、既存プログラムの修正には非常に使えるということです。

多少依頼内容に曖昧な点があっても、既存のコードを非常に高速かつ完全、網羅的に理解してくれるので、そういう曖昧性をある意味埋めてくれます。

0
0 167
記事 Mihoko Iijima · 1月28日 7m read

開発者の皆さん、こんにちは!

この記事では、InterSystems IRIS サーバサイドで実行できるPython(Embedded Python)のデバッグ方法をご紹介します。

前提:VSCode の Python デバッガ用モジュールの debugpy を利用するため、Python スクリプトファイルに記載した Embedded Python のコードが対象です。クラス定義に[Language = python]を指定して記載しているコードは対象外となります。ご注意ください!

0
0 213
記事 Toshihiko Minamoto · 1月21日 4m read

メール送信は、統合シナリオでは一般的な要件です。クライアントへのリマインダー、自動レポート、トランザクション確認などに使用されます。 固定メッセージは、管理やパーソナライズが難しくなりがちです。 そこで登場するのが templated_email モジュールです。InterSystems IRIS InteroperabilityをJinja2テンプレートの機能を組み合わせます。

メール作成でJinja2を選ぶ理由

Jinja2はPythonエコシステムで人気のあるテンプレートエンジンで、完全に動的なコンテンツ生成を可能にします。 次をサポートします:

  • 変数 — 統合メッセージや外部ソースから動的にデータを取り込みます
  • 条件(if/else)— ランタイムデータに基づいてコンテンツを変更します
  • ループ(for)— テーブル、項目リスト、反復セクションを生成します
  • フィルターとマクロ — 日付や数字のフォーマット、テンプレートブロックを再利用します

簡単なメール本文テンプレートの例:

 


Hello {{ user.name }}!

{% if orders %} You have {{ orders|length }} new orders: {% for o in orders %}

  • Order #{{ o.id }}: {{ o.amount }} USD {% endfor %} {% else %} You have no new orders today. {% endif %}
0
0 67
記事 Toshihiko Minamoto · 1月12日 7m read

image

血液検査の結果を見て、何が書いてあるのか全然わからないあの感じ、分かるかと思います。 その問題を解決してくれるのがFHIRInsightです。 そもそも医療データは怖いものや分かりにくいものではなく、誰もが活用できるものであるべきだ、という考えから始まりました。 血液検査は健康チェックではとても一般的ですが、正直なところ、理解するのは多くの人にとって難しく、臨床検査を専門としない医療スタッフにとっても難しいことがあります。 FHIRInsightは、血液検査のプロセスをもっと分かりやすくし、情報をより活用しやすくすることを目指しています。

🤖 FHIRInsightを構築した理由

すべては、シンプルながら強力なこの質問から始まりました。

「なぜ血液検査の結果を読むのは、時には医師にとってもこんなに難しいのか?」

血液検査の結果を見たことがあるなら、大量の数字、意味の分かりにくい略語、そして自分の年齢や性別、状態に合っているかどうかもわからない「基準範囲」を見たことがあると思います。 確かに診断ツールではありますが、状況が分からなければ、結局推測することになります。 経験豊富な医療従事者でさえ、すべてを理解するためにはガイドラインや論文、専門家の意見を照らし合わせる必要があることがあります。

そこで登場するのがFHIRInsightです。

0
0 71
記事 Toshihiko Minamoto · 2025年12月17日 5m read

前の記事では、smolagentsとInterSystems IRISを使用して、SQL、ベクトル検索を使用したRAG、interoperabilityを組み合わせたカスタマーサービスAIエージェントをビルドしました。

その際、LLMと埋め込み表現のためにクラウドモデル(OpenAI)を使用しました。

今回はさらに一歩進めます。Ollamaを利用して、同じエージェントをローカルモデルで実行します。

0
0 125
記事 Toshihiko Minamoto · 2025年12月15日 8m read

カスタマーサポートの質問は、構造化データ(オーダー、製品 🗃️)、非構造化知識(ドキュメント/よくある質問 📚)、およびライブストリーム(出荷更新 🚚)と多岐にわたります。 この投稿では、以下を使用して、3つすべてに対応するコンパクトなAIエージェントを作成します。

  • 🧠 Python + smolagentsは、エージェントの「頭脳」を構成します
  • 🧰 SQL、ベクトル検索(RAG)、およびInteroperabilityのためのInterSystems IRIS(モック配送状況API)
0
0 122
記事 Hiroshi Sato · 2025年12月8日 2m read

これは InterSystems FAQ サイトの記事です。
 

PythonからIRISにアクセスするためのNative SDK for Pythonと呼ばれるインタフェースが用意されています。

Javaや.Net用に用意されているNative SDKと同等な機能が提供されています。

(一部異なる機能があります)。

また、Python用にはEmbedded Pythonと呼ばれるIRISと密に連携した機能があります。

IRISから最大限の性能を得るためには、Embedded Pythonが適していますが、以下のような場合、Native SDKが適しているケースもあります。

  1. 異なるサーバーでIRISとPythonプログラムが連携する必要がある。
  2. 同一サーバー上でIRISとPythonが稼働するが、システムが異なる(サブシステム間連携など)
  3. システムを別々の開発ベンダーが構築するなど、明確な境界を設けたい場合

Native SDKを利用することで以下のようなことを実装することができます。

  1. ObjectScriptやEmbedded Pythonで作成したメソッドの実行
  2. IRISオブジェクトの操作
  3. IRISグローバルデータの操作
  4. DBI-APIによるデータベースアクセス


以下からこれらのサンプルプログラムを取得することができます。

0
0 84
記事 Hiroshi Sato · 2025年12月8日 1m read

これは InterSystems FAQ サイトの記事です。
 

.NETからIRISにアクセスするためのNative SDK for .NETと呼ばれるインタフェースが用意されています。

JavaやPython用に用意されているNative SDKと同等な機能が提供されています。

(一部異なる機能があります)。

Native SDKを利用することで以下のようなことを実装することができます。

  1. ObjectScriptやEmbedded Pythonで作成したメソッドの実行
  2. IRISオブジェクトの操作
  3. IRISグローバルデータの操作
  4. ADO.NETによるデータベースアクセス

以下からこれらのサンプルプログラムを取得することができます。

Native SDK for .NETサンプル1

Native SDK for .NETサンプル2

.NETに様々な手段でアクセスするサンプル


詳細は、以下のドキュメントをご参照ください。

InterSystems Native SDK for .NET

0
0 102
記事 Toshihiko Minamoto · 2025年11月26日 10m read

Image

Vanna.AI - パーソナライズされた AI InterSystems OMOP エージェント

 

OHDSI のウェブブックからアキレスに続くこの OMOP の旅シリーズに沿って、適切に記述された R と SQL の組み合わせによって、組織間で共有可能な大規模な分析の結果が導き出されるのを見れば、OMOP 共通データモデルの威力を理解し始めることができます。 とは言え、私には第 3 正規形の知識がないので、約 1 か月前の旅において、Databricks Genie を使って、InterSystems OMOP と Python 相互運用性を活用して SQL を生成しました。 非常にうまくいきましたが、RAG「モデル」がどのように構築され、それを実現するための LLM の使用については、Databricks の内部に魔法が残されています。

OMOP の旅のこの時点で、同じ道で Vanna.ai と出会いました...

Vanna は、LLM を使用してデータベースの正確な SQL クエリを生成するのに役立つ、検索拡張を使った Python パッケージです。

0
0 91
記事 Toshihiko Minamoto · 2025年11月24日 5m read

img

この記事では、Pythonでの仮想環境の概念を紹介します。仮想環境は、依存関係を管理してプロジェクトをOSから分離するために不可欠です。

仮想環境とは?

仮想環境とは、次が含まれているフォルダのことです。

  • 特定のバージョンのPython
  • 最初は空のsite-packagesディレクトリ

仮想環境により、OSのPythonインストールとその他のプロジェクトからプロジェクトを分離できるようになります。

使用方法

仮想環境を使用するには、これらの手順に従います。

  1. 仮想環境を作成する:Pythonに標準搭載されている venv モジュールを使用すると、仮想環境を作成できます。 ターミナルを開いて、以下を実行します。

    python -m venv .venv
    

    .venv を希望する環境名に置き換えます。

  2. 仮想環境を有効化する:仮想環境を作成した後に、有効化する必要があります。 コマンドは、オペレーティングシステムによって異なります。

    • Windowsの場合
    .venv\Scripts\Activate.ps1
    

    エラーが発生した場合は、ターミナルで以下のコマンドを実行する必要がある可能性があります。

    Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force; .venv\Scripts\Activate.ps1
    
0
0 147
InterSystems公式 Seisuke Nakahashi · 2025年11月19日

コミュニティのみなさまに嬉しいお知らせです。

今年冒頭より、InterSystems IRIS, InterSystems IRIS for Health, Health Connect 向けの多くのクライアントSDKが、各外部リポジトリ (Maven, NuGet, npm, PyPI)に公開されております。これにより、ユーザのみなさまに以下のような多くのメリットがあります。

0
0 103
記事 Toshihiko Minamoto · 2025年11月18日 7m read

img

モジュールは重要なテーマです! 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のようにクラスと同じ名前のファイルにクラスを定義する環境から来ると、これは分かりにくいかもしれません。

0
0 110
記事 Toshihiko Minamoto · 2025年11月14日 3m read

img

この記事では、PythonスタイルガイドであるPEP 8について簡単に紹介します。

PEP 8とは?

簡単に言うと、PEP 8は、Pythonコードの書き方に関するガイドラインとベストプラクティスを提供します。

  • 変数名は snake_case(スネークケース)にする必要があります
  • クラス名は CamelCase(キャメルケース)にする必要があります
  • 関数名は snake_case(スネークケース)にする必要があります
  • 定数は UPPER_CASE(大文字)にする必要があります
  • インデントは4つのスペースにする必要があります(タブではありません)
  • private変数/関数はアンダースコア(_)で始める必要があります
    • Pythonにはprivate変数と関数が存在しないため、これはあくまでも慣習です
  • スクリプトはインポートの際に実行されるべきではありません
    • スクリプトをインポートするとそのコードは即座に実行されます。最初の記事をご覧ください
  • ...

全部を覚える必要はありませんが、頭の片隅に入れておくと他人のコードを理解するのに役立ち、自分のコードも他の人にとって分かりやすくなります ^^。

また、pythonic という言葉を聞いたことがあるかもしれません。

0
0 82