新着
記事 Toshihiko Minamoto · 2月 18 10m read

前回の記事、SQLでの変数やパターンを使ったLIKEの使用では、組み込みSQLから動的SQLまで、さまざまなシナリオでのLIKE述語の動作や、ワイルドカードや変数を使った場合のパフォーマンスへの影響について解説しました。 前回の記事では、動作するLIKEクエリを書くことに慣れることをテーマにしました。しかし、SQLを動かすことができるようになるのは、あくまで出発点に過ぎません。 信頼性が高く、スケーラブルで安全なアプリケーションを構築するには、LIKEを使ったクエリを含む、すべてのSQLに共通するベストプラクティスを理解する必要があります。

この記事では、次のステップに進みます。 SQLコードを強化し、ありがちな間違いを避け、SELECTステートメント文が正しく動作するだけでなく、効率的かつ安全に実行されるようにするためのいくつかの重要なポイントを見ていきます。 途中で、LIKE述語を使ったSELECTステートメントを例として取り上げ、これらの基本原則がどのようにクエリやその結果に直接影響するかを説明します。

*これは、Geminiがこの記事のために生成したものです。いい感じです。

0
0 6
新着
記事 Toshihiko Minamoto · 2月 11 8m read

年月を重ねるにつれて、InterSystems開発者コミュニティで特定のSQLの質問が何度も繰り返されることに気づくようになりました。特にさまざまなコンテキストでのLIKE述語の使用についてです。 よくあるバリエーションには、以下のようなものがあります。

また、さらに多くの派生パターンがあります。 そこで、InterSystems IRIS SQLでのLIKEの仕組みに焦点を当てた記事を書くことにしました。特に、埋め込みSQL、動的SQL、クラスクエリで変数を使用する方法について取り上げ、パターンのエスケープ、特殊文字検索についても解説しています。

まず最初に、InterSystems IRIS SQLでは、SQL標準の新しいバージョンを実装しているその他のリレーショナルDBMSで利用できるほとんどの機能を提供していることを述べておきたいと思います。 同時に、IRISではリレーショナルアクセスだけでなく、オブジェクトモデルやドキュメントモデルを使って同じデータにアクセスできることも重要なポイントです。

それでは、LIKE述語と、SQLでのパターンマッチングの使い方を詳しく見ていきましょう。

0
1 16
新着
記事 Toshihiko Minamoto · 2月 9 3m read

IRIS DocDB Explorerの紹介:InterSystems IRISでJSONドキュメントを管理できるスタイリッシュなUI

IRISは、DocDBを使用してJSONドキュメントを保存および取得できる専用機能を提供しており、事前定義されたスキーマを必要としません。

開発者は、複数のツールを切り替えたり、冗長なコードを書いたりせずに、ドキュメントを素早く簡単に閲覧、作成、編集できる方法を求めています。 そこで私は、DocDBと簡単にやり取りできるクリーンでレスポンシブなインターフェースを提供するCSPベースのオープンソースアプリケーション、iris-docdb-uiを開発しました。 ユーザーは、ネームスペースやドキュメントデータベースの作成、保存されたドキュメントの閲覧、新規ドキュメントの追加、既存ドキュメントの編集を、すべて1つの便利なプラットフォーム上で簡単に行えます。

このアプリケーションは、InterSystems Open Exchangeでも公開されているため、簡単にインストールして、すぐに使い始めることができます。

DocDBを使いやすくする方法

0
0 22
お知らせ Toshihiko Minamoto · 2月 2

InterSystems EHR コミュニティの皆様、こんにちは。

InterSystems Certification(インターシステムズ認定)部門は現在、CCR Tier 2 ユーザー向けの認定試験を開発中です。以下の受験者要件に該当する方は、ぜひベータテストにご参加ください!試験は 2026年1月27日 よりベータテストとして利用可能になります。

ベータテストは 2026年3月28日 に終了予定です。

ベータテスターとしての責任は何ですか?

ベータテスターの方には、2026年3月28日 までに試験を予約し、受験していただくようお願いいたします。試験はオンライン監視環境にて無料で実施されます(ベータテスター全員に対し、通常150ドルの受験料が免除されます)。

