記事 Tomoko Furuzono · 4月 10, 2025 1m read

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

サーバのIPアドレスやマシン名は、%SYSTEM.INetInfoクラスのメソッドで取得することが出来ます。

set hostname=$System.INetInfo.LocalHostName() //マシン(ホスト)名
set ip=$system.INetInfo.HostNameToAddr($system.INetInfo.LocalHostName())  //IPアドレス 
0
0 68
お知らせ Mihoko Iijima · 4月 8, 2025

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

InterSystems AI プログラミングコンテスト:ベクトル検索、生成AI、AIエージェント(USコミュニティ)の勝者が発表されましたのでお知らせします!

今回のコンテストには 15 の素晴らしいアプリケーション 🔥が投稿されました。

ご応募いただきました参加者の皆さん、素敵な作品をありがとうございました。  

それでは受賞者を発表します!

0
0 56
記事 Tomoko Furuzono · 4月 7, 2025 1m read

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

指定した文字列式のうち指定したフィールド幅(半角での文字数)に収まる文字数を取得する関数:$ZPOSITIONと、部分文字列を返す関数:$EXTRACTを組み合わせることによって、全角/半角混在文字列から、指定された幅の文字列を取得することが出来ます。
※$Extractは文字単位で処理を行いますので、全角/半角を区別した取り扱いはできません。

構文:

$ZPOSITION(<文字列式>, <フィールド幅>, <全角文字に使用するピッチ値(デフォルトは2)>)

$EXTRACT(<文字列>, <開始位置>, <終了位置>)


例:

//指定した文字列(str)のうち、全角=2/半角=1 の幅として、フィールド幅10(半角10文字分)に含まれる文字数を取得
USER>set str="あい1234うえお"
USER>write $ZPOSITION(str,10,2)
7
//指定した文字列(str)のうち、全角=2/半角=1 の幅として、フィールド幅10(半角10文字分)に含まれる文字列を取得
USER>write $extract(str,1,$zposition(str,10,2))
あい1234


$ZPOSITION、$EXTRACTの詳細については、下記各ドキュメントページをご確認ください。

0
0 100
記事 Tomoko Furuzono · 4月 7, 2025 1m read

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

InterSystems製品では、%Installerユーティリティによりインストール・マニフェストを定義することができます。これを利用することにより、複雑な構成設定を自動化することが可能になります。
これは特に、複数の同様なアプリケーションデプロイを行うときに大変有効です。

インストール・マニフェストの詳細については、下記のドキュメントページをご参照ください。
インストール・マニフェストの作成および使用

また、下記の トピックでも、詳しく記載されています。
%InstallerでInterSystems Cachéにアプリケーションをデプロイする
※記事ではCachéについて記述していますが、内容はIRISでも同様です。

0
0 38
記事 Tomoko Furuzono · 4月 3, 2025 1m read

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

HTTPプロキシサーバまたは負荷分散装置(ロードバランサ)を経由してウェブサーバに接続するクライアントの送信元IPアドレスを特定する際は、HTTPヘッダ:X-Forwarded-For (XFF) を取得しますが、IRISでは以下で取得できます。

set ip = %request.GetCgiEnv("HTTP_X_FORWARDED_FOR")


もし、取得できない場合は、Webゲートウェイ 管理画面で、アプリケーションアクセス毎に指定できる「追加のCGI環境変数(Extra CGI Environment)」に HTTP_X_FORWARDED_FOR を設定し、再度ご確認ください。

管理ポータル:[システム管理] > [構成] > [ウェブゲートウェイ管理]
 >>> Webゲートウェイ管理画面:[アプリケーションアクセス] > 「/csp」を選択

(英語)

0
0 109
記事 Tomoko Furuzono · 4月 3, 2025 3m read

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

InterSystems製品は、二要素認証をサポートしています。
下記ドキュメントページに詳細について記載がありますので、ご参照ください。
2要素認証


以下、例として、スマートフォン用認証アプリを用いて、IRIS上のCSPアプリケーションの2要素認証を行うための設定方法を解説します。

