クリアフィルター
記事
Mihoko Iijima · 2025年6月1日
これは InterSystems FAQ サイトの記事です。
InterSystems 製品では、ユーザが持つロールによって「InterSystems 製品内で何ができるのか」が決まります。
では、ロールには何が含まれているのでしょうか。
ロールには、複数の特権を含めることができます。特権とは、リソース(保護対象)に対する許可の設定を指しています。
本記事では、IRIS の開発者である山田さん(Yamada) を例に、以下の内容をご説明します。
1) ロールから付与される特権(=リソースに対する許可)について具体例を利用した確認方法
2) ロールを利用したセキュリティ設定について
《ご参考》
ビデオでの解説もあります。ラーニングパスの「InterSystems IRIS 管理の基本」の「4. セキュリティの構成と管理」をご参照ください。
ラーニングパスには、管理者ではないけれど管理概要も知っておきたい方向けの「開発者向け InterSystems IRIS の管理概要」もあります。ぜひご参照ください。
1) ロールから付与される特権(=リソースに対する許可)について具体例を利用した確認方法
山田さんは開発者であるため、VSCode から T1 ネームスペースにアクセスし開発をしています。また、管理ポータルのシステムエクスプローラーメニューについても、T1 ネームスペースに対して操作ができるようにロールが付与されています。
現在、山田さんに付与されているロールは以下の通りです。
%Developer ロール (開発者用ロール)
%DB_T1ロール
《付与されるリソースのイメージ(全リソースについて記載していません)》
このロールから具体的にどのような特権が提供されているか、管理ポータルを利用して山田さんのプロファイルを参照します。
管理ポータル > システム管理 > セキュリティ > ユーザ > Yamadaの行の右端にある「プロファイル」のリンクをクリック
プロファイルのリンクをクリックした後は以下の表示です。
※ 権限の表はまだ下に続いていますが、図例は省略しています。
特権は保護対象であるリソースに対する【許可(READ/WRITE/USE)】の組み合わせで、データベースに対しては R(READ)または W(WRITE) 、接続経路(ターミナルや Mirror など)、管理ポータルメニュー、ユーザのアプリケーションに対しては U(USE)許可を設定できます。
山田さんに付与されている %Developer ロールから提供されるリソースの 1つ %Development リソースに付与されている許可を確認します。
%Developement リソースはインストール時用意される事前定義リソースで、管理ポータルのシステムエクスプローラーメニューが使用するアプリケーションパス (/csp/sys/exp) や VSCode から IRIS に接続する際内部的に使用している /api/aterlier のパスやクラスリファレンスのパス /csp/documatic に対しての U(USE:利用)許可が設定されています。
次に、%DB_T1 ロールから付与されるデータベース用リソース:%DB_T1 の許可を確認すると、 RW(READ と WRITE)が設定されています。
※ データベース用リソースとは、セキュリティ設定を強化する際に個々のデータベースに対して設定する定義で通常 %DB_データベース名で作成します。未設定のデータベースは、%DB_%DEFAULT リソースに含まれます。データベース用リソースを作成するとリソースに対する READ/WRITE の許可がセットされたデータベース用ロール(%DB_データベース名)が自動的に作成されます。
リソースには全ユーザに対して許可を与える設定もありパブリックで許可している設定は、プロファイルの「パブリックリソースにより付与」の列に表示されます。
つまり、リソースは、データベースであったり、ターミナルや Web ゲートウェイのような接続経路であったり、管理ポータルメニューやアプリケーションのエンドポイントだったり、保護対象となる何かを指していることがわかります。
この「保護対象」に対してどの許可を持つかをロールにまとめて定義し、そのロールをユーザに付与することで保護対象のリソースに対してアクセスできる・できない、が決まります。
※ 「アセット」は、セキュリティ設定項目上登場しない用語ですが、InterSystems 製品の保護対象の総称として使用している用語です。
ここまでの流れで、InterSystems 製品に対してセキュリティ設定を行う場合に登場する、ロール、特権、リソース、許可 の用語の意味を確認できました。
2) ロールを利用したセキュリティ設定について
次は、ロールを利用したセキュリティ設定について、具体的な例でご説明します。
開発者の山田さんは主に、クラス定義の作成・編集を行っています。開発者の鈴木さんは主に、テーブル定義の作成、データ登録や参照確認などを担当しています。
二人とも開発者であるため、管理ポータルのシステムエクスプローラーやターミナル(IRISへのログイン)、VSCode からのアクセスに必要な %Developer ロールと、T1 ネームスペースでソースコードの読み書きや実行に必要な %DB_T1 ロールが必要です。
この後、開発者が増える予定もあるため、個々のユーザにこの 2 つのロールを付与するのではなく、開発者用ロール:AppDeveloper を作成し、%Developer と %DB_T1 ロールのメンバーとして AppDeveloper ロールを設定し、新開発者は AppDeveloper ロールメンバーとして割り当てるほうが管理しやすくなりそうです。
また、SQLでテーブル定義を作成する場合は、SQL管理権限の %CREATE_TABLE が最低限必要なのと、既存テーブルに対して参照・更新・削除を行うためには操作対象テーブルに対する権限の設定も必要です。これら権限は、SQLを中心に操作する開発者のみ付与されていればよいので、SqlDeveloper ロールを作成し必要な権限を設定し、開発者である鈴木さんに付与します。
ロールのイメージは以下の通りです。
以下の流れで作成します。
[1] AppDeveloper ロールの作成
[2] SqlDeveloperロールの作成
[3] AppDeveloperロールに山田さん(Yamada)と鈴木さん(Suzuki)さんを設定
[4] SqlDeveloperロールに鈴木さん(Suzuki)さんを設定
[5] テスト
[1] AppDeveloper ロールの作成
AppDeveloper ロールの作成手順は以下の通りです。
管理ポータル > システム管理 > セキュリティ > ロール > 新規ロール作成ボタンクリック
ロール名を記入し、保存ボタンを押した後の設定は以下の通りです。
完成図
[2] SqlDeveloperロールの作成
次に、SQL 開発者(鈴木さん)に付与する SqlDeveloper ロールを作成します。(既存に Sampleスキーマがある想定です)
最初に、SQL管理権限の設定です。
続いて、テーブル権限の追加です。例では T1ネームスペースにある Sample スキーマのテーブルに対して全権限付与しています。
[3] AppDeveloperロールに山田さん(Yamada)と鈴木さん(Suzuki)さんを設定
AppDeveloper ロールの設定は、以下の通りです。
[4] SqlDeveloperロールに鈴木さん(Suzuki)さんを設定
続いて、SqlDeveloper ロールのメンバーに鈴木さん(Suzuki)を追加したときの図です。
[5] テスト
設定が正しく行えているかテストします。
山田さんで管理ポータルにログインしたときは、SQLメニューでSQLの実行が行えませんが、鈴木さんでログインしたときはSQLの実行が行えます。
鈴木さんの場合は以下の通りです。
ここでご紹介した用語や設定方法は、InterSystems 製品共通の内容です。
適切なロールをユーザに付与することで、管理ポータルやアプリケーションに対して、アクセス可否を決定できます。
お知らせ
Mihoko Iijima · 2024年11月24日
開発者の皆さん、こんにちは!
🎄 クリスマスの雰囲気が漂いはじめた今日のこの頃、今年最後のプログラミングコンテストで何か新しいことに挑戦するのはどうでしょうか?
🏆 アイデア実現コンテスト 🏆
Community Opportunity のステータスを持ち、実際のプログラミングを必要とするInterSystems Ideas Portal のアイデアを実装した作品をご応募ください。
期間:2024年12月2日~22日
賞金総額: $14,000
テーマ
💡 アイデアを現実に 💡
このコンテストでは、 InterSystems Ideas Porta にあるステータスが「Community Opportunity」の中から気に入ったアイデアを実装したアプリケーションをご応募いただきます。
一般的な要件:
アプリケーションまたはライブラリは完全に機能する必要があります。別の言語で既に存在するライブラリのインポートや直接インターフェイスであってはなりません (C++ の場合は、IRIS のインターフェイスを作成するために多くの作業が必要になります)。既存のアプリケーションまたはライブラリのコピー アンド ペーストであってはなりません。
応募可能なアプリケーション
Open Exchange アプリケーションの新規作成、または既存アプリケーションであっても大幅に改善されているものであればご応募いただけます。
コミュニティの担当チームは、コンテストへの応募を承認する前に申請された全アプリケーションをレビューします。
全てのアプリケーションは、IRIS Community Edition 、IRIS for Health Community Edition または、IRIS Cloud SQLで動作する必要があります。MacやWindowsのホスト版をご利用いただく場合は、インストールキットをダウンロードしてください。コンテナを利用する場合は InterSystems Container Registryから pull、または、最新バージョンのイメージ(intersystemsdc/iris-community:latest または intersystemsdc/irishealth-community:latest)をご利用ください。
コミュニティエディションのインストールキット入手方法については、「InterSystems IRIS/InterSystems IRIS for Health コミュニティエディションのダウンロード方法」をご参照ください。
コンテナ版IRISの利用方法については、「InterSystemsコンテナレジストリの使い方とコンテナ開始までの流れ(解説ビデオ付き)」をご参照ください。
アプリケーションはオープンソースであり、GitHubで公開されている必要があります。
アプリケーションの README ファイルは、英語で記述してください(日本語で記述したものがあればそのまま掲載いただき、英文の追記をお願いします。翻訳アプリを使用しますが翻訳をお手伝いすることもできますのでお気軽にお知らせください!)。また、インストール手順や、アプリケーションがどのように動作するかの説明、またはビデオデモを含めてください。
1人の開発者は最大3つのアプリケーションを応募できます。
記事はUSコミュニティに投稿してください。
注意:インターシステムズの審査員は、複雑さと有用性の基準に基づきコンテストに応募が承認されるかどうかの最終決定権を持ちます。その決定は最終的なものであり、不服申し立ての対象にはなりません。
賞品:
1. Experts Nomination - 審査員から多く票を集めたアプリケーションには、以下の賞金が贈られます。
🥇 1位 - $5,000
🥈 2位 - $3,000
🥉 3位 - $1,500
🏅 4位 - $750
🏅 5位 - $500
🌟 6-10位 - $100
2. Community winners - 開発者コミュニティで多くいいねを集めたソリューションには、以下の賞金が贈られます。
🥇 1位 - $1000
🥈 2位 - $750
🥉 3位 - $500
🏅 4位 - $300
🏅 5位 - $200
複数の参加者が同数の票を獲得した場合、全参加者が勝者となり賞金は勝者間で分配されます。
参加資格:
どなたでもご参加いただけます!(InterSystems 開発者コミュニティのアカウントを作成するだけでご応募いただけます)
開発者がチームを組んで共同でアプリケーションを作成し、応募することもできます! 1チーム 2~5名 までご参加いただけます。
チームでご応募いただく場合は、アプリケーションの README にチームメンバー名の記載をお忘れなく!!(開発者コミュニティのプロファイルのリンクもお願いします)
スケジュール:
🛠 アプリケーション開発と応募期間:
2024年12月2日 (00:00 EST): コンテスト開始!
2024年12月15日 (23:59 EST): 応募締切日
✅ 投票期間:
2024年12月16日 (00:00 EST): 投票開始!
2024年12月22日 (23:59 EST): 投票終了日
応募、投票期間中、アップロードしたアプリケーションは改良できます。
Helpful resources
✓ アプリケーション例
iris-fhir-lab - HL7 V2 を FHIR に変換するための Web インターフェイス
Google IRIS login - 管理ポータルにログインするための Google OAuth 認証
superset-iris - Apache Superset でサポートされるデータベースとしての IRIS
interoperability-embedded-python - Embedded Python を使用してInteroperabilityアダプターを作成するための基本テンプレート
iris-tripleslash - ObjectScript クラスのユニットテストを生成するアプリ
googlesheets-adapter - Google ドキュメントと Google スプレッドシートからデータをインポート/エクスポートするためのInteroperabilityアダプ
IPM in VS Code - VS Code の IPM (ZPM) 拡張機能
and others
✓ 開発環境テンプレート:
iris-dev-template
Interoperability-python
rest-api-contest-template
native-api-contest-template
iris-fhir-template
iris-fullstack-template
iris-interoperability-template
iris-analytics-template
✓ IRISとPython初心者向け
InterSystems Embedded Python in glance
InterSystems IRIS Interoperability with Embedded Python
Feedback : Using embedded python daily for more than 2 years
Embedded Python Template
InterSystems 製品を初めて使用する方向け学習コンテンツなど
✓ IRISとObjectScript初心者向け
Build a Server-Side Application with InterSystems IRIS
Learning Path for beginners
✓ ObjectScript Package Manager (ZPM) 初心者向け::
How to Build, Test and Publish ZPM Package with REST Application for InterSystems IRIS
Package First Development Approach with InterSystems IRIS and ZPM
✓ コンテストへの応募方法
Need Help?
ご質問がある場合は、この投稿へコメントいただくか、InterSystems の Discord server チャンネルにご参加ください!
皆様からのアプリケーションのご応募、お待ちしております!👍
❗️ コンテストに参加された場合、こちらに記載されているコンテスト規約に同意したものとみなされます。ご応募の際、ご一読いただきますよう、お願い申し上げます❗️
ご応募方法について
以下の応募方法ビデオをご参照ください。
以下、コンテストに応募する迄の手順をご説明します。
コンテスト応募までの流れは以下の通りです(※ビデオでは、3番以降の内容をご紹介しています)。
1、IRISプログラミングコンテスト用テンプレートを使用して、開発環境を準備します。
2、コンテスト用アプリケーションを作成します。
3、コンテストの準備が完了したら、ソースコードをローカルのGitリポジトリへコミットします。
初回コミット時に、Gitの初期設定がないためコミットが失敗することがあります。その場合は、以下のコマンドでGitユーザ名とEmailを設定します。
git config --global user.name "ここにユーザ名"
git config --global user.email "ここにメールアドレス"
4、ローカルのGitリポジトリのコミットが完了したら、リモートのGitリポジトリを作成します。
リポジトリ作成後、リモートリポジトリのURLをコピーします。
5、リモートのGitリポジトリへPushします。
git push ここにリモートのリポジトリのURL
6、OpenExchangeにログインし、アプリケーションを追加します。
※事前にDeveloper communityでユーザアカウントを作成する必要があります。ログイン後、Profile→Applications から Application をクリックし、4 でコピーしたリモートのGitリポジトリのURLを設定します。
アプリケーションを登録すると、画面右上に「Send Approval」のボタンが表示されるので、クリックします。
再度作成したアプリケーションを開くと、「Apply for Contest」ボタンが表示されるので、クリックすると応募が完了します。
お知らせ
Mihoko Iijima · 2024年4月1日
開発者の皆さん、こんにちは!
USコミュニティ開催の ✍️ 技術文書ライティングコンテスト: InterSystems IRIS チュートリアル ✍️ の勝者が発表されました!📣
今回は、19人のメンバーから🌟 21 の素晴らしい記事 🌟が投稿されました。
全ての記事が素晴らしい内容であったため、審査員からは3記事を選択するのが非常に難しかったとのコメントがありました。
それでは、受賞者の皆さんを紹介します!
⭐️ Expert Awards – InterSystemsの審査員によるアワード
🥇 1位: Orchestrating Secure Management Access in InterSystems IRIS with AWS EKS and ALB を投稿された @Roy.Leonov さん
🥈 2位: Tutorial: Adding OpenAI to Interoperability Production を投稿された @Maria.Nesterenko さん
🥉 3位: InterSystems IRIS® CloudSQL Metrics to Google Cloud Monitoring を投稿された @sween さん
Generating meaningful test data using Gemini を投稿された @Iryna.Mykhailova さん
⭐️ Community Award – コミュニティメンバーからの「いいね」の数で決まるアワードで、今回は以下2つの記事が最も多くの「いいね」を集めました。
🏆 Generating meaningful test data using Gemini を投稿された @Iryna.Mykhailova さん
🏆 How to send messages to Microsoft Teams を投稿された @Francisco.López1549 さん
そして...
⭐️ @Iryna.Mykhailova さんから3つの記事を投稿いただきました。
以下、今回の 技術文書ライティングコンテスト:5回目に投稿された方々です。
@Robert.Cemper1003 さん
@Veerarajan.Karunanithi9493 さん
@Francisco.López1549 さん
@sween さん
@Andre さん
@Yuri.Marx さん
@Muhammad.Waseem さん
@Iryna.Mykhailova さん
@Laurel.James さん
@Roy.Leonov さん
@Maria.Nesterenko さん
@Heloisa.Paiva さん
@Chi.Nguyen-Rettig さん
@Ewan.Whyte さん
@Victoria.Castillo2990 さん
@Daniel.Aguilar さん
@Phillip.Wu2039 さん
@FlávioLúcio.NavesJúnior さん
@Alex.Woodhead さん
素晴らしい記事の投稿をありがとうございました!!
賞品は現在製作中です。発送準備が整い次第、参加者の皆様にご連絡いたします
お知らせ
Mihoko Iijima · 2023年2月26日
開発者の皆さん、こんにちは!
21作品の応募があったデベロッパーツールコンテストが終わったばかりですが、次のコンテストの開催が決定しました!
✍️ 技術文書ライティングコンテスト:InterSystems IRIS チュートリアル ✍️
3月1日~31日までの期間に InterSystems IRISプログラマーを対象としたチュートリアルを投稿してください。チュートリアルのレベルは初級、中級、上級のいずれでもかまいません。IRISプログラマ向けのチュートリアルを投稿してください。
🎁 参加者全員への賞品: 投稿いただいた方全員に参加賞があります。
🏆 特賞: 選ばれた6作品には特別賞があります。
賞品
1. 期間内にチュートリアルを投稿された方全員に以下の特別賞があります!
🎁 Branded Organic Canvas Tote Bag
🎁 Moleskine Lined Notebook
2. エキスパートアワード – InterSystemsのエキスパートにより審査されます。
🥇 1位: Mars Pro Bluetooth speakers / AirPods Max
🥈 2位: Apple AirPods Pro with Wireless Charging Case /
JBL Pulse 4 Light Show Speaker
🥉 3位: Magic Keyboard Folio for iPad / Bose Soundlink Micro Bluetooth Speaker
(当選者は、獲得した賞品より低い順位の賞品と交換することができます)
3. 開発者コミュニティアワード – 「いいね!」が最も多かった記事に贈られます。受賞者は、以下の賞品の中から1つを選ぶことができます。
🎁 Magic Keyboard Folio for iPad
🎁 Bose Soundlink Micro Bluetooth Speaker
メモ:
著者は 1ノミネートに対して1つの賞品を獲得できます(一人の著者は、エキスパートノミネートで1賞品、コミュニティノミネートで1賞品 の合計 2 つの賞品を獲得することができます)。
同点の場合は、同点の記事に対するエキスパートの投票数を同点判定基準とします。
参加資格
どなたでもご参加いただけます!(InterSystems 開発者コミュニティのアカウントを作成するだけでご応募いただけます)
コンテストのスケジュール
📝 3月1日~31日: この期間にコミュニティへの記事の投稿と投票が行われます。
期間中に記事を公開してください。
開発者コミュニティメンバーは、公開された記事に「いいね!」をつけることで「開発者コミュニティアワード」の投票を行ったことになります。
《注意》記事の公開が早ければ早いほど、「いいね!」を集める期間が長くなります。
応募条件
❗️ コンテスト期間中に書かれた記事で、以下の条件を満たすものは、自動的にコンテストに参加することができます。
InterSystems IRISのチュートリアルを投稿してください。チュートリアルのレベルは初級、中級、上級のいずれでもかまいません。
英語での投稿をお願いします。
日本独自ルール:コミュニティ担当者で英語に翻訳しますので、日本のコミュニティへ日本語で投稿してください!
記事は、新しい記事で投稿してください(既存の記事の続編でも構いません)。
他のコミュニティで投稿された記事の翻訳記事では応募できません。
記事を投稿する際 チュートリアルタグ をつけて投稿してください。
記事は400文字400単語以上(=英語記事にした場合のカウント)としてください(リンクとコードは文字制限にカウントしません)
同じ作者から投稿は3記事までとします。
同じトピックであっても異なる著者による異なる内容の記事であれば許可されます。
* チュートリアルは開発者が特定のタスクや一連のタスクを完了できるように、手順を示してください。
🎯 EXTRA BONUSES
今回は、当選に有利なボーナスを追加することにしました!ぜひチェックしてください!
Bonus
Nominal
Details
Topic bonus
5
提案されたトピックのリスト(下記)にあるトピックに関する記事であれば、ボーナスとしてエキスパート5票(エキスパートが選ぶ1位が3票です)を獲得できます。
Video bonus
3
記事の表現形式:記事の投稿のほかに、解説動画作成するとボーナスポイントを獲得できます。
Discussion bonus
1
InterSystemsのエキスパートにより最も有益な議論が行われた記事には、ボーナスポイント1ポイントを獲得できます。
Translation bonus
1
翻訳記事を他リージョンのコミュニティに投稿するとボーナスポイントを獲得できます。翻訳方法はこちらの記事をご参照ください。
メモ:1記事つき1票のみ獲得できます
New member bonus
3
コンテストに参加経験のない方は、3エキスパート票を獲得できます。
トピック候補
ボーナス特典をゲットできるトピック案です。
✔️ Working with IRIS from C#(C#からIRISを操作する方法)✔️ Working with IRIS from Java(JavaからIRISを操作する方法)✔️ Working with IRIS from Python(PythonからIRISを操作する方法)✔️ Using Embedded Python(Embedded Pythonの使用方法)✔️ Using Python API(PythonAPIの使用方法)✔️ Using Embedded SQL(埋め込みSQLの使用方法)✔️ Using ODBC/JDBC(ODBC/JDBCの使用方法)✔️ Working with %Query/%SQLQuery(%Query/%SQLQueryを操作する方法)✔️ Using indexes(インデックスの使用方法)✔️ Using triggers(トリガの使用方法)✔️ Using JSON(JSONの使用方法)✔️ Using XML(XMLの使用方法)✔️ Using REST(RESTの使用方法)✔️ Using containers(コンテナの使用方法)✔️ Using kubernetes(Kubernetesの使用方法)
注)同じテーマでも、著者が異なる記事はOKです
➡️ InterSystems Discord に参加してルールやトピック、ボーナスについてチャットしましょう!
皆さんの✨素敵✨な記事をお待ちしています!
重要事項:賞品の配送は国によって異なり、一部の国では不可能な場合があります。制限のある国のリストは、@Liubka.Zelenskaia までお問い合わせください。
現在16記事が投稿されていますがその中の1つは、🗾日本のコミュニティメンバーからの投稿です👍
英語記事:https://community.intersystems.com/post/backup-and-rebuilding-procedure-iris-server
日本語記事:https://jp.community.intersystems.com/node/538021
投票は英語記事への「いいね👍」で行っています。ぜひ日本からの投稿を応援してください📣
さて、今回のお題ですが、レベルを問わない InterSystems IRIS のチュートリアルです。
いつも使っているこの使い方、実は初めて使う人には良い内容かも!
最初こんな風に使っていたけど、実はこの使い方のほうがいいかも!
など、ご経験された内容を新しいコミュニティメンバーに共有するイメージでぜひ投稿してみてください。
投稿は直接英語版コミュニティに投稿いただいても、まずは日本語で日本のコミュニティに投稿いただいてもどちらでも大丈夫です(#チュートリアル のタグをつけて投稿いただければ、日本のコミュニティからご連絡いたします)。
なお英字にした際、URLやコマンド実行例を除き「400単語以上の記述が必要」となりますので、ご注意ください。
英単語のカウントは、コミュニティのエディタをデフォルトモード「WYSIWYG」にした状態で右下に表示されます。確認にご利用ください。
お知らせ
Mihoko Iijima · 2023年4月3日
開発者の皆さん、こんにちは!
第4回 InterSystems 技術文書ライティングコンテスト:InterSystems IRIS チュートリアル が終了しました。
期間内に投稿された🌟 24の素晴らしい記事はこちらから 🌟ご覧いただけます。
この記事では、コンテスト受賞者を発表します📣
⭐️ エキスパートアワード – InterSystems のエキスパートが選出した記事:
🥇 1位: @Muhammad.Waseem さんが投稿された InterSystems Embedded Python in glance
🥈 2位: @Rizmaan.Marikar2583 さんが投稿された InterSystems Embedded Python with Pandas - Part 1
🥉 3位: @Heloisa.Paiva さんが投稿された SQLAlchemy - the easiest way to use Python and SQL with IRIS's databases
⭐️ 開発者コミュニティアワード – 「いいね!」が最も多かった記事:
🏆 @Maria.Gladkova さんが投稿された Setting up VS Code to work with InterSystems technologies
そして!
⭐️ 多くの記事を投稿された方:
@Robert.Cemper1003さん: 4 記事
@Heloisa.Paivaさん: 3 記事
@Irene.Mikhaylovaさん: 3 記事
多く記事を投稿された3名の方には、「Magic Keyboard Folio for iPad」または「 Bose Soundlink Micro Bluetooth Speaker」のどちらかを贈呈します!
👏投稿してくださった開発者の皆さんをご紹介します👏
@Robert.Cemper1003 さん
@Heloisa.Paiva さん
@Muhammad.Waseem さん
@wang.zhe さん
@Iryna.Mykhailova さん
@Maria.Gladkova さん
@Yone.Moreno さん
@Akio.Hashimoto1419 さん
@Julian.Matthews7786 さん
@Daniel.Aguilar さん
@water.huang さん
@Oliver.Wilms さん
@Rizmaan.Marikar2583 さん
@姚.鑫 さん
@Zhong.Li7025 さん
@Jude.Mukkadayil さん
@Roger.Merchberger さん
コンテストの記事一覧はこちらからご覧いただけます👉 Tech Article contest #4
開発者コミュニティに素晴らしい記事を投稿いただき、ありがとうございました!
なお、賞品は現在制作中です。発送の準備ができ次第、参加者の皆様にご連絡させていただきます 参加賞?が届きました。ありがとうございます!トートバッグと、ノートです!
@Akio.Hashimoto1419 さん、共有ありがとうございます!
(私も欲しいです!) Great 👍 thanks for your contribution, @Akio.Hashimoto1419!
お知らせ
Mihoko Iijima · 2022年11月9日
開発者の皆さん、こんにちは!
InterSystems IRIS と InterSystems IRIS for Health のコミュニティエディションですが、InterSystems IRIS ダウンロードページからお好みのプラットフォームのキットを自由にダウンロードいただけます。
この記事では、改めてダウンロードページの使い方をご紹介いたします!
👈開発者コミュニティのページの左端にこんなリンク集がありますので、「InterSystems IRIS ダウンロードページ」をクリックします。
クリック後、ログイン画面が表示されます。
開発者コミュニティのアカウントか、WRCダイレクトのアカウントでログインします。
開発者コミュニティのアカウントはオンラインラーニングのアカウントと共通です。
アカウントをお持ちでない方は、「Register for a new account」のリンクからアカウント登録をお願いします。
以下の流れでアカウント登録が行えます。
お名前、社名、リージョン(Japanを選択)、メールアドレスなどを記入し [Terms and Conditions] ご確認後、チェックボックスをチェック✅し [Continue] ボタンをクリックすると、トークン入力画面に移動します。
1で登録したメールアドレスにトークンが送付されますので、コピーします。(有効期限は30分です)
トークンを入力します。
パスワード設定画面 [Chooose Password] が表示されるのでパスワードを入力し、[Continue]ボタンをクリックすると、元のページに戻るリンクが表示されるので、クリックします。
WRCダイレクトのアカウントでログインした方は、ログイン後の画面に表示される👇以下ロゴ
の [Download Community Edition](黄色い線の)ボタンをクリックすると、ダウンロード画面に移動します。
開発者コミュニティのアカウントでログインされた方は、ログイン後、すぐにダウンロード画面が表示されます。
①の選択肢で「InterSystems IRIS Community」と「InterSystems IRIS for Health Community」が表示されます。
医療標準文書(HL7やFHIRなど)に対応する機能をお試しいただく場合は「InterSystems IRIS for Health Community」を選択してください。
後は、①、②、③の項目を選択し、をチェックしたら、ボタンクリックでダウンロードいただけます。
ダウンロード後のインストール方法については、以下ビデオでご紹介しています。ぜひご参照ください。
🎦【はじめての InterSystems IRIS】セルフラーニングビデオ:基本その1:InterSystems IRIS Community Edition をインストールしてみよう!
InterSystems IRIS for Healthも上記ビデオでご紹介している同様の方法でインストールいただけます。
コミュニティエディションの制限事項についての最新情報は、以下ドキュメントをご参照ください。
✅ InterSystems IRIS Community Edition Limitations
バージョン2022.2 では、以下の制限があります(2022.1以前の制限から変わっています)。
合計データ:10GB
接続数:8
コア数:20
日本語ドキュメント:InterSystems IRIS Community Edition の制限」からも制限事項をご確認いただけますが、時期によっては翻訳が最新情報に追い付いていないこともありますので、最新情報は、英語ドキュメントをご参照ください。
はじめて InterSystems IRIS/InterSystems IRIS for Health を操作される方向けに、セルフラーニングビデオやチュートリアルを各種ご用意しております。ご興味のある内容から始めてみてください!
🎦 InterSystems 製品を初めて使用する方向け学習コンテンツなど
学習目的に合わせた最適なラーニングパス(学習経路)を確認されたい場合は、📖ラーニングパス をご参照ください。
インストール方法について詳しくは、ビデオでご案内しております。ぜひご参照ください。
🎦【はじめての InterSystems IRIS】セルフラーニングビデオ:基本その1:InterSystems IRIS Community Edition をインストールしてみよう!
操作してみて、疑問に感じたことや 困ったことなどありましたら、ぜひコミュニティにご質問ください!
コミュニティメンバーと一緒に考えて問題を解決していきましょう!
記事
Mihoko Iijima · 2023年3月2日
これは InterSystems FAQ サイトの記事です。
コミュニティ版は1インスタンスでの利用を想定しているため、2インスタンス以上で設定する構成は利用できません。
製品版と異なる点は以下の通りです。
組込みのライセンスキーを利用しているため、別のライセンスキーを適用できません。
同時接続 8ユーザまで利用できますがキーには期限があります。
キーの期限を迎えた場合は、コミュニティ版の新バージョンに切り替えることで新しいキーが適用されます。
ミラーリング、ECP、シャーディング、InterSystems APIマネージャ(IAM)を利用できません。
データベースのサイズに制限があります(10GB)。
インストール環境のCPU数に制限があります(20コア)。
最新情報は InterSystems IRIS Community Edition Limitations をご確認ください。※上記制限事項はバージョン2022.2~の情報です。バージョン2022.1以前の制限事項は日本語ドキュメント「InterSystems IRIS Community Edition の制限」をご参照ください。
コミュニティ版のダウンロード方法ついて詳しくは、「InterSystems IRIS/InterSystems IRIS for Health コミュニティエディションのダウンロード方法」をご参照ください。
質問
Hiroshi Sato · 2020年8月26日
InterSystems IRIS Data Platformに関して販売している書籍は現時点ではありません。
旧製品であるCachéの公式ガイドブックとして、「Cachéデベロッパーズガイド(翔泳社)」という本があります。(ISBN978-4-7981-1885-7)
しかし、内容がかなり古いため、以下のウェブサイトで更新した内容を公開しています。
IRISディベロッパーズガイド
また実践プログラミングガイドという文書も公開しています。
IRIS実践プログラミングガイド 上記の
IRISディベロッパーズガイド
IRIS実践プログラミングガイド
を使用したいと思いGit Hubからダウンロードしdocker-compose up -d --buildしたのですが、以下のエラーが出て使用できないのですが、使用する方法を教えていただけませんか?
↓↓↓↓↓↓↓↓
=> [ 8/10] COPY csp/*.* /usr/irissys/csp/user/ 0.0s => ERROR [ 9/10] RUN iris start IRIS && iris session IRIS < /tmp/iris.script && iris stop IRIS quietly 11.4s------ > [ 9/10] RUN iris start IRIS && iris session IRIS < /tmp/iris.script && iris stop IRIS quietly:#14 0.369 Using 'iris.cpf' configuration file#14 0.487#14 0.976 This copy of InterSystems IRIS has been licensed for use exclusively by:#14 0.976 Community License expired.#14 0.976 Copyright (c) 1986-2021 by InterSystems Corporation#14 0.976 Any other use is a violation of your license agreement#14 3.363#14 3.363 Error: Invalid Community Edition license, may have exceeded core limit. - Shutting down the system : $zu(56,2)= 0Starting IRIS#14 11.39#14 11.39 An error was detected during InterSystems IRIS startup.#14 11.39 ** Startup aborted **------failed to solve: rpc error: code = Unknown desc = executor failed running [/bin/sh -c iris start IRIS && iris session IRIS < /tmp/iris.script && iris stop IRIS quietly]: exit code: 1 @TAKI.KURITA さん、こんにちは!
エラーですが、IRIS 2021.1コミュニティエディションに組み込まれているライセンスの期限切れが原因のようです(関連記事はこちら)。大変申し訳ありません。
今、Gitの先を見ると Dockerfile のイメージ:タグ名の指定が、新しいタグ名に更新されているようですので(@Serval.Cat さんありがとうございます!)、もう1度 ソースを Pull した後、docker-compose up -d --build をお試しいただけないでしょうか。 再インストールしたらうまくいきました!
迅速な対応いつもありがとうございます!!
記事
Mihoko Iijima · 2021年2月19日
これは InterSystems FAQ サイトの記事です。
Java のガベージコレクションは、使用しなくなったメモリ上のオブジェクトを自動開放するしくみですが、InterSystems data platform(以下IRISと表記)のガベージコレクションは、意味が異なります。
IRIS では、ディスク上の大量のデータノードを 1 コマンド(killコマンド)で削除する機能があります。
通常、データ容量が増えれば、それに伴い、削除に必要な時間が増加しますが、そうすると、そのkillコマンドを発行したプロセスが、削除が終わるのを待つ時間が増加することになってしまいます。
その様な事象の発生を避けるため、IRIS では、ユーザプロセスが大量のデータを削除する kill コマンドを発行した際に、その場で削除に必要な全ての処理を行うのではなく、削除が必要な開始の場所だけを示して、次の処理に進むようになっています。
その後、ガベージコレクタというシステムプロセスに起動がかかり、その指示されたポイントから大量データの削除に伴う領域の開放処理をバックグラウンドで処理していきます。
つまり、論理的な削除は、一瞬で終わるが、実際の物理的な削除は、遅延して行われる仕組みとなります。
このような仕組みをガベージコレクションと呼んでいます。
記事
Mihoko Iijima · 2021年5月6日
これは InterSystems FAQ サイトの記事です。
インターシステムズ オンラインラーニングでは、InterSystems IRIS 概要や IRIS の各機能について 2~5分でご覧いただける QuickStart ページ(説明ビデオと操作方法を解説、サンプル用 Git の使い方をまとめたページ)をご用意しています。
InterSystems IRIS Data Platform について
Multi-Model
Embedded Python QuickStart
Interoperability
Java
.NET
Node.js
Python
SQL での開発
*日本語字幕をオンにする方法は こちらをご覧ください。
開発者向けまとめページでは、QuickStart 以外にもドキュメントや開発者コミュニティへのリンク、IRIS を簡単に始めることのできるクラウド(AWS/Azure/GCP)のマーケットプレイスへのリンクなどまとめています。
ぜひご活用ください。
開発者コミュニティにもサンプルコード付き記事の投稿があります。ぜひご参照ください。
Inteoperability タグ
Java タグ
.NET タグ
Python タグ
SQL タグ
クラウド タグ
IRIS のインストール詳細、基本操作については、開発者コミュニティの以下記事をご参照ください。
【はじめての InterSystems IRIS】セルフラーニングビデオ:基本その1:InterSystems IRIS Community Edition をインストールしてみよう
【はじめての InterSystems IRIS】セルフラーニングビデオ:基本その2:InterSystems IRIS で開発をはじめよう!
【はじめての InterSystems IRIS】セルフラーニングビデオ 索引
お知らせ
Toshihiko Minamoto · 2021年2月17日
皆さん、こんにちは!
[InterSystems のグローバルマスターズ・アドボケート・ハブ](https://community.intersystems.com/post/join-intersystems-global-masters)がディベロッパーコミュニティ (DC) と緊密につながっていることは、皆さんご存知ではないでしょうか。 DC に何らかの貢献をされると、グローバルマスターズのポイントを獲得できます。
そこで、 グローバルマスターズでポイントを獲得するベストな方法について簡単なガイドを作成しました。
2021/3/19: 投稿や翻訳に関するポイントが改定されましたので、修正しています。記事の投稿で得られるポイントはローンチ期間限定です。
グローバルマスターズでポイントを獲得する方法
開発者コミュニティへの記事の投稿
400※
最初のコメントコメントごと
30030
最初に受け入れられた回答受け入れられた回答ごと5 / 10 / 25 / 50 回目の受け入れられた回答
10001504,000 / 8,000 / 20,000 / 40,000
開発者コミュニティの記事を翻訳
100
1 / 5 / 10 / 25 / 50 回目の記事を投稿
1,500 / 7,500 / 15,000 / 40 000 / 75 000
1 / 5 / 10 / 25 / 50 回目の質問を投稿
500 / 2,000 / 5,000 / 15,000 / 30,000
OpenExhangeにアプリケーションを登録ZPMアプリのボーナスポイント1 / 5 / 10 / 25回目のアプリ登録
8004001,000 / 10,000 / 25,000 / 75,000
投稿した記事の閲覧数が 750以上 / 2,000 以上 / 5,000 以上 / 15,000 以上
600 / 2,500 / 7,000 / 20,000
開発者コミュニティの記事を読むビデオを見るSNSで記事やビデオを共有
102040
ベストプラクティスタグの付与された記事が1 / 2 / 3 / 4 / 5 件
1,000 / 3,000 / 7,000 / 10,000 / 15,000
Open Exchangeに登録したアプリが 50 / 100 / 250 / 500 / 1,000 回ダウンロード
2,500 / 5,000 / 7,500 / 12,500 / 25,000
InterSystems や InterSystems 製品 に関するレビュー記事を投稿
2,000 ~ 3,000
同僚を開発者コミュニティに招待する
600
Open Exchange に公開したアプリに関するビデオを作成する
3,000
*グローバルマスターズ・アドボケート・ハブへの登録後に掲載された記事・コメントのみ。
チャレンジを完了させ、バッジを獲得し、インサイダー > アドボケート > スペシャリスト > エキスパート > VIP の順にレベルアップしましょう。
レベルアップすればするほど、面白い賞品をゲットできます!
加えて...
以下の **グローバルマスターズに関する追加情報**もご覧ください
* [グローバルマスターズ・アドボケート・ハブ - ここからスタート!](https://jp.community.intersystems.com/node/484516)
* [グローバルマスターレベルの説明](https://jp.community.intersystems.com/node/485861)
InterSystems の [グローバルマスターズ・アドボケート・ハブ](http://globalmasters.intersystems.com/)にまだ参加されていない方は、今すぐご参加ください!
ご質問がある方は、お気軽に本記事のコメント欄よりお問い合わせください。
記事
Toshihiko Minamoto · 2021年3月10日
デベロッパーの皆さん、こんにちは!
最近、当社は [InterSystems Package Manager](https://community.intersystems.com/post/introducing-intersystems-objectscript-package-manager) (ZPM) をリリースしました。 ZPM を開発した理由の 1 つは、ソリューションをパッケージ化して ZPM レジストリに提出することにより、そのデプロイを「install xxx package」のようなコマンドを実行するだけの単純な作業にするためです。
これを行うには、InterSystems IRIS パッケージの中身を説明する module.xml ファイルをリポジトリに導入する必要があります。
この記事では、module.xml ファイルの異なる構成要素を説明し、独自のファイルを作成する方法をご紹介します。
まずは、samples-objectscript パッケージから始めます。以下のコマンドを実行すれば、IRIS に [ObjectScript のサンプルアプリケーション](https://openexchange.intersystems.com/package/Samples-ObjectScript-4)がインストールされます。
zpm: USER>install samples-objectscript
おそらく、これほどシンプルなパッケージはないと思います。以下は、パッケージの中身を説明する [module.xml](https://github.com/isc-zpm/Samples-ObjectScript/blob/master/module.xml) です。
<Export generator="Cache" version="25">
<Document name="samples-objectscript.ZPM">
<Module>
<Name>samples-objectscript</Name>
<Version>1.0.0</Version>
<Packaging>module</Packaging>
<SourcesRoot>src</SourcesRoot>
<Resource Name="ObjectScript.PKG"/>
</Module>
</Document>
</Export>
それでは、文書の中身を一行ずつ見ていきましょう。
module.xml は、Cache/IRIS の XML 文書のファミリーに属しているため、この行はその関係性を示すもので、内部ライブラリがこの文書を認識できるようにしています。
次のセクションはこちら。
パッケージには名前を付けます。 名前には小文字と「-」の記号を含めることができます。 (この場合なら samples-objectscript)。 パッケージ名は、拡張子に「.ZPM」を使い、Document タグの name 節に入れてください。
Document の内部要素は以下の通りです。
- パッケージ名。 今回は、
<Name>samples-objectscript</Name>
- パッケージバージョン。 今回は、
<Version>1.0.0</Version>
モジュール - パッケージの種類。 モジュールパラメーターは以下のように入力します。
<Packaging>module</Packaging>
- ZPM がインポートする ObjectScript を探すフォルダー。
今回は「/src」フォルダーで ObjectScript を探すよう指示します。
<SourcesRoot>src</SourcesRoot>
- インポートする ObjectScript の要素。 パッケージやクラス、include、グローバル、dfi などが含まれます。
SourceRoot フォルダー以下の構造は次のようになります。
/cls - Folder=Package 内にある Class=file.cls 形式のすべての ObjectScript クラス。 サブパッケージはサブフォルダーです。
/inc - _file.inc_ 形式のすべての include ファイル。
/mac - すべての mac ルーチン。
/int - すべての「中間」ルーチン (別名「他のコード」、mac コードをコンパイルした結果、またはクラスやマクロを持たない ObjectScirpt)。
/gbl - XML 形式でエクスポートされるすべてのグローバル。
/dfi - XML 形式でエクスポートするすべての DFI ファイル。 各ピボットは pivot.dfi ファイルに、各ダッシュボードは dashboard.dfi ファイルに作成されます。
例えば、 ObjectScript ページをインポートするとします。 これをうけて、ZPM は /src/cls/ObjectScript フォルダーの中を見て、そこからすべてのクラスをインポートします。
<Resource Name="ObjectScript.PKG"/>
なので、 パッケージ化するソリューションを作成するには、ObjectScript クラスを「/cls」フォルダー内にあるリポジトリのいずれかのフォルダーに入れ、すべてのパッケージとクラスを class=file.cls 形式の package=folder に入れます。
クラスを違うかたちでリポジトリに保管したいけれども、いちいち手作業で ObjectScript 用に適切なフォルダー構造を作成するのは避けたいという場合、それを解決してくれるツールはたくさんあります。例えば、Atelier や VSCode Object Script は、まさにその条件が満たされるかたちでクラスをエクスポートしますし、他にはパッケージ化する準備ができているアーチファクトをネームスペースからすべてエクスポートしてくれる [isc-dev](https://openexchange.intersystems.com/package/ISC-DEV) ユーティリティなどがあります。
**mac ルーチンのパッケージ化**
これはクラスの場合とよく似ています。 ルーチンを /mac フォルダーに入れるだけです。 [例はこちら。](https://github.com/isc-zpm/DeepSeeButtons/blob/master/module.xml)
<Export generator="Cache" version="25">
<Document name="DeepSeeButtons.ZPM">
<Module>
<Name>DeepSeeButtons</Name>
<Version>0.1.7</Version>
<Packaging>module</Packaging>
<SourcesRoot>src</SourcesRoot>
<Resource Name="DeepSeeButtons.mac"/>
</Module>
</Document>
</Export>
**その他の要素**
また、以下のような、オプションとして使える要素もあります。
と の要素が含まれる場合があります。
例:
<Author>
<Organization>InterSystems</Organization>
<CopyrightDate>2019</CopyrightDate>
</Author>
**CSP/Web アプリケーションのパッケージ化**
ZPM はウェブアプリケーションもデプロイできます。
これを成功させるには、CSPApplication 要素を [CSPApplication パラメーター](https://docs.intersystems.com/irislatestj/csp/documatic/%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=%25SYS&CLASSNAME=Security.Applications)の節と一緒に導入します。
例えば、DeepSeeWeb の [module.xml](https://github.com/isc-zpm/DeepSeeWeb/blob/master/module.xml) にある CSPApplication タグをご覧ください。
<CSPApplication
Url="/dsw"
DeployPath="/build"
SourcePath="${cspdir}/dsw"
ServeFiles="1"
Recurse="1"
CookiePath="/dsw"
/>
この設定により、**/dsw** という名前のウェブアプリケーションが作成され、リポジトリの **/build** フォルダーにあるすべてのファイルが IRIS csp ディレクトリの $**{cspdir}****/dsw** フォルダーにコピーされます。
**REST API アプリケーション**
これが REST-API アプリケーションである場合、CSPApplication 要素はディスパッチクラスを含み、MDX2JSON module.xml のように構成される可能性があります。
<CSPApplication
Path="/MDX2JSON"
Url="/MDX2JSON"
CookiePath="/MDX2JSON/"
PasswordAuthEnabled="1"
UnauthenticatedEnabled="1"
DispatchClass="MDX2JSON.REST"
/>
**依存関係**
モジュールをインストールする際には、ターゲットシステムに別のモジュールがインストールされている場合があります。 これは、複数の 要素を含み得る 要素の中にある 要素により 説明されている場合があります。 このそれぞれに、 と があり、 また先にインストールされているべき 他のモジュールとそれらのバージョンが記述されています。 こういった状況では、ZPM はモジュールがインストールされているかどうかを確認し、インストールされていなければ、インストールを実行します。
こちらは、DSW モジュールの MDX2JSON モジュールに対する依存関係を示した例です。
<Dependencies>
<ModuleReference>
<Name>MDX2JSON</Name>
<Version>2.2.0</Version>
</ModuleReference>
</Dependencies>
以下も依存関係の[例](https://github.com/isc-zpm/ThirdPartyChartPortlets/blob/master/module.xml)です。[ThirdPartyPortlets](https://github.com/isc-zpm/ThirdPartyChartPortlets) が [Samples BI](https://openexchange.intersystems.com/package/Samples-BI)(holefoods) に依存しています。
<Dependencies>
<ModuleReference>
<Name>holefoods</Name>
<Version>0.1.0</Version>
</ModuleReference>
</Dependencies>
また、任意のコードを実行して、データと環境をセットアップするというオプションもあります。これについては、次回の記事で解説します。
**独自のパッケージをビルドする方法**
それでは、 module.xml ができたら、パッケージをビルドして、module.xml の構造が正しいかどうかをテストすることができます。
テストは、ZPM クライアントを使って実行できます。 ZPM を IRIS システムにインストールし、以下の読み込みコマンドでパッケージのコードを読み込みます。
zpm: NAMESPACE>load path-to-the-project
パスは、パッケージのリソースを含み、かつルートフォルダーに module.xml を持つフォルダーを指しています。
例えば、 パッケージのビルドは、[こちらのプロジェクト](https://github.com/isc-zpm/Samples-ObjectScript)を使ってテストできます。 チェックアウトしたら、docker-compose-zpm.yml を使ってコンテナをビルドします。
SAMPLES ネームスペースでターミナルを開き、ZPM を呼び出します。
zpm: SAMPLES>
zpm: SAMPLES>load /iris/app
[samples-objectscript] Reload START
[samples-objectscript] Reload SUCCESS
[samples-objectscript] Module object refreshed.
[samples-objectscript] Validate START
[samples-objectscript] Validate SUCCESS
[samples-objectscript] Compile START
[samples-objectscript] Compile SUCCESS
[samples-objectscript] Activate START
[samples-objectscript] Configure START
[samples-objectscript] Configure SUCCESS
[samples-objectscript] Activate SUCCESS
パスが「/iris/app」になっているのは、docker-compose-zpm.yml の中でプロジェクトのルートをコンテナの「/iris/app」フォルダーにマップすると指定しているためです。 したがって、このパスを使えば、ZPM にプロジェクトの読み込み元を指定することができます。
ついに、 読み込みに成功しました。 つまり、パッケージをデベロッパーコミュニティのリポジトリに提出する際にこの module.xml を使えるということです。
以上が、アプリケーションに使う適切な module.xml ファイルを作成する方法です。
**InterSystems コミュニティのリポジトリにアプリケーションを提出する方法**
現時点で、要件は 2 つあります。
1. アプリケーションが [Open Exchange](https://openexchange.intersystems.com) に記載されている。
2. [Community Package Manager のリポジトリ](https://pm.community.intersystems.com/packages/-/all)にアプリケーションを提出することをご希望の方は、私までダイレクトメッセージをお送りいただくか、この記事のコメント欄よりお知らせください。
module.xml が正常に動作していることをご確認ください!)
記事
Mihoko Iijima · 2021年1月15日
これは InterSystems FAQ サイトの記事です。
InterSystemsでは、既存のお客様および見込みのお客様と実施した他DBMS製品との比較を行った様々なベンチマーク結果を持っています。
しかし、それらの結果に関して、ほとんどのRDBMSベンダのライセンス条項に当該RDBMSベンダの承諾なしにベンチマーク結果を公表してはならないという条項があるため、現実問題として一般的な公表は、難しい状況です。
一方、TPC等の公共の機関等がベンチマーク条件を策定、公開しているベンチマークに関しては、必要な実施コストに対して得られるものが少ないと考えており、過去にも実施しておりませんし、将来も実施する予定はありません。
InterSystemsは、TPCの様な現実のシナリオからかけ離れたベンチマークを実施するのではなく、実際のアプリケーションを模したベンチマークシナリオを構築し、それに基づき、各ハードウェアベンダ、パートナ企業、エンドユーザとの協力の基、ベンチマークを実施しております。
様々なベンチマークの結果をまとめた記事があります。ぜひご参照ください。
IRISで公開しているベンチマーク資料 レポートのリンク先がなくなっているようです @Serval.Cat さん、ご指摘ありがとうございます。少し古いレポートだったため非公開に変更されていましたので、ベンチマーク資料を集めた記事へのリンクに変更しました。
記事
Toshihiko Minamoto · 2023年6月29日
### 
コミュニティの皆さん、こんにちは。
この記事では、InterSystems Embedded Python の使用方法を説明します。以下のトピックが含まれます。
* 1- Embedded Python の概要
* 2- Embedded Python の使用方法
* 2.1- ObjectScript から Python ライブラリを使用する
* 2.2- Python から InterSystems API を呼び出す
* 2.3- ObjectScript と Python を同時に使用する
* 3- Python 組み込み関数の使用
* 4- Python モジュール/ライブラリ
* 5- Embedded Python のユースケース
* 5.1- Python **Reportlab ライブラリ**を使った PDF の印刷
* 5.2- Python **Qrcode ライブラリ**を使った QR コードの生成
* 5.3- Python **Folium ライブラリ**を使った地理的位置情報の取得
* 5.4- Python **Folium ライブラリ**を使ったインタラクティブ地図への場所の生成とマーキング
* 5.5- Python **Pandas ライブラリ**を使ったデータ分析 **
* 6- まとめ
では、概要から始めましょう。
** **
## 1- Embedded Python の概要
Embedded Python は、Python 開発者が InterSystems IRIS の全データと全機能に直接アクセスできるようにする、InterSystems IRIS データプラットフォームの機能です。
InterSystems IRIS には、データプラットフォーム内で解釈、コンパイル、および実行される ObjectScript と呼ばれる強力なプログラミング言語が組み込まれています。
ObjectScipt は InterSystems IRIS のコンテキスト内で実行されるため、データプラットフォームのメモリとプロシージャ呼び出しに直接アクセスできます。
Embedded Python は、InterSystems IRIS プロセスコンテキスト内で Python コードを実行を可能にする Python プログラミング言語の拡張機能です。
ObjectScript と Python のいずれも同じオブジェクトメモリで動作するため、Python オブジェクトは ObjectScript オブジェクトを単にエミュレートするのではなく、ObjectScipt オブジェクトであると言えます。
これらの言語の共平等性により、ジョブに最適な言語か、アプリケーションの記述に最も使いやすい言語を選択することができます。

## 2- Embedded Python の使用方法
Embedded Python を使用する場合、3 つの異なる方法でコードを記述できます。
### 2.1- ObjectScript から Python ライブラリを使用する
まず、通常の .py ファイルを記述し、InterSystems IRIS コンテキストからそれを呼び出します。 この場合、データプラットフォームは Python プロセスを起動し、IRIS と呼ばれるモジュールをインポートできるようにします。これにより、Python プロセスが IRIS カーネルに自動的に接続されるため、Python コードのコンテキストから ObjectScript のすべての機能にアクセスできるようになります。
.png)
### 2.2- Python から InterSystems API を呼び出す
次に、通常の ObjectScript コードを記述し、%SYS.Python パッケージを使って Python オブジェクトをインスタンス化します。 この ObjectScript パッケージを使うと、Python モジュールとライブラリをインストールし、ObjectScript 構文でコードベースを操作できるようになります。
%SYS.Python パッケージを使うと、ObjectScript 開発者は Python の知識が無くてもリッチな Python ライブラリエコシステムを ObjectScript コードで使用できるようになります。
.png)
### 2.3- ObjectScript と Python を同時に使用する
最後に、InterSystems クラス定義を作成し、Python でメソッドを記述します。 そのメソッドを呼び出すと、Python インタープリターが起動します。 このメソッドは、メリットとして、それを含むクラスのインスタンスへの参照を使って、Python コードのそのブロックの self キーワードを埋めることができます。 また、Python を使って InterSystems クラスにクラスメソッドを書き込むことで、SQL で、テーブルに新しい行が追加されたなどの異なるデータエントリイベントを処理するメソッドを簡単に実装できます。
カスタムストアドプロシージャを Python で迅速に開発することも可能です。
.png)
ご覧のとおり、Embedded Python を使用すると、パフォーマンスを犠牲にすることなく、ジョブに最適なプログラミング言語を選択できます。

## 3- Python 組み込み関数の使用
Python インタープリターには、常に利用できる多数の関数と型が組み込まれています。 以下に、アルファベット順でリストしています。
組み込み関数
AELR
abs()
enumerate()
len()
range()
aiter()
eval()
list()
repr()
all()
exec()
locals()
reversed()
any()
round()
anext()
F
M
ascii()
filter()
map()
S
float()
max()
set()
B
format()
memoryView()
setattr()
bin()
frozenset()
min()
slice()
breakpoint()
G
N
staticmethod()
bytearray()
getattr()
next()
str()
bytes()
globals()
sum()
O
super()
C
H
object()
callable()
hasattr()
oct()
T
chr()
hash()
open()
tuple()
classmethod()
help()
ord()
type()
compile()
hex()
complex()
P
V
I
pow()
vars()
D
id()
print()
delattr()
input()
property()
Z
dict()
int()
zip()
dir()
isinstance()
divmod()
issubclass()
-
iter()
__import__()
**Python 組み込み 関数の使用**
Python 組み込み関数を使用するには、"builtins" をインポートする必要があります。その後、関数を呼び出せるようになります。
set builtins = ##class(%SYS.Python).Import("builtins")
Python の print() 関数は、実際には組み込みモジュールのメソッドであるため、ObjectScript からこの関数を使用できるようになりました。
USER>do builtins.print("hello world!")
hello world!
USER>set list = builtins.list()
USER>zwrite list
list=5@%SYS.Python ; [] ; <OREF>
同様に、help() メソッドを使って、リストオブジェクトのヘルプを取得できます。
USER>do builtins.help(list)
Help on list object:
class list(object)
| list(iterable=(), /)
|
| Built-in mutable sequence.
|
| If no argument is given, the constructor creates a new empty list.
| The argument must be an iterable if specified.
|
| Methods defined here:
|
| __add__(self, value, /)
| Return self+value.
|
| __contains__(self, key, /)
| Return key in self.
|
| __delitem__(self, key, /)
| Delete self[key].
## 
## 4- Python モジュールまたはライブラリ
一部の Python モジュールまたはライブラリはデフォルトでインストールされるため、すでに利用することができます。 help("module") 関数を使うと、これらのモジュールを表示できます。


### Python モジュールまたはライブラリのインストール
これらのモジュールとは別に、Python には数百ものモジュールとライブラリがあり、pypi.org で確認できます。(Python Package Index(PyPI)は Python プログラミング言語のソフトウェアリポジトリです)
.png)
他のライブラリが必要な場合は、intersystems irispip コマンドを使ってライブラリをインストールする必要があります。
たとえば、Pandas は Python データ分析ライブラリです。 以下のコマンドは、パッケージインストーラーの irispip を使用して、Windows システムに Pandas をインストールします。
C:\InterSystems\IRIS\bin>irispip install --target C:\InterSystems\IRIS\mgr\python pandas
C:\InterSystems は InterSystems インストールディレクトリに置き換えられることに注意してください。
** **
## 5- Embedded Python のユースケース
### 5.1- Python Reportlab ライブラリを使った PDF の印刷
irispip コマンドを使用して Reportlab ライブラリをインストールしてから、objectscript 関数を作成します。
ファイルの場所を指定すると、以下の CreateSamplePDF() という ObjectScript メソッドによって、サンプル PDF ファイルが作成され、その指定場所に保存されます。
Class Demo.PDF
{
ClassMethod CreateSamplePDF(fileloc As %String) As %Status
{
set canvaslib = ##class(%SYS.Python).Import("reportlab.pdfgen.canvas")
set canvas = canvaslib.Canvas(fileloc)
do canvas.drawImage("C:\Sample\isc.png", 150, 600)
do canvas.drawImage("C:\Sample\python.png", 150, 200)
do canvas.setFont("Helvetica-Bold", 24)
do canvas.drawString(25, 450, "InterSystems IRIS & Python. Perfect Together.")
do canvas.save()
}
}
メソッドの最初の行では、ReportLab の pdfgen サブパッケージから canvas.py ファイルをインポートしています。 コードの 2 行目は、Canvas オブジェクトをインスタンス化し、InterSystems IRIS オブジェクトのメソッド呼び出しと同じ方法で、メソッドを呼び出しています。
その後、通常の方法でメソッドを呼び出せるようになります。
do ##class(Demo.PDF).CreateSamplePDF("C:\Sample\hello.pdf")
以下の PDF が生成され、指定された場所に保存されます。
****
** **
### 5.2- Python Qrcode ライブラリを使った QR コードの生成
QR コードを生成するには、irispip コマンドを使用して Qrcode ライブラリをインストールする必要があります。次に、以下のコードを使用すると、QR コードを生成できます。
.png)