その後、InterSystems Certification チームがすべてのベータテストデータの慎重な統計分析を行い、試験の合格ラインを設定します。ベータテスト結果の分析には通常6~8週間かかります。合格ラインが確定次第、InterSystems Certification から結果を通知するメールが届きます。試験のスコアが合格ライン以上であれば、認定資格取得となります!

注: ベータテストのスコアは完全に機密扱いとなります。

参加にご興味がありますか?以下の試験詳細をご覧ください。

試験詳細

0
0 17
記事 Toshihiko Minamoto · 1月 28 4m read

InterSystems IRISのウィンドウ関数を使用すると、累積合計、ランキング、移動平均など、強力な分析を直接SQLで実行できます。
ウィンドウ関数は、「GROUP BY」のように結果をまとめることなく、関連行の「ウィンドウ」(グループ上)で動作します。
つまり、ループも結合も一時テーブルも使わずに、より簡潔で高速、しかも保守しやすいクエリを書くことができます。

この記事では、よくあるデータ分析タスクに取り組むことで、ウィンドウ関数の仕組みを理解していきましょう。

InterSystems IRISでのSQLウィンドウ関数入門

SQLウィンドウ関数は、データ分析のための強力なツールです。
各行をそのまま表示したまま、複数行の集計とランキングを計算することができます。
ダッシュボード、レポート、または複雑な分析を構築しているかどうかに関係なく、ウィンドウ関数はロジックを簡素化し、パフォーマンスを大幅に向上させます。

注意:私はウィンドウ関数の専門家ではありませんが、私がウィンドウ関数を理解するうえで役立ったインサイトやリソースを共有したいと思います。 ご提案や訂正があれば、ぜひお知らせください!

🚀 ウィンドウ関数が重要な理由

累積合計やランキング、行間の差分を計算するために、複数のSQLクエリや手続き型のループを書いたことはありませんか?

0
1 26
記事 Toshihiko Minamoto · 1月 26 5m read

InterSystems IRIS、特にInteroperabilityを使い始めたころ、最初によく思っていた疑問の一つは「処理を一定間隔やスケジュールで実行するにはどうすればいいのか」でした。 このトピックでは、この問題に対処する2つのシンプルなクラスをご紹介します。 似たようなクラスがEnsLibに見当たらないことに、驚いています。 十分に検索しなかったのかもしれません。 いずれにせよ、このトピックでは複雑な作業を扱うつもりはなく、初心者向けの簡単なスニペットを少し紹介します。

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

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

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

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

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

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

0
0 25
記事 Toshihiko Minamoto · 1月 19 13m read

この記事では、2025.2リリースで導入された、IRIS SQL処理の重要な要素、InterSystems IRISのテーブル統計処理の大きな改善について紹介します。 まず最初に、テーブル統計とは何か、どのように利用されるのか、そしてなぜ今回の改善が必要だったのかを簡単におさらいします。 その後、テーブル統計を収集・保存するための新しいインフラの詳細を掘り下げてから、この変更が実際にアプリケーションにどのような影響を与えるのかを詳しく見ていきます。 最後に、新しいモデルで可能になったパターンに関する追加の注意点をいくつか紹介し、今回の初期リリースに続く次のフェーズに期待をつなげます。

0
0 23
記事 Toshihiko Minamoto · 1月 14 10m read

Googleフォームは、データ収集、アンケートやクイズへの回答を行うための市場で最も人気のソリューションです。そのため、システムを拡張または開発することなく、患者データや回答を実用的な方法で収集するのに理想的な手段と言えます。本記事では、Google Cloudにアカウントを作成し、Google Forms APIを利用するアプリケーションを登録します。また、APIを利用するためのサービスユーザーを生成して、最後にEmbedded PythonとIRISを用いて新しいフォームを作成し、入力されたデータを自動的に収集する方法ついて詳しく説明します。

Google Cloudアカウントの作成

0
0 34
記事 Toshihiko Minamoto · 1月 12 7m read

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

🤖 FHIRInsightを構築した理由

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

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

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

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

