クリアフィルター
お知らせ
Rie Tokue · 2025年3月20日
本年よりスタートしたインターシステムズ ソリューションウェビナー、第2回は以下の日時・内容で開催いたします。
日時:4月24日(木)13時30分~14時15分(45分間)
参加費無料・事前登録制
ご登録はこちらから
ウェビナー概要:このウェビナーでは、InterSystems IRIS data platform の2025.1 EM(Extended Maintenance)リリースに搭載される新機能と改善点を包括的に紹介します。EMリリースは長期サポートが提供され、安定性が重視されるため、多くのお客様が本番環境で採用されるバージョンです。2024.1 EMリリース以降の機能強化も含め、技術者の皆様が新バージョンを最大限に活用できるよう情報をお届けします。
本ウェビナーでは、製品の新機能や改善点について、実際の実行環境での画面を共有しながら解説します。理論的な説明だけでなく、具体的なコード例や実際の動作デモンストレーションを通して、新機能の実用的な活用方法を分かりやすく紹介します。これにより、参加者の皆様はすぐに実践できる知識を得ることができます。
こんな方にお勧め:
IRIS data platform開発者
データベース管理者
前提となる知識:
IRIS data platformの基本的な知識
過去のバージョン(特に2024.1以降)の使用経験があると望ましい
ご多用中とは存じますが皆様のご参加をお待ち申し上げております。
記事
Megumi Kakechi · 2022年4月17日
InterSystems IRIS 2021.2 のバージョンより、Embedded Python を使用できるようになりました。Embedded Python については、「Embedded Pythonを簡単にご紹介します」の記事をぜひご覧ください。
こちらでは、Embedded Python を使用して Excel のデータを IRIS グローバルに出力する方法をご紹介します。
最初に、irispip コマンドで必要なライブラリをインストールします。今回は、pandas、xlrd、openpyxl の3つのライブラリをインストールします。
>cd C:\InterSystems\IRIS\bin
C:\InterSystems\IRIS\bin>irispip install --target C:\InterSystems\IRIS\mgr\python pandas
C:\InterSystems\IRIS\bin>irispip install --target C:\InterSystems\IRIS\mgr\python xlrd
C:\InterSystems\IRIS\bin>irispip install --target C:\InterSystems\IRIS\mgr\python openpyxl
Excel ファイルは次のような test.xslx を用意します。
Name
Age
Address
佐藤
50
東京
加藤
40
大阪
伊藤
30
京都
VSCode または IRISスタジオで次のようなクラスを作成します。メソッドの宣言部に [ Language = Python ] と指定することで、クラスのメソッドに直接 Pythonコードを書くことができます。
Class User.PythonTest Extends %Persistent
{
ClassMethod fromPythonString(in As %String)
{
set ^ISJ($increment(^ISJ))=$LISTFROMSTRING(in,",")
}
ClassMethod PythonPrint(fname as %String) [ Language = python ]
{
import iris
import pandas
df=pandas.read_excel(fname, header=None)
for key,row in df.iterrows():
moji=",".join(list(map(str, row)))
#iris.cls('User.PythonTest').fromPythonString(moji)
iris.cls(__name__).fromPythonString(moji)
}
}
上の IRIS クラスでは、以下のような処理を行っています。
① Python プログラム(PythonPrint)で、拡張子「.xlsx」のエクセルファイルを pandas データフレームに読み込む ↓② Dataframe のデータを行単位で読み込み、iris モジュールの cls() メソッドで文字列をグローバルに格納するクラスメソッド(fromPythonString)に渡す ↓③ クラスメソッドの中で $LISTFROMSTRING() を使用して ^ISJ グローバルにセットする。
IRISターミナルから正しく実行できているかを確認します。
USER>kill ^ISJ
USER>do ##class(User.PythonTest).PythonPrint("c:\temp\test.xlsx")
USER>zw ^ISJ
^ISJ=4
^ISJ(1)=$lb("Name","Age","Address")
^ISJ(2)=$lb("佐藤","50","東京")
^ISJ(3)=$lb("加藤","40","大阪")
^ISJ(4)=$lb("伊藤","30","京都")
USER>
Pythonプログラムのデバッグを行いたい場合は、 Python シェルに切り替えて確認することができます。
USER>kill ^ISJ
USER>do ##class(%SYS.Python).Shell()
Python 3.9.5 (default, Jan 31 2022, 17:55:36) [MSC v.1927 64 bit (AMD64)] on win32
Type quit() or Ctrl-D to exit this shell.
>>> import iris
>>> import pandas
>>> df=pandas.read_excel('c:\\temp\\test.xlsx', header=None)
>>> for key,row in df.iterrows():
... moji=','.join(list(map(str, row)))
... iris.cls('User.PythonTest').fromPythonString(moji)
...
>>> exit()
USER>zwrite ^ISJ
^ISJ=4
^ISJ(1)=$lb("Name","Age","Address")
^ISJ(2)=$lb("佐藤","50","東京")
^ISJ(3)=$lb("加藤","40","大阪")
^ISJ(4)=$lb("伊藤","30","京都")
USER>
上のサンプルでは、IRISのクラスメソッドを呼び出して操作していますが、Python プログラムで直接 IRIS のグローバルに書き込むことも可能です。その場合は、iris.gref("^ISJ") のように、^ISJ へのグローバル参照を取得して書き出しが行えます。詳細は以下のドキュメントをご覧ください。https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=AFL_epython#AFL_epython_irisapi_gref
USER>do ##class(%SYS.Python).Shell()
Python 3.9.5 (default, Jan 31 2022, 17:55:36) [MSC v.1927 64 bit (AMD64)] on win32
Type quit() or Ctrl-D to exit this shell.
>>> import pandas
>>> glo=iris.gref('^ISJ')
>>> glo.kill([None])
>>> df=pandas.read_excel('c:\\temp\\test.xlsx', header=None)
>>> for key,row in df.iterrows():
... moji=','.join(list(map(str, row)))
... glo[key]=moji
...
>>> exit()
USER>zw ^ISJ
^ISJ(0)="Name,Age,Address"
^ISJ(1)="佐藤,50,東京"
^ISJ(2)="加藤,40,大阪"
^ISJ(3)="伊藤,30,京都"
USER>
以下の関連記事も、ぜひご覧ください。
PandasデータフレームをIRISに保存する - 簡易メモInterSystems IRIS グローバル($LB) を pandas.DataFrame に変換する @Megumi.Kakechi さん、役に立つ記事ありがとうございます!
細かい点ですが、クラスメソッドから、同じクラスの別のクラスメソッドを呼ぶときに、
iris.cls("User.PythonTest").fromPythonString(moji)
のように呼んでますが、クラス名を繰り返さずに、
iris.cls(__name__).fromPythonString(moji)
で呼べるようです。(参考:英語のコミュティティ記事)
Pythonなら、clsという変数で自分のクラスへの参照が入って欲しいのですが、これは将来の改善を待たないといけないみたいです。 @Minoru.Horita さん
情報ありがとうございます!__name__で呼べるとは、スマートでいいですね。早速記事に反映させていただきました。
記事
Mihoko Iijima · 2021年1月29日
これは InterSystems FAQ サイトの記事です。
システム提供の %SYS.GlobalQueryクラス の Size クエリーを使用することで取得できます。
使用例は、以下のサンプルコードをご参照ください。※カラムやパラメータの指定はクラスリファレンスをご確認ください。
set dir="C:\intersystems\iris\mgr\user" // IRIS.DAT(またはCACHE.DAT)フォルダ
set rs = ##class(%ResultSet).%New("%SYS.GlobalQuery:Size")
do rs.Execute(dir) // 第3引数でマスク指定も可
while (rs.Next()) {
set gname= rs.Get("Name") // グローバル名
set gsize= rs.Get("Used MB") // グローバルサイズ(MB)
write gname," : ",gsize,!
}
グローバル変数のサイズが大きい場合、取得時間がかかる場合もあります。その場合、Size クエリー 実行時、第 6 引数に 1 を指定してクエリを再実行してみてください。
第 6 引数の指定により、簡易モードでサイズを取得します。簡易モードのため「Used MB」は取得できませんが、「Allocated MB」は取得できます。
以下、第 6 引数を指定した場合の実行例です(Used MB ではなく、Allocated MB を取得しています)。
set dir="C:\intersystems\iris\mgr\user" // IRIS.DAT(またはCACHE.DAT)フォルダ
set rs = ##class(%ResultSet).%New("%SYS.GlobalQuery:Size")
do rs.Execute(dir,,,,,1) // 第3引数でマスク指定も可
while (rs.Next()) {
set gname= rs.Get("Name") // グローバル名
set gsize= rs.Get("Allocated MB") // グローバルサイズ(MB)
write gname," : ",gsize,!
}
お知らせ
Yoichi Miyashita · 2021年6月18日
InterSystems は、より新しく優れたオプションが利用可能になったときに従来のテクノロジーの開発を中止することがあります。ただし、それら機能は最小サポートバージョン以後の製品であれば他の機能と同等にサポートします。
非推奨とは、InterSystems が現在積極的に開発を行っておらず、より優れたオプションが存在する機能またはテクノロジーを意味します。非推奨の機能やテクノロジーを使用されているお客様はそれらを使用しないように計画していただく必要がございます。InterSystems は非推奨の製品機能をサポートするためのスタッフの専門知識を維持しております。例: Zen, Zenレポート, Cache Server Pages (CSP)
廃止されたとはその機能またはテクノロジーが既存アプリケーションであっても今後利用できなくなることを意味します。InterSystems はそのような技術を使用し続けることがお客様のリスクであると考えます。理由には以下が挙げられますが、これらに限定するものではありません。
使用するのが少数のお客様に限られる
現在のテクノロジーやセキュリティ対策と互換性がなくなる
現在の製品実装との非互換性によりアプリケーションのメンテナンスが困難である
サードパーティの廃止された機能に依存している
例: DCP (Distributed Cache Protocol; ECPにより置き換え), WebLink, Cache Direct (Visual M/VISM)
お知らせ
Mihoko Iijima · 2020年8月3日
開発者のみなさん、こんにちは!
インターシステムズは、2020年7月21日(火)に オンラインにて開催された開発者向けイベント「Developers Summit 2020 Summer」(主催:翔泳社)に協賛し、セミナーで IRIS プログラミングコンテストについてご紹介しました。
ご紹介内容は、コンテストに限らず、コンテナを使用した開発環境の整備にも使えますので、セミナーを見逃された方もぜひご覧ください!
もくじ
※ YouTubeでご覧いただくと目次の秒数にジャンプできます。
0:00~ InterSystems が開催しているプログラミングコンテストの概要
2:38~ 本セッションの目標
4:21~ ≪腕試しの準備その1≫開発環境の「テンプレート」で何が提供されるか
8:26~ テンプレート起動迄の手順(各コンテスト共通)
10:02~ 優勝作品のご紹介(2020年5月分開催 Native APIの回)
Banzaiさんの作品
OpenExchangeトップページ
11:40~ ≪腕試しの準備その2≫ご応募までの実際の流れ RESTサーバ作成用のテンプレート
13:00~ テンプレートで準備されるREST サーバ作成環境について
16:47~ テンプレートの中身解説+コンテナの開始とサンプルコードの実行(実演)
23:02~ GET要求 /test で動作する testMethod()の追加と実行
25:02~ 実行内容と応募までの流れ InterSystems 開発者コミュニティ ユーザ登録ページ
26:35~ コンテストの情報について コンテスト告知ページ
27:12~ InterSystems 開発者コミュニティのご紹介 「はじめての InterSystems IRIS 」セルフラーニングシリーズ
記事
Mihoko Iijima · 2020年9月16日
これはInterSystems FAQ サイトの記事です。
サーバ側ロジックの記載に使用する ObjectScript でのエラーが発生した場合の対処方法については「ObjectScriptでエラーが発生したら」にまとめています。
ぜひご参照ください!
お知らせ
Mihoko Iijima · 2022年4月4日
開発者のみなさん、こんにちは!
2021年10月に4回シリーズで開催した「InterSystems IRIS 開発者向けウェビナー」第3回目の「SQLから始める機械学習 ~IntegratedMLのご紹介~」のアーカイブをYouTubeに公開いたしました。
InterSystemsは、アプリケーション開発者の方々が、IRIS data platformに保存されているデータとSQLを用いて、機械学習を容易に利用できる仕組み「IntegratedML」を開発しました。このビデオでは、IntegratedMLの概要についてご紹介いたします。
ぜひご覧ください!
(IRIS 2021.1新機能全体のご紹介については、こちらのYouTubeをご参照ください。)
【目次】
0:00 機械学習の概要と課題、AutoMLについて
8:30 IntegratedMLについて
13:20 IntegratedMLの文法
18:32 デモ
26:50 まとめ
お知らせ
Mihoko Iijima · 2022年4月6日
開発者のみなさん、こんにちは!
2021年10月に4回シリーズで開催した「InterSystems IRIS 開発者向けウェビナー」第4回目の「FHIR新機能」のアーカイブをYouTubeに公開いたしました。
FHIRに関する開発を行う際、FHIRの規格がどのような内容を決めてくれているのかについて、開発者の視点でご説明します。また、InterSystems IRIS for Health のバージョン2020.1から2021.1の間で追加されたFHIR新機能についてご紹介します。
ぜひご覧ください!
(IRIS 2021.1新機能全体のご紹介については、こちらのYouTubeをご参照ください。)
【目次】
0:00 開発者からみたFHIRについて
03:29 大手ITによるFHIR規格の取り組みについて
07:27 FHIR新機能
11:35 デモ
質問
Tomomi Yamano · 2022年5月8日
Hi,
Our business is working on the launch of terminology service module in Japan and wonder if there is any specific like SNOMED CT for Japanese market.
Your input would be appreciated.
Best, Hello @Tomomi.Yamano -san,
I'm not an expert here, but I have not heard so much about SNOMED CT in the field in Japan. As far as I know, ICD10 is more popular, or at least more mentioned among healthcare IT professionals and researchers.
Hope this helps. Hi @Minoru.Horita
Thank you for your reply!
Just out of curiosity, InterSystems provide any terminology service using ICD10 for Japan market?
Best,
記事
Mihoko Iijima · 2021年5月12日
これは InterSystems FAQ サイトの記事です。
InterSystems IRISでは、サンプル定義の一部は、GitHub上に公開しています。
本FAQ内で登場する Sample.Person のクラス定義とサンプルデータについては、こちら からダウンロードいただけます。手順は以下の通りです。
Zipとしてダウンロード
1を展開
展開フォルダ内 以下階層のクラス定義をターミナルを利用してIRISへインポートし、インポート後 Build()メソッドを実行します。
Samples-Data-master\buildsample\Build.DataSample.cls をフルパスで指定してインポートします(Sample-Data-masterフォルダを c:\kit へコピーした状態での例です)。
do $system.OBJ.Load("C:\kit\Samples-Data-master\buildsample\Build.DataSample.cls","ck")
データ生成のBuild() メソッド実行例は以下の通りです。
do ##class(Build.DataSample).Build()
実行例(全体):
USER>do $system.OBJ.Load("C:\kit\Samples-Data-master\buildsample\Build.DataSample.cls","ck")
USER>do ##class(Build.DataSample).Build()
This is the setup method for the Samples-Data sample, which provides several
persistent classes with data, for use with InterSystems IRIS Data Platform.
To continue, please specify the full path of the directory that contains this
sample. (This is the directory that contains the README.md and LICENSE files.)
Your input: C:\kit\Samples-Data-master
Your input: の右側には、Zip展開後 cls や buildsample フォルダが含まれる上位フォルダ=Sample-Data-masterのフルパスを指定してください。
詳細については、以下のドキュメントをご覧ください。InterSystems IRIS で使用するサンプルのダウンロード
関連記事(Sample.Personを利用して解説している記事/FAQトピック)
FAQ:
インデックスを登録内容通り大文字/小文字を区別して作成したい。オブジェクトのプロパティやメソッドに動的にアクセスする方法はありますか?
コミュニティ:サーバ側ロジック(ObjectScript)で SQL を実行するときの DATE 型や TIME 型カラムの操作方法(コミュニティの記事)外れ値について(コミュニティの記事)
記事
Hiroshi Sato · 2021年1月27日
これは InterSystems FAQ サイトの記事です。
InterSystems ObjectScript言語では引数の異なる同名のメソッドを定義することはできません。
InterSystems ObjectScript言語は一般的に動的言語と呼ばれるプログラミング言語に分類されます。
ObjectScriptではメソッド実行時にどの引数を使用するかどうかは自由に制御可能ですので、動的プログラミング言語ではないJava等の言語と異なり、コンパイルの段階で厳密に引数の数でメソッドを区別する必要がありません。
従って ObjectScript言語は、オーバーロードと一般に呼ばれる言語仕様を含んでいません。
Java等で記述されたプログラムを移植する際にオーバーロード相当の機能を実現するには、
ClassMethod test(args... as %String)
のように引数の後ろに ... を付加します。
これにより、可変長引数を渡すことが可能です。
このメソッドに複数の引数が渡された場合は、args(1)=第一引数 args(2)=第二引数というように順次設定されます。
これを使用して、メソッドコード中で渡された引数の個数を取得して処理を分岐させることができます。
※ただし、引数のデータタイプを判別することはできません。
記事
Hiroshi Sato · 2020年11月16日
これはInterSystems FAQ サイトの記事です。
InterSystems ObjectScript言語では引数の異なる同名のメソッドを定義することはできません。
InterSystems ObjectScript言語は一般的に動的言語と呼ばれるプログラミング言語に分類されます。
ObjectScriptではメソッド実行時にどの引数を使用するかどうかは自由に制御可能ですので、動的プログラミング言語ではないJava等の言語と異なり、コンパイルの段階で厳密に引数の数でメソッドを区別する必要がありません。
従って ObjectScript言語は、オーバーロードと一般に呼ばれる言語仕様を含んでいません。
Java等で記述されたプログラムを移植する際にオーバーロード相当の機能を実現するには、
ClassMethod test(args... as %String)
のように引数の後ろに ... を付加します。
これにより、可変長引数を渡すことが可能です。
このメソッドに複数の引数が渡された場合は、args(1)=第一引数 args(2)=第二引数というように順次設定されます。
これを使用して、メソッドコード中で渡された引数の個数を取得して処理を分岐させることができます。※ただし、引数のデータタイプを判別することはできません。