0 フォロワー · 86 投稿

Representational state transfer (REST) は、Webサービスを作成するために使用される一連の制約を定義するソフトウェアアーキテクチャスタイルです。 RESTful Webサービス(RWS)と呼ばれる、RESTアーキテクチャスタイルに準拠したWebサービスは、インターネット上のコンピュータシステム間の相互運用性を提供します。 REST準拠のWebサービスを使用することで、要求されたシステムは、統一され事前定義されたステートレスな操作のセットを使用して、Webリソースのテキスト表現にアクセスし操作することができます。 SOAP Webサービスなどの他の種類のWebサービスは、独自の任意の操作セットを公開します。 詳細はこちら。

記事 So Ochi · 10月 13, 2024 10m read

はじめに

生成AIを活用したアプリケーション開発は、Python、JavaScriptなどのメジャー言語による体験記事がよく見られます。一方、IRISのObjectScriptの開発に言及された記事は比較的少ないのが現状です。そこで、本記事では生成AIがObjectScriptの開発にどこまで活用できるのかを検証しました。

特にDevOpsのプロセスにおいて、生成AIは様々なシーンでの活用が期待できます。今回は開発工程に注目し、以下の観点から生成AIの有効性を調査しました。

  • 開発
    • コードの自動生成
    • 環境構築のアシスタント(テーブルの作成)
  • 検証
    • テストデータ生成のサポート

環境

本記事の検証は以下の環境で行いました。

開発環境

  • OS: macOS Sonoma
  • IRIS: 2023.4 (linux)

開発ツール IRISの開発にはStudioやVSCodeなどが利用可能ですが、今回は生成AIの活用に特化したエディタ「Cursor」を使用しました。

Cursorを選定した理由 Cursorは、生成AIによる支援機能に特化したコードエディタで、以下の特徴があります:

  • 生成AIの支援:コードの自動生成や提案、バグの検出、修正提案を行います。また、外部のドキュメントや複数のソースを指定し、生成内容に反映させる簡易なRAG機能も搭載されています。

0
0 327
記事 Hiroshi Sato · 2月 15 4m read

IRISではCSPタグベースの開発は、非推奨(Deplicated)になっています。

非推奨とはいえ、いますぐ使えなくなることはないと思います。

が、CSP機能に含まれるHyperEventの#server()#呼び出しは、かなりやばいということがわかってきました。

これはChromeを始めとするメジャーなブラウザーが提供しているSynchronous XMLHttpRequestという関数を呼び出しています。

この関数をGoogleは10年前くらいから非推奨機能としていて、いつか完全に機能をドロップすると宣言しています。

Stackoverflowの該当記事

インターシステムズのドキュメントにもさりげなく記載されています。

HyperEventCallメソッド

とはいえ、10年もそのままなので、希望的観測をすれば、今後も使える可能性は高いかもしれません。

しかし、ある日突然なくなるリスクはゼロではありません。

ですので、#server()#呼び出しをお手元のコードからなるべく早く取り除くのが賢明です。

それでは、どうすれば良いのか?

ということですが、今のご時世で考えれば、REST APIに変えましょうというのが美しい世界ですが、おそらく書き換えのコストは、半端じゃないでしょう。

ということで、現実的な解は、#Call()#に置き換えることだと思います。

4
2 70
記事 Hiroshi Sato · 3月 4 13m read

最近話題のClaude Codeを使って、ObjectScriptプログラミングをトライしてみました。

もちろんClaude CodeにObjectScriptのコードを書かせるにはそれなりの指示が必要ですが、適切なプロンプトを与えると想像以上にちゃんとしたObjectScriptコードを書いてくれます。

今回試したのは、少し前に投稿したCSPの#server問題に対応するため、#serverをREST APIに書き換えるというものです。

元のソースは、

https://github.com/wolfman0719/shopdemo

これはCSPのデモアプリケーションですが、しっかりと#server機能を使用しています。


