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

第7回 InterSystems IRIS プログラミングコンテスト(Interoperabilityコンテスト) への応募、投票が全て終了しました。コンテストへのご参加、またご興味をお持ちいただきありがとうございました。

今回のお知らせでは、見事受賞されたアプリケーションと開発者の方々を発表します!

🏆  審査員賞 - 特別に選ばれた審査員から最も多くの票を獲得したアプリケーションに贈られます。 

00
0 0 29
記事
Hiroshi Sato · 2021年2月24日 3m read
ECPはどのように使うのが正しい?

以下のドキュメントでご紹介しています通り、ECPは分散キャッシュ用のアプリケーションサーバーを並列に増設することで、処理量に応じてスケールアウトすることを主目的として設計されています。

 

ECP機能紹介

 

従ってインターシステムズデータプラットフォーム上で稼働する複数のアプリケーション間の簡便なデータ交換手段としてECPをご使用いただくことは推奨していません。

以下その理由についてご説明します。

データ量の増加、処理量の増加に伴いスケーラビリティに関する要件も今後益々厳しくなる中、将来にわたってより良いスケーラビリティ性能を得られるようインターシステムズの開発部門は、より良いアルゴリズムの開発や処理のチューニングをECPに対して継続的に行っております。


その成果は順次最新バージョンに反映していきます。

00
0 0 28
記事
Megumi Kakechi · 2020年12月17日 1m read
選択性の数値について

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

選択性(または Selectivity)の数値とは、カラムに対するユニークデータの割合を示す数値です。

例) Person テーブルの個別値である PID カラム、住所のうち都道府県名が入る Pref カラム
 Pref カラムの選択性 = 約 2%
 PID カラム(ユニーク属性のカラム)の選択性 = 1

InterSystems製品のクエリオプティマイザは、クエリ実行経路(プラン)とインデックスの選択を決定するため、エクステントサイズ(テーブル内のレコード数)と選択性の数値を使用します。

詳細は下記ドキュメントページをご参照ください。

テーブルの最適化【IRIS】

00
0 0 27

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

揮発性テーブル(多数のINSERT、DELETEが行われるテーブル)では、ビットマップ・インデックス用ストレージは徐々に効率が低下する可能性があります。

例えば、以下の定義からなるデータが数千件あり、一定期間保持した後 TRUNCATE TABLE で一括削除を行うオペレーションが繰り返し行われているとします。

Class MyWork.MonthData Extends (%Persistent, %Populate)
{
/// 満足度
Property Satisfaction As %String(VALUELIST = ",満足,やや満足,やや不満,不満,");
/// 年齢
Property Age As %Integer(MAXVAL = 70, MINVAL = 20);
Index AgeIdx On Age [ Type = bitmap ];
}

 

00
0 0 27

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

Java ゲートウェイを使用することで、Java クラスのモジュールを InterSystems IRIS から実行できます。

【メモ】Java ゲートウェイは、外部 Java オブジェクトを InterSystems IRIS 内のネイティブ・オブジェクトと同じようにインスタンス化し、Javaオブジェクトを操作するための方法です。

詳細は以下ドキュメントをご参照ください。
Java ゲートウェイについて

 

Java ゲートウェイを使用する手順は以下の通りです。

1) Java ゲートウェイサーバを開始する

00
0 0 27

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

$SYSTEM.Process.TerminalPrompt() を使用してターミナルのプロンプトを変更できます。

プロンプトの表示形式は、以下情報の組み合わせで指定できます。

  1.  ホスト名
  2. 現在のネームスペース
  3. 構成名
  4. 現在の時刻
  5. PID: オペレーティングシステム上でのプロセスID
  6. ユーザーネーム
  7. 最後のコマンドを実行してからの経過時間

例えば、Do $SYSTEM.Process.TerminalPrompt(1,3) ではホスト名と構成名をターミナルのプロンプトとして表示します。 

*実行例は、ホスト名="HOST1"、構成名="IRIS"*

USER>Do $SYSTEM.Process.TerminalPrompt(1,3)
HOST1:IRIS>

 

00
0 0 27

皆さんこんにちは!

この記事でご紹介する「開発環境テンプレート」は、最近 医療 IT で注目を集めている 医療情報交換標準規格  FHIR を体験できるコンテナです。