### 5.3- Python Folium ライブラリを使った地理的位置情報の取得
地理データを取得するには、irispip コマンドを使用して Folium ライブラリをインストールする必要があります。次に、以下の objectscript 関数を作成します。
Class dc.IrisGeoMap.Folium Extends %SwizzleObject
{
// Function to print Latitude, Longitude and address details
ClassMethod GetGeoDetails(addr As %String) [ Language = python ]
{
from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent="IrisGeoApp")
try:
location = geolocator.geocode(addr)
print("Location:",location.point)
print("Address:",location.address)
point = location.point
print("Latitude:", point.latitude)
print("Longitude:", point.longitude)
except:
print("Not able to find location")
}
}
**IRIS ターミナルに接続して以下のコードを実行します**
do ##class(dc.IrisGeoMap.Folium).GetGeoDetails("Cambridge MA 02142")
**以下が出力されます。**


### 5.4- Python Folium ライブラリを使ったインタラクティブ地図への場所の生成とマーキング
同じ Python Folium 伊良部らりを使用して、インタラクティブ地図に場所を生成し、それをマーキングします。以下の objectsctipt 関数によって、これを実行します。
ClassMethod MarkGeoDetails(addr As %String, filepath As %String) As %Status [ Language = python ]
{
import folium
from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent="IrisGeoMap")
#split address in order to mark on the map
locs = addr.split(",")
if len(locs) == 0:
print("Please enter address")
elif len(locs) == 1:
location = geolocator.geocode(locs[0])
point = location.point
m = folium.Map(location=[point.latitude,point.longitude], tiles="OpenStreetMap", zoom_start=10)
else:
m = folium.Map(location=[20,0], tiles="OpenStreetMap", zoom_start=3)
for loc in locs:
try:
location = geolocator.geocode(loc)
point = location.point
folium.Marker(
location=[point.latitude,point.longitude],
popup=addr,
).add_to(m)
except:
print("Not able to find location : ",loc)
map_html = m._repr_html_()
iframe = m.get_root()._repr_html_()
fullHtml = """
"""
fullHtml = fullHtml + iframe
fullHtml = fullHtml + """
"""
try:
f = open(filepath, "w")
f.write(fullHtml)
f.close()
except:
print("Not able to write to a file")
}
**IRIS ターミナルに接続し、MarkGeoDetails 関数を呼び出します**
dc.IrisGeoMap.Folium クラスの MarkGeoDetails() 関数を呼び出します。
この関数には、以下の 2 つのパラメーターが必要です。
1. 場所("," 区切りで、複数の場所を渡すことができます)
2. HTML ファイルパス
以下のコマンドを実行し、地図に Cambridge MA 02142、NY、London、UAE、Jeddah、Lahore、および Glasgow の場所をマークして、 "irisgeomap_locations.html" ファイルとして保存します。
do ##class(dc.IrisGeoMap.Folium).MarkGeoDetails("Cambridge MA 02142,NY,London,UAE,Jeddah,Lahore,Glasgow","d:\irisgeomap_locations.html")
上記のコードによって、以下のインタラクティブ HTML ファイルが生成されます。