結論をいうと、%sessionがRESTとCSP間で共有できないという根本問題があって、実行成功までには至っていませんが面倒なコーディングをかなりカーバーしてくれることがわかります。

(REST APIをCSPクラスで実装することで%session共有の問題を回避でき、Claude Codeが生成したロジックの正しさは証明されました)

そして、Claude Codeは、 ObjectScriptのことかなり理解してくれています。

ObjectScriptプログラマーが少ない問題を大きく改善してくれる可能性があります。
 

それでは、私がどのようなことを行ったか説明します。

2
0 57
記事 Mihoko Iijima · 1月 21, 2025 16m read

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

Teams ワークフロー Webhook を用意すると、curl コマンドや REST クライアントを利用して Teams チャネルに任意メッセージを簡単に送信できるので、IRIS や IRIS の Interoperability を使って自動的に何か情報を入手+必要なときだけ Teams チャネル通知ができたら面白いな、と思い試してみた内容をご紹介します。

以下、Teamsワークフローの作成例です。

Teams ワークフローの仕様に合わせたメッセージ用 JSON が用意できれば、こんなメッセージを出すことができます。

Teams チャネルにメッセージを通知するには「Teams ワークフローの Webhook」の用意が必要です。(この用意によってアクセスするために必要なURLが生成されます)詳しくは、「Microsoft Teamsのワークフローを使用して受信 Webhook を作成する」をご参照ください。

通知までの設定などについては、こちらのページを参考にさせていただきました:Teams チャネルへメッセージ送信する方法

以下、試した順でご紹介します。

1. curl コマンドでまずは実行してみる

2. シンプルにターミナルから試す

3. 通知メッセージのJSONを変えてみる

4. メッセージのJSONをJSONテンプレートエンジンで作ってみる

5.

0
0 141
記事 Toshihiko Minamoto · 4月 20, 2021 7m read

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

先日、RESTのクラスを使って、PDFなどのファイルをアップロード、ダウンロードするサンプルをお送りしたお客さんからご質問を頂きました。
ダウンロード機能を使ってmp4などの動画を表示させた場合、以下のようにvideoの画面下のスライダーを移動しても、再生を進めたり戻したりができませんでした。

やはり、以下のようにスライダを動かすと、その時点の画像が表示されたほうが良いですね。

そこでgoogleで調べてみると、Http Range requestへの対応が必要ということですのでObjectScriptで作成してみました。

表示用html

ブラウザで動画を表示するための簡単なhtmlファイルは以下の通りです。sourceタグのURLにGETメソッドでアクセスし動画データを受信します。

<html>
<head>
<title>ストリーム再生 </title>
</head>
<body>
ストリーム再生<br>
    <video controls width="800" >
    <source src="http://localhost:52773/csp/storage/River.mp4" type="video/mp4"> 
    </video>
</body>
</html>

RESTクラス

RESTクラス(REST.

0
0 2707
記事 Megumi Kakechi · 9月 4, 2023 3m read

こちらの記事では、RESTやCSPなどの「Webアプリケーションのトラブルシューティング」のヒントをご紹介します。

何かしらのトラブルと思われる事象が発生した場合、確認したいのがログファイルになります。
各コンポーネント間のやり取りで、どこでどのようなトラブルが発生しているかを、それぞれログを取得して確認することができます。

① クライアント ⇔ Webサーバ間では、「Webサーバログ(IISやApacheのアクセスログなど)」、
② Webサーバ ⇔ Webゲートウェイ間では、「イベントログ」・「HTTPトレース」、
③ Webゲートウェイ ⇔ IRISサーバ間では、「ISCLOG」・「監査ログ」・「messages.log」などがあります。

こちらの記事では、IRISで取得できるログとして で取得可能なログの取得方法をご紹介します。
 

② Web サーバと Webゲートウェイ間のアクセスに関連するログ情報


◆ イベントログ

1) Webゲートウェイ管理ページ(http://<IPアドレス>:<ポート>/csp/bin/Systems/Module.cxw)に接続します。

2) イベントログを削除します。
 [イベントログを参照] > ログをクリア をクリック

