開発者の皆さん、こんにちは!
InterSystems Full Stack コンテスト 2022 の投票が始まりました!
🔥 ベストアプリケーションだ! 🔥と思う作品に投票をお願いします!
投票方法は以下ご参照ください。
開発者の皆さん、こんにちは!
InterSystems Full Stack コンテスト 2022 の投票が始まりました!
🔥 ベストアプリケーションだ! 🔥と思う作品に投票をお願いします!
投票方法は以下ご参照ください。
この記事では、gRPC とは何か、そして IRIS 組み込み Python を使って公式の Hello World を実行する例を紹介します。
ここで紹介するすべてのコードは、こちらのプロジェクトリポジトリにあります。
gRPC(gRPC リモートプロシージャーコール)は、RPC プロトコルに基づく API アーキテクチャー式です。 このプロジェクトは、2015 年に Google によって作成され、Apache 2.0 の下にライセンス供与されています。 現在、プロジェクトは、Cloud Native Computing Foundation(CNCF)によってサポートされています。
マイクロサービス式のアーキテクチャのサービスなど、バックエンド間でサービスを接続することで使用することができます。
ほとんどの RPC ベースのプロトコルは、IDL(インターフェース記述言語)を使用して、サーバーとクライアント間の通信コントラクトを定義します。
gRPC は、プロトコルバッファという、シリアライザーメカニズムフォーマットを使用します。
このフォーマットの目的は、メソッドとデータ構造を定義できるという点で、WSDL に似ています。
IRIS 2022.1では Embedded Python が導入されました。Embedde Python によって、IRISの独自言語である ObjectScript と Python の親和性の良さをぜひ実感いただけると嬉しいです。今回の記事では、日本語PDFをPythonライブラリを利用して作成し、さらに ObjectScript と融合するところまで見ていただこうと思います。
前編から少し間が空きましたが、シアトルで開催されたグローバルサミット2022の数日間を簡単に振り返ってみましょう。
After a short (or too long) pause from the previous part here is a short recap of the next few days of the Global Summit 2022 in Seattle!
前回同様、キーノートで始まりました(明日から視聴できます
)。 しかし、6月21日の基調講演とは異なり、その翌日はData Platform IRISに特化した内容となっています。前回同様、トピックとプレゼンターはこちらで確認できます。注目のスピーチは、ベストセラー作家、コンサルタント、破壊的技術のスペシャリストであるGeoffrey Moore氏
開発者コミュニティのメンバー、インターシステムズパートナー、そしてインターシステムズ製品に興味を持つ多くの人々が、待ち望んでいた時がやってきました。ついに、長い間お待たせしていたGlobal Summitが今年開催することができました。今回は、シアトルでの開催です。 急な坂道、エリオット湾の絶景、そして地元の人に言わせれば、常に天候の悪い美しい都市 ![]()

iris コマンドを使用することで実行できます。
iris コマンド(iris.exe)は、<インストールディレクトリ>\bin にインストールされています。 書式:
iris run インスタンス名 tag^routine([parameter-list]) ネームスペース名iris run インスタンス名 ##CLASS(package.class).method([parameter-list]) ネームスペース名インスタンス名は、管理ポータル(システム管理ポータル)の右上にある [インスタンス:] に表示されている文字列です。
実行する環境に応じて一部の文字 ^ や " をエスケープする必要があります。
Windowsの場合は、以下のようなエスケープが必要となります。