0
0 29
記事 Toshihiko Minamoto · 1月 7 25m read

FHIRサーバー

FHIRサーバーとは、FHIR(Fast Healthcare Interoperability Resources)標準を実装するソフトウェアアプリケーションであり、医療システムが標準化された方法で医療データを保存アクセス交換、および管理することができるようにします。

Intersystems IRISは、以下のFHIRリソースを保存および取得できます。

  • リソースリポジトリ – IRISネイティブのFHIRサーバーは、FHIRバンドルやリソースをFHIRリポジトリに容易に直接保存することができます。
  • FHIR Facade – FHIRファサードレイヤーは、既存のもの(多くの場合、FHIR以外)の上にFHIRに準拠したAPIを公開するために使用されるソフトウェアアーキテクチャパターンです。 さらに、すべてのデータをFHIRネイティブシステムへ移行せずに、電子健康記録(EHR)、レガシーなデータベース、HL7 v2メッセージストアなどの医療データシステムを合理化します。

FHIRとは?

0
0 41
記事 Toshihiko Minamoto · 12月 25, 2025 5m read

概要統合とE2Eテストのために一時的なInterSystems IRISコンテナの起動を簡単にするNode.jsライブラリ、testcontainers-iris-nodeのリリースをお知らせします。 このプロジェクトが、testcontainers-iris-pythontestcontainers-iris-javaなどを含む、IRIS用Testcontainersアダプターの既存ファミリーに加わるのは極めて自然なことです。

testcontainers-iris-nodeを使う理由とは?InterSystems IRISで作業するNode.js開発者として、本番環境を再現するテスト環境を設定する際によく問題にぶつかりました。 testcontainers-iris-nodeは、オンデマンドで隔離されたIRIS環境を作成するためにtestcontainers-nodeフレームワークを活用することで、この問題を解決しました。

これは次において特に有用です。

  • IRISデータベースとの統合テスト
  • データパイプラインやマイクロサービスのテスト
  • CIパイプラインでのテスト環境の自動化

機能

  • Testcontainersを使用してDockerコンテナでIRISを起動します
  • カスタムのDockerイメージと構成をサポートします
  • テスト開始前にIRISが準備完了していることを確認するための待機戦略
  • テスト実行間のクリーンなティアダウン
0
0 34
記事 Toshihiko Minamoto · 12月 22, 2025 7m read

概要

typeorm-irisプロジェクトは、TypeORMInterSystems IRISとの統合に対して実験的サポートを提供し、開発者がTypeORMのよく知られているデコレーターとリポジトリの抽象化を使用してIRISとやり取りできるようにします。 これにより、IRISをバックエンドデータベースとして使用するNode.jsアプリケーションを構築するJavaScriptやTypeScript開発者にとって、より馴染みのある開発体験が可能になります。

TypeORM MongoDB Review. I recently started using TypeORM in a… | by Eliezer  Steinbock | Medium

プロジェクトはTypeORMとの主要な統合ポイントを実装しており、基本的なエンティティ操作をサポートしていますが、まだ十分に実戦で検証されておらず、本番環境には適していません。

0
0 35
記事 Toshihiko Minamoto · 12月 17, 2025 5m read

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

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

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

0
0 43
記事 Toshihiko Minamoto · 12月 15, 2025 8m read

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

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

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

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

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

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

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

0
0 43
記事 Toshihiko Minamoto · 11月 26, 2025 10m read

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 パッケージです。Vanna は、データに対して RAG「モデル」をトレーニングしてから質問をするという 2 つの簡単なステップで機能し、それによりデータベースで自動的に実行するようにセットアップできる SQL クエリが返されます。 画像

0
0 50
記事 Toshihiko Minamoto · 11月 24, 2025 5m read

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

仮想環境とは?

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

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

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

使用方法

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

0
0 74
記事 Toshihiko Minamoto · 11月 18, 2025 7m read

モジュールは重要なテーマです! 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 58
記事 Toshihiko Minamoto · 11月 14, 2025 3m read

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

PEP 8とは?

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

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

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

また、pythonic という言葉を聞いたことがあるかもしれません。 PEP 8に従うことは、「pythonic」なコードを書く方法の一つです(それだけではありませんが、重要な要素です)。