3) イベントログレベルを設定します。

0
1 528
記事 Tomo Okuyama · 3月 19 5m read

最近あるお客様にIRIS for Healthをご紹介する機会があり、技術者の方向けのデモを交えた説明をするためにIRIS for Healthのデモ環境の準備をしました。

元ネタは @Mihoko Iijima がポストした以下の投稿です。

FHIR R4 リソースリポジトリを簡単にお試しいただける開発環境テンプレートのご紹介

非常にわかりやすい動画での説明もあるのでご覧ください。

これから試す方向けに、新しいバージョン(2025.3)でお試しいただけるよう若干の修正をしましたので、紹介します。

https://github.com/TomoOkuyama/iris4h-demo

主な修正点は以下です。

  • IRIS for Health 2025.3 に対応 — ベースイメージを最新バージョンに更新
  • JsonAdvSQL ストレージ戦略を採用 — 2024.1 で導入された新しい FHIR サーバーのデフォルトストレージ戦略です。従来の JSON ストレージ戦略と比べ、FHIR REST API の検索性能・標準準拠性・スケーラビリティが大幅に向上しています。
  • 電子カルテ UI を今風にアップデート — FHIR API だけで動作する患者サマリ画面に刷新しました。
0
0 29
記事 Toshihiko Minamoto · 1月 31, 2024 3m read

コミュニティの皆さん、こんにちは!!

Open Exchange に最新の「IRIS Api Tester」アプリケーションをアップロードしました。

InterSystems IRIS と Newman を使用した Docker プロジェクトで、素早く簡単に Postman コレクションをテストできます。

リポジトリをクローンするだけで、初期状態で使用できるようになっています: https://github.com/daniel-aguilar-garcia/irisapitester

docker-compose ファイルを実行します。

 

この URL をブラウザで開きます。

http://localhost:52773/csp/user/index.html

 

テストを Postman コレクションに追加します。

この例では、テストをコレクションの Test セクションに追加することでコレクションのすべてのエントリにグローバルテストを追加していますが、個別のテストを項目ごとに追加することもできます。

ここでは、リクエストのステータスコードが 200 になることをテストしています。ステータスコードが 200 でない場合には、レポートにエラーとして表示されます。

0
0 123
記事 Shintaro Kaminaka · 5月 1, 2020 14m read

この記事では、REST API開発への仕様ファーストアプローチについて説明します。 

従来のコードファーストREST API開発は次のようになります。 

  • コードを書く 
  • RESTを有効にする  
  • ドキュメント化(REST APIとして) 

仕様ファーストのアプローチでは同じ手順を行いますが、順序が逆になります。 ドキュメントを兼ねた仕様書を作成し、そこからRESTアプリの定型文を生成して、最後にビジネスロジックを書きます。

これは、次の理由でメリットがあります。 

  • REST APIを使用したいと思っている外部開発者またはフロントエンド開発者向けの関連性のある有用なドキュメントが常に入手できます。 
  • OAS(Swagger)で作成された仕様をさまざまなツールにインポートして、編集、クライアント生成、API管理、ユニットテスト、その他の多くのタスクの自動化または簡略化を行うことができます。  
  • 改善されたAPIアーキテクチャ。コードファーストアプローチではAPIはメソッドごとに開発されるため、開発者はAPIアーキテクチャ全体を簡単に見落としてしまう可能性があります。これに対し、仕様ファーストの開発者は通常、APIの消費者の立場としてAPIと対話するように強制されます。これは、よりクリーンなAPIアーキテクチャの設計に役立ちます。 
  • 開発の迅速化。
0
0 1336
記事 Toshihiko Minamoto · 2月 7, 2024 2m read

コミュニティの皆さん、こんにちは!

私の IRIS Api Tester というアプリで使用する Postman コレクションのテストを作成する方法を説明します。

 

Newman とは?