### 5.5- Python Pandas ライブラリを使ったデータ分析
irispip コマンドを使用して Pnadas ライブラリをインストールする必要があります。次に、以下のコードを使用すると、データが表示されます。
.png)

## 6- まとめ
InterSystems Embedded Python(IEP)は、Python コードと InterSytems アプリケーションをシームレスに統合できる強力な機能です。 IEP を使用すると、Python で利用可能な広範なライブラリとフレームワークを活用して、InterSystems アプリケーションの機能を強化できます。 この記事では、IEP の主な機能とメリットを説明しました。
IEP は、InterSystems アプリケーション内から Python オブジェクトを操作し、Python コードを実装できるようにする一連のライブラリとして実装されています。 これにより、単純で有効な方法によって、Python コードを InterSystems アプリケーションに統合できるため、データ分析、機械学習、自然言語処理など、InterSystems ObjectScript での実装が困難なタスクを実行できるようになります。
IEP を使用する主なメリットの 1 つには、Python と InterSysems の間のギャップのかけ渡しを得られることが挙げられます。 このため、両方の言語の持つ力を使って、両分野の長所を組み合わせた強力なアプリケーションを作成しやすくなります。
IEP には、Python の機能を活用して、InterSystems アプリケーションの機能を拡張する方法も備わっています。 つまり、InterSystems ObjectScript で実装するには困難なタスクに、Python で利用できる膨大な数のライブラリをフレームワークを利用して実行できます。
InterSystems Embedded Python には、Python の機能を活用して、InterSystems アプリケーションの機能を拡張する強力な方法が備わっています。 Python コードを InterSystems アプリケーションに統合することで、Python で利用できる膨大な数のライブラリとフレームワークを利用し、InterSystems ObjectScript での実装が困難な複雑なタスクを実行できます。
以上です!