一式は、こちら(https://github.com/Intersystems-jp/IRIS-FHIR-Oximeter-Template)で公開しています。

コンテナビルド時、InterSystems IRIS for Health コミュニティエディションを使用した FHIR R4 リソースリポジトリの用意と、REST 用エンドポイントが用意されます。

00
0 0 27

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

データベースキャッシュおよびルーチンキャッシュをモニターし、最適値を調べる方法をご紹介します。
 

(1) データベースキャッシュ

現状の設定値で問題ないかは、^GLOSTAT ユーティリティ のCache Efficency値(キャッシュ効率)でモニターします。

Cache Efficiency 値は大きければ大きいほど良いですが、目安として100 以上であれば、設定サイズは問題ありません。

実行例)

00
0 0 26
記事
Makiko Kokubun · 2021年3月30日 1m read
動画:FHIR+IRIS for Health 101

*この動画は、2021年2月に開催された「InterSystems Japan Virtual Summit 2021」のアーカイブです。
 

この動画では、FHIR をご存じない方に向けて FHIR の概要を解説し、日本における FHIR 標準化活動の状況や国内外の事例を紹介しています。

   

後半の16分~くらいからは、InterSystems IRIS for Health が提供する FHIR リポジトリに代表される FHIR 関連機能と、今後の機能ロードマップを紹介しています。

10
0 0 26

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

第8回 InterSystems IRIS プログラミングコンテスト(Analytics コンテスト) への応募、投票が全て終了しました。コンテストへのご参加、またご興味をお持ちいただきありがとうございました。

今回のお知らせでは、見事受賞されたアプリケーションと開発者の方々を発表します!

 

🏆 Experts Nomination  - 特別に選ばれた審査員から最も多くの票を獲得したアプリケーションに贈られます。 

00
0 0 26

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

第8回 Analytics コンテスト続報 📣 の「テクノロジーボーナス」について紹介します。

  • InterSystems IRIS BI(旧DeepSee)
  • InterSystems IRIS NLP
  • IntegratedML
  • 実データの利用
  • ZPM を利用したパッケージの開発
  • Docker コンテナの利用

ボーナス詳細は以下ご参照ください。

00
0 0 26
記事
Hiroshi Sato · 2020年11月23日 1m read
変数等命名規約について

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

変数等命名規約に関して、InterSystems自体が定めている規則の様なものはありません。

しかし、チームで開発を行う際には、何らかの命名規約を作ることをお勧めします。

一般的には、変数名から使用目的が容易に想像できる様な名前付けが好ましいです。

名前の長短で、実行性能には有意な差はないと考えて結構ですので、一目見て内容が理解しやすく、他の名前と明確な区別ができるよう、ある程度の長さを持った命名を心がけることをお勧めします。

また、先頭のアルファベットを大文字にする、単語の先頭は大文字にするというのが一般的です。
しかし、昨今は、Javaで良く使われる、先頭は小文字で初めて、途中の単語の始まりを大文字にするという命名規約を使う開発者も増えてきました。

さらに変数のタイプ(一時変数、パラメータなど)がわかるように、先頭の文字で表現する方法もよく使われます。
(例: tSC,pLengthなど)

00
0 0 26

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

ミラーリングが同期の対象とするのはデータベースファイルのみです。

アプリケーションに必要なその他のファイル(CSPファイル、画像ファイル、ドキュメントファイルなど)をミラーセットを構成する二台のサーバー間で同期させるには、

  1. NASなどを導入して共有ディスク上にそれらのファイルを配置する方法
  2. または同期ソフトを導入して二台のサーバー間のファイルを同期させる方法

などの方法が考えられます。 また、2の方法では Windows 上では RoboCopy、Linuxの場合には rsync という同期ソフトを使った実例があります。

00
0 0 25

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

システムのパフォーマンスが低下した場合、OSやインターシステムズ製品の様々なツールを使用して情報収集を行い
  ”通常時と比較して、どこがどの程度変わっているか”
を確認することで、問題のある箇所を特定できます。
(逆に、通常時の状況が不明な場合、パフォーマンス問題点の切り分けが非常に困難となる場合もあります。)

いざ という時に備え、通常時のパフォーマンスを確認することは、大変重要な情報となります。


収集情報詳細は、以下のドキュメントをご参照ください。

パフォーマンス調査ガイド

00
0 0 25

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

%SYSTEM.SQL クラスの Purge* メソッドを使用して削除することが可能です。

※各メソッドの詳細は、以下ドキュメントをご参照ください。