Newman は、Postman コレクションを拡張可能な方法で自動的に実行できるコマンドラインツールです。 Newman でテストを作成することで、API エンドポイントの信頼性と正確性を確実にすることができます。 この記事では、Postman で Newman のテストを作成する方法と開始に役立つ実用的な例を紹介します。

 

Postman コレクションを作成したら:

テストスクリプトを書き始めることができます。

Postman のテストは、Postman スクリプトサンドボックスを使って JavaScript で記述します。 テストスクリプトを作成するには、リクエストを開いて「Test」タブに移動します。 ここで、API レスポンスを評価してその正確さを検証するカスタム JavaScript コードを作成できます。

例 1: レスポンスのステータスコードを確認する:

pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});

 

例 2: レスポンスの特定のフィールドの有無を検証する:

pm.
0
0 610
記事 Megumi Kakechi · 9月 16, 2020 4m read

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

HTMLからRESTを使って画像ファイルをアップロードする方法をご紹介します。

1.はじめに、以下のようなhtmlとクラスを作成してください。

*UploadTest.html

<html lang="ja">
<head>
    <title>Upload</title>
</head>
<body>
    <input id="up" type="file" />
    <button id="btn">Upload</button>
    <div></div>
    <script type="text/javascript">
    const sendfile = function(e) {
        let up = document.getElementById("up");
        let file = up.files[0];
        let fd = new FormData();
        fd.append("imgfile", file);
        let xmlhttp = new XMLHttpRequest();
        xmlhttp.
3
1 3438
記事 Toshihiko Minamoto · 5月 18, 2023 9m read

請求、支払いや領収、アイテムの配送や在庫を処理するアプリケーションでは、バーコードや QR コードの使用が必要となるのが一般的です。 単純なバーコードよりも多くの情報を格納できる QR コードは、さらに幅広いシナリオで使用されています。 したがって、バーコードと QR コードを生成する機能、またはそれらに格納されたデータを画像または PDF から読み取る機能が重要となります。 この記事では、Python と無料のライブラリを使用してこれを行う方法を説明します。

Pyzbar ライブラリ

pyzbar ライブラリは、zbar ライブラリを使って、Python 2 と 3 から 1 次元バーコードと QR コードを読み取ります。 以下の特徴が備わっています。

  • 純粋な Python。
  • PIL / Pillow 画像、OpenCV / ImageIO / NumPy ndarray、および raw バイトで動作。
  • バーコードの場所をデコード。
  • zbar ライブラリ以外の依存関係なし。
  • Python 2.7、Python 3.5~3.10 で検証済み。
0
0 1793
記事 Mihoko Iijima · 2月 21, 2023 3m read

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

開発者向け情報を集めた「Developer Hub」ページが新たに登場しました!

(2025/10/9更新: 新たなチュートリアルが加わりましたので情報更新しました。)

このページには、5種類のチュートリアルが用意されています。チュートリアはブラウザ上で動作し、VSCodeやIRISターミナル、管理ポータルなどチュートリアルで使用するすべての画面が1つのタブ内で開くようになっています。

チュートリアルを試すための事前準備は不要で、クリック1回ですぐにお試しいただけます!(ユーザ登録も不要です)(チュートリアル開始方法は、ページ末尾をご覧ください。)

0
0 383
記事 Akio Hashimoto · 10月 25, 2020 5m read

Docker環境下でWebアプリのコンテナとIRISのコンテナをRESTfulAPIで連携した時の SSL化方法。
ちなみにこの方法で管理ポータル等もSSL通信が可能になります。

参考サイト:

構成

※ Vue.jsはローカル上でホットリロードを利用した開発環境。 ※ IRISはローカル上に構築したDockerコンテナ下で稼働中。

今回、IRISをDockerコンテナで稼働させる方法は割愛します。

WebアプリケーションをHTTPSで利用する

Vue.jsで開発中のアプリケーションをhttpsでホットリロード利用出来るように起動する。

npm run serve -- --https

これで開発中のデバッグ画面をhttpsで呼び出して利用する事ができるようになるが、このままでは、httpsからhttpにアクセスする事が出来ない為、IRISのRESTを呼び出すことが出来ない。

2
0 1419
記事 Mihoko Iijima · 10月 27, 2020 4m read

皆さん、こんにちは!

InterSystems IRIS には [Interoperability(相互運用性)]というメニューがあります。

このメニューには、システム統合を簡単に作成できる仕組み(アダプタ、レコードマップ、BPM、データ変換など)が用意されていて、異なるシステムを簡単に接続することができます。

例えば、普段繋がっていないシステムを繋げるために相手の仕様に合わせてデータを受信(または送信)したり、データ送信前に別システムから情報を取得して追加したり、データベース(IRIS でもそれ以外でも)から情報を取得したり更新したり、データ中継の流れの中に様々な処理を含むことができます。

この記事のシリーズでは、Interoperability(相互運用性)でシステム統合を行う際、どのような仕組みで動作するのか、またどのような開発が必要になってくるのか、をご理解いただくためにサンプルコードをご覧いただきながら以下の項目を解説します。

まずはこのシリーズで使用するテーマをご紹介します。

ショッピングサイトを運営している会社があり、季節に合わせ商品情報の表示順を変更する作業を行っています。

0
2 1497
記事 Mihoko Iijima · 4月 6, 2023 1m read

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

この記事では、Developer Hub にあるチュートリアルの4番目のご紹介となる REST + Augular App チュートリアル についてご紹介します。

チュートリアルでは、IRISを利用してRESTサービスで使用するテーブル、データ、RESTサーバの機能をサンプルコードをコピーしながら作成していきます。

チュートリアルの中で作成するWebアプリはとてもシンプルな内容で、データベースにブックマークとして登録したいURLを保存し、参照するだけのページとしています。

データの登録も、IRISの管理ポータルのSQLメニューでINSERT文を実行する形式で進めていきます。

最終的には、以下の図にあるように「Add a new bookmark」以下のテキストボックスで新しいブックマークを登録できるように、Web画面とRESTサーバ用コードを追加していきます。

アカウント作成やログインも不要で  ボタンをクリックするだけで始められます👍

ぜひ、お試しください!​​​​​​

0
1 302
記事 Megumi Kakechi · 3月 13 3m read

これは InterSystems FAQ サイトの記事です。
通常、フォームデータを受け取りたい場合は、CSPと同様に %request.Get() で受け取れます。

URLパラメータで、?name=123 のようにリクエストする場合も、同様に%request.Get(“name”) で受け取れます。
 

ファイルの場合は、%request.MimeDataで取得できます

例:

  set fname=%request.MimeData("files",1).FileName
  set upload=%request.MimeData("files",1)

  set save=##class(%Stream.FileBinary).%New()
  set save.Filename="C:\work\in\"_fname
  do save.CopyFromAndSave(upload)


HTMLやPostmanなどで、通常のテキストデータをフォームデータとして送る場合も、%request.Get() で受け取れます。

例:

set name=%request.
0
0 23
記事 Megumi Kakechi · 3月 10, 2021 3m read

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

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

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

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

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


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

REST での Web セッションの使用


以下は、UseSession パラメータを使用した簡単なサンプルになります。最初に、2つのクラスを作成してください。


REST.SessionTest.cls

Class REST.SessionTest Extends %CSP.
0
0 1185
記事 Mihoko Iijima · 3月 19, 2021 2m read

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

各タイムアウト値の意味は以下の通りです。

(1) [サーバ応答タイムアウト]

この設定時間内に、IRIS/Caché での処理(ルーチンやクエリの実行)が終わらない場合は、ブラウザ側にエラーを返します。

例) この値が60秒の時に、ルーチン/メソッド/クエリ実行に 90秒 かかる場合にはエラーになります。

