記事 Toshihiko Minamoto · 7月 12, 2022 21m read

はじめに

この記事では、gRPC とは何か、そして IRIS 組み込み Python を使って公式の Hello World を実行する例を紹介します。

ここで紹介するすべてのコードは、こちらのプロジェクトリポジトリにあります。

gRPC

gRPC(gRPC リモートプロシージャーコール)は、RPC プロトコルに基づく API アーキテクチャー式です。 このプロジェクトは、2015 年に Google によって作成され、Apache 2.0 の下にライセンス供与されています。 現在、プロジェクトは、Cloud Native Computing Foundation(CNCF)によってサポートされています。

マイクロサービス式のアーキテクチャのサービスなど、バックエンド間でサービスを接続することで使用することができます。

プロトコルバッファ

ほとんどの RPC ベースのプロトコルは、IDL(インターフェース記述言語)を使用して、サーバーとクライアント間の通信コントラクトを定義します。

gRPC は、プロトコルバッファという、シリアライザーメカニズムフォーマットを使用します。

このフォーマットの目的は、メソッドとデータ構造を定義できるという点で、WSDL に似ています。

0
0 1366
記事 Seisuke Nakahashi · 7月 11, 2022 3m read

IRIS 2022.1では Embedded Python が導入されました。Embedde Python によって、IRISの独自言語である ObjectScript と Python の親和性の良さをぜひ実感いただけると嬉しいです。今回の記事では、日本語PDFをPythonライブラリを利用して作成し、さらに ObjectScript と融合するところまで見ていただこうと思います。

0
0 329
記事 Toshihiko Minamoto · 7月 11, 2022 3m read

前編から少し間が空きましたが、シアトルで開催されたグローバルサミット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!

前回同様、キーノートで始まりました(明日から視聴できますwink)。 しかし、6月21日の基調講演とは異なり、その翌日はData Platform IRISに特化した内容となっています。前回同様、トピックとプレゼンターはこちらで確認できます。注目のスピーチは、ベストセラー作家、コンサルタント、破壊的技術のスペシャリストであるGeoffrey Moore氏

0
0 318
記事 Toshihiko Minamoto · 7月 11, 2022 4m read

開発者コミュニティのメンバー、インターシステムズパートナー、そしてインターシステムズ製品に興味を持つ多くの人々が、待ち望んでいた時がやってきました。ついに、長い間お待たせしていたGlobal Summitが今年開催することができました。今回は、シアトルでの開催です。 急な坂道、エリオット湾の絶景、そして地元の人に言わせれば、常に天候の悪い美しい都市 cheeky

0
0 384
記事 Hiroshi Sato · 7月 11, 2022 2m read

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).
0
0 734
記事 Hiroshi Sato · 7月 11, 2022 2m read

CPU:サポート対象OSが問題なく動作するもの
以下のページをご参考ください。

 サポート対象プラットフォーム


ディスク容量:アプリケーションの要件を除外した場合、 IRISをインストールするためには、最低1.5GB以上の空き容量が必要です。
 

ストレージの計画

 

 実際に必要となる容量は、インストーラでセットアップタイプで "カスタム(Custom)"

を選択すると、インストールコンポーネント毎にご確認いただけます。


メモリ:推奨メモリー値は、アプリケーションや物理メモリサイズによるため

一概には言えませんが、IRISの全プロセスで使用するメモリサイズは以下になります。


①プロセスパーティション * ⑤プロセス数

 +

②データベースキャッシュ

 +

③ルーチンキャッシュ

 +

④一般ヒープメモリ


計算式でのこれらのパラメータは、業務アプリケーションの特性により異なってきます。


以前に導入実績のある業務アプリケーションの場合、既存システムでどの様に設定されたかも参考にしてください。

 

 ①プロセスパーティション(プロセスあたりの最大メモリ)

   管理ポータルで設定します。既定値は 262,144(KB)です。

0
0 807
記事 Hiroshi Sato · 7月 11, 2022 1m read

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()
}
0
0 662
記事 Tomohiro Iwamoto · 7月 11, 2022 2m read

オリジナルの「InterSystems IRIS で Python を使って IMAPクライアントを実装する」は、埋め込みPythonを使用してIMAPインバウンドアダプタを実装されていますが、最近メールプロバイダがあいついでoAuth2認証しか受け付けなくなってきているので、その対応をしてみました。

