記事 Hiroshi Sato · 2025年2月25日 2m read クライアントからPOSTされた ファイルを受け取るRESTサービスを作成する方法 これは InterSystems FAQ サイトの記事です。 以下の様なCurl コマンドで送信したファイルを受け取るRESTサービスを作成する方法を紹介します。 curl -X POST "http://localhost/api/upload/csv?a=123&b=999" -F file=@"C:/temp/a.csv" クライアントからPOSTされたファイルを受け取ってサーバーに保存するRESTサービスは以下の様に作成します。 (このサンプルでは、1000文字以下の小さいサイズおよび文字コードはutf-8のファイルを想定しています。) #REST API #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 70
記事 Tomoko Furuzono · 2025年4月3日 1m read ロードバランサやプロキシサーバ経由でアクセスしている接続元クライアントIPを取得する方法 これは、InterSystems FAQ サイトの記事です。 HTTPプロキシサーバまたは負荷分散装置(ロードバランサ)を経由してウェブサーバに接続するクライアントの送信元IPアドレスを特定する際は、HTTPヘッダ:X-Forwarded-For (XFF) を取得しますが、IRISでは以下で取得できます。 set ip = %request.GetCgiEnv("HTTP_X_FORWARDED_FOR") #システム管理 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 69
記事 Tomoko Furuzono · 2025年1月17日 1m read データベースファイルコピー時のトラブル これはInterSystems FAQサイトの記事です。 質問: データベースファイルが存在するフォルダ全体をコピーしたとき、コピーしたデータベースファイルをマウントできません。なぜですか? 回答: コピーした データベースファイル(iris.dat / cache.dat)のあるフォルダに、拡張子lck(iris.lck / cache.lck)のファイルが存在していないでしょうか?InterSystems製品を停止せずに(もしくは、ディスマウントせずに)データベースファイルをコピーした場合、コピー前の情報を保持したままの lckファイルが残ってしまい、コピー後にマウントできない状況になります。また、InterSystems製品を停止せずにコピーしたデータベースファイルは正しい状態ではないので、問題が生じる可能性があります。コピー元のInterSystems製品を停止(もしくはディスマウント)した後、再度データベースファイルををコピーし直してください。 #システム管理 #バックアップ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 69
記事 Tomohiro Iwamoto · 2024年11月13日 7m read IRIS+WSGIでOAuth2クライアントを実行する方法 以前、Azure用にOAouth2クライアントをセットアップする記事を書いた時に思ったのですが、各IdPはサンプルコードとしてPythonコードや専用のモジュールを提供しているので、それがそのまま使用できれば効率が良いのにな、と思いました。 IRISが埋め込みPython機能としてWSGIをサポートしたことにより、これが簡単に実現しそうなので、その方法をご紹介したいと思います。 導入方法 今回は、IdPとしてOKTAを使用してAuthorization Codeフローを行います。 OKTAでの設定内容 参考までに、今回使用した環境を後半に記載しています。 アプリケーションの起動 コンテナ化してありますので、コンテナのビルド環境をお持ちの方は、下記を実行してください。 #Embedded Python #OAuth2 #InterSystems IRIS #InterSystems IRIS for Health 3 0 0 69
記事 Mihoko Iijima · 2025年7月14日 6m read Windows に Apache Web サーバをインストールし Web ゲートウェイを構成する方法 これは InterSystems FAQ サイトの記事です。 InterSystems 製品の Windows 版インストールキットでは、IIS に対して Web ゲートウェイをインストールするインストールキットの提供はありますが、Windows にインストールした Apache に対するインストールキットが提供されていないため、以下の手順で Web ゲートウェイを構成します。 1、InterSystems 製品のインストール 2、Apache for Windows のインストール 3、Windows 版 Web ゲートウェイのインストール(※) #システム管理 #ヒントとコツ #管理ポータル #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 68
記事 Mihoko Iijima · 2025年7月7日 3m read 503 Service Unavailable エラーが出る原因 これは InterSystems FAQ サイトの記事です。 一般的に、500番台はサーバー側で発生したエラーを表していて、503番エラーはサーバーが何らかの理由で機能を停止していてクライアントの要求に回答できない場合に出現するエラーです。 外部サイトの説明:503エラー 【HTTP 503 Service Unavailable】 以下、InterSystems 製品の使用で発生する503エラーの考えられる原因について一覧します。 REST/CSPページにアクセスできない 原因:ライセンスが割り当てられない場合に発生します(ライセンスが「同時接続ユーザ」での購入である場合、ユーザ数が制限を迎えたためライセンスが割り当てられずこのエラーが発生します)。 #CSP #REST API #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 68
記事 Hiroshi Sato · 2025年2月12日 1m read インターオペラビリティの処理の中でログ出力を実装する方法 これは InterSystems FAQ サイトの記事です。 インターオペラビリティ機能を使用してビジネスホストのビジネスロジックを実装する際に、デバッグ等の目的でログ出力を行うための専用マクロが用意されているので、ご紹介します。 以下のマクロが用意されています。 #相互運用性 #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 68
記事 Hiroshi Sato · 2024年12月9日 1m read CSP/RESTのPOSTデータに日本語が含まれる場合の処理のおまじない Parameter CONVERTINPUTSTREAM = 1 REST/JSONを使ってデータを交換することが増えてきていると思いますが、POSTでIRISにデータを渡す場合に日本語が含まれる場合に皆さんどう処理していますか? わざわざ自分でコード変換する処理を追加していませんか? 実は、あまり知られていないのですが、自動で変換する方法がありますので、紹介します。 CSPのメカニズムを使ってクライアントからデータをPOSTすると、それはCSPのRequestオブジェクトのContentプロパティに渡されます。 ContentプロパティのTypeは%CSP.Streamになっていて、このTypeのクラスリファレンスを読むと、Content-TypeがText/のときには、CharSetに基づいてコード変換が行われると示唆されています。 つまりContent-TypeがJSONの場合には、自動的な変換がされないということになります。 本当は、Content-TypeがJSONの時も変換してくれるのが一番良い(わかりやすい)のですが、残念ながらそうなっていません。 その代わりにパラメータが用意されています。 RESTのディスパッチクラスの定義に以下のパラメータを追加することで、自動コード変換を行なってくれます。 #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 2 68
記事 Hiroshi Sato · 2024年9月12日 2m read 適正なロックテーブルサイズの算出方法 これは InterSystems FAQ サイトの記事です。 ロックテーブルの1エントリは管理領域の固定512 bytesとロック文字列情報などの可変領域から構成されます。 可変領域はロック対象のグローバルノード名に関連する情報に必要な長さ(bytes)になります。 1つのLockコマンドにつき、上記で示した長さのデータが必要です。 そしてその可変領域に必要なデータ長は、ロック対象のグローバルノード名(^xxx(xxx,xxx)) の長さに見合う16,32,64,128,256,…bytesのバケットの長さになります。 例えばロック対象のグローバルノード名が^xxx(123,"data")とすると、 ^xxx(123,"data")にデータのロケーション等のデータが付加されたものがその可変領域となり、32byteまたは64bytes(データロケーションが相応に長い場合)のバケットを使用しますので、 #システム管理 #Caché #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 68
記事 Takao Otokita · 2024年5月19日 7m read IRIS BI開発者向けチュートリアルを試してみる(10) はじめに IRIS BIチュートリアル試してみたシリーズの10回目です。今回はチュートリアル最後のページ「ピボット・テーブルおよびダッシュボードの作成とパッケージ化」についてです。これまでアーキテクトとアナライザを使用してきましたが、今回はユーザポータル画面を使ってダッシュボードを作成していきます。では、早速はじめていきましょう。 #アナライザ #キューブ #ダッシュボード #チュートリアル #InterSystems IRIS BI (DeepSee) 1 0 0 68
記事 Toshihiko Minamoto · 2024年11月21日 6m read IRIS-RAG-Gen_ IRIS Vector Search による ChatGPT RAG アプリケーションのパーソナライズ コミュニティの皆さん、こんにちは。この記事では、iris-RAG-Gen という私のアプリケーションをご紹介します。 iris-RAG-Gen は、IRIS Vector Search の機能を使用して、Streamlit ウェブフレームワーク、LangChain、および OpenAI で ChatGPT をパーソナライズするジェネレーティブ AI 検索拡張生成(RAG: Retrieval-Augmented Generation)アプリケーションです。 このアプリケーションは IRIS をベクトルストアとして使用します。 アプリケーションの機能 ドキュメント(PDF または TXT)を IRIS に取り込む 選択されたドキュメントの取り込みを使ってチャットする ドキュメントの取り込みを削除する OpenAI ChatGPT #ChatGPT #Docker #Embedded Python #Generative AI (GenAI) #Large Language Model (LLM) #SQL #Vector Search #Caché #Open Exchange Open Exchange app 0 0 0 67
記事 Toshihiko Minamoto · 2025年5月20日 7m read IRIS で Django と Vue.js を使ったウェブアプリケーションの作成_ Django フレームワークを覗いてみよう Django フレームワークは長年学習したいと思ってきましたが、いつも他の差し迫ったプロジェクトが優先されてきました。 多くの開発者と同様に、機械学習においては Python を使用していますが、初めてウェブプログラミングについて学習したころは、PHP がまだまだ優勢でした。そのため、機械学習の作品を公開する目的でウェブアプリケーションを作成するための新しい複雑なフレームワークを選択する機会が訪れても、私は依然として PHP に目を向けていました。 ウェブサイトの構築には Laravel と呼ばれるフレームワークを使用してきましたが、この PHP フレームワークから最新の MVC(モデルビューコントローラー)というウェブプログラミングのパターンに出会いました。 さらに複雑なことに、私は最新の JavaScript フレームワークを使用してフロントエンドを構築するのを好んでいます。 React を使用するのがより一般的のようですが、私は Vue.js に一番慣れているため、このプロジェクトではそれを使用することにしました。 なぜ複雑なフレームワークを使用するのでしょうか? Django、Laravel、React、または Vue などのフレームワークを学習する際の最大の難関は何でしょうか? #API #CSS #GitHub #JavaScript #JSON #Python #フレームワーク #フロントエンド #InterSystems IRIS Open Exchange app 0 0 0 66
記事 Toshihiko Minamoto · 2025年5月16日 4m read OwnObjectScriptExtension で ObjectScript 開発を強化 OwnObjectScriptExtension #DevOps #オープンソース #ヒントとコツ #InterSystems IRIS #Open Exchange Open Exchange app 0 0 0 66
記事 Tomoko Furuzono · 2025年4月7日 1m read 全角/半角混在文字列から指定された幅の文字列を取得する方法 これはInterSystems FAQサイトの記事です。 指定した文字列式のうち指定したフィールド幅(半角での文字数)に収まる文字数を取得する関数:$ZPOSITIONと、部分文字列を返す関数:$EXTRACTを組み合わせることによって、全角/半角混在文字列から、指定された幅の文字列を取得することが出来ます。※$Extractは文字単位で処理を行いますので、全角/半角を区別した取り扱いはできません。 構文: #ObjectScript #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 66
記事 Tomoko Furuzono · 2025年3月25日 1m read ORDER BY で並べ替える際の照合順を調整する これは、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由来のデータを取り扱う際には、このような照合順の違いを合わせたい場合があります。 #SQL #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 64
記事 Toshihiko Minamoto · 2024年11月26日 5m read d[IA]gnosis_ IRIS for Health を使用した RAG アプリケーションの開発 ベクトルデータ型と Vector Search 機能が IRIS に導入されたことにより、アプリケーションの開発に多数の可能性が開かれました。こういったアプリケーションの例として、バレンシア保健省が AI モデルを使用した ICD-10 コーディング支援ツールを要求した公募で出品されたアプリケーションが最近私の目に留まりました。 要求されたツールのようなアプリケーションをどのように実装できるでしょうか? 必要なものを確認しましょう。 ICD-10 コードのリスト。自由テキスト内で診断を検索するための RAG アプリケーションのコンテキストとして使用します。 ICD-10 コード内で相当するものを検索するためにテキストをベクトル化するトレーニング済みモデル。 ICD-10 コードとテキストの取り込みとベクトル化を行うために必要な Python ライブラリ。 可能性のある診断を見つけるためのテキストを受け入れる使いやすいフロントエンド。 フロントエンドから受信するリクエストのオーケストレーション。 これらのニーズに対応するために、IRIS は何を提供できるでしょうか? #Angular #Artificial Intelligence (AI) #Embedded Python #Vector Search #InterSystems IRIS for Health Open Exchange app 0 0 0 63
記事 Tomoko Furuzono · 2025年3月21日 1m read ジャーナルのON/OFFを、コマンドで操作する方法 これはInterSystems FAQサイトの記事です。 大量の更新を行うプログラムで、処理途中に何らかの問題が発生してもデータを初期化して再度実行することができる状況では、プロセスレベルでジャーナリングを無効/有効に変更することが可能です。 ※但し、トランザクションのロールバックにはジャーナルが必要ですので、ロールバックを正しく動作させたい場合にはこの方法は使用しないでください。 以下のコマンドを使用します。更新処理の開始と終了(またエラー処理での終了)の際に以下のコマンドを追加します。 #ジャーナリング #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 62
記事 Megumi Kakechi · 2024年12月17日 4m read 既存のセキュリティ設定をプログラムで変更する方法 こちらの記事では、既存のユーザ設定をプログラムで変更する方法をご紹介します。 ユーザロールを追加/削除したい、有効期限設定を変更したい、等の場合にお役立てください。 なお、ユーザ設定をプログラムで新規作成する方法は こちら の記事で紹介しております。 1.ある特定ユーザの設定を参照+変更する方法 2.既存の全てのユーザの設定を参照する方法 3.おまけ(Webアプリケーション情報の参照+変更) 1.ある特定ユーザの設定を参照+変更する方法 #セキュリティ #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 62
記事 Toshihiko Minamoto · 2025年2月20日 4m read WSGI サポートの概要 コンテキスト ウェブサーバーゲートウェイインターフェース(WSGI)は、ウェブサーバーがリクエストを Python プログラミング言語で記述されたウェブアプリケーションまたはフレームワークに転送するための単純な呼び出し規則です。 WSGI は PEP 3333 で詳しく説明された Python 規格です。 🤔 定義は良いとして、IRIS との関連性は何でしょうか? IRIS 2024.2+ の新機能により、直接 IRIS で WSGI アプリケーションを実行できます。 この機能は、IRIS を他の Python フレームワークとライブラリに統合する優れた方法です。 #GitHub #Python #REST API #名前空間 #管理ポータル #InterSystems IRIS 0 0 0 61
記事 Tomoko Furuzono · 2024年10月27日 1m read Windowsのサービスパックの適用に対する製品サポートについて これは、InterSystems FAQサイトの記事です。 インターシステムズは、特定のオペレーティングシステムのパッチやサービスパックに対して、製品の検証は実施しておりません。 これらの保証については、オペレーティングシステムベンダーが互換性を保証する限りにおいて、提供されます。まれなケースで、インターシステムズの製品を稼動するために、特定のパッチやサービスパックを必要とするケースもあります。その様な特別な状況の詳細は、サポートサーバプラットフォームに明記しています。以下ドキュメントをご参照ください。 サポートサーバプラットフォームについて 明記されていない場合には、オペレーティングシステムベンダーが互換性を保証する限りにおいて、パッチやサービスパックもサポート対象となります。 ※2022.1以降のバージョンにおいては、OSのマイナーバージョンにおいても検証を実施しております。 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 61
記事 Toshihiko Minamoto · 2024年10月14日 16m read GitLab を使用した InterSystems ソリューションの継続的デリバリー - パート XI: 相互運用性 CI/CD シリーズの新しい章へようこそ。ここでは、InterSystems テクノロジーと GitLab を使用したソフトウェア開発の様々な可能なアプローチを取り上げています。 今回は、相互運用性についてご紹介しましょう。 問題 アクティブな相互運用性プロダクションがある場合、2 つの個別のプロセスフローが存在します。メッセージを処理する稼動中のプロダクションと、コード、プロダクションの構成、およびシステムデフォルト設定を更新する CI/CD プロセスフローです。 明らかに、CI/CD プロセスは相互運用性に影響しますが、 本題は次にあります。 更新中には実際に何が起きているのか? 更新中の本番停止を最小限に抑えるか失くしてしまうには、どうすればよいのか? #Git #ビジネスプロセス(BPL) #相互運用性 #継続的インテグレーション #継続的デリバリー #InterSystems IRIS 1 0 0 60
InterSystems公式 Megumi Kakechi · 2024年8月16日 2m read 警告: 未使用領域削除後のマルチボリュームデータベースの破損 インターシステムズは、非常にまれな状況下で、マルチボリュームデータベースでデータベース破損または <DISKHARD> エラーが発生する可能性がある不具合を修正しました。危険性があるのは、未使用領域削除(Truncate)を行ったマルチボリュームデータベースのみです。 この問題は、以下の製品およびそれらベースとしたその他のインターシステムズ製品に存在します: InterSystems IRIS 2024.1, 2024.1.1, 2024.2 InterSystems IRIS for Health 2024.1, 2024.1.1, 2024.2 HealthShare Health Connect 2024.1, 2024.1.1, 2024.2 #アラート #セキュリティ #InterSystems IRIS #InterSystems IRIS for Health #InterSystems公式 0 0 0 60
記事 Hiroshi Sato · 2025年7月27日 3m read JDBCログの取得方法 これは InterSystems FAQ サイトの記事です。 JDBCクライアントからのアクセスでエラーが発生した場合、返ってきたエラーメッセージやコンソールログ上の情報だけでは原因がよくわからない場合があります。 そのような場合にJDBCドライバのクライアントログを取得することで、エラーについての詳細情報を取得することができます。 JDBCログの取得方法については以下をご参照ください。 JDBCのログ ログを指定する際に、ディレクトリ名を含まずに直接ファイル名を指定した場合、そのアプリケーションのディレクトリにその指定したファイル名でログが出力されます。 #Java #JDBC #ODBC #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 59
記事 Megumi Kakechi · 2025年4月22日 5m read ADO.NET Managed Provider を使用してクラスクエリを実行し、結果セットを取得するサンプル 先日、お客様よりタイトルのご質問をいただき、サンプルコードを作成しました。せっかくですので、こちらでも共有したいと思います。 今回は、データベースの空き容量情報を取得する、%SYS.DatabaseQueryクラスのFreeSpaceクエリを使用したサンプルとします。 C#.Net と VB.Net で作成してみました。 ★C#.Net #.NET #SQL #ヒントとコツ #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 59
InterSystems公式 Seisuke Nakahashi · 2025年7月22日 10m read IRIS 2025.2 から導入される IRISSECURITY データベースについて InterSystems IRIS 2025.2 から、セキュリティデータが格納される IRISSECURITY データベースが導入されます。これまでセキュリティデータが格納されていた IRISSYS とは異なり、IRISSECURITY データベースは暗号化することが可能です。これにより機密データをより安全に保管することができるようになります。将来のバージョンでは、IRISSECURITYはミラーリングもサポートされる予定です。 このバージョンではあわせて、セキュリティ管理タスク用の %SecurityAdministrator ロールも導入されます。 #セキュリティ #InterSystems IRIS #InterSystems公式 0 0 0 58
記事 Megumi Kakechi · 2025年6月1日 5m read ロックテーブルの参照方法とその見方 これは InterSystems FAQ サイトの記事です。ロックテーブルを参照する方法として、主に以下の3つの方法が挙げられます。 1. 管理ポータルで参照する方法 ⇒ 管理ポータル:システムオペレーション > ロック > ロックを表示(または管理) 2. ^LOCKTAB ユーティリティ を使用する方法 ⇒ %SYS> do ^LOCKTAB 3. プログラムで参照する方法 ⇒ プログラム内でロック情報を取得する方法 #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 58
記事 Tomoko Furuzono · 2025年4月10日 2m read Webゲートウェイの設定値をプログラムで変更する これは、InterSystems FAQ サイトの記事です。 ※Caché/Ensembleの「CSPゲートウェイ」は、IRISでは「Webゲートウェイ」と名称が変更されています。 これに伴い、サービス名も、「%Service_CSP」 ⇒ 「%Service_WebGateway」となっています。 以下は、IRISベースの名称で記載しておりますので、適宜読み替えてご参照ください。 #CSP #Web Gateway #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 58
記事 Hiroshi Sato · 2025年3月4日 4m read 計算プロパティの使用方法2 これは InterSystems FAQ サイトの記事です。 計算プロパティを定義する際に利用可能なキーワードが複数あります。 詳細は、以下をご参照ください。 計算プロパティの定義 実際のこれらのキーワードの関連性は、少々複雑ですので具体的なコードを作成して動作を確認してみます。 以下のようなクラス定義を作成します。(プロパティとインデックス定義のみ表示します) 完全なクラス定義は以下より、ダウンロードできます。 サンプルクラス定義 #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 58
記事 Tomoko Furuzono · 2025年4月17日 1m read メソッドの実装に使用する言語を明示するーLanguage(メソッド・キーワード)の指定について これは、InterSystems FAQサイトの記事です。 メソッドの実装に使用する言語を明示する場合は、下記のようにメソッドキーワードで「Language=~~~」と指定します。 Method name(formal_spec) As returnclass [ Language = language ] { //implementation } 指定できるLanguageの値は下記のとおりです。 #CSP #ObjectScript #Python #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 57
記事 Tomoko Furuzono · 2025年1月7日 1m read データ容量の見積もりについて これは、InterSystems FAQサイトの記事です。 質問:データ容量を見積もる計算式はありますか? 回答:正確に見積もるための計算式は残念ながらありません。 InterSystems IRIS Data Platformの場合、データ部に関してはデータを全て可変長で格納しますので、各フィールドの平均がどのくらいであるかという目安の数字で平均レコード長を求め、キー部分も同様の計算を行い、必要な容量の推測値を求める必要があります。 インデックス部に関してはキー圧縮されますので、データと同じような上記の計算を行った推測値よりは少なくなることが期待できます。 ただしその圧縮率はデータの特性に大きく影響されますので、どの程度少なくなるかは一概には言えません。 実データのサンプル(例えば、1万件のデータ)をロードし、その時点でのサイズを確認して想定される件数分のデータ容量を推測するというのが現実的な方法となります。 #システム管理 #データベース #ヒントとコツ #プラットフォーム #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 57