(2) [キューイングされたリクエストのタイムアウト]

CSP/REST で設定する IRIS/Caché サーバごとに、CSP/REST を同時実行できるプロセス数を制限できます。

たとえば、サーバ接続最大数=3の場合、表示に数十秒かかるページを複数同時に要求した場合、4つ目以降のリクエストは、Web/CSP ゲートウェイ上で「キュー」に入り待ち状態になります。

このキューで待つ最大時間が (2) のタイムアウトになります。

(3) [非活動タイムアウト]

CSP/REST では、IRIS/Caché サーバ上に待ち受けプロセスが複数でき、「サーバ接続最大数」まで待ち受けプロセスが出来る可能性があります。

各プロセスが、次の要求が来るまで待機する時間がこのタイムアウト値になります。

タイムアウト後、プロセスは自動的に消滅します(これらのプロセスはライセンスを消費しません)。

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

0
0 902
記事 Megumi Kakechi · 9月 6, 2023 1m read

Windows環境にWebGatewayのみをインストールした場合に、「Service Unavailable / HTTP Error 503. The service is unavailable.」エラーとなりWebアプリケーションに接続できない場合があります。

こちらは、Visual C++ 再頒布可能パッケージ がインストールされていない環境に、Webゲートウェイをインストールした場合に見られる事象です。