%SYSTEM.SQLクラスについて【IRIS】

%SYSTEM.SQLクラスについて

 

00
0 0 25

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

InterSystemsでは、既存のお客様および見込みのお客様と実施した他DBMS製品との比較を行った様々なベンチマーク結果を持っています。

しかし、それらの結果に関して、ほとんどのRDBMSベンダのライセンス条項に当該RDBMSベンダの承諾なしにベンチマーク結果を公表してはならないという条項があるため、現実問題として一般的な公表は、難しい状況です。

一方、TPC等の公共の機関等がベンチマーク条件を策定、公開しているベンチマークに関しては、必要な実施コストに対して得られるものが少ないと考えており、過去にも実施しておりませんし、将来も実施する予定はありません。

InterSystemsは、TPCの様な現実のシナリオからかけ離れたベンチマークを実施するのではなく、実際のアプリケーションを模したベンチマークシナリオを構築し、それに基づき、各ハードウェアベンダ、パートナ企業、エンドユーザとの協力の基、ベンチマークを実施しております。

00
0 0 24

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

 1. エクスポートAPI

a. ルーチンを個別に指定してエクスポートする場合は、$system.OBJ.Export() を使用します。

例: 

do $system.OBJ.Export("TEST1.mac,TEST2.mac","c:\temp\routines.xml",,.errors)

 

指定する形式は ルーチン名.拡張子 で、拡張子は mac,bas,int,inc,obj を指定します。

エクスポート中のエラーは errors に格納されます。

$system.OBJ.Export() の詳細はクラスリファレンス %SYSTEM.OBJ を参照してください。

b. ワイルドカードを使用してエクスポートする場合にも、$system.OBJ.Export() を使用します。
例: 

00
0 0 24

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

以下のサンプルでは、画像ファイルをクラスプロパティにBase64文字列にエンコードして保存し、再びそれをBase64でデコードし、別のファイルに復元しています。


【使用クラス】

Class User.test Extends %Persistent
{
Property pics As %GlobalBinaryStream;
}


【取込み時】

00
0 0 24

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

第10回のグランプリ・プログラミングコンテストの 続報 📣 のテクノロジーボーナスについてご紹介します。

今回のコンテストでは、チームで開発した作品もご応募いただけます!ぜひコンテスト詳細ページもご確認ください!

00
0 0 24

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

1変数に最大 3,641,144 文字まで格納できます。

この制限は、InterSystems IRIS上で取り扱う全ての文字列が対象となるため、ローカル変数やメソッドの引数・戻り値も対象となります。

最大文字について詳しくは、以下ドキュメントをご参照ください。

最大文字列長について

 

00
0 0 24
記事
Tomoko Furuzono · 2020年11月24日 1m read
IRISTempデータベースの縮小方法

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

MaxIRISTempSizeAtStartという構成パラメータを設定することにより、IRIS起動時のIRISTempデータベースの最大サイズを設定できます。

システムは、設定後、次のIRIS起動時に、設定された値(MB)にIRISTempの切り捨てを行います。 指定した MaxIRISTempSizeAtStart よりも現在サイズが小さい場合は、切り捨ては行われません。
また、0 を指定すると切り捨てが行われないため、サイズは変わらないまま起動します。(デフォルト) 設定は、以下メニューから行います。

管理ポータル
[システム管理]>[構成]>[追加の設定]>[開始]>"MaxIRISTempSizeAtStart"

00
0 0 23

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

2020年最後の IRIS プログラミングコンテストの投票が始まりました!
🔥 これだ!と思う一押し作品に投票お願いします! 🔥

 

投票方法は?

今回から投票方法が新しくなりました!
Expert Nomination または Community Nomination を選択いただき、どの作品がどの順位になるかを指定しながら投票します。

Community Leaderboard:

00
0 0 23
記事
Megumi Kakechi · 2021年3月10日 3m read
RESTでセッション共有化する方法

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

REST アプリケーションはステートレスであることが想定されています。

しかし、複数の REST 呼び出し間でデータを保持したい場合などの理由で、Webセッションを使用したい場合は、UseSession パラメータを使用することができます。

以下のように、Web アプリケーションのディスパッチクラスとして定義された %CSP.REST のサブクラスでUseSession パラメータを指定することで、CSPと同じようにWebセッションを使用することが可能となります。