1.IRIS側の設定​
1-1.インスタンスに対する 2 要素認証の有効化および構成を行います。
管理ポータルで、[システム管理] > [セキュリティ] > [システム・セキュリティ] > [認証/Web セッション・オプション]と進み、[2 要素のタイムベース・ワンタイム・パスワード認証を許可] チェック・ボックスにチェックを付けます。
チェックを付けると、[2 要素のタイムベース・ワンタイム・パスワードの発行者] フィールドが表示されますので、ここに発行者を示す文字列(任意)を入力します。 1-2.次に、このアプリケーションに接続するユーザの設定を行います。
[システム管理] > [セキュリティ] > [ユーザ]で、該当のユーザの編集を行います。
[二要素認証]の[タイムベースのワンタイム・パスコード有効]にチェックを付けて保存します。
ここで、ワンタイム・パスワードキー(OTPキー)及びQRコードが表示されます。

0
0 62
InterSystems公式 Seisuke Nakahashi · 4月 3, 2025

IRIS 2024.3 で発生する2つの製品障害が確認されました。お使いの環境が該当する場合は、それぞれの解決方法にしたがってご対応いただきますよう、よろしくお願いします。

0
0 75
記事 Hiroshi Sato · 4月 2, 2025 2m read

その1で設定したODBCのシステムDSNを使って、LibreOfficeからアクセスしてみたいと思います。

ここでLibreOfficeをデスクトップから起動すると、詳細は不明ですが、日本語の表示がうまくできません。

(ロケール情報が正しく取得できていない様です)

なので、少し面倒なのですがターミナルから起動する必要があります。

起動する前にロケールが正しく設定されているか確認する必要があります。
一般的には、LC_ALLは設定されていないので、この環境変数に値を設定してエクスポートします。

 % locale                                              
LANG="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_CTYPE="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_ALL=""
% export LC_ALL="ja_JP.UTF-8"
% locale                     
LANG="ja_JP.UTF-8"
LC_COLLATE="ja_JP.
0
0 69
記事 Hiroshi Sato · 4月 2, 2025 3m read

Mac版のIRISにSQLを使用して他ツールからアクセスするケースはそもそも少ないと思いますが、DBeaverにJDBCを使用してアクセスできることはこのコミュニティの住人であれば、知っている人は結構いるかと思います。

しかし今回ちょっと理由があってMac上のIRISにODBCを使ってアクセスする方法についてトライしてみました。

ここではその備忘録を書き留めておこうと思います。

実際の所、Mac上のクライアントツールでODBCでアクセスできるツールもそんなにないのですが、

候補としてMS-Excel(MS-Query経由)またはLibreOfficeがありました。

まず結論としてExcelは色々とトライしましたが、原因不明ですがうまくつながりませんでした。

(どうもExcel(MS-Query)が拒絶している感じです)

LibreOfficeは何とか接続でき、データの取得はできる様になりました。

まず、前準備としてODBC Driver Managerというものをセットアップする必要があります。

細かくいうとこれにもiODBCとUnixODBCの2系統があるのですが、ExcelおよびLibreOfficeはiODBCにしか対応していない感じです。

0
0 75
記事 Hiroshi Sato · 4月 1, 2025 1m read

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

Content-Typeにcharset 情報が含まれていない場合、IRIS/Cachéは文字コードを判断できず文字コード変換が行われません。

そこで、以下のように、「自動的な文字変換を行わず、UTF-8に変換する処理を記述」することで、その指定がある無しに関わらず、対応することができます。
 

 // requestオブジェクトは以下のように生成 
 // 詳細処理は省略
 // set request=##class(%Net.HttpRequest).%New()
 // リクエスト時に、文字変換を行わないように指定
 set request.ReadRawMode=1
 do request.Send("POST",URL)

 // 受取ったデータを、UTF-8に変換してから、JSON変換
 set response = request.HttpResponse.Data
 set data = response.Read()
 set data2 = $zcvt(data,"I","UTF8")
 set response = {}.%FromJSON(data2)
 write response.
0
0 129
記事 Tomoko Furuzono · 3月 31, 2025 2m read

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

小数点桁数を指定しない単純な整数への切り上げ・切り捨ては、それぞれ、以下の関数で実行できます。

(SQL関数)

切り上げ:CEILING
切り捨て:FLOOR

(ObjectScript関数)

切り上げ: $system.SQL.Functions.CEILING()
切り捨て: $system.SQL.Functions.FLOOR()

USER>write $system.SQL.Functions.CEILING(168.5)
169
USER>write $system.SQL.Functions.FLOOR(168.5)
168

