記事 Takao Otokita · 2024年5月6日 8m read IRIS BI開発者向けチュートリアルを試してみる(8) はじめに IRIS BIチュートリアル試してみたシリーズの8回目です。このシリーズもだいぶ長くなってきました。今回も、前回に引き続きチュートリアルの「キューブ定義の拡張」ページの内容です。最後に残った2つのトピックについて進めていきます。では、はじめていきましょう。 置換の定義 タイトルには「置換」とありますが、ディメンジョンのレベルを集約した新しいレベルを作成する方法、と理解していただくのがよいかもしれません。2回目の記事でちょっとだけ触れた Age Group と Age Bucket レベルを作成していきます。まず Age Group レベルを作成します。こちらは以下のような3つのグルーピングになります。 #アナライザ #キューブ #ダッシュボード #チュートリアル #InterSystems IRIS BI (DeepSee) 2 0 0 72
記事 Hiroshi Sato · 2025年3月10日 1m read select count(*)の応答に時間がかかる、あるいはタイムアウトが発生する場合の対処法について これは InterSystems FAQ サイトの記事です。 大量のレコードが含まれるテーブルに対して、select count(*) from テーブル名の応答が遅い、または応答がタイムアウトする場合には、ビットマップ・エクステント・インデックスを追加することで問題を解消することができます。 ビットマップ・エクステント・インデックスを追加する方法は、以下をご参照ください。 ビットマップ・エクステント・インデックスの追加方法 クラス定義に以下のような定義を行うことで、ビットマップ・エクステント・インデックスを追加することもできます。 #ヒントとコツ #リレーショナルテーブル #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 71
記事 Megumi Kakechi · 2025年1月7日 2m read タスク履歴にある「有効期限切れになりました」メッセージの意味と対処法について これは InterSystems FAQ サイトの記事です。こちらの記事では、タスク履歴の結果内容に、「タスクは 10 Apr 20xx 12:00:00AM 19 Aug 20xx 12:00:00AM から継続中 に有効期限切れになりました」のようなログがある場合、その意味と対処方法について説明します。 このログは、実行予定のタスクをチェックした際に、時間が対象タスクの有効期限を過ぎてしまったために、表示しているログになります。有効期限を指定していない場合(※)は、次回タスク予定時刻が有効期限になります。※有効期限の設定は、^TASKMGRユーティリティから行うことができます。 #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 71
記事 Hiroshi Sato · 2024年9月12日 1m read CSPGatewayLatencyメッセージの対応について これは InterSystems FAQ サイトの記事です。 messages.logまたはcconsole.log内に記録されるCSPGatewayLatencyのメッセージは、サーバが、パフォーマンス測定のため定期的に「CSPゲートウェイにリクエストを送信して応答をもらう」ことを行っており、応答を受け取るまで一定時間以上かかったときに出る警告(応答時間の閾値)です。 その既定値は1000ミリ秒です。 WebGateway(CSPGateway)が稼働する Web サーバの負荷が高い場合に出力する場合がありますが、実際のCSPアプリケーションやREST APIの動作や応答速度に影響が見られなければ、特に問題はありません。 またこのメッセージの出力頻度を下げるためにこの閾値を変更する方法もあります。 変更方法は以下を参照ください #API #CSP #REST API #Caché #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 71
記事 Toshihiko Minamoto · 2023年10月18日 7m read OpenAPI Suite - パート 2 コミュニティの皆さん、こんにちは。 パート 1 では、すべてのパッケージ、使用されているライブラリ、および REST サービスについて説明しました。 次は、コンバーターサービスとバリデーターサービスについて詳しく説明したいと思います。 OpenAPI-Suite はデフォルトで、仕様バージョンが 3.0 未満である場合に HTTP リクエストを converter.swagger.io に送信し、別の HTTP リクエストを validator.swagger.io に送信して仕様ドキュメントの構造を単純化します。 オンラインユーティリティの使用は便利ではありますが、場合によっては独自のコンバーターとバリデーターのインスタンスを使用する方が便利な場合もあります。 たとえば、OpenAPI-Suite が ObjectScript 開発者向けに組織のサーバーに提供されている場合、外部サービスへのリクエストを回避する方が好ましいことがあります(プライバシーやリクエストレートの制限を回避するため)。 以下を実行してください。 docker run -d -p 8085:8080 --name swagger-converter swaggerapi/swagger-converter:latest docker run -d -p 8086:8080 --name swagger-validator-v2 swaggerapi/swagger-validator-v2:latest #REST API #コンテスト #InterSystems IRIS #InterSystems アイデアポータル #Open Exchange Open Exchange app 0 0 0 69
記事 Tomoko Furuzono · 2024年8月4日 1m read 1840年12月31日 00:00:00よりも前の日付時刻をサポートする方法 これは、InterSystems FAQサイトの記事です。 既定では、InterSystems製品で表すことのできる日時の最小値は、1840年12月31日 0時0分0秒 です。 #ObjectScript #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 68
記事 Mihoko Iijima · 2024年12月18日 2m read HTTPアウトバウンドアダプタを使用して、クエリパラメータとボディを両方送付する方法 開発者の皆さん、こんにちは。 試していたWebAPIでは、POST要求時クエリパラメータとボディの両方を送る必要がありましたので、HTTPアウトバウンドアダプタが提供するメソッド:Post()/PostFormDataArray()/PostURL() 辺りをドキュメントで確認していたのですが、残念ながら両方を渡せるように作成された丁度良いメソッドがありませんでした。 ドキュメント:HTTPアウトバウンドアダプタが提供するメソッド では、どのように送ったかというと、SendFormDataArray()の第3引数を利用して両方の情報を送付してみました。 #ObjectScript #ヒントとコツ #相互運用性 #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 67
記事 Megumi Kakechi · 2025年1月14日 2m read messages.log に出力される SuperServer failed to start slave server のエラーメッセージについて これは InterSystems FAQ サイトの記事です。 09/04/24-14:37:47:260 (2575554) 2 [Utility.Event] ISCLOG: SuperServer Super Server job slave failure ns=%SYS rtn=%SYS.SERVER 09/04/24-14:37:47:260 (2575554) 2 [Utility.Event] SuperServer failed to start slave server メッセージログ(cconsole.log/messages.log)の上記のようなログは、スーパーサーバ/SuperServer(既定:1972ポート)に対して外部からリクエストがあったが、リクエストに対応する子プロセスの起動に失敗した場合に記録されます。 スーパーサーバへの新規接続に対してスーパーサーバがJOBコマンド(タイムアウトあり)を実行したが、タイムアウト時間内にJOBコマンドが完了しなかったケースなどが考えられます。 #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 66
記事 Toshihiko Minamoto · 2024年10月8日 9m read GitLab を使用した InterSystems ソリューションの継続的デリバリー - パート X: コード以外の話 約 4 年のギャップを経て、私の CI/CD シリーズが帰ってきました! 長年にわたり、InterSystems の数社のお客様と連携し、様々なユースケースに対応する CI/CD パイプラインを開発してきました。 この記事で紹介する情報が誰かのお役に立てられれば幸いです。 この連載記事では、InterSystems テクノロジーと GitLab を使用したソフトウェア開発の様々な可能なアプローチを取り上げています。 取り上げたいトピックは広範にありますが、今回は、コードを超えた内容についてお話ししましょう。構成とデータについてです。 #継続的デリバリー #InterSystems IRIS 1 0 0 66
記事 Tomoko Furuzono · 2024年8月4日 1m read IRIS SQLで、二重引用符「"」を、リテラル値を示す区切り文字として使う方法=区切り識別子を無効にする これは、InterSystems FAQサイトの記事です。 区切り識別子は、区切り文字で囲まれた一意の識別子です。InterSystems SQL は、その区切り文字として二重引用符 「"」 をサポートしています。一方、リテラル値を区切る場合は、一重引用符「'」を使用します。例えば、下記のSQLにおいて、①は、Nameの値が「AAA」という文字列である、という検索条件と解釈されますが、②は、Name列 = AAA列、という結合条件と解釈されます。※実際にAAA列が無ければエラーとなります。 ① #SQL #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 61
記事 Toshihiko Minamoto · 2024年12月4日 5m read d[IA]gnosis_ Embedded Python と LLM モデルを使って診断をベクトル化する 前回の記事では、ICD-10 による診断のコーディングをサポートできるように開発された d[IA]gnosis アプリケーションを紹介しました。 この記事では、InterSystems IRIS for Health が、事前トレーニングされた言語モデル、そのストレージ、およびその後の生成されたすべてのベクトルの類似性の検索を通じて ICD-10 コードのリストからベクトルを生成するために必要なツールをどのように提供するかを見ていきます。 はじめに AI モデルの開発に伴って登場した主な機能の 1 つは、RAG(検索拡張生成)という、コンテキストをモデルに組み込むことで LLM モデルの結果を向上させることができる機能です。 この例では、コンテキストは ICD-10 診断のセットによって提供されており、これらを使用するには、まずこれらをベクトル化する必要があります。 診断リストをベクトル化するにはどうすればよいでしょうか? #Angular #Artificial Intelligence (AI) #Embedded Python #Vector Search #InterSystems IRIS for Health Open Exchange app 0 0 0 60
記事 Mihoko Iijima · 2025年1月9日 2m read データベースミラーリングを構成している環境でシステム開始時の処理を追加する方法 これは InterSystems FAQ サイトの記事です。 InterSystems製品では、システム開始時に任意の処理を追加できます。 データベースミラーリングを構成していない環境では、%ZSTARTルーチンのSYSTEMラベルを作成することで任意の処理を実装できますが、データベースミラーリングを構成している環境では、このルーチンでは動作しない処理があります。 ご参考:^%ZSTART ルーチンと ^%ZSTOP ルーチンによる開始動作と停止動作のカスタマイズ 理由として、ミラーリング構成の場合、ミラーデータベースへのアクセスはミラーリングサービスが開始されプライマリメンバとなるまでReadOnlyとなります。 #システム管理 #ヒントとコツ #高可用性 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 59
記事 Takao Otokita · 2024年5月19日 7m read IRIS BI開発者向けチュートリアルを試してみる(10) はじめに IRIS BIチュートリアル試してみたシリーズの10回目です。今回はチュートリアル最後のページ「ピボット・テーブルおよびダッシュボードの作成とパッケージ化」についてです。これまでアーキテクトとアナライザを使用してきましたが、今回はユーザポータル画面を使ってダッシュボードを作成していきます。では、早速はじめていきましょう。 #アナライザ #キューブ #ダッシュボード #チュートリアル #InterSystems IRIS BI (DeepSee) 1 0 0 59
記事 Hiroshi Sato · 2025年1月17日 1m read SQLクエリでStreamのデータを扱う方法 これは InterSystems FAQ サイトの記事です。 SQLでのストリームフィールドの取得についてはこちらのドキュメントに記載されております。 ストリーム・フィールド・データのクエリ 例: キャラクターストリームデータの50文字取得する #ObjectScript #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 58
記事 Hiroshi Sato · 2025年3月4日 2m read ObjectScriptを使用し、ローカルファイルを他のサーバーにアップロード(POST)する方法 これは InterSystems FAQ サイトの記事です。 ObjectScriptの%Netパッケージのライブラリクラスを利用して、ファイルを他のサーバーにアップロードすることができます。 以下のCurl コマンドと同じことを ObjectScript で実現する方法を紹介します。 curl -X POST "http://localhost/api/upload?a=123&b=999" -F file=@"C:/temp/a.csv" クライアントのObjectScriptコードを以下の様に作成します。 #API #CSV #ObjectScript #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 57
記事 Toshihiko Minamoto · 2024年12月10日 9m read 詳説: RAG、ベクトル検索、および IRIS RAG アプリにおける IRIS での実装方法 コミュニティメンバーから、Python 2024 コンテストでの出品に対する非常に素晴らしいフィードバックが届きました。 ここで紹介させていただきます。 #Artificial Intelligence (AI) #ChatGPT #CSS #Generative AI (GenAI) #JavaScript #Python #Vector Search #フロントエンド #相互運用性 #InterSystems IRIS Open Exchange app 0 0 0 57
記事 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 56
記事 Toshihiko Minamoto · 2024年8月6日 7m read Auth0 と InterSystems IRIS FHIR サーバーを使った SMART On FHIR アプリケーションの開発 - 構成編 前回の記事でSMART On FHIRプロジェクトのアーキテクチャを紹介したので、いよいよ本題に入り、必要となる全ての要素の設定を始めましょう。 まずはAuth0から始めます。 Auth0の設定 登録が完了したら、左側のメニューから最初のアプリケーションを作成します この例では、Angular 16で開発されたアプリケーションなので、Single Page Web Applicationタイプとなります。このオプションを選択し、Createをクリックします。 #Angular #FHIR #OAuth2 #InterSystems IRIS for Health Open Exchange app 0 0 0 56
記事 Hiroshi Sato · 2025年3月11日 1m read ODBC経由で取得したデータが途切れる場合の対処法 これは InterSystems FAQ サイトの記事です。 8192文字を超える文字列をODBC経由で取得した場合に特定のODBCクライアントとの組み合わせにおいて文字列が途切れて取得されるケースが報告されています。 このような状況が発生した場合、該当するODBCデータソースの設定画面でUnicode SQLタイプをチェックすることで問題が解消されることがわかっています。 #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 55
記事 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 55
記事 Hiroshi Sato · 2024年9月12日 2m read gmheapとlocksizの新しいデフォルト値 これは InterSystems FAQ サイトの記事です。 IRIS2023.1から導入されたgmheapとlocksizの新しいデフォルト値について紹介します。 gmheap=0は、特別な設定の必要性がないほとんどのシステム(実運用システムを含む)に適切なように設計された新しいデフォルト値です。 0に設定することで、システムがシステム全体のサイズを推測し、妥当な値を算出してくれます。 gmheap=0 に設定した場合、システムは、グローバルバッファ用に設定されたメモリの合計に3%を乗じた値を基準に、300MBの下限と2GBの上限の範囲内でgmheap値を設定します。 0以外の値はそれをそのまま使用し、2GBよりはるかに大きく、あるいは300MBよりはるかに小さく設定することができます。 #システム管理 #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 55
記事 Tomoko Furuzono · 2025年1月17日 1m read 組み込みPython(Embedded Python)でのPythonバージョンの選択 これは、InterSystems FAQサイトの記事です。 #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 54
記事 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 53
記事 Megumi Kakechi · 2024年12月26日 1m read 別の場所に保存したジャーナルを見る方法 これは InterSystems FAQ サイトの記事です。 ジャーナルファイルの中身を参照したい場合、通常は管理ポータルで参照します。 管理ポータル:[システムオペレーション] > [ジャーナル] : (該当ジャーナルの名前)参照 リンクをクリック こちらのページで、外部に保存したジャーナルファイルも参照することができることをご存じでしょうか? 以下のように、ID= の後ろにジャーナルのファイルパスを指定することで、ジャーナルファイルの中身を管理ポータルで参照することが可能です。 http://localhost/iris/csp/sys/op/UtilSysJournal.csp?$ID1=C:\temp\20240826.002z #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 52
記事 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 52
記事 Tomoko Furuzono · 2025年3月31日 2m read 小数桁数を指定して切り上げ・切り捨ての処理を行う方法 これは、InterSystems FAQ サイトの記事です。 小数点桁数を指定しない単純な整数への切り上げ・切り捨ては、それぞれ、以下の関数で実行できます。 (SQL関数) 切り上げ:CEILING切り捨て:FLOOR (ObjectScript関数) #ObjectScript #SQL #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 49
記事 Toshihiko Minamoto · 2025年3月27日 8m read Iris における FastAPI アプリケーションの実行 説明 これは、ネイティブウェブアプリケーションとして IRIS にデプロイできる FastAPI アプリケーションのテンプレートです。 インストール リポジトリをクローンする 仮想環境を作成する 要件をインストールする 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/ です。 #CSP #Docker #Git #JSON #Python #SQL #セキュリティ #フレームワーク #相互運用性 #InterSystems IRIS Open Exchange app 0 0 0 49
記事 Mihoko Iijima · 2024年12月24日 3m read Interoperability(Ensemble)の大量にたまったイベントログやメッセージをAPIを利用して削除する方法 これは InterSystems FAQ サイトの記事です。 イベントログの削除には、Ens.Util.LogクラスのPurge()メソッドを使用します。実行時以下の引数を指定します。 第1引数:削除数(参照渡し) 第2引数:保持日数(デフォルト7) メッセージの削除には、2種類の方法があります。 1) 2022.1.2以降の導入されたマルチプロセスで削除する方法 #システム管理 #ヒントとコツ #相互運用性 #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 48
記事 Tomoko Furuzono · 2024年10月27日 1m read Windowsのサービスパックの適用に対する製品サポートについて これは、InterSystems FAQサイトの記事です。 インターシステムズは、特定のオペレーティングシステムのパッチやサービスパックに対して、製品の検証は実施しておりません。 これらの保証については、オペレーティングシステムベンダーが互換性を保証する限りにおいて、提供されます。まれなケースで、インターシステムズの製品を稼動するために、特定のパッチやサービスパックを必要とするケースもあります。その様な特別な状況の詳細は、サポートサーバプラットフォームに明記しています。以下ドキュメントをご参照ください。 サポートサーバプラットフォームについて 明記されていない場合には、オペレーティングシステムベンダーが互換性を保証する限りにおいて、パッチやサービスパックもサポート対象となります。 ※2022.1以降のバージョンにおいては、OSのマイナーバージョンにおいても検証を実施しております。 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 48
記事 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 48