クリアフィルター
お知らせ
Hiroshi Sato · 2020年6月29日
InterSystemsは、新たなセキュリティの脆弱性が製品に見つかった場合、出来得る限り速やかにその脆弱性に対処するための修正を製品に行い、対応バージョンを出荷します。
また、InterSystemsは、セキュリティ脆弱性対応に関して、製品を修正して出荷するだけでは十分ではなく、InterSystemsの製品をお使いいただいている全てのお客様が、セキュリティ脆弱性に対応したバージョンをお使いいただくことによって、初めてそのセキュリティ脆弱性に起因するリスクを完全に排除できると考えています。
もちろん対処しなければ、必ずそのリスクが顕在化するというものでもありませんが、対処せずとも、問題がないということを100%保証することは極めて困難です。
また、セキュリティ脆弱性に対応したバージョンのご利用を推進するため、セキュリティ脆弱性への対策が施されていないバージョンに対する製品サポートはベストエフォートとなり、サポートバージョンと同等のサポート保証を得ることができない点、ご注意お願い致します。
以上のことをご理解いただき、新しいセキュリティ脆弱性に対応した製品バージョンがリリースされた際には、出来得る限り速やかにそのバージョンを導入することを推奨致します。
以下の関連情報もぜひご参照ください。
バグフィックス対応について
製品サポート対応について
質問
Yugi AA · 2023年6月30日
VScodeを使用してローカルのルーチンを編集している途中で、PCが重かったため再起動を行って、
再びIRISを起動しようとするとエラーとなり起動できません。
どなたか解決策をご存知でしょうか?よろしくお願いいたします。
ーーーーーーーーーーーーー
**現象:**
ローカルのIRISを起動すると、エラーとなり起動できない。
**操作:**
1. PCを起動し、iris.exeで起動。
2. InterSystems IRIS 開始(S)[IRIS] ボタンで起動を試みる。
3. エラーメッセージが表示される。
**詳細:**
・接続先
IPアドレス: localhost
ポート: 51773
・mgr/mesages.logのエラーログ
*** Recovery started at Sat Jul 1 08:35:25 2023
...略
07/01/23-08:35:36:165 (19356) 3 [Utility.Event] Error: ERROR #5001: Could not start SuperServer on port 51773, may be in use by another instance - Shutting down the system : $zu(56,2)=$Id: //iris/2022.1.0/kernel/common/src/acmd.c#1 $ 4561 183
07/01/23-08:35:41:208 (19356) 0 [Utility.Event] Shutting down InterSystems IRIS
07/01/23-08:35:41:224 (19356) 0 [Utility.Event] Notifying Clients
07/01/23-08:35:41:230 (19356) 0 [Utility.Event] No user shutdown routines to execute
07/01/23-08:35:41:238 (19356) 0 [Utility.Event] Stopping User Jobs
07/01/23-08:35:41:247 (19356) 0 [Utility.Event] Stopping Network Servers
07/01/23-08:35:41:255 (19356) 0 [Utility.Event] Withdrawing from License Domain
・Widowsのポート確認
C:\Users\hoge>netstat -ano | find ":5177"
C:\Users\hoge>
@Yugi.AA さん、こんにちは
操作内容をもう少し詳しくお聞きして良いでしょうか。
1の「PCを起動し、iris.exeを起動」とはコマンドプロンプトで<IRISのインストールディレクトリ>\bin\iris start IRISを実行されたと思いますが、その時点でmessage.logにエラーが記録されていないでしょうか。また操作内容が異なるのであればその旨お知らせ下さい。
2の「InterSystems IRIS 開始(S)[IRIS] ボタンで起動を試みる」はどのタイミングで実行されたでしょうか。1でIRISが起動していれば2の操作は起動メニューがグレイアウトして選択不可となります。
よろしくお願いします。
記事
Hiroshi Sato · 2020年12月8日
これはInterSystems FAQ サイトの記事です。
連番を生成する関数($INCREMENT)を使用してユニークな番号を自動付番することができます。
SQLのSELECT文で使用する場合には OracleのSequence相当の機能を実装したクラスを利用する方法があります。
サンプルを以下のGitHubリポジトリより取得することができます。
OracleのSequence機能を実装するサンプル
記事
Hiroshi Sato · 2022年8月8日
これは InterSystems FAQ サイトの記事です。
コンソールログに任意のメッセージを書き込む方法として%SYS.System クラスの WriteToConsoleLog メソッドを使用することができます。
以下に例を示します。
%SYS>write ##class(%SYS.System).WriteToConsoleLog("xxxxx log message",0,0)1
WriteToConsoleLogメソッドに指定できるパラメータの詳細は、以下のドキュメントをご参照下さい。
クラスリファレンス(%SYS.System)【IRIS】
クラスリファレンス(%SYS.System)
記事
Mihoko Iijima · 2025年7月10日
これは InterSystems FAQ サイトの記事です。
これらすべての操作は $ZCONVERT()関数を利用して操作できます。
詳しくは、ObjectScript CookBook に記載の説明をご参照ください。
全部大文字/小文字にしたい
指定の文字コードに文字列を変換したい
HTMLの小なり記号 < や大なり記号 > をエスケープしたい
URLやクエリパラメータに含まれる文字をエスケープ文字にしたい
記事
Megumi Kakechi · 2020年11月24日
これはInterSystems FAQ サイトの記事です。InterSystemsの製品には同時ユーザー数でライセンスの容量を決定する製品とサーバーのCPUコア数で容量を決定する製品の2種類があります。
同時ユーザー数ライセンスタイプの場合、CPUコア数により使用可能なライセンスのグレードに制限があります。
物理サーバーの場合には、そのサーバーが保持しているCPUコア数の総数をカウントします。
そして、その総数が該当グレードの最大CPUコア数を超えている場合には、その上位グレードを使用しなければなりません。
サーバー仮想化ソフトウェア(VMWare、Hyper-Vなど)を利用する場合には、その仮想サーバーに割り当てられたCPUコア数をカウントします。
同様にその総数が該当グレードの最大CPUコア数を超えている場合には、その上位グレードを使用しなければなりません。
CPUコア数ライセンスタイプの場合、コア数によりライセンスの容量が決まります。
CPUコア数の数え方は、同時ユーザーライセンスタイプと同じです。
物理サーバーの場合は、そのサーバーが保持しているCPUコア数の総数をカウントします。
サーバー仮想化ソフトウェアを利用する場合には、その仮想サーバーに割り当てられたCPUコア数をカウントします。
【関連情報】(コミュニティ/FAQトピックをリンクしています
インターシステムズデータプラットフォーム製品のライセンスポリシーについて
Cachéライセンスのコア数制限について
記事
Shintaro Kaminaka · 2020年11月27日
背景
InterSystems IRIS 2019 では、新たに魅力的な機能が導入される予定です。 ぜひ知っておくべき魅力的な新機能の一つには、API 管理があります。
OpenAPI Initiative()は、API を定義するための標準仕様()をサポートする組織です。 OpenAPI 仕様(OAS)は、REST API 向けのプログラミング言語に依存しない標準的なインターフェースの記述を定義するもので、人間とコンピューターの両方が、ソースコードへのアクセス、追加ドキュメント、またはネットワークトラフィックの検査を必要とせずに、サービスの機能を検出して理解できるようにしています。 OpenAPI を使用して適切に定義されている場合、消費者は最小限の実装ロジックでリモートサービスを理解して対話できます。 低レベルのプログラミングに対するインターフェース記述と同様に、OpenAPI 仕様によってサービスを呼び出す際の当て推量が排除されます。
InterSystems は InterSystems IRIS で **API 設計優先のアプローチをサポート**しており、それによって先に仕様を設計してからサーバーサイドを生成できるようにしています。 API を先に設計する場合、通常は Swagger Editor やその他同様のツールを使用して仕様を作成し、必要に応じて JSON 形式で OAS 仕様を取得します。
API を設計して実装する準備ができたら、OAS 仕様を使用してサーバーサイドの API ロジックを作成できるようになります。 InterSystems IRIS 2019.1 では、新しいルーチンである **^%REST** を使用し API を土台にして、ビジネスロジックを呼び出すコードを配置するクラスを自動的に生成できます。 このクラスのメソッドは命名規則に基づいて生成されますが、メソッドとクラスを仕様(operationId)で定義することもできます。
InterSystems IRIS REST コマンドラインインターフェースの使用例を以下に示します。
USER>do ^%REST REST Command Line Interface (CLI) helps you CREATE or DELETE a REST application
Enter an application name or (L)ist all REST applications (L): acmeapiREST application not found: acmeapiDo you want to create a new REST application? Y or N (Y): File path or absolute URL of a swagger document.If no document specified, then create an empty application.OpenAPI 2.0 swagger: C:\myspec\acme.swagger.json OpenAPI 2.0 swagger document: C:\myspec\notification.swagger.jsonConfirm operation, Y or N (Y):-----Creating REST application: acmeapi-----CREATE acmeapi.specGENERATE acmeapi.dispCREATE acmenapi.implREST application successfully created. Create a web application for the REST application? Y or N (Y):Specify web application name. Default is /csp/api/acmeWeb application name: /csp/api/acme/v1 -----Deploying REST application: acmeapi-----Application acmeapi deployed to /csp/api/acme/v1
現時点では、REST API を作成する際に API の土台の構築に使用できるのは **OpenAPI 2.0** Swagger 仕様だけです。
ご覧のとおり、このルーチンは以下の 3 つのクラスを作成します。
* **.spec**: このクラスは swagger 仕様(XData OpenAPI ブロック)のコンテナです。 このクラスは読み取り専用です。
* **.disp**: CSP アプリケーションで使用できるディスパッチクラスです。 %CSP.REST を拡張し、XData UrlMap を定義するものです。 また、このクラスは読み取り専用であり、システムクラスとして扱われます(デフォルトでは Atelier で非表示になっています)。
* **.impl**: 必要なすべての署名メソッドを定義するクラスです。 API を機能させるには、このクラスを完成させる必要があります。
すでに開発済みの API がある場合
InterSystems は、開発者がリモートで API 機能を探索できるサービス検索機能を InterSystems IRIS 2018.1 で導入しました。 また、Swagger を統合することで、既存の REST アプリケーションから Open API 仕様(OAS)を生成できるようにしています。 そのため、InterSystems IRIS で変更される API はすべて swagger 仕様を自動生成できます。
次のように管理 API を使用すると、システムで使用可能なすべての API を照会することができます。
HTTP GET http://:/api/mgmnt/
次の結果が返ってきます。
[..., { "name": "/csp/petstore/v2", "dispatchClass": "petstore.disp", "namespace": "USER", "resource": "", "swaggerSpec": "/api/mgmnt/v1/USER/spec/csp/petstore/v2", "enabled": true }]
また、API の Swagger 仕様は swaggerSpec プロパティによって示された URL に HTTP GET を発行することで取得できます。 元の swagger 仕様で定義されている API 操作には、アクションを実装する必要があるメソッドの名前を定義する新しいプロパティが追加されています。
例:
"x-ISC_ServiceMethod": "getPetById",
この api/mgmnt は検索だけではなく、次のように API の作成/照会/削除にも使用できるのが非常に魅力的です。
HTTP POST to /api/mgmnt/v2//HTTP GET to /api/mgmnt/v2//HTTP DELETE to /api/mgmnt/v2//
IRIS API Explorer
IRIS Explorer はこの API を利用し、IRIS API を非常にわかりやすく視覚化して管理するためのツールを提供する Angular 5 アプリケーションです。 以下、簡単にご紹介します。
まず、InterSystems IRIS インスタンスにログインする必要があります(デフォルトでは、52773 番ポートでローカルインスタンスを探します)。

ログイン後、アプリがクエリを実行して既存のすべての API を取得します。

ここでは既存の API を削除することも、新しい API を作成することもできます。 新しいアプリケーションを作成するには、ネームスペース / アプリケーション名 / Swagger 仕様を含む .json ファイルを指定する必要があります。

API を作成したら、仕様を表示できるようになります。 私はさらにこれを見やすくするため、Swager-UI()を埋め込みました。

もちろん、JSON 形式の OSA 仕様も取得できます。

すべてのコードはオープンであり、都合に合わせて使用または変更することができます。 このアプリは Open Exchange で入手できます。
GitHub でも公開しています。
お役に立てば幸いです。
記事
Megumi Kakechi · 2023年4月28日
インターシステムズは、IBM POWER8 以降の POWER プロセッサを搭載した AIX システムで、データベースおよびジャーナルファイルが破損する可能性がある問題を修正しました。この問題は、データベースまたはジャーナルの暗号化が使用されている場合にのみ発生する可能性があります。
対象バージョン: InterSystems IRIS - 2022.1.3、2023.1 を除く全てのバージョン InterSystems IRIS for Health - 2022.1.3、2023.1 を除く全てのバージョン HealthShare Health Connect - 2022.1.3、2023.1 を除く全てのバージョン HealthShare ソリューション - すべてのバージョン
※HealthShareソリューションはデータ要素の暗号化機能を使用していない為、 本不具合が直接影響することはありません。ただし、HealthShare環境にて 上記のようなデータ要素の暗号化機能を使用するカスタマイズがある場合は 本アラートに記載されている回避方法に従う必要があります。
InterSystems Cache および Ensemble - 2015.1 以降の全てのバージョン
対象プラットフォーム:IBM POWER8 以降のPOWERプロセッサを搭載したAIXシステム
発生する問題:データベースおよびジャーナルファイルの破損を引き起こす可能性がある
問題の詳細:この問題は、IBM POWER8 以降の POWER プロセッサを搭載した AIX システムで、データベースまたはジャーナルの暗号化が使用されている場合にのみ発生します。
この問題は以下の条件の場合にのみ発生します: - データベース または ジャーナル 暗号化を行っている - データ要素の暗号化を行っている - データ要素の暗号化に使用された暗号鍵が無効化されている
これらの条件をすべて満たす環境で、データベースやジャーナルの暗号化に使用するキースケジュールが破損し、データベースおよびジャーナルファイルの破損を引き起こす可能性があります。
問題の回避方法:この問題は修正ID: RJF540 で解決します。この修正は2022.1.3と2023.1には既に含まれており、今後リリースされる InterSystems IRIS、IRIS for Health および HealthShare すべての製品に含まれる予定です。
この修正は、アドホック配布でも利用可能です。このアラートに関するご質問、または修正版のアドホック配布が必要な場合は、バージョン情報とライセンスキー情報をご確認の上、弊社サポートセンターまでご連絡ください。
記事
Hiroshi Sato · 2020年8月26日
ここで紹介するサンプルは、以下のGitHubから入手可能です。
.NETサンプル
Powershellから.NETインタフェースを呼び出すサンプル1
callclassmethod.ps1というファイル名です。
処理内容は、Caché (IRIS)のバージョン情報を表示するという非常に単純なものです。
Caché では.Net Bindingを使用していましたが、IRIS用に.Net Native APIで書き換えてみます。
以前のCaché のコードは以下の通りです。
Add-Type -Path 'C:\InterSystems\Ensemble\dev\dotnet\bin\v4.0.30319\InterSystems.Data.CacheClient.dll'$cc = New-Object InterSystems.Data.CacheClient.CacheConnection("localhost",1972,"USER","_SYSTEM","SYS")$cc.Open()$ms = New-Object InterSystems.Data.CacheTypes.CacheMethodSignature$ms.Clear()$ms.SetReturnType($cc,[InterSystems.Data.CacheTypes.ClientTypeId]::tString)[InterSystems.Data.CacheTypes.CacheObject]::RunClassMethod($cc,"%SYSTEM.Version","GetVersion",$ms)$ms.ReturnValue._Value
IRISでは以下のように書き換えます。
Add-Type -Path 'C:\InterSystems\IRIS\dev\dotnet\bin\v4.5\InterSystems.Data.IRISClient.dll'$cc = New-Object InterSystems.Data.IRISClient.IRISConnection("localhost",1972,"USER","_SYSTEM","SYS")$cc.Open()$iris = [InterSystems.Data.IRISClient.ADO.IRIS]::CreateIRIS($cc)$ReturnValue = $iris.ClassMethodString("%SYSTEM.Version","GetVersion")$ReturnValue
Powershellから.NETインタフェースを呼び出すサンプル2
classload.ps1というファイル名です。
処理内容は、xml形式のクラス定義をCaché /IRISにロードする処理になります。
以前のCaché のコードは以下の通りです。
Add-Type -Path 'C:\InterSystems\Ensemble\dev\dotnet\bin\v4.0.30319\InterSystems.Data.CacheClient.dll'$cc = New-Object InterSystems.Data.CacheClient.CacheConnection("localhost",1972,"USER","_SYSTEM","SYS")$cc.Open()$ms = New-Object InterSystems.Data.CacheTypes.CacheMethodSignature$ms.Clear()$ms.SetReturnType($cc,[InterSystems.Data.CacheTypes.ClientTypeId]::tString)$ms.Add("c:\temp\load.xml",1)[InterSystems.Data.CacheTypes.CacheObject]::RunClassMethod($cc,"%SYSTEM.OBJ","Load",$ms)$ms.ReturnValue._Value
IRISでは以下のように書き換えます。
Add-Type -Path 'C:\InterSystems\IRIS\dev\dotnet\bin\v4.5\InterSystems.Data.IRISClient.dll'$cc = New-Object InterSystems.Data.IRISClient.IRISConnection("localhost",1972,"USER","_SYSTEM","SYS")$cc.Open()$iris = [InterSystems.Data.IRISClient.ADO.IRIS]::CreateIRIS($cc)$iris.ClassMethodStatusCode("%SYSTEM.OBJ","Load","c:\temp\load.xml","ck-d")
IRISの方がコード量が少なくてすむことがおわかりいただけると思います。
注意点は、そのクラスメソッドの戻り値のタイプによって、呼び出すメソッドが変わることです。
サンプル1の場合は、バージョン情報というテキスト情報が返ってくる想定ですので、ClassMethodStringを使用します。サンプル2の場合は、戻り値はステータスコードが返ってくる想定ですので、ClassMethodStatusCodeを使用します。
.NETインタフェースを呼び出すコンソールアプリケーション
内容は、Powershellサンプルと同じです。
以下Caché 用のコードです。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using InterSystems.Data.CacheClient;using InterSystems.Data.CacheTypes;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { CacheConnection conn = new CacheConnection(); conn.ConnectionString = "Server = localhost; Log File=cprovider.log;Port=1972; Namespace=Samples; Password = SYS; User ID = _SYSTEM;"; conn.Open(); CacheMethodSignature ms = new CacheMethodSignature(); ms.SetReturnType(conn, ClientTypeId.tString); CacheObject.RunClassMethod(conn, "%SYSTEM.Version", "GetVersion", ms); Console.Write("ReturnValue = " + ms.ReturnValue._Value); conn.Close(); } }}
IRISで.Net Native APIを使用して書き換えたコードは以下になります。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using InterSystems.Data.IRISClient;using InterSystems.Data.IRISClient.ADO;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { IRISConnection conn = new IRISConnection(); IRIS iris; conn.ConnectionString = "Server = localhost; Log File=irisnativeapi.log;Port=1972; Namespace=USER; Password = SYS; User ID = _SYSTEM;"; conn.Open(); iris = IRIS.CreateIRIS(conn); string ReturnValue = iris.ClassMethodString("%SYSTEM.Version", "GetVersion"); Console.Write("ReturnValue = " + ReturnValue); conn.Close(); } }}
記事
Mihoko Iijima · 2020年10月25日
これはInterSystems FAQ サイトの記事です。
IRIS の開始ができず、messages.log に以下のようなエラーが出力された場合の対処方法についてご説明します。
-----------------------------------------------------------------08/11-08:55:14:180 ( 2224) 1 errors during journal rollback, see message.log file for details. Startup aborted, entering single user mode. Enter IRIS with c:\intersystems\IRIS\bin\iris -sc:\intersystems\IRIS\mgr -B and D ^STURECOV for help recovering from the errors. -----------------------------------------------------------------
このメッセージは、ジャーナルファイルの破損による IRIS 開始時のリカバリ処理がエラーになっていることを示しています。
IRIS を開始するためには、通常の開始処理を行わず (例:ジャーナルの適用を行わない) 開始するように ^STURECOV を使用して手順を変更します。
具体的な手順は以下の通りです。
1) IRIS のインストールディレクトリ以下 bin ディレクトリへ移動し、以下のコマンドを実行します。
> cd C:\intersystems\IRIS\bin <- \binへ移動> iris force IRIS
2) 一旦、通常起動処理 (STU) を行わないようにして IRIS を開始します。
2-1) Windows の場合は、タスクマネージャで、全 irisdb.exe がないのを確認後、通常起動処理(STU)を行わないようにして起動します。
> iris startnostu IRIS <---- IRIS=構成名 "nostuモード":あとで手動でSTUを行う。
※nostu ― スタートアップ・ルーチンを実行しません (^STU)。
> irisdb -s ..\mgr -B
2-2) Windows 以外の場合は、ps コマンドで irisdb が存在しないことを確認後、通常起動処理(STU)を行わない開始を指定します。
> iris start iris nostu
> iris session iris -B
以下、2-1) 2-2) 共通です。
上記実行で、プロンプトに %SYS> が表示されたらログイン成功です。
【注意】Windows で実行する場合「Use emergency login to login to the system」 のメッセージ、または のメッセージが出力される場合は、コマンドプロンプトを起動しているユーザが管理者 (administrator または administrators グループ所属) であるか、ご確認ください。
また、Windows で UAC が有効になっている環境では、コマンドプロンプトを「管理者として実行」が必要になる場合もあります。
3) STURECOV ルーチンを実行してジャーナルリカバリ情報をリセットします(記入例は赤字部分をご参照ください)。
%SYS>do ^STURECOVDo you want to continue ? No => yes <---- yesEnter error type (? for list) [^] => JRN <---- JRN入力Journal recovery options...8) Reset system so journal is not restored at startup...Enter choice (1-10) or [Q]uit/[H]elp? 8 <---- 8入力Are you sure you want to do this? No => yes <---- yesJournal recovery options...Enter choice (1-10) or [Q]uit/[H]elp? quit <---- quitExiting%SYS>%SYS>do ^STU <---- do ^STUを入力
Start Journaling? Yes => yes <---- yes
%SYS>halt <---- haltでIRISのログインを終了します
5) Windowsでは、IRISのランチャーがグレーからカラーの表示に変更したら成功です。Windows以外のOSでは、 iris list の結果から status が running であれば成功です。
確認後、halt でターミナルを抜けます。
iris list の実行例は以下の通りです。
$ iris list
Configuration 'IRIS' (default) directory: /usr/irissys versionid: 2020.1.0.215.0 datadir: /usr/irissys conf file: iris.cpf (SuperServer port = 51773, WebServer = 52773) status: running, since Sat Apr 18 18:24:10 2020 state: ok product: InterSystems IRISHealth$
その後、IRIS を再起動し、再起動が成功したら、messages.log を確認してください。
最後の起動時にエラーが存在しなければ、復旧処理は完了です。
※復旧後は必ず整合性チェック (Do ^INTEGRIT または 管理ポータル > [システムオペレーション] > [データベース] > [整合性チェック]) を行うようにしてください。
お知らせ
Toshihiko Minamoto · 2020年12月21日
コミュニティの皆さん、こんにちは!
この記事では、開発者コミュニティと InterSystems Global Mastersアドボケート・ハブのレベルに関する情報を掲載しています。
お知らせ:現在、これらのバッジの多くは変更中です。この表も近日中に更新される予定です。
すべての Global Masters メンバー(アドボケイト)は、開発者コミュニティへの貢献と Global Masters での活動に応じてさまざまなレベルのアドボカシーを達成できます。
新しいレベルに移行するたびに、新しいタイプのチャレンジ/タスクと新しいタイプの報酬が開始されます。
レベルアップするには、次のレベルからいくつかのバッジを獲得する必要があります。 バッジは Global Master でさまざまなチャレンジを完了すると獲得できます。
現在は 6 つのレベルがあります。
1. インサイダー 2. アドボケイト 3. スペシャリスト 4. エキスパート 5. アンバサダー 6. VIP
➡ バッジの上にマウスカーソルを移動すると、獲得方法を確認できます。
レベル名
ルール
インサイダー
Hubに参加した時点で「インサイダー」レベルとしてスタートします。
アドボケイト
次のレベルには以下のうち 2 つのバッジが必要です。
DC Author
InterSystems Researcher
DC Commenter
DC Problem Solver
DC Translator
Pull RequestContributor
InterSystemsOpen Exchange Developer
DC Recruiter
Best PracticesAuthor
Global Masterof the Month
よって、質問か質問への回答の投稿、同僚をコミュニティに招待するだけで獲得できます!
スペシャリスト
スペシャリストレベルには以下のうち 3 つのバッジが必要です。
InsightfulCommenter
InsightfulAuthor
Advanced PullRequest Contributor
Popular Writer
Reporter Badge
CuriousMember
Masterof Answers
PopularApp badge
Bronze OpenExchange Developer
BronzeRecruiter
RecognizableBest Practices Author
年間実績バッジ
DC Best-SellingAuthor
DC Expert
DC Opinion Leader
InterSystemsDeveloperof the Year
InterSystemsApplicationof the Year
スペシャリストの獲得は簡単ではありませんが、不可能ではありません!
エキスパート
エキスパートレベルには以下のうち 4 つのバッジが必要です。
ExpertCommenter
Expert Author
Bronze PullRequest Contributor
NotableWriter
Blogger Badge
Thorough Member
Bronze Masterof Answers
Bronze Popular App badge
Silver OpenExchange Developer
SilverRecruiter
Bronze BestPractices Author
年間実績バッジ
BronzeBest-Selling Author
BronzeExpert
BronzeOpinion Leader
Bronze InterSystemsDeveloper of the Year
Bronze InterSystemsApplication of The Year
InterSystems Data Platformsのエキスパートになるのは非常に困難です!私たちはエキスパートと巡り合えて光栄です!
アンバサダー
アンバサダーレベルには以下のうち 4 つのバッジが必要です。
RecognizableCommenter
Silver PullRequest Contributor
FamousWriter
Influencerbadge
InquisitiveMember
Silver Masterof Answers
Silver Popular App badge
Gold OpenExchange Developer
Gold Recruiter
Silver BestPractices Author
年間実績バッジ
Silver Best-Selling Author
SilverExpert
SilverOpinion Leader
Silver InterSystemsDeveloper of the Year
Silver InterSystemsApplication of The Year
VIP
VIP レベルには以下のうち 5 つのバッジが必要です。
PowerfulCommenter
PowerfulAuthor
Gold PullRequest Contributor
Gold Writer
Opinion Maker
SocraticMember
Gold Masterof Answers
Gold PopularApp Badge
Platinum Popular App badge
PlatinumRecruiter
Gold BestPractices Author
年間実績バッジ
Gold Best-Selling Author
Gold Expert
Gold Opinion Leader
Gold InterSystemsDeveloper of the Year
Gold InterSystemsApplication of The Year
Bronze Advocateof the Year
Silver Advocateof the Year
Gold Advocateof the Year
これは並外れて素晴らしいレベルです!あなたの素晴らしい貢献に感謝します!
補足
Global Masters に関する詳細な情報は、以下のリンクでご確認ください。
InterSystems Global Masters への参加方法
Global Masters バッジの説明
Global Masters プログラムの変更点
InterSystems Global Masters Advocacy Hub にまだご参加でない方はぜひ今すぐご参加ください!
この投稿へのコメントでお気軽にご質問ください。
記事
Megumi Kakechi · 2021年6月3日
Java のプログラムで $List 構造のデータを扱うには、InterSystems 製品が提供する IRISList クラスを使用することが可能です。
こちらは、IRIS Native と同様に JDBCドライバの拡張機能の一部として提供しております。
Native API for Java Quick Reference(英語のみ)
こちらでは、InterSystems 製品上に $List 構造を扱うクラスメソッドを作成し、それをストアドプロシージャとして公開し Java から呼び出すサンプルをご紹介します。
【使用可能バージョン】
IRIS 2020.1 以降に同梱されている JDBC ドライババージョン 3.1.0 以降。ただし、JDBCで使用する場合は 3.2.0以降(IRIS2021.1以降)。
<IRISインストールディレクトリ>\dev\java\lib\JDK(Ver.)\intersystems-jdbc-3.1.0.jar
【手順】
1. IRISサーバの任意のネームスペースに以下のようなクラスを用意します。 SqlProc キーワード を指定し、メソッドを SQL ストアドプロシージャとして呼び出せるようにします。 こちらのサンプルでは、^scoreDetails グローバルに Java から渡されたリスト形式の gamesList をセットしています。 ※後程おまけのサンプルで使用するリスト型のプロパティ FavoriteColors も追加しています。
Class User.ListTest Extends %Persistent
{
Property Name As %String
Property FavoriteColors As list Of %String;
ClassMethod writeTest(name As %String, gamesList As %List) As %Integer [ SqlProc ]
{
set ^scoreDetails(name,"gamesList") = gamesList
quit 1
}
}
2. Java のコードを用意します。今回は、JDBCを使用する方法と、Native API for Java を使用する方法をご紹介します。
★JDBCでストアドプロシージャを実行するサンプル
import java.sql.*;
import java.util.*;
import com.intersystems.jdbc.*;
public class SListTestIRIS1 {
public static void main(String[] args) throws Exception {
String url = "jdbc:IRIS://127.0.0.1:1972/USER";
IRISDataSource dataSource = new IRISDataSource();
dataSource.setURL(url);
dataSource.setUser("username");
dataSource.setPassword("password");
IRISConnection connection = (IRISConnection) dataSource.getConnection();
IRISList list = new IRISList();
list.add("basketball");
list.add("tennis");
//list.set(1,"basketball"); // add, set どちらの方法でもOK
//list.set(2,"tennis");
PreparedStatement cstmt = connection.prepareStatement("{ call SQLUser.ListTest_writeTest(?, ?) }");
cstmt.setString(1, "David");
cstmt.setBytes(2,Arrays.copyOf(list.getBuffer(),list.size())); // 現時点ではIRISListをそのまま渡せないためArraysにコピー
//cstmt.setBinaryStream(2, new java.io.ByteArrayInputStream(list.getBuffer()),list.size()); // 4.3MB以上のbyte[] を取り扱うときはこちら
cstmt.execute();
return;
}
}
実行結果:
USER>zw ^scoreDetails
^scoreDetails("David","gamesList")=$lb("basketball","tennis")
★Native APIでクラスメソッドを呼び出すサンプル
import com.intersystems.jdbc.*;
public class SListTestIRIS2 {
public static void main(String[] args) throws Exception {
String url = "jdbc:IRIS://127.0.0.1:1972/USER";
IRISDataSource dataSource = new IRISDataSource();
dataSource.setURL(url);
dataSource.setUser("username");
dataSource.setPassword("password");
IRISConnection connection = (IRISConnection) dataSource.getConnection();
// create IRIS Native object
IRIS iris = IRIS.createIRIS(connection);
IRISList list = new IRISList();
list.add("basketball");
list.add("cricket");
//list.set(1,"basketball"); // add, set どちらの方法でもOK
//list.set(2,"tennis");
iris.classMethodVoid("User.ListTest", "writeTest", "Nicole", list);
return;
}
}
実行結果:
USER>zw ^scoreDetails
^scoreDetails("Nicole","gamesList")=$lb("basketball","cricket")
※おまけ
INSERT で文字列のリストを設定する場合、以下のような単純な方法で行うことができます。
List Of %String のプロパティは、値をカンマで区切り、二重引用符で囲んだ単純な文字列として渡すことができます。
import java.sql.*;
import com.intersystems.jdbc.*;
public class SListTestIRIS3 {
public static void main(String[] args) throws Exception {
String url = "jdbc:IRIS://127.0.0.1:1972/USER";
IRISDataSource dataSource = new IRISDataSource();
dataSource.setURL(url);
dataSource.setUser("username");
dataSource.setPassword("password");
IRISConnection connection = (IRISConnection) dataSource.getConnection();
PreparedStatement insert = connection.prepareStatement("INSERT INTO SQLUser.ListTest (name, favoritecolors) " + "VALUES (?,?)");
insert.setString(1, "InterSystems, Japan");
insert.setString(2, "\"red\",\"orange\",\"yellow\",\"green\",\"blue\",\"purple\"");
int rowsAffected = insert.executeUpdate();
return;
}
}
実行結果:
USER>d $SYSTEM.SQL.Shell()
SQL Command Line Shell
----------------------------------------------------
The command prefix is currently set to: <<nothing>>.
Enter <command>, 'q' to quit, '?' for help.
[SQL]USER>>select * from SQLUser.ListTest
1. select * from SQLUser.ListTest
ID FavoriteColors Name
1 $lb("red","orange","yellow","green","blue","purple") InterSystems, Japan
1 Rows(s) Affected
statement prepare time(s)/globals/cmds/disk: 0.0629s/40013/185744/15ms
execute time(s)/globals/cmds/disk: 0.0014s/2/816/0ms
cached query class: %sqlcq.USER.cls9
---------------------------------------------------------------------------
[SQL]USER>>
記事
Toshihiko Minamoto · 2022年3月24日
この記事では、CSP Web アプリケーションを使用して、コードで認証、承認、および監査を行う方法と、Web アプリケーションを有効化/無効化および認証/認証解除する方法について説明します。
* オンラインデモは、クラウド(https://dappsecurity.demo.community.intersystems.com/csp/user/index.csp)にあります(SuperUser | SYS)。
* 先に進む前に、動画をご覧になることをお勧めします(https://www.youtube.com/watch?v=qFRa3njqDcA)。
アプリケーションのレイアウト

## **認証から始めましょう**
認証は、InterSystems IRIS® に接続しようとするユーザーや他のエンティティの ID を検証します。 よく言われるように、認証は、ユーザーがユーザーが言う通りの本人であることを証明する方法です。
ユーザーを認証する方法にはいくつかあり、それぞれが認証方法として知られています。 InterSystems IRIS では、以下のような多数の認証方法をサポートしています。
Kerberos — Kerberos プロトコルは、セキュリティで保護されていないネットワークを使用するサービスに安全な認証を提供するために設計されました。 Kerberos はユーザーの認証にチケットを使用し、ネットワークでのパスワードの交換を回避しています。
オペレーティングシステムベース — OS ベースの認証は、各ユーザーのオペレーティングシステムの ID を使用して、InterSystems IRIS に対してユーザーを識別します。
インスタンス認証 — インスタンス認証では、InterSystems IRIS はユーザーにパスワードを求め、提供されたパスワードのハッシュと InterSystems IRIS が保存している値を比較します。
LDAP(Lightweight Directory Access Protocol) — LDAP では、InterSystems IRIS は LDAP サーバーとして知られる中央レポジトリにある情報に基づいて、ユーザーを認証します。
委任認証 — 委任認証は、カスタマイズされた認証方法を作成する方法を提供します。 アプリケーション開発者が、委任された認証コードの内容を完全に制御します。
私は、[インスタンス認証](https://docs.intersystems.com/healthconnectlatestj/csp/docbook/DocBook.UI.Page.cls?KEY=GAUTHN_instanceauthe)を使用しています。ユーザー作成には、以下の ObjectScript コマンドを使用できます。
&sql(CREATE USER TestUser IDENTIFY BY demo)
demo パスワードを使用する TestUser を作成しました。
* * *
## 監査
ユーザーを作成すると、そのレコードは、以下の ObjectScript コマンドを使用して監査データベースにも追加されます。
Do $SYSTEM.Security.Audit("%System","%Security","UserChange","User:TestUser | Password:demo","Audit Log inserted from Data_APP_Security")
.png)
次の関連ドキュメント(監査ガイド)をお読みください: https://docs.intersystems.com/irislatestj/csp/docbook/DocBook.UI.Page.cls?KEY=AAUDIT
##
**承認**
認証が完了したら、ロールを作成してそのロールに権限を付与し、ロールとユーザーをリンクする必要があります([承認](https://docs.intersystems.com/latestj/csp/docbook/DocBook.UI.Page.cls?KEY=TSQS_Authorization))。 これは、3 段階で行います。
**ステップ 1: 以下の ObjectScript コマンドを使用して、ロールを作成します。作成するロールは ReadWrite ロールです。**
&sql(CREATE ROLE ReadWrite)
**ステップ 2: テーブルに対する SELECT、UPDATE、INSERT 権限をロールに付与します。scw.Patient テーブル権限を ReadWrite ロールに割り当てます。**
&sql(GRANT SELECT,UPDATE,INSERT ON scw.Patient TO ReadWrite)
**ステップ 3: ロールをユーザーに付与します。ReadWrite ロールを TestUser ユーザーに割り当てます。 **
&sql(GRANT ReadWrite To TestUser)
* * *
## **Web アプリケーションの有効化/無効化**
以下の ObjectScript コードを使用して、Web アプリケーションを有効化または無効化することができます。
New $Namespace
Set $Namespace = "%SYS"
Set App = ##class(Security.Applications).%OpenId("/terminal")
Set App.Enabled=0
Do App.%Save()
ここで「/terminal」はアプリケーションの名前です。 アプリケーションは、「App.Enabled」を 0 に設定することで無効化、それを 1 に設定することで有効化することができます。
* * *
## Web アプリケーションの認証/認証解除
以下の ObjectScript コードを使用して、認証を設定できます。
New $Namespace
Set $Namespace = "%SYS"
Set App = ##class(Security.Applications).%OpenId("/terminal")
Set App.AutheEnabled=0
Do App.%Save()
ここで「/terminal」はアプリケーションの名前です。 認証は、「`App.AutheEnabled"`」プロパティを使用して設定できます。 以下の数値を設定可能です。
property AutheEnabled as Security.Datatype.Authentication [ InitialExpression = 64 ];
Authentication and Session mechanisms enabled (CSP Only).
Bit 2 = AutheK5API
Bit 5 - AutheCache
Bit 6 = AutheUnauthenticated
Bit 11 = AutheLDAP
Bit 13 = AutheDelegated
Bit 14 = LoginToken
Bit 20 = TwoFactorSMS
Bit 21 = TwoFactorPW
以上です!
記事
Toshihiko Minamoto · 2025年5月16日
OwnObjectScriptExtension
ObjectScript は InterSystems IRIS などの InterSystems 製品に使用されている強力な言語で、堅牢なアプリケーションの構築を可能にします。 OwnObjectScriptExtension は Visual Studio Code の拡張機能として、ObjectScript 開発エクスペリエンスを強化する広範なツールと機能を提供しています。 この記事では、OwnObjectScriptExtension によって ObjectScript 開発ワークフローがどのように改善されるかを説明します。
---
機能
Add Method Description
メソッドの説明を包括的に記述することは、コードを明確に維持し、コラボレーションを促進する上で欠かせません。 OwnObjectScriptExtension を使用すると、メソッドの説明を簡単に生成できます。 メソッド内にカーソルを配置し、`Add Method Description` コマンドを実行するだけで完了です。 拡張機能によってメソッドの説明テンプレートが自動的に生成されるため、意味のあるドキュメントを簡単に提供できます。
Make Select Statement
ObjectScript を使用する際は、データベースの操作が必要となることがよくあります。 `Make Select Statement` 機能を使用すると、SQL の _SELECT_ ステートメントを生成するプロセスを単純化できます。 この拡張機能は、現在開いている ObjectScript ファイルを分析することで、クラス名に基づく _SELECT_ ステートメントを作成します。 [SQLTools](https://marketplace.visualstudio.com/items?itemName=mtxr.sqltools) 拡張機能がインストール済みである場合は、生成されたステートメントを直接 Visual Studio Code 内で実行できます。
Create New Wizard ベータ
`Create New Wizard` 機能を使用すると、新しい ObjectScript クラス、メッセージ、ビジネスサービス、またはビジネスオペレーションの作成がより便利になります。 新しいコンポーネントの生成プロセスは、使い慣れた InterSystems Studio ウィザード似たウィザード形式のインターフェースによって誘導されます。 コマンドを実行して指示に従うと、新しい ObjectScript を素早くセットアップできるため、時間と労力を節約できます。
* この機能は現在ベータであり、期待どおりに動作しない場合があります。 生成されたコードを調整する必要がある場合があります。*
Translate Embedded Python ベータ
特定のシナリオでは、ObjectScript コード内で Python の力を利用したい場合があります。 `Translate Embedded Python` 機能を使用すると、ObejctScript メソッドを Embedded Python メソッドに変換することができます。 このコマンドを実行すると、拡張機能によって、_py_ のプレフィックスとともに同じ名前で新しいメソッドが生成されます。 このため、コードベースの構造と編成を維持したまま、Python 機能を統合することができます。
* この機能は現在ベータであり、期待どおりに動作しない場合があります。 生成されたコードを調整する必要がある場合があります。*
---
インストールとセットアップ
OwnObjectScriptExtension を利用し始めるには、[Visual Studio Code Marketplace](https://marketplace.visualstudio.com/items?itemName=PhilippB.ownobjectscriptextension) から直接インストールするか、GitHub から[最新リリース](https://github.com/phil1436/ownobjectscriptextension/releases/latest)をダウンロードできます。 インストールが完了したら、[InterSystems ObjectScript 拡張機能](https://marketplace.visualstudio.com/items?itemName=intersystems-community.vscode-objectscript)がインストールされていることを確認してください。
---
構成とカスタマイズ
この拡張機能には、ユーザーの環境に合わせて使用できる様々な構成オプションが提供されています。 また、_InterSystems Real Dark_ の色テーマが提供されているため、Visual Studio Code の視覚的なエクスペリエンスを強化できます。
---
ご質問やフィードバックがございましたら、お気軽にご連絡ください。 拡張機能を活用できますように!