2022年7月リリースへようこそ!
開発者コミュニティでは、以下の点が改良されています
📌 ソーシャルネットワークのような通知
📌 サブスクリプション設定の改良
📌 brand new "About us" page
📌 friendlier "Members" page
Let's have a closer look at all these improvements!

開発者コミュニティでは、以下の点が改良されています
📌 ソーシャルネットワークのような通知
📌 サブスクリプション設定の改良
📌 brand new "About us" page
📌 friendlier "Members" page
Let's have a closer look at all these improvements!
開発者コミュニティの皆さん
こんにちは。
今回は一新された「はじめに」ページを紹介します。
📍 jp.ommunity.intersystems.com/about
このページでは、開発者コミュニティに関する一般的な情報、興味深い統計、便利なリンク、その他多くの情報を得ることができます。
ここをチェックすると、長い間メンバーだった方でも、何か新しい発見があるかもしれません。
これは InterSystems FAQ サイトの記事です。
InterSystems IRIS Data Platform(以下IRISと表記)ではマルチモデルのサポートにより、データに対して様々なアクセス手法を使用することができます。
主だったアクセス手法としてダイレクトアクセス、SQLアクセス、オブジェクトアクセスがあります。
ダイレクトアクセス は、IRISのネイティブ構造であるグローバルと呼ばれるキーバリュー型のデータに直接アクセスする方法です。
SQLアクセス は、リレーショナルデータベースシステムにアクセスするための標準言語であるSQLを使用してデータにアクセスする方法です。
オブジェクトアクセス は、オブジェクト指向言語でオブジェクトを操作するための表記法として幅広く利用されるドット記法を使用してデータにアクセスする方法です。
ダイレクトアクセスとSQLアクセスおよびオブジェクトアクセスでは、処理の抽象度が異なります。
抽象度が高くなるに伴い、内部的な処理のオーバヘッドが増加するため、単純な1スレッド単位でのアクセススピードの速さについては、ダイレクトアクセスが、SQLアクセスとオブジェクトアクセスに比較して速い場合が多いです。
しかしながら、今後SQLアクセスに関してより高速に処理できるよう様々な開発が進行中です。
これは InterSystems FAQ サイトの記事です。
実行ログデータなどトランザクション中にロールバックが発生しても前の状態に戻ってほしくないデータがあります。
それらのデータをロールバックされないデータベースIRISTEMPに配置することで上記の要件に対応できます。
ロールバックさせたくないテーブルの実体をこのデータベースにマッピングすることでロールバック後に情報を残すことができます。
ただし、このデータベースはIRIS再起動で内容がクリアされますので、永続的に保持したい場合には、いずれかのタイミング(ロールバック後等)で永続テーブルにコピーを行う必要があります。
また、これとは別に、トランザクション対象外としたいテーブル操作の前にプロセスのジャーナル記録を停止し、操作完了後にジャーナル記録を再開することで、その操作をトランザクション対象外にすることもできます。
ただしこの方法は、ミラーリングをお使いいただく際にはご使用いただけません。
これは InterSystems FAQ サイトの記事です。
メモ:xxx にはネームスペース名が入ります。
xxxENSTEMPは、プロダクション実行中に作成される一時データが保存されるデータベースです。
^IRIS.Temp.Ens* のグローバルがこのデータベースにマッピングされています。なお、xxxENSTEMPはジャーナルにかかれない設定のデータベースです。
xxxSECONDARYは、プロダクションで使用される資格情報を保存するデータベースです。
^Ens.SecondaryData* のグローバルがこのデータベースにマッピングされています。
注意:InterSystems IRIS for Health、HealthShare ではこれらデータベースは作成されません
詳細は以下ドキュメントをご覧下さい。
InterSystems IRIS の一時プロダクション・データの格納場所
InterSystems IRIS のパスワード資格情報の格納場所
関連する記事もご参照ください。
その昔、クラス/テーブルのデータ、ストリーム、インデックスのサイズを判断するのは簡単なことでした。%GSIZE を実行して、D、S、I グローバルをそれぞれ確認するだけで済みました。
ところが最近では、シャーディングや、最適化されたグローバル名、分離されたグローバルのインデックスでは以下のような %GSIZE 出力が生成されます。
Global Size Display of /irissys/data/IRIS/mgr/irisshard/
1:35 PM Dec 02 2020
IRIS.Msg 1 IRIS.MsgNames 1 IRIS.SM.Shard 1
IS.DGoWeK.1 24359 IS.DGoWeK.2 3 IS.DGoWeK.3 2810
IS.DGoWeK.4 2542 IS.V0Zli.1 373 IS.V0Zli.2 2
IS.k22Ht.1 238028 IS.k22Ht.2 3 IS.k22Ht.皆様こんにちは。
ubuntu 22.04 LTSに対してIRIS-Community 2022.1.0.209.0をインストールしようとしたところ、
下記のようなエラーが出てインストールができない状態です。
LTSバージョンではSSLがversion3.0.2になっていますので、手動にてversion1.1.1をインストールしてみましたが
改善されません...製品版のIRIS 2022.1.0.209.0であれば正常にインストールできますので、Community Editionだけの
問題のような気もしています。 ← こちらは製品版でも同じ現象でした...><
どなたか知見をお持ちの方おられないでしょうか?
----- ■以下エラー
Warning: The installer can't find a platform in this distribution
supported by your system.
Searching for platforms that might install in unsupported mode...
1) Ubuntu LTS (x64)
Enter the number for your system: 1
Your system type is 'Ubuntu LTS (x64)'.
openssl
これは InterSystems FAQ サイトの記事です。
正規表現を使用する$Locate()関数がご使用いただけます。
使用方法の例は以下の様になります。
USER>write str
あいうえおかきくけこABC123456さしすせそ
USER>write $locate(str,"[A-Za-z]{3}[0-9]{6}",,,val)
11
USER>write val
ABC123開発者の皆さん、こんにちは!
Interoperability を使った開発のスキルを披露してみませんか?
次回のコンテストのお題は 🏆 InterSystems Interoperability Contest: サステナブルなソリューションの構築 🏆です!
期間: 2022年8月29日~9月18日
💰賞金💰 $13,500 – 賞金の配分方法が変更されました!
これは InterSystems FAQ サイトの記事です。
クライアントからターミナルにログイン(接続)できない時、ターミナル接続を可能にするサービスが有効になっていないことが原因として考えられます。
ターミナル接続を可能にするサービスが有効になっていないことが原因として考えられます。
管理ポータル :[ホーム] > [システム管理] > [サービス]
有効になっていない場合は、リンクをクリックしてサービス定義編集画面を開き、"サービス有効"にチェックを入れて保存します。
.png)
もう一つの原因としてはOSのファイアウォールによりターミナル接続が遮断されている場合が考えられます。
リモートでターミナル接続される場合はファイアウォールの設定を無効にしてお使い下さい。
これは、2022.2の開発者プレビュープログラムのリリース第5弾です。 プレビューリリースは、隔週で更新される予定で、準備が整い次第、機能を追加していく予定です。 2022.2では、SQL管理、クラウド統合、KafkaおよびJMSアダプタ、SQL Loaderなどにおいて、多くのアップデート、修正、機能強化が行われています。 製品改善のため、開発者コミュニティを通じてフィードバックをお寄せください
列指向ストレージに関して、Early Access Program (EAP) を受け付けています。ご興味のある方はぜひ Early Access Program にご参加ください。
今後の開発者向けプレビューでは、Ubuntu 22.04 LTSへの対応や、コミュニティエディションでの制限の変更などが予定されています。ご期待ください!
通常、CDリリースにはサポートされているすべてのプラットフォーム向けの標準インストールパッケージと、OCI(Open Container Initiative、別名Dockerコンテナ)形式のコンテナイメージが付属しています。 詳細については、サポートされるプラットフォームのドキュメントをご参照ください。
インストールパッケージとプレビューキーは、WRCのプレビューダウンロードサイトまたは評価サービスのウェブサイト(2022.
InterSystems IRIS には、暗号化、復号化、およびハッシュ操作の優れたサポートが備わっています。 クラス %SYSTEM.Encryption(https://docs.intersystems.com/iris20212/csp/documatic/%25CSP.Documatic.cls?LIBRARY=%25SYS&PRIVATE=1&CLASSNAME=%25SYSTEM.Encryption)の中には、市場に出回っている主なアルゴリズムのクラスメソッドがあります。
ご覧のとおり、操作は鍵に基づいており、3 つのオプションが含まれます。
Studio では、クラスを直接その名前で開くことができます。何度もクリックしながら目的のクラスに到達するまでパッケージツリー内を移動する必要はありません。
Ctrl + O(またはファイル -> 開く)を押せば、以下のようにクラス名を入力するだけです。
.png)
Enter を押すと、クラスが開きます。
VSCode ではこれをどのようにして行えるでしょうか?
これは InterSystems FAQ サイトの記事です。
テーブル(クラス) のデータを削除する際に %KillExtent() というメソッドを使用すると、レコードを1ずつ削除するのではなく、データを格納しているデータグローバル、インデックス定義のグローバル(ノード) をまとめて 削除することができます。
kill ^ISJ.xxxD
kill ^ISJ.xxxIのようにデータグローバルやインデックスグローバルをまとめて削除するのと同じような動作となります。
そのため、ジャーナルレコードへの出力は最小限になります。
使用例:
write ##class(ISJ.xxx).%KillExtent()
ただし、トランザクション下で実行すると一括 Kill の場合でも保存されているレコードに応じたジャーナルレコードが生成されるのでご注意ください。
また、以下のドキュメントの注意書きにあるように、他クラス(テーブル)への参照などが含まれているクラスで実施されると整合性に問題が発生する場合がありますのでご注意ください。
こちらを必要なだけ記述したタスククラスを作成すると、タスクスケジューラから定期的に実行できます。
タスククラスの作成方法は、以下のトピックをご覧ください。
【ご参考】
IRIS 2021.
これは InterSystems FAQ サイトの記事です。
TCP アダプタを使用するビジネスホストの [接続中を維持(StayConnected)]と[プールサイズ(PoolSize)]のデフォルト設定値は以下の通りです。
ネットワークの問題でビジネスホストへの接続が切断された場合に、プロダクション側では切断されたことを検知できないため新しい接続を受け付けません。
またこの状況の時、イベントログにも記録されません。
StayConnected が デフォルト値(-1)の場合、接続がタイムアウトしないため新しい接続を受け付けるためには、ビジネスホストを再起動する必要があります。
このような状況を回避するためには、StayConnected を 0 以上の値に設定することを推奨します。
例えば300(秒)に設定した場合、TCP ビジネスホストは 300 秒以上新たなメッセージを受信しなかった場合に、自動的に接続を切断して再接続できます。
処理量の多いシステムの場合には、通常 StayConnected の値をさらに小さな値、例えば 5(秒)に設定します。
これは InterSystems FAQ サイトの記事です。
コンソールログに任意のメッセージを書き込む方法として%SYS.System クラスの WriteToConsoleLog メソッドを使用することができます。
以下に例を示します。
%SYS>write ##class(%SYS.System).WriteToConsoleLog("xxxxx log message",0,0)
1
WriteToConsoleLogメソッドに指定できるパラメータの詳細は、以下のドキュメントをご参照下さい。
これは、2022.2の開発者プレビュープログラムのリリース第4弾です。 プレビューリリースは、隔週で更新される予定で、準備が整い次第、機能を追加していく予定です。 2022.2では、SQL管理、クラウド統合、KafkaおよびJMSアダプタ、SQL Loaderなどにおいて、多くのアップデート、修正、機能強化が行われています。 製品改善のため、開発者コミュニティを通じてフィードバックをお寄せください
列指向ストレージに関して、Early Access Program (EAP) を受け付けています。ご興味のある方はぜひ Early Access Program にご参加ください。
開発者プレビュー4ではRed Hat RHEL 9のサポートが追加されました。
CDリリースには、サポートされているすべてのプラットフォーム向けの標準インストールパッケージと、OCI(Open Container Initiative、別名Dockerコンテナ)形式のコンテナイメージが付属しています。 詳細については、サポートされるプラットフォームのドキュメントをご参照ください。
インストールパッケージとプレビューキーは、WRCのプレビューダウンロードサイトまたは評価サービスのウェブサイト(2022.2へのアクセスには「Show Preview Software」をチェックしてください)から入手できます。
開発者の皆さん、こんにちは!
コミュニティウェビナーの再開をお知らせします!
今回は、@Ron.Sweeney1582による「Scaling InterSystems FHIR Server on Amazon Web Services with ECP」というウェビナーに皆さんをご招待します。
このウェビナーでは、Amazon Web Services 上の InterSystems FHIR Server を Enterprise Cache Protocol (ECP) を使ってスケールアウトする技術的な詳細、デモ、ベンチマークを紹介します。
⏱ 日時: 8月18日(木)午前8時(東部標準時)、午後9時(日本標準時)
👨🏫 スピーカー: @sween, Integration Required社 フルスタックアーキテクト
サポートではこのような質問をたまに受けることがあります。何かが、または誰かが、想定以上のライセンスを使用しており、それを調べなければなりません。
調べるタイミングは2回あります。 1 つは、アプリケーションが動作しないか、ターミナル経由で接続しようとすると次のような「愛くるしい」メッセージが表示され、ライセンスが使い果たされていることに気づいたときです。
<LICENSE LIMIT EXCEEDED> メッセージ:
2 つ目のタイミングは、アプリケーションを使用できなかったことがあったという苦情をエンドユーザーから受けたときですが、問題が発生しているのを確認するには遅すぎます。 こういった場合には通例、messages.log に「License Limit exceeded xxxx times」というメッセージが確認されます。
最初のタイミングの場合は、問題が発生している状態を確認できるため、それをキャッチする方法がいくつか考えられます。
開発者の皆さん、こんにちは!
InterSystems 技術文書ライティングコンテスト: Python エディションでは、素晴らしい記事の投稿がありました!
🌟 12 の投稿はこちら! 🌟
この記事ではコンテスト受講者を発表します 📢
これは InterSystems FAQ サイトの記事です。
残念ながら良い方法はありません。
もし処理の流れとして突然処理を中断されると不都合がある場合には、OnunloadHandler内でalertメソッドにより、Xボタンを押さないように注意を促すようなメッセージを出す方法が考えられます。
一般的には、ユーザ都合で処理中断されてもサーバ側処理内でデータの整合性等に不都合が発生しない様にアプリケーションの実装を行う必要があります。
ページのアンロード時に呼び出されるOnunloadHandler内でサーバ・メソッドを呼び出す方法は様々な問題があるため、使用することはお勧めしません。
これは InterSystems FAQ サイトの記事です。
TRYブロック内で任意のカスタムエラーを発生させたい場合、以下のように throw で例外を渡すことが可能です。
以下のサンプルでは、Stcount が 1 より小さい場合にカスタムエラーを発生させています。
Class User.Test
{
ClassMethod ExceptionTest()
{
try
{
// : some codes
if (Stcount<1) {
throw ##class(%Exception.General).%New(" ユーザ定義エラー","5001","ロケーション","エラー時のデータ")
// ユーザ作成エラーは5001以降
}
}
catch ex
{
write "エラー #", ex.Code, ": ", ex.Name, " : ", ex.Location, " ", ex.Data
return
}
}
}
上の例では、Stcount が 1 より小さい場合、以下のようなエラーが出力されます。
USER>do ##class(User.Test).Embedded Python で Excel のデータを IRIS グローバルに格納する方法 では Excel データを pandas.DataFrame に取り込んで、それを InterSystems IRIS グローバルに保存する方法をご紹介しました。
今回は「lxml を使用し Web スクレイピングした表(テーブル)のデータを InterSystems IRIS グローバルに格納する」方法をご紹介します。
※以下は Windows 上の IRIS でのインストール方法になります。
UNIX ベースのシステムでは、pip3 コマンドを使用してインストールします。詳細は ドキュメント をご覧ください。
最初に、irispip コマンドで必要なライブラリをインストールします。
今回は、pandas、lxml の2つのライブラリをインストールします。
Jupyter Notebook は、多数の異なるマークアップ言語とプログラミング言語でコードを実行できるセルで構成された対話型環境です。
Jupyter はこれを実現するために適切なカーネルに接続しなければなりませんが、 ObjectScript カーネルがなかったため、それを作成することにしました。
こちらから試すことができます。
結果を少し覗いてみましょう。

Jupyter カーネルはいくつかの方法で作成できます。 ここでは、Python ラッパーカーネルを作成することにしましょう。
ipykernel.kernelbase.Kernel のサブクラスを作成して、特定の言語で実行されるコードを受け取る do_execute メソッドを実装する必要があります。
つまり、ある ObjectScript コードを取得して、何らかの方法で実行し、ノートブックにその結果を返すという概念です。
でも、実際にはどうすればよいのでしょうか。 では、その方法をさらに噛み砕いて説明しましょう。
まず初めに、コードを IRIS に送る必要があります。 ここで使用するのが、Python 用の IRIS Native API です。
ここでは、irisnative パッケージをインポートして、接続を確立するだけです。
開発者の皆さん、こんにちは!
Flaskを使うと簡単にWebアプリが作成できるようでしたので、Embedded Pythonを利用してIRISに保存した月毎の歩数データ(テーブル/グローバル)を matplotlibを利用してグラフ表示する簡単なWebアプリを作成してみました。
使っているPythonスクリプトファイルやHTMLは以下の通りです(図例はテーブルからデータを取る例ですが、サンプルにはグローバルからデータを取得する例も含まれます)。
.png)
サンプルはこちらに置いています👉https://github.com/Intersystems-jp/WalkSteps
IRISのインストール環境に合わせて、サンプルのディレクトリを分けています。
<Windows にIRISをインストールされている場合>
https://github.com/Intersystems-jp/WalkSteps/tree/master/Windows をご覧ください。
Windows上Pythonのバージョンは3.9で試しています。3.10では動作しませんでしたので、3.9でお試しください。
<Windows以外にIRISをインストールされている場合>
https://github.com/Intersystems-jp/WalkSteps/tree/master/Linux をご覧ください。
これは InterSystems FAQ サイトの記事です。
ObjectScript言語は、Java言語等がサポートしている型キャストをサポートしていません。
ただし、メソッドのキャストはサポートしています。
詳細は以下ドキュメントページをご参照ください。
InterSystems ObjectScript言語はJava言語や.NetのC#言語のような静的型付き言語とは異なり、動的型付き言語に分類される言語になります。
従って型の解釈は実行時に行われ、宣言時に型を合わせるという必要性がないため型キャストのような仕組みを用意していません。
これは InterSystems FAQ サイトの記事です。
ミラーリングが同期の対象とするのはデータベースファイルのみです。
アプリケーションに必要なその他のファイル(CSPファイル、画像ファイル、ドキュメントファイルなど)をミラーセットを構成する二台のサーバー間で同期させるには、
などの方法が考えられます。
また、2の方法ではWindows上ではRoboCopy、Linuxの場合にはrsyncという同期ソフトを使った実例があります。
irisコマンドのqlistまたはlistを使用して出力先をファイルにして出力することができます。
qlistの結果は、^を区切り文字としたテキスト形式で出力されます。
^で区切られた3番目の部分に稼働状況のデータがあります。
$ iris qlist IRIS > iris.log
$ cat iris.log
IRIS^/Applications/iris^2022.1.0.164.0^running, since Thu Apr 7 16:37:03 2022^iris.cpf^1972^52773^0^alert^IRIS^^^/Applications/iris
listの場合には、先頭にstatus:と表示された行に稼働状況のデータがあります。
Unix系のOSの場合
$ iris list IRIS > iris.log
$ cat iris.log
Configuration 'IRIS' (default)
directory: /Applications/iris
versionid: 2021.2.0.650.0
datadir: /Applications/iris
conf file: iris.タスク成功時・失敗時、それぞれ通知メールを送信することができます。
そのためには事前にターミナルからTASKMGRルーチン を実行して、メールサーバを登録する必要があります。
> zn "%SYS"
> do ^TASKMGR
1) タスク作成
2) タスク編集
3) タスク一覧
4) タスク削除
5) タスク一時停止
6) タスク再開
7) タスク実行
8) タスクリポート
9) タスクマネージャオプション
10) 終了
そして、メニューから9) タスクマネージャーオプションを選んで
オプション?9
1) タスクマネージャ情報
2) タスクマネージャを開始する
3) タスクマネージャ一時停止
4) タスクマネージャ再開
5) タスクマネージャ履歴
6) メール設定定義
7) 終了
次に6) メール設定定義を選びます。
オプション?6
1) メールサーバ定義
2) サーバポート定義
3) 返信先定義
4) 送信者定義
5) タイムゾーン
6) 認証ユーザ定義
7) SSL 構成を定義
8) 終了
そこで以下2点を最低限設定します。
1) メールサーバ定義 (SMTPサーバ名) 例: xxxxxx.xxxxx.com
これは、2022.2の開発者プレビュープログラムのリリース第3弾です。 プレビューリリースは、隔週で更新される予定で、準備が整い次第、機能を追加していく予定です。 2022.2では、SQL管理、クラウド統合、KafkaおよびJMSアダプタ、SQL Loaderなどにおいて、多くのアップデート、修正、機能強化が行われています。 製品改善のため、開発者コミュニティを通じてフィードバックをお寄せください
列指向ストレージに関して、Early Access Program (EAP) を受け付けています。ご興味のある方はぜひ Early Access Program にご参加ください。
CDリリースには、サポートされているすべてのプラットフォーム向けの標準インストールパッケージと、OCI(Open Container Initiative、別名Dockerコンテナ)形式のコンテナイメージが付属しています。 詳細については、サポートされるプラットフォームのドキュメントをご参照ください。
インストールパッケージとプレビューキーは、WRCのプレビューダウンロードサイトまたは評価サービスのウェブサイト(2022.2へのアクセスには「Show Preview Software」をチェックしてください)から入手できます。