0
0 45
記事 Toshihiko Minamoto · 11月 5, 2025 8m read

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

0
0 63
記事 Toshihiko Minamoto · 10月 30, 2025 7m read

この記事では、IRIS環境におけるPythonプログラミングの基礎について紹介します。

本題に入る前に、重要なトピックである「Pythonの仕組み」について説明します。これは、IRIS環境でPythonを使用して作業する際に起こりうる問題や制限を理解するのに役立ちます。

すべての記事と例は、以下のgitリポジトリで確認できます: iris-python-article

Pythonの仕組み

インタープリター型言語

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!
0
0 62
記事 Toshihiko Minamoto · 10月 28, 2025 3m read

この記事では、マジックメソッドとしても知られるPythonダンダーメソッドについて簡単に解説します。

ダンダーメソッドとは?

ダンダーメソッドは、始めと終わりに2つのアンダースコア(__)が付いているPythonの特殊メソッドです。 このメソッドを使用することで、加算や減算、文字列表現など、組み込みの操作に対するオブジェクトの動作を定義することができます。

よくあるダンダーメソッドには、次が含まれます。

0
0 74
記事 Toshihiko Minamoto · 10月 16, 2025 2m read

私が先週リリースしたInterSystems Testing Managerの新しいバージョンでは、@Timothy Leavittの優れた
テストカバレッジツールが追加され、私は2025年度Developer Toolsコンテストに出品しました。

こちらは、IPMプロジェクトのユニットテストが、IPMリポジトリでソート順を上書きできると思われる機能をまだカバーしていないことを示すティザー的なスクリーンショットです。

0
0 58
お知らせ Toshihiko Minamoto · 10月 14, 2025

%UnitTestフレームワークのユーザーは、InterSystems Testing Manager拡張機能の最新リリース(v2.0.0)を@Timothy Leavittの素晴らしいテストカバレッジツールと組み合わせることで、VS Code内でテストカバレッジ情報を取得できるようになりました。

上部にテストカバレッジのペインが表示されています。左側のテストエクスプローラーと併せて確認しやすいように、右側のセカンダリサイドバーに移動させました。

直近のテスト実行(テストカバレッジツール自体のユニットテストすべて)の結果、TestCoverage.Procedures内のBitValueメソッドはカバーされていましたが、BitCountメソッド(および他の6つのメソッド)はカバーされていないことに注目してください。 TestCoverageパッケージの全体で43.08%の実行可能行のみが、ユニットテストによってカバーされていました。

InterSystems Testing Managerに対するこの大幅なアップグレードを、現在開催中のDeveloper Toolsコンテスト に出品します。 もし良いと思っていただけたら、来週の投票でぜひ応援してください!

0
0 75
記事 Toshihiko Minamoto · 10月 9, 2025 8m read

少し遅れましたが、モバイルアプリケーションから接続する例を示して Workflow Engine に関する連載記事をようやく締めくくることにします。

前回の記事では、これから説明する例として、患者と担当医師の両方にとって高血圧症などの慢性病状の詳細な管理を可能にするアプリケーションを示しました。 この例では、患者は携帯電話からウェブアプリケーション(基本的に、デバイスに応答するように設計されたウェブページ)にアクセスし、ポータブル血圧計が IRIS インスタンスに送信する測定に基づく通知を受信します。

したがって、IRIS インスタンスへのアクセスは 2 つです。

  • モバイルアプリケーションからのユーザーアクセス。
  • 血圧の測定値を送信するデバイスアクセス。

この記事では、患者が測定値を生成するタスクを管理できる、最初のアクセスを確認します。

モバイルアプリケーションと IRIS の接続

この接続では、IRIS 内でウェブアプリケーションを構成するのが最も単純です。これを行うには、管理ポータルのシステム管理 -> セキュリティ -> アプリケーション -> ウェブアプリケーションからアクセスします。

次に、表示されるリストでアプリケーションの新規作成をクリックすると、以下のような画面が開きます。

この画面で、以下のフィールドを構成しましょう。

0
0 45