※バージョン2021.1以前は以下のメソッドを使用します。

 切り上げ: $system.SQL.CEILING()
 切り捨て: $system.SQL.FLOOR()


小数桁数を指定して切り上げ・切り捨てを行いたい場合は、2つの関数を組み合わせ、以下のようなメソッドを作成して対応します。

Class Sample.
0
0 121
記事 Tomoko Furuzono · 3月 31, 2025 1m read

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

ウィンドウ関数は、結果セットを部分的に切り出した領域に集約関数を適用できるもので、WHERE GROUP BY および HAVING 節が適用された後、SELECT クエリで選択された行に対して作用します。
IRIS/IRIS for Health 2021.1からサポートしています。
サポートされるウィンドウ関数は以下の通りです。

  • FIRST_VALUE(field)
  • PERCENT_RANK()
  • RANK()
  • ROW_NUMBER()
  • SUM(field)

詳細については、下記ドキュメントページをご確認ください。
ウィンドウ関数の概要
関連記事:IRIS SQLでは OFFSET/LIMIT句のような機能をサポートしてますか?
                  IRIS SQLクエリで取得した結果セットのランキング(順位)を算出する方法

0
0 72
記事 Mihoko Iijima · 3月 28, 2025 4m read

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

先日、EM リリース新バージョン 2025.1 がリリースされました。

コンテナ版以外ですが、新規インストール時に指定する初期セキュリティオプションのデフォルトが「ロックダウン(Locked Down)」に変更となりましたので、今までとの違いについて以下ご説明します。

以前のバージョンのデフォルトは、IRIS:「最小(Minimal)」、IRIS for Health:「通常(Normal)」です。

ロックダウンオプションは、初期セキュリティの中で一番厳しいセキュリティ設定を行うオプションで、例えば、オブジェクト/SQL のアクセスが行えない、VSCode から IRIS にアクセスできない状況からスタートします。

そのため、使用したいアクセスに対してアクセス許可追加していく必要のあるセキュリティオプションです。

0
0 65
記事 Toshihiko Minamoto · 3月 27, 2025 8m read

fastapi_logo

説明

これは、ネイティブウェブアプリケーションとして IRIS にデプロイできる FastAPI アプリケーションのテンプレートです。

インストール

  1. リポジトリをクローンする
  2. 仮想環境を作成する
  3. 要件をインストールする
  4. docker-compose ファイルを実行する
git clone
cd iris-fastapi-template
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
docker-compose up

使用法

ベース URL は http://localhost:53795/fastapi/ です。

エンドポイント

  • /iris - IRISAPP ネームスペースに存在する上位 10 個のクラスを持つ JSON オブジェクトを返します。
  • /interop - IRIS の相互運用性フレームワークをテストするための ping エンドポイント。
  • /posts - Post オブジェクトの単純な CRUD エンドポイント。
  • /comments - Comment オブジェクトの単純な CRUD エンドポイント。

このテンプレートからの開発方法

WSGI 導入記事をご覧ください: wsgiサポートの概要

0
0 106
InterSystems公式 Masahito Miura · 3月 27, 2025