本稿のGitHubはこちらです。

変更点

GMAILに対してメールの送受信を可能とするためにオリジナルに以下の修正を施しています。

  1. IMAP(Python版)インバウンドアダプタにoAuth2認証およびRefreshTokenによるAccessTokenの更新を追加
  2. oAuth2認証およびRefreshTokenによるAccessTokenの更新機能を持つSMTPアウトバウンドアダプタを新規作成
  3. IMAPにバイナリの添付ファイルの処理を追加
  4. メッセージ削除に、推奨APIであるclient.uid("STORE")を使用するように変更
  5. ClientIdなど、センシティブな情報をコンテナ起動時に動的に適用するように変更
  6. 日本語使用時の文字化けに対処

3.添付ファイルが存在する場合、追加設定/ファイル・パスで指定したファイルパス(既定値は/var/tmp/)上に保存します。

5.の実現は、プロダクション(IMAPPyProduction.

0
0 668
記事 Mihoko Iijima · 7月 4, 2022 7m read

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

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 どちらでも利用できます。

0
0 1331
お知らせ Toshihiko Minamoto · 7月 4, 2022

開発者の皆さん
こんにちは。
シアトルで開催されたグローバル・サミット2022は、ちょうど1週間前に終了しましたが、会場にいながら聞き逃した方や、何らかの理由でこの対面式イベントに全く参加できなかった方のために(あるいは、記憶をリフレッシュしてもう一度聞きたい方のために)、キーノートがすでに公開されています。

前置きはこれくらいにして、グローバルサミット最初はコミュニティの皆さんからのご挨拶です。

それでは、このYouTubeプレイリストでグローバルサミット2022全3日間のキーノートをお楽しみください。

0
0 141
記事 Megumi Kakechi · 6月 7, 2021 1m read

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

Question:

IRIS Data Platformは大量のトラフィック処理に耐えられますか?

Answer:

IRIS Data Platformは他のデータベースシステムに比較してデータの処理スピードおよび処理能力の面で優れています。

ESGという外部機関が実際に他社データベース製品とのベンチマークテストを実施した結果に関するレポートを公表しています。

またウルシステムズ社による検証結果も公開されています。

ご参考いただければ幸いです。

ESGによるスピードテストの検証結果

ウルシステムズ社ベンチマーク結果レポート
 

1
0 244
記事 Tomohiro Iwamoto · 7月 3, 2022 18m read

IRISリリース2022.1のご紹介

本稿は、「InterSystems IRIS、IRIS for Health、HealthShare Health Connect 2022.1がリリースされました!」でご案内している内容を、補足解説する内容となります。

紹介ビデオ

米国本社プロダクトマネージャーによる本リリースのハイライトのご紹介ビデオ(英語)です。 https://www.intersystems.com/resources/whats-new-in-intersystems-iris-2022-1

リリース内容

年一度のEMリリースです。

0
0 635
記事 Megumi Kakechi · 7月 3, 2022 2m read

これは 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コマンドプロンプトを管理者権限で起動し、以下コマンドを使用して変更します。
この設定を有効するためには、インスタンスの再起動が必要です。

0
0 591
記事 Megumi Kakechi · 6月 29, 2022 1m read

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

デフォルトではテーブルのカラムの順番はシステムが自動的に決定します。

順番を変更するにはクラス定義を行う際にプロパティ・キーワード SqlColumnNumber でプロパティ毎に明示的に順番を設定してください。

例:

Property Name As %String [SqlColumnNumber = 2];


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

SqlColumnNumber


なお、SQLテーブル名を変えたい場合は SqlTableName 、カラム名(フィールド名)を変えたい場合は SqlFieldName を指定します。

ともに、永続クラスのみに適用されます。

0
0 179
InterSystems公式 Seisuke Nakahashi · 6月 28, 2022

このたび InterSystems IRIS 2022.1 の日本語ドキュメントが完成しました。以下のURLでご参照いただけます。

 

ランチャーから日本語ドキュメントを参照したい

0
0 584
記事 Toshihiko Minamoto · 6月 28, 2022 5m read

皆さん、こんにちは!

職場で持ち上がった単純なリクエストで始めた個人プロジェクトを紹介したいと思います。 

使用している 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 はどうでしょうか?

0
0 253
記事 Mihoko Iijima · 6月 28, 2022 5m read

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

この記事では、Embedded Pythonをご自身の好きなタイミングで学習できる📚セルフラーニングビデオ📚の YouTube プレイリストをご紹介します!

👆こんな具合に👆学習内容別 Embedded Python セルフラーニングビデオを公開しています!

 

この記事では、これから Embedded Python でプログラミングを開始してみたい方向けに最適なビデオをご紹介します!
​​​​​​

◆ Embedded Python概要から学習を始めたい方はこちら👇

以下の内容を確認できるプレイリスト:1-Embedded Python概要編 - YouTube をご用意しています。

  • Embedded Pythonとは?
  • Python開発者から見た使い道(解説&実演)
  • IRIS開発者からみた使い道(解説&実演)

この後、実際の操作を試されたい場合は、次のプレイリスト:2-Embedded Python利用前の準備 - YouTube が最適です。

 

◆ Embedded Python利用前の準備 を知りたい方はこちら👇

操作を開始する前に、必要な利用前の準備についてご紹介しているプレイリスト:2-Embedded Python利用前の準備 - YouTube をご用意しています。

0
0 842
記事 Mihoko Iijima · 6月 28, 2020 1m read

Python から InterSystems IRIS へ接続する方法の1つである「PyODBC」(※)の利用方法をご説明します。

※ Python からのアクセスは、PyODBCの他に、Native API を利用した接続方法もあります。Native APIを利用してIRISのグローバル変数にアクセスする方法については、別の記事でご説明します。

もくじ

最初~0:52 復習ビデオ/関連ビデオについて (セルフラーニングビデオの索引記事もご参照ください)

0:52~2:04 今回の説明内容解説

2:05~3:44 PyODBCについてと準備

PyODBCのGitHub

3:43~5:25 IRISに接続する

5:25~7:55 CREATE TABLEの実行

7:55~10:16 INSERTの実行

10:16~14:04 SELECTの実行

14:04~最後まで まとめ

※ YouTubeでご覧いただくと、「もくじ」の秒数クリックでビデオをジャンプできます。

 

サンプルコード(Git)

HelloWorldPyODBC.ipynb

4
0 908
お知らせ Mihoko Iijima · 6月 24, 2022

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

Full Stackコンテスト 2022 のテクノロジーボーナスについてご紹介します!​​​​​

  • 気候変動問題に関係したもの  - 5
  • isc.rest パッケージ - 2
  • isc.ipm.js パッケージ - 2
  • Embedded Python - 3
  • Adaptive Analytics (AtScale) キューブの使用 - 2
  • Docker コンテナの使用 - 2 
  • ZPM パッケージのデプロイ - 2
  • オンラインデモの作成 - 2
  • ユニットテストの使用 - 2
  • コミュニティへの最初の記事の投稿 - 2
  • コミュニティへの2つ目の記事投稿 - 1
  • Code Quality をパスする - 1
  • YouTube にビデオを投稿する - 3<--break->
0
0 116
記事 Toshihiko Minamoto · 6月 24, 2022 9m read

1. interoperability-embedded-python

この概念実証では、embedded PythonIRIS 相互運用フレームワークをどのように使用できるかについて示すことを目的としています。

1.1. 目次

1.2. 例

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

1.3. コンポーネントの登録

ObjectScript は不要です

0
0 461
記事 Toshihiko Minamoto · 6月 21, 2022 3m read

@Yuri Marx のお陰で、非常に優れた Postgres から IRIS へのデータベース移行の例を確認できました。
私の個人的な問題は、DBeaver を移行ツールとして使用することです。
特に、以前の IRIS(それから Caché)の強みの 1 つは、JBDC または ODBC でアクセスできる限り任意の外部 Db にアクセスできる SQLgateways を利用できることであったためです。 そこで、これを実演するために、パッケージを拡張しました。

0
0 365
お知らせ Mihoko Iijima · 6月 19, 2022

開発者の皆さん、こんにちは!21回目の InterSystems プログラミングコンテストを開催します!

お題は👉 🏆 InterSystems Full Stack コンテスト 2022 🏆 です!

期間: 2022年6月27日~7月17日まで(詳細は末尾をご参照ください)

💰賞金総額: $10,000 💰


0
0 192
質問 Yuji Ohata · 6月 13, 2022

こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。

現在テーブルを用いてシステムの設計を行っておりますが、
トランザクション中に、そのトランザクションの影響を受けずにテーブルを
更新するような仕組みが欲しいと考えております。
(トランザクションがRollbackされても、そのテーブルの更新だけは確定させたい。)

例えば$INCREMENT()はトランザクション中であっても、その制約を無視して値を更新できます。
そのような回避策がないかをご教示いただきたいです。

 

用途としては、連番を生成するAPIを作成していて、その値をテーブルで管理しています。
このAPIは複数プロセスから呼ばれることがありますが、
1トランザクション中の連続Updateにより、行ロックからテーブルロックへの昇格が行われる
(1000行以上行ロックをしたときのIRISの仕様)ことで、
他プロセスがAPIを利用できなくなるなどの影響が出ています。
今回のAPIに関しては、番号重複さえ起きなければよいので、そのような影響は受けたくありません。

極力グローバルは用いない設計としたいので、テーブルで対応したいです。
すいませんが、何か情報をお持ちの方はご回答いただけますと幸いです。

4
0 525
お知らせ Toshihiko Minamoto · 6月 15, 2022

開発者コミュニティの皆さん
こんにちは。
ご存知のように、今年のグローバル・サミットは対面式です。ぜひ、皆さんとお会いしたいですね!
コミュニティのメンバー全員が参加できるわけではありませんので(私もです!)、メンバーからのメッセージビデオを制作することにしました 。🎥 
この素晴らしいイベントに世界中から参加しましょう!🌏

 このチャレンジでは、コミュニティメンバーに「あなたの国からこんにちは🙌」と言う短い(2〜3秒)ビデオをアップロード⬆️してください。その動画を他の動画と組み合わせて、グローバルサミット2022で紹介します。共有ファイルのリンクをDMで送るだけでもOKです。

締切: 6月18日(金)です!

では、またお会いしましょう!

0
0 117
記事 Toshihiko Minamoto · 6月 14, 2022 6m read

これは、一般的なデータベース(PostgreSQL や MySQL など)から IRIS への移行に関する前回の記事に続く記事です。
PostgreSQL から移行する際に使用する場合と同じ手続きを使用します。 ただし、MySQL で使用されているデータ型は IRIS のデータ型に非常に似ているため、前回よりもさらに簡単に移行できます。 このため、列に変換ルールを作成する必要はありません。

移行プロセスにサンプルデータを取得

GitHub では、2 つのデータベースをビルドして実行する docker compose プロジェクトをダウンロードできます。

  • ソースデータベース: サンプルデータベースを含む MySQL データベースの Docker インスタンス。
  • ターゲットデータベース: ソースデータベースを受け取る準備のできたスキーマを含む InterSystems IRIS データプラットフォームの Docker インスタンス。

サンプルを取得して実行するには、以下の手順に従います。

  1. git リポジトリの https://github.com/yurimarx/migration-mysql-iris に移動します。
  2. プロジェクトを Clone します。git clone https://github.com/yurimarx/migration-mysql-iris.
0
0 361
記事 Toshihiko Minamoto · 6月 7, 2022 7m read

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 プロジェクトをダウンロードできます。

  • ソースデータベース: サンプルデータベースを含む Postgres データベースの Docker インスタンス。
0
0 625
お知らせ Mihoko Iijima · 6月 6, 2022

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

前回のウェビナー開催から少し時間がたってしまいましたが、2022年06月28日 (火曜日) 12時半~ 30分程度のウェビナーを開催します!

今回は、新たに開講する「Embedded Python トレーニングコース」の内容をご紹介するウェビナーです。

新規開講コースでは、

  • Python開発者からみた Embedded Python でできること
  • IRIS開発者からみた Embedded Python でできること

を実際の操作を通してご理解いただけるよう、コースを3種類に分けております。

ウェビナーでは、

  •  Embedded Python とは?
  •  Embedded Python でできること
  •  新規開講コース(3種類)内容ご紹介

について、ご説明いたします。

まだ、インターシステムズ製品を使ったことがない!という方でもご参加いただけます。

特に、以下内容についてご興味をお持ちの方々にお勧めするウェビナーです。

  • Pythonに興味がある
  • Pythonの便利さを体験してみたい
  • Pythonでデータベースプログラミングをしてみたい

お申し込みは👉 こちらから!

皆様のご参加、心よりお待ち申し上げておりますlaugh

0
0 148