Microsoft社のホームページより、Visual C++ 再頒布可能パッケージ(X64)をダウンロードしてインストールしてください。

インストール後IISを再起動し、以下のリンクよりWebゲートウェイ管理ページに接続できることをご確認ください。
 

Webゲートウェイ管理ページ:
http://localhost/csp/bin/Systems/Module.cxw


 


エラーが解消されない場合は、IISのアプリケーションプールが起動しているかをご確認ください。


【ご参考】
Microsoft Visual C++ Redistributable latest supported downloads

0
0 405
記事 Mihoko Iijima · 2月 27, 2024 7m read

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

InterSystems製品のInteroperability(相互運用性機能)を利用する際、REST経由で情報入力を行う場合の作成方法についてサンプルプロダクションを利用しながらご紹介します。

サンプルはこちら👉https://github.com/Intersystems-jp/FAQ-Interop-REST

0
0 239
記事 Toshihiko Minamoto · 3月 28, 2024 12m read

ローコードへの挑戦

こんな状況を思い浮かべてください。「ウィジェットダイレクト」というウィジェットとウィジェットアクセサリーを販売する一流のネットショップで楽しく勤務しています。先日、上司から一部の顧客がウィジェット商品にあまり満足していないという残念な話を聞き、苦情を追跡するヘルプデスクアプリケーションが必要となりました。さらに面白いことに、上司はコードのフットプリントを最小限に抑えることを希望しており、InterSystems IRIS を使って 150 行未満のコードでアプリケーションを提供するという課題をあなたに与えました。これは実際に可能なのでしょうか?

免責事項: この記事は、非常に基本的なアプリケーションの構築を記すものであり、簡潔さを維持するために、セキュリティやエラー処理などの重要な部分は省略されています。このアプリケーションは参考としてのみ使用し、本番アプリケーションには使用しないようにしてください。この記事ではデータプラットフォームとして IRIS 2023.1 を使用していますが、それ以前のバージョンでは記載されているすべての機能が提供されているとは限りません。

ステップ 1 - データモデルの定義

クリーンなネームスペースを新規に定義することから始めましょう。CODE と DATA データベースを使用します。

1
0 160
記事 Mihoko Iijima · 9月 21, 2021 3m read

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

Excelのマクロ機能を使ってVBAからREST/JSON経由でアクセスすることが可能です。

REST/JSONを使用したInterSystems製品との連携の簡単なサンプルを以下のGitHubサイトから入手できます。

VBAマクロサンプル

マクロサンプルは Solution/activityreport.xlsm をご覧ください。

サンプルは、コンテナを利用しています。READMEに記載の方法でコンテナを開始し、Solution/activityreport.xlsm の「データ取得」ボタンをクリックすると以下の結果が得られます。