Class REST.MyServices Extends %CSP.REST
{
 Parameter UseSession As Integer = 1;


詳細は以下のドキュメントをご覧ください。

10
0 0 23

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

連番を生成する関数($INCREMENT)を使用してユニークな番号を自動付番することができます。

 

SQLのSELECT文で使用する場合には OracleのSequence相当の機能を実装したクラスを利用する方法があります。

 

サンプルを以下のGitHubリポジトリより取得することができます。

 

OracleのSequence機能を実装するサンプル

 

00
0 0 23

  インターシステムズは InterSystems IRIS および IRIS for Health バージョン2020.4 をリリースしました。本バージョンは、継続的デリバリ(CD) リリースのため、Docker コンテナ として知られる OCI (Open Container Initiative)形式 (for Linux x86-64 および Linux ARM64) のみ入手いただけます。

コンテナイメージは OCI に準拠した Linux x86-64 および Linux ARM64 対応のランタイムエンジンで動作可能です。

あわせて IRIS Studio 2020.4 もリリースしました。

リリースのビルド番号は 2020.4.0.547.0 です。

【新機能のご紹介】
InterSystems IRIS Data Platform 2020.4 には、以下の新機能が含まれます。

00
0 0 23

インターシステムズは、以下のプレビューバージョンをリリースしました。

  • InterSystems IRIS 2021.1 preview
  • InterSystems IRIS for Health 2021.1 preview
  • HealthShare Health Connect 2021.1 preview

来月に予定されている一般提供開始に先立ち、このプレビューリリースにて新製品の感想を皆様からお聞かせいただきたいと思います。
InterSystems IRIS Data Platform 2021.1 は、エクステンデッド・メンテナンス(EM)リリースです。前回のEMリリースである2020.1以降、継続的なデリバリー(CD)リリースで多くの重要な新機能や拡張機能が追加されています。
CDリリースの概要については、2020.2、2020.3、2020.4のリリースノートを参照してください。

このプレビューリリースのビルド番号は、2021.1.0.205.0 です。

00
0 0 22

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

InterSystems ObjectScript言語では引数の異なる同名のメソッドを定義することはできません。

InterSystems ObjectScript言語は一般的に動的言語と呼ばれるプログラミング言語に分類されます。

ObjectScriptではメソッド実行時にどの引数を使用するかどうかは自由に制御可能ですので、動的プログラミング言語ではないJava等の言語と異なり、コンパイルの段階で厳密に引数の数でメソッドを区別する必要がありません。

従って ObjectScript言語は、オーバーロードと一般に呼ばれる言語仕様を含んでいません。

 

Java等で記述されたプログラムを移植する際にオーバーロード相当の機能を実現するには、

ClassMethod test(args... as %String)

のように引数の後ろに ... を付加します。

 

00
0 0 22

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

InterSystems Data Platform自身には、ソース管理を行う機能はありませんが、InterSystems OpenExchangeでVS Code用のプラグインが公開されており、このIDE(統合開発環境)のソース管理機能を利用することができます。

(バージョン2016.2以降)

 

VS Codeを使用する場合、クライアントにもソースコードをファイル形式で保持するので(*.cls, *.mac, *.csp など)、ソースコントロールシステムとの連携もシームレスに行えます。


利用方法詳細については、以下のページをご参照ください。


VSCode-ObjectScript
 

10
0 0 22

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

以下のようにユーザ名、パスワードを引数に持ち、認証が成功した場合はユーザ名、失敗したときは""(NULL)を返すルーチン(SecTest^SecTest)を作成し、標準の認証システムを書き換えることができます。

 

SecTest(user,pass)
 // user1のパスワードがuser1の場合、認証OKのログを作成
 if user="user1",pass="user1" {
  set ^sqllog($i(^sqllog))="認証OK;"_$horolog_";"_user
  quit user
 }
 // 認証できなかった場合、認証NGのログを作成
 set ^sqllog($i(^sqllog))="認証NG;"_$horolog_";"_user
 quit ""

 

00
0 0 21

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

以前の記事でIRIS for Health上でFHIRリポジトリを構築し、OAuth2認証を構成する方法をご紹介しました。
IRIS for Health 2020.4がリリースされ、FHIRリポジトリのアクセストークンをチェックする機能が追加になりました。

ドキュメントはAccess Token Scopesです。

この記事ではドキュメントの記載も抜粋しながらこの機能を紹介していきます。

00
0 0 21