インターシステムズは、InterSystems IRIS®data platformInterSystems IRIS® for HealthTM、および HealthShare® Health Connect の 2025.1 リリースを一般提供 (GA) したことを発表しました。2025.1 は、拡張メンテナンス(EM)リリースです。
リリースハイライト
今回のリリースには、以下のような数々の興味深いアップデートが含まれます:

  1. 高度なベクトル検索機能
    • 新しいディスクベースの近似最近傍探索 (ANN) インデックスにより、ベクトル検索クエリが大幅に高速化され、数百万のベクトルに対して秒以下の応答が得られます。詳しくは、次の演習 - Vectorizing and Searching Text with InterSystems SQL をご覧ください。
  2. ビジネス・インテリジェンスの強化
    • IRIS BI キューブの構築と同期における自動依存関係分析により、複雑なキューブの依存関係における一貫性と整合性が保証されます。
  3. SQL とデータ管理の向上
    • 標準 SQL ページネーション構文 (LIMIT.、OFFSET.、OFFSET.
0
0 173
記事 Tomoko Furuzono · 3月 27, 2025 2m read

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

管理ポータルの [システムオペレーション] > [ジャーナル]のページで実行できる、 整合性チェックの実行や、サマリーの表示は、%SYS.Journal.File クラスのメソッドやクエリでも実行することができます。

クラスリファレンス:%SYS.Journal.File

以下、実行例です。
※全て、%SYSネームスペースで実行します。

(1) 整合性チェック

 set status = ##class(%SYS.Journal.File).CheckIntegrity(<ジャーナルファイルパス>,1)
// 整合性チェックで問題なければ status=1


(2)サマリー

 set status = ##class(%SYS.Journal.File).Summary(<ジャーナルファイルパス>,.
0
0 86
記事 Tomoko Furuzono · 3月 27, 2025 1m read

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

システムログ(messages.log/cconsole.log)に出力される、

[Utility.Event] %SYS.Task.FeatureTracker failed to transfer data

というログは、機能トラッカというタスクが出力しているメッセージです。
このタスクは、弊社がユーザ使用状況の統計を取得する為のデータ送信タスクになります。
エラーは弊社と通信が行われてない為に発生しています。

機能トラッカの詳細については下記ドキュメントをご確認ください。
機能トラッカによる使用量統計の収集

このタスク自体は、アプリケーションやシステムの動作自体に関連はありませんので、メッセージが出ていても影響はありませんが、タスクを無効にすることもできます。
機能トラッカのタスクを無効にする手順は以下の通りです。

1. 管理ポータルで、[システム操作]→[タスクマネージャ]→[タスクスケジュール] を選択
2. 機能トラッカの行を見つけて、[機能トラッカ] を選択
3. タスク詳細のページが表示されたら、[一時停止]
4. [タスク実行が一時停止された場合にタスクを再スケジュールしますか?] という質問に適切に回答
 → いいえ
5. [このアクションをすぐに実行する] を選択、タスクを停止

0
0 41
記事 Tomoko Furuzono · 3月 25, 2025 1m read

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

SQLでクエリ実行時、ORDER BYで並べ替えをする場合、各RDBMSによって、照合順が異なることがあります。

たとえば、NULLと空文字の混じった文字列のカラムを並べ替える場合、

IRIS SQLでは、既定の照合順は下記のようになりますが、 

NULL, 空文字, 0, 00, 01, 1, 10, 100, 11, A, a, B, b

Oracleでは、下記のような照合順になります。

空文字, 0, 00, 01, 1, 10, 100, 11, A, B, a, b, NULL


複数のDB由来のデータを取り扱う際には、このような照合順の違いを合わせたい場合があります。

IRISの場合、既定の文字列照合はSQLUPPERですが、照合タイプを変更することによって、照合順を変えることが出来ます。
ドキュメント:照合

上記のIRIS SQLとOracleの違いを合わせるためには、照合タイプを「SQLSTRING」に設定し、インデックスを作成します。

0
0 93
記事 Megumi Kakechi · 3月 25, 2025 6m read

以前公開している こちら の記事では、「OAuth 2.0 を利用して IRIS から Gmail を送信する」方法をご紹介しています。

本記事では、 %Net.POP3 クラスを使用してメールを受信するサンプルをご紹介します。


【事前準備(Gmailの場合)】

外部アプリからGmailを受信するには OAuth 2.0が必要となるため、こちらの手順 に従ってAccessToken を取得しておきます。
また、「2.【準備】IRIS で、SSLクライアントの設定をする : 手順(4)」の手順に従って、GMAILSSL(任意の名前)の構成を作成しておきます。


【サンプルの内容】

以下のサンプルでは、

1.Gmailの受信サーバ(servername = pop.gmail.com)に、ユーザ名(user = xxx@gmail.com)、パスワード(pass = パスワード)、AccessTokenを使用して接続し、

Set status=server.Connect(servername,user,pass,accesstoken)

2.メールボックスの情報を取得し、

Do ..ShowMailbox(server)

3.Fetch() メソッドを使用して、添付ファイルを含むメールの内容の取得し、
  (添付は server.AttachDir で指定したディレクトリに保存)

Do 
0
0 74
記事 Tomoko Furuzono · 3月 23, 2025 1m read

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

クライアントーサーバ接続を担当するスーパーサーバで、SSLバージョン3とTLSバージョン1での通信が可能です。
このオプションを利用することで、通信上のデータを暗号化できます。

その他、Kerberosを使うことで通信上の暗号化も可能です。

0
0 59