マクロの中では、以下のGET要求を実行しています。

以下の図例は、RESTクライアントでGET要求を行った結果です(​​​ Basic 認証でアクセスしています)。


​​​上記GET要求により、ベースURL(/pm)の指定で、RESTディスパッチクラス(PM.Broker)が起動し、要求されたパス(例では /getactivities)から、PM.REST クラスの GetActivities() メソッドを実行しています。

Class PM.Broker Extends %CSP.
0
0 382
記事 Toshihiko Minamoto · 7月 20, 2021 7m read

皆さん、こんにちは。

InterSystems製品ではCache 2015.1からNGINXに対応しているのですが、インストールマニュアルを見るとC言語のソースファイルが提供されていて、「むむむ。。。コンパイルか。。。」と躊躇してしまいますね(^_^;)。
そこで、実際にWindows環境でNGINXをビルドしてみましたのでレポートします。

IRISのインストール

IRISまたはIRIS for Healthのキットを実行し、インストールします。
Nginxのアクセスに必要なUniversal Web gateway Moduleをインストールするには、セットアップタイプでCustomを選択し、
Web Server Gatewayを明示的にインストールする必要がありますので、ご注意ください。
    

また、今回はIRIS for Healthをインストールしていますので、C:\InterSystems\IRISHealthディレクトリにIRISをインストールしています。
IRISだったり、他のディレクトリにインストールされている場合は適宜インストールディレクトリを読み替えてください。

VisualStudioのインストール

Windows環境でコンパイルが必要ですのでVisualStudioをインストールします。

0
0 2985
記事 Hiroshi Sato · 9月 12, 2024 1m read

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

messages.logまたはcconsole.log内に記録されるCSPGatewayLatencyのメッセージは、サーバが、パフォーマンス測定のため定期的に「CSPゲートウェイにリクエストを送信して応答をもらう」ことを行っており、応答を受け取るまで一定時間以上かかったときに出る警告(応答時間の閾値)です。

その既定値は1000ミリ秒です。

WebGateway(CSPGateway)が稼働する Web サーバの負荷が高い場合に出力する場合がありますが、実際のCSPアプリケーションやREST APIの動作や応答速度に影響が見られなければ、特に問題はありません。

またこのメッセージの出力頻度を下げるためにこの閾値を変更する方法もあります。

変更方法は以下を参照ください

ヘルスモニタのセンサー値をコマンドで変更する方法 

0
0 105
記事 Mihoko Iijima · 10月 27, 2020 10m read

この記事はこちらの投稿の続きの内容です。

前回の記事では、システム統合に必要なコンポーネントの中から、プロダクション内の処理の調整役となるビジネス・プロセスの作成について解説しました。

今回の記事では、プロダクションの情報入力窓口である、ビジネス・サービスの作成について解説します。

いよいよ「Interoperability(相互運用性)を使ってみよう!」の最後のコンポーネントです。

ビジネス・サービスは、IRIS 外部からの送信される情報の入力窓口で、外部 I/F に対してアダプタを使用する/しないを選択できます。

サンプルでは、3 種類のビジネス・サービスを用意しています(括弧内のリンクはサンプルコードへのリンク)。

  1. ファイルインバウンドアダプタを利用したファイル用ビジネス・サービスStart.FileBS) 
  2. SOAP インバウンドアダプタを利用する Web サービス用ビジネス・サービスStart.WS.WebServiceBS
  3. アダプタを使用せず、ストアドプロシージャや REST で呼び出されるビジネス・サービスStart.
0
0 954
記事 Toshihiko Minamoto · 3月 6 7m read

はじめに

あるお客さんから、ワークフローの待受画面での新着通知方法についてご相談がありました。

  • 単純なポーリングだと、通知の遅延や、サーバリソースを消費する
  • ロングポーリングは、待ち受け画面のためにIRISのライセンスを消費する
  • MQTTなどを使うと専用のサーバプロセスが必要