例: USERネームスペースで do info^test(123,"abc") を実行します。
c:\InterSystems\IRIS\bin>iris terminal IRIS info^^test(123,\"abc\") USER
例: USERネームスペースで do ##class(Test.Class1).test(123,"abc") を実行します。
c:\InterSystems\IRIS\bin>iris run IRIS ##class(Test.Class1).CPU:サポート対象OSが問題なく動作するもの
以下のページをご参考ください。
ディスク容量:アプリケーションの要件を除外した場合、 IRISをインストールするためには、最低1.5GB以上の空き容量が必要です。
実際に必要となる容量は、インストーラでセットアップタイプで "カスタム(Custom)"
を選択すると、インストールコンポーネント毎にご確認いただけます。
メモリ:推奨メモリー値は、アプリケーションや物理メモリサイズによるため
一概には言えませんが、IRISの全プロセスで使用するメモリサイズは以下になります。
①プロセスパーティション * ⑤プロセス数
+
②データベースキャッシュ
+
③ルーチンキャッシュ
+
④一般ヒープメモリ
計算式でのこれらのパラメータは、業務アプリケーションの特性により異なってきます。
以前に導入実績のある業務アプリケーションの場合、既存システムでどの様に設定されたかも参考にしてください。
①プロセスパーティション(プロセスあたりの最大メモリ)
管理ポータルで設定します。既定値は 262,144(KB)です。
IRISがc:\InterSystems\IRISにインストールされているとします。
(1) a.py を C:\InterSystems\IRIS\lib\python に置きます。
a.py
def test():
print('Hello World!')
(2) それを IRISのクラスから実行します。
ClassMethod xx() [ Language = python ]
{
import a
a.test()
}
USER>do ##class(User.test).xx()
Hello World!
もし、a.py を別のディレクトリ C:\temp に置きたい場合は、C:\temp\ をPythonのPATHに指定する必要があります。
以下の方法があります。
(A) 管理ポータル>システム管理>構成>追加設定>メモリ詳細>PythonPath
の値に C:\tempを設定し、a.pyをそのディレクトリに置き、 IRISを再起動します。
ClassMethod xx() [ Language = python ]
{
import a
a.test()
}オリジナルの「InterSystems IRIS で Python を使って IMAPクライアントを実装する」は、埋め込みPythonを使用してIMAPインバウンドアダプタを実装されていますが、最近メールプロバイダがあいついでoAuth2認証しか受け付けなくなってきているので、その対応をしてみました。
本稿のGitHubはこちらです。
GMAILに対してメールの送受信を可能とするためにオリジナルに以下の修正を施しています。
3.添付ファイルが存在する場合、追加設定/ファイル・パスで指定したファイルパス(既定値は/var/tmp/)上に保存します。
5.の実現は、プロダクション(IMAPPyProduction.
皆さん、こんにちは。
IRIS 履歴モニタープロジェクトが更新されました。ZPM とビルトインの REST API /api/monitor/metrics を使用します。
開発者の皆さん、こんにちは!
PythonでExcelからPDFへ変換を行うには、pywinを使うとできるらしいので、IRISにあるデータをDataframeに設定した後Excelに出力し、ExcelからPDFに変換する流れを、Embedded Pythonで試してみました。
メモ:pywinはWindows環境下で動くモジュールのようです。
Excelに出力するデータですが、例では、SELECTの結果をDataframeに格納する方法を利用しています。グローバル変数の情報をDataframeに格納する方法については、以下の記事で詳しくご紹介しています。ぜひご参照ください。
Embedded Python で IRIS グローバル($LB) を Pandas Dataframe に変換する方法
まずは、必要なモジュールをインストールする必要があるので、pywin32 モジュールを irispipを使ってインストールします。
以下の例では、IRIS for Health が c:\InterSystems\IRISHealth にインストールされている状態で実行しています。
Embedded Pythonは、IRIS/IRIS for Health どちらでも利用できます。
開発者の皆さん
こんにちは。
シアトルで開催されたグローバル・サミット2022は、ちょうど1週間前に終了しましたが、会場にいながら聞き逃した方や、何らかの理由でこの対面式イベントに全く参加できなかった方のために(あるいは、記憶をリフレッシュしてもう一度聞きたい方のために)、キーノートがすでに公開されています。
前置きはこれくらいにして、グローバルサミット最初はコミュニティの皆さんからのご挨拶です。
それでは、このYouTubeプレイリストでグローバルサミット2022全3日間のキーノートをお楽しみください。
これは InterSystems FAQ サイトの記事です。
Question:
IRIS Data Platformは大量のトラフィック処理に耐えられますか?
Answer:
IRIS Data Platformは他のデータベースシステムに比較してデータの処理スピードおよび処理能力の面で優れています。
ESGという外部機関が実際に他社データベース製品とのベンチマークテストを実施した結果に関するレポートを公表しています。
またウルシステムズ社による検証結果も公開されています。
ご参考いただければ幸いです。
本稿は、「InterSystems IRIS、IRIS for Health、HealthShare Health Connect 2022.1がリリースされました!」でご案内している内容を、補足解説する内容となります。
米国本社プロダクトマネージャーによる本リリースのハイライトのご紹介ビデオ(英語)です。 https://www.intersystems.com/resources/whats-new-in-intersystems-iris-2022-1
年一度のEMリリースです。
これは InterSystems FAQ サイトの記事です。
バージョン2015.2以降から、Windows上のインストール環境では、サービス・アカウントを
「Windowsコントロールパネル > 管理ツール > サービス > InterSystems IRIS/Cache Controller for XX」
の「ローカル・システムアカウント」から Windows の任意の管理者アカウントに変更した場合に <NOTOPEN> エラー または -1 が返ります。
この状況を回復するためには、以下2つの設定をする必要があります。
1. 「Windowsコントロールパネル > 管理ツール > サービス > InterSystems IRIS/Cache Controller for XX」 のログオン設定を、「ローカルシステムアカウント」に戻す 2. irisinstall/cinstall コマンドを使用してInterSystems IRIS サービス・アカウントを変更する
2 の手順は以下になります。
Windowsコマンドプロンプトを管理者権限で起動し、以下コマンドを使用して変更します。
この設定を有効するためには、インスタンスの再起動が必要です。
これは InterSystems FAQ サイトの記事です。
デフォルトではテーブルのカラムの順番はシステムが自動的に決定します。
順番を変更するにはクラス定義を行う際にプロパティ・キーワード SqlColumnNumber でプロパティ毎に明示的に順番を設定してください。
例:
ドキュメントは以下をご参照ください。
なお、SQLテーブル名を変えたい場合は SqlTableName 、カラム名(フィールド名)を変えたい場合は SqlFieldName を指定します。
ともに、永続クラスのみに適用されます。
このたび InterSystems IRIS 2022.1 の日本語ドキュメントが完成しました。以下のURLでご参照いただけます。
皆さん、こんにちは!
職場で持ち上がった単純なリクエストで始めた個人プロジェクトを紹介したいと思います。
使用している Caché ライセンス数を調べることはできますか?
コミュニティに掲載されている他の記事を読んでみたところ、David Loveluck が投稿したぴったりの記事が見つかりました。
APM - Using the Caché History Monitor(APM - Caché 履歴モニターを使用する)
https://community.intersystems.com/post/apm-using-cach%C3%A9-history-monitor
そこで、David の記事を参考に、Caché 履歴モニターを使って、リクエストされた情報を表示して見ました。
「どのテクノロジーを使用するのか」という疑問に対し
私は CSP に決定しました。単純で強力なテクノロジーであるため、私が担当するお客様は Caché が単なる MUMPS/ターミナルではないことに気づくでしょう。
ライセンス、データベース増加状況、CSP セッションの履歴を表示するページを作成した後、「システムダッシュボードとプロセス」ページのデザインを新装することにしました。
私の Caché インスタンスではすべてうまく機能します。
でも、IRIS はどうでしょうか?
開発者の皆さん、こんにちは!
この記事では、Embedded Pythonをご自身の好きなタイミングで学習できる📚セルフラーニングビデオ📚の YouTube プレイリストをご紹介します!
👆こんな具合に👆学習内容別 Embedded Python セルフラーニングビデオを公開しています!
この記事では、これから Embedded Python でプログラミングを開始してみたい方向けに最適なビデオをご紹介します!
以下の内容を確認できるプレイリスト:1-Embedded Python概要編 - YouTube をご用意しています。
この後、実際の操作を試されたい場合は、次のプレイリスト:2-Embedded Python利用前の準備 - YouTube が最適です。
操作を開始する前に、必要な利用前の準備についてご紹介しているプレイリスト:2-Embedded Python利用前の準備 - YouTube をご用意しています。
Python から InterSystems IRIS へ接続する方法の1つである「PyODBC」(※)の利用方法をご説明します。
※ Python からのアクセスは、PyODBCの他に、Native API を利用した接続方法もあります。Native APIを利用してIRISのグローバル変数にアクセスする方法については、別の記事でご説明します。
もくじ
最初~0:52 復習ビデオ/関連ビデオについて (セルフラーニングビデオの索引記事もご参照ください)
0:52~2:04 今回の説明内容解説
2:05~3:44 PyODBCについてと準備
3:43~5:25 IRISに接続する
5:25~7:55 CREATE TABLEの実行
7:55~10:16 INSERTの実行
10:16~14:04 SELECTの実行
14:04~最後まで まとめ
※ YouTubeでご覧いただくと、「もくじ」の秒数クリックでビデオをジャンプできます。
開発者の皆さん、こんにちは!
Full Stackコンテスト 2022 のテクノロジーボーナスについてご紹介します!

この概念実証では、embedded Python で IRIS 相互運用フレームワークをどのように使用できるかについて示すことを目的としています。
import grongier.pex
import iris
import MyResponse
class MyBusinessOperation(grongier.pex.BusinessOperation):
def OnInit(self):
print("[Python] ...MyBusinessOperation:OnInit() is called")
self.LOGINFO("Operation OnInit")
return
def OnTeardown(self):
print("[Python] ...MyBusinessOperation:OnTeardown() is called")
return
def OnMessage(self, messageInput):
if hasattr(messageInput,"_IsA"):
if messageInput._IsA("Ens.StringRequest"):
self.LOGINFO(f"[Python] ...This iris class is a Ens.StringRequest with this message {messageInput.StringValue}")
self.LOGINFO("Operation OnMessage")
response = MyResponse.MyResponse("...MyBusinessOperation:OnMessage() echos")
return response
ObjectScript は不要です。
@Yuri Marx のお陰で、非常に優れた Postgres から IRIS へのデータベース移行の例を確認できました。
私の個人的な問題は、DBeaver を移行ツールとして使用することです。
特に、以前の IRIS(それから Caché)の強みの 1 つは、JBDC または ODBC でアクセスできる限り任意の外部 Db にアクセスできる SQLgateways を利用できることであったためです。 そこで、これを実演するために、パッケージを拡張しました。
開発者の皆さん、こんにちは!21回目の InterSystems プログラミングコンテストを開催します!
お題は👉 🏆 InterSystems Full Stack コンテスト 2022 🏆 です!
期間: 2022年6月27日~7月17日まで(詳細は末尾をご参照ください)
💰賞金総額: $10,000 💰
こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。
現在テーブルを用いてシステムの設計を行っておりますが、
トランザクション中に、そのトランザクションの影響を受けずにテーブルを
更新するような仕組みが欲しいと考えております。
(トランザクションがRollbackされても、そのテーブルの更新だけは確定させたい。)
例えば$INCREMENT()はトランザクション中であっても、その制約を無視して値を更新できます。
そのような回避策がないかをご教示いただきたいです。
用途としては、連番を生成するAPIを作成していて、その値をテーブルで管理しています。
このAPIは複数プロセスから呼ばれることがありますが、
1トランザクション中の連続Updateにより、行ロックからテーブルロックへの昇格が行われる
(1000行以上行ロックをしたときのIRISの仕様)ことで、
他プロセスがAPIを利用できなくなるなどの影響が出ています。
今回のAPIに関しては、番号重複さえ起きなければよいので、そのような影響は受けたくありません。
極力グローバルは用いない設計としたいので、テーブルで対応したいです。
すいませんが、何か情報をお持ちの方はご回答いただけますと幸いです。
開発者コミュニティの皆さん
こんにちは。
ご存知のように、今年のグローバル・サミットは対面式です。ぜひ、皆さんとお会いしたいですね!
コミュニティのメンバー全員が参加できるわけではありませんので(私もです!)、メンバーからのメッセージビデオを制作することにしました 。🎥
この素晴らしいイベントに世界中から参加しましょう!🌏
このチャレンジでは、コミュニティメンバーに「あなたの国からこんにちは🙌」と言う短い(2〜3秒)ビデオをアップロード⬆️してください。その動画を他の動画と組み合わせて、グローバルサミット2022で紹介します。共有ファイルのリンクをDMで送るだけでもOKです。
では、またお会いしましょう!
これは、一般的なデータベース(PostgreSQL や MySQL など)から IRIS への移行に関する前回の記事に続く記事です。
PostgreSQL から移行する際に使用する場合と同じ手続きを使用します。 ただし、MySQL で使用されているデータ型は IRIS のデータ型に非常に似ているため、前回よりもさらに簡単に移行できます。 このため、列に変換ルールを作成する必要はありません。
GitHub では、2 つのデータベースをビルドして実行する docker compose プロジェクトをダウンロードできます。
サンプルを取得して実行するには、以下の手順に従います。
開発者の皆さん、こんにちは!
InterSystems グランプリコンテスト の投票結果が発表されました!この記事ではコンテスト受賞者を発表します📢
Postgres から IRIS にデータとデータスキーマを転送または移行する必要がある場合があります。 これを現時点で実行するにはいくつかのオプションがありますが、最も一般的なオプションは、DBeaver(https://openexchange.intersystems.com/package/DBeaver)または SQLGateway を使用する 2 つの方法です。 最初のオプションはこの記事で紹介しますが、2 つ目のオプションは Robert Cemper が書いた「SQLgateway を使ったデータベース移行」(https://community.intersystems.com/post/db-migration-using-sqlgateway)という優れた記事で紹介されています。この記事では、DBeaver を使った移行の実行方法を説明します。
GitHub では、2 つのデータベースをビルドして実行する docker compose プロジェクトをダウンロードできます。
.png)
開発者のみなさん、こんにちは!
前回のウェビナー開催から少し時間がたってしまいましたが、2022年06月28日 (火曜日) 12時半~ 30分程度のウェビナーを開催します!
今回は、新たに開講する「Embedded Python トレーニングコース」の内容をご紹介するウェビナーです。
新規開講コースでは、
を実際の操作を通してご理解いただけるよう、コースを3種類に分けております。
ウェビナーでは、
について、ご説明いたします。
まだ、インターシステムズ製品を使ったことがない!という方でもご参加いただけます。
特に、以下内容についてご興味をお持ちの方々にお勧めするウェビナーです。
皆様のご参加、心よりお待ち申し上げております![]()