何か良い方法は無いでしょうか。 といった内容です。

この課題に対して調査したところ、以下の方式が見つかりました。

  • ブラウザからSSE(Server-Sent Event)方式を使い、nginx上にアクセス
  • IRIS側から通知が必要なクライアントのIDに対してnginxにメッセージをPOST
  • nginxがルーティングを行い、当該クライアントにメッセージを通知

今回は以下の点について手順や設定等解説していきたいと思います。

  • nginx のソースビルドと Web Gateway のインストール
  • nginx-push-stream-module を使った SSE (Server-Sent Events) 通知
  • ブラウザ受信 (/subscribe) とサーバ送信 (/publish) の最小実装

全体構成

まずは全体像です。データの流れをシンプルに分けることで、役割が明確になります。

0
0 35
記事 Megumi Kakechi · 1月 25, 2024 2m read

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

こちらの記事 では、HTMLのフォームからRESTを使って画像ファイルをアップロードする方法をご紹介しました。

お客様からは、ダウンロードする方法もあわせてお問い合わせいただくことがあるため、この記事では両方の方法に加え、イメージファイル以外にも対応したサンプルをご紹介します。

サンプルでは、HTMLのフォームから IRIS REST API を呼び出してファイルの「アップロード/ダウンロード」を行っています。


【手順】

  1. ファイルの選択 ボタン押下でアップロードするファイルを選択する。
  2. upload ボタン押下で、ファイルをREST通信によりIRISサーバにアップロードする。
  3. アップロードされたデータを %request.MimeData で受け取り、サーバの「C:\temp\upload」に保存する。
  4. Download File リンクを押下し、3 のフォルダに保存したファイルをローカルにダウンロードする。


サンプルプログラムの使い方は次のとおりです。

  1. User.REST.cls(またはUser.REST.xml) をUSERネームスペースにインポートする
  2. IRISサーバでRESTの設定を行う。ウェブアプリケーション:/csp/user/rest、ディスパッチクラス:User.
0
0 315
記事 Toshihiko Minamoto · 5月 27, 2025 14m read

次回の Python コンテストでは、Python を使用して IRIS をデータベースとして使用する簡単な REST アプリケーションを作成する方法についての小さなデモを作成しようと思います。 以下のツールを使用します。

  • FastAPI フレームワーク: 高パフォーマンス、学習しやすい、高速コーディング、プロダクション対応
  • SQLAlchemy: Python SQL ツールキットで、アプリケーション開発者が SQL の全性能と柔軟性を活用できるオブジェクトリレーションマッパーです。
  • Alembic: Python 用の SQLAlchemy データベースツールキットと使用する軽量のデータベース移行ツール。
  • Uvicorn: Python の ASGI ウェブサーバー実装。
0
0 96
記事 Megumi Kakechi · 2月 18, 2021 3m read

jQuery($.getJSON と $.ajax)を使用した InterSystems IRIS データのJSON形式での取得方法をご紹介します。

以下にサンプルをご用意しました。

https://github.com/Intersystems-jp/REST_JSON_sample


サンプルには、次の内容が含まれます。

・REST + JSON
・REST + CORS

※それぞれ、$.getJSON と $.ajax で取得する方法を記載しています。

※サーバ側ではSelect文の実行結果をJSON_OBJECT関数を使用しJSON文字列で出力しています。
 関数については以下のドキュメントをご覧ください。
 JSON_OBJECT関数


使用手順は以下になります。

1. USERネームスペースに json.xml をインポート・コンパイル
 

2. テスト用データの作成(ターミナルで以下のコマンドを実行する)

    USER>do ##class(Sample.Person).Populate(200)


3. 初期設定(REST用)

   管理ポータル > セキュリティ管理 > ウェブ・アプリケーション

   新しいウェブ・アプリケーションを作成ボタンを押す

   名前 /csp/user/rest
   ネームスペース    USER
   ディスパッチ・クラス REST.Person

   保存ボタンを押す

4.

0
0 633