記事 Hiroshi Sato · 4月 2 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 0
記事 Hiroshi Sato · 4月 1 1m read

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

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

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

// requestオブジェクトは以下のように生成 // 詳細処理は省略// set request=##class(%Net.HttpRequest).%New()// リクエスト時に、文字変換を行わないように指定set request.ReadRawMode=1do 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.%ToJSON()
0
0 0
記事 Tomoko Furuzono · 3月 31 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つの関数を組み合わせ、以下のようなメソッドを作成して対応します。

0
0 0
記事 Tomoko Furuzono · 3月 31 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 0
記事 Mihoko Iijima · 3月 28 4m read

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

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

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

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

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

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

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

説明

これは、ネイティブウェブアプリケーションとして 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 0
InterSystems公式 Masahito Miura · 3月 27

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

0
0 0
記事 Tomoko Furuzono · 3月 27 2m read

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

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

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

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

(1) 整合性チェック

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


(2)サマリー

0
0 0
記事 Tomoko Furuzono · 3月 27 1m read

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

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

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

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

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

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

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

0
0 0
記事 Tomoko Furuzono · 3月 25 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」に設定し、インデックスを作成します。

Property TestColumn As%String(COLLATION = "SQLSTRING"); 
Index IdxTest On TestColumn;
0
0 0
記事 Megumi Kakechi · 3月 25 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 で指定したディレクトリに保存)

0
0 0
記事 Tomoko Furuzono · 3月 23 1m read

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

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

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

0
0 0
お知らせ Anastasia Dyubaylo · 3月 21

🚨 計画メンテナンスのお知らせ 🚨

InterSystems 開発者コミュニティは、明日 (2025 年 3 月 22 日) 午前 10:30 から午後 12:30 (東部標準時) (午後 16:30 から午後 18:30 (中央ヨーロッパ標準時)) まで、計画メンテナンスを実施します。

この間、プラットフォームは断続的にダウンタイムが発生する可能性があります。 ご不便をおかけして申し訳ございませんが、サービスの向上に努めておりますので、今しばらくお待ちください。

ご理解のほどよろしくお願いいたします。

0
0 0
記事 Tomoko Furuzono · 3月 21 1m read

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


大量の更新を行うプログラムで、処理途中に何らかの問題が発生してもデータを初期化して再度実行することができる状況では、プロセスレベルでジャーナリングを無効/有効に変更することが可能です。

※但し、トランザクションのロールバックにはジャーナルが必要ですので、ロールバックを正しく動作させたい場合にはこの方法は使用しないでください。

以下のコマンドを使用します。更新処理の開始と終了(またエラー処理での終了)の際に以下のコマンドを追加します。

//ジャーナリング無効化(停止)do DISABLE^%SYS.NOJRN
 
 //ジャーナリング有効化do ENABLE^%SYS.NOJRN


【注意】
こちらの機能は、ミラーリング対象のデータベースには使用できません。
DISABLE^%NOJRN を使用してジャーナリングを無効にしても、ミラーリングされたデータベースに影響はありません。


詳細は、以下のドキュメントをご参照ください。
ドキュメント:DISABLE^%NOJRN を使用したプロセス・レベルでのジャーナリングの管理

0
0 0
お知らせ Rie Tokue · 3月 20

    

本年よりスタートしたインターシステムズ ソリューションウェビナー、第2回は以下の日時・内容で開催いたします。

日時:4月24日(木)13時30分~14時15分(45分間)

参加費無料・事前登録制

ご登録はこちらから

ウェビナー概要:このウェビナーでは、InterSystems IRIS data platform の2025.1 EM(Extended Maintenance)リリースに搭載される新機能と改善点を包括的に紹介します。EMリリースは長期サポートが提供され、安定性が重視されるため、多くのお客様が本番環境で採用されるバージョンです。2024.1 EMリリース以降の機能強化も含め、技術者の皆様が新バージョンを最大限に活用できるよう情報をお届けします。

本ウェビナーでは、製品の新機能や改善点について、実際の実行環境での画面を共有しながら解説します。理論的な説明だけでなく、具体的なコード例や実際の動作デモンストレーションを通して、新機能の実用的な活用方法を分かりやすく紹介します。これにより、参加者の皆様はすぐに実践できる知識を得ることができます。

こんな方にお勧め:

  •   IRIS data platform開発者
  •   データベース管理者

前提となる知識:

  •   IRIS data platformの基本的な知識
  •   過去のバージョン(特に2024.1以降)の使用経験があると望ましい
0
0 0
記事 Tomoko Furuzono · 3月 19 3m read

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


ISCLOG を有効にすることにより、CSP(REST)アクセスに関連するログ情報を収集できます。これを使用して CSP(REST)でのトラブル時の調査を行うことが可能です。  
◎このツールをトラブルシューティングに使用する場合は、基本的に、エラーを(意図的に)再現できる状況で使用します。
 他のウェブアクセス等がない状態で、単体実行してエラーを発生させ、このログを取得して調査します。
手順は以下のとおりです。

① ログをクリアします。

//IRISKill^ISCLOG//CachéKill^%ISCLOG


② ロギングレベルを設定します。

Set^%ISCLOG=3
------------------------------------
#0 ― ログを記録しません。
#1 ― 例外的なイベント (エラー・メッセージなど) のみをログに記録します。
#2 ― 'method ABC invoked with parameters X,Y,Z and returned 1234' などの詳細な情報をログに記録します。
#3 ― HTTP 要求から受け取ったデータなどの未処理のデータをログに記録します。
------------------------------------

 
③ CSPでエラーになる処理を行います。

0
0 0
記事 Tomoko Furuzono · 3月 19 1m read

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


質問:

オンラインバックアップの保存先にネットワークドライブ(NAS等)を指定することはできますか?

回答:

バックアップの保存先に指定することはできますが、推奨はしておりません。

推奨しない理由は、
オンラインバックアップの最終フェーズにDBアクセスを禁止して処理が実行されますが、 このとき、万一ネットワークエラー等でバックアップ処理がハングアップすることがあれば、システム全体に影響が及ぶリスクがあるからです。

0
0 0
記事 Hiroshi Sato · 3月 17 2m read

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

ネームスペースを管理ポータルで作成する際に、デフォルトでは、『相互運用プロダクション用にネームスペースを有効化』にチェックがついているため、そのチェックを意図的に外さない限り、新規作成したネームスペースは、インターオペラビリティ機能が有効になっています。

この機能が有効であることによる実用上の弊害(パフォーマンス等に影響する)は、特にありませんが、管理ポータル上のクラス表示にこの機能に関連するクラスが先に表示されて、ユーザー作成クラスの表示に余計な操作が必要になる等の操作上の余分な手間が発生する場合があります。

管理ポータル上でこの設定を無効にするメニューは用意されていませんが、以下の手順で無効化することができます。

- 相互運用性ネームスペースの無効化  

USER>set$namespace = “%SYS%SYS>write##class(%EnsembleMgr).DisableNamespace("FAQ",1)

1

 

- 管理ポータルより該当のネームスペースの削除

- 管理ポータルより該当のネームスペースの再作成

再作成の際に「相互運用プロダクション用にネームスペースを有効化」のチェックを外す 

- 相互運用性ネームスペースの確認

0
0 0
質問 ima · 2月 28

Windows11環境で、IRISライセンス切れのため、IRIS_Community-2024.1.0.262.0-win_x64 から IRIS_Community-2024.3.0.217.0-win_x64 へアップデートしました。

Python関連の実行をすると、Failed to Load Python のエラーが出るようになりました。

USER>d ##Class(%SYS.Python).Shell()
 
エラー #5002: ObjectScript エラー:<OBJECT DISPATCH>Shell+16^%SYS.Python.1 *Failed to Load Python: Check documentation and messages.log, Check CPF parameters:[PythonRuntimeLibrary,PythonRuntimeLibraryVersion], Check sys.path setup in: $INSTANCE/lib/python/iris_site.py

message.logに

0
0 0
InterSystems公式 Seisuke Nakahashi · 3月 12

InterSystems はこのたび「テーブル・パーティショニング機能」の早期アクセスプログラムを開始しました。これにより、IRIS をお使いのお客様が非常に大きなテーブルを管理したり、行データや関連インデックスをデータベースやストレージ階層間で分散できるようになります。テーブル・パーティショニングは IRIS のリレーショナル・データ管理の核心深くに関連する機能であるため、初期段階でのフィードバックを提供いただけたり、状況に応じて機能調整にご協力いただける、少数の熱心なお客様と一緒になって、確実な機能実装を進めたいと考えています。

非常に大規模なリレーショナル・データセットをご利用中で、より効率的な運用を望まれており、新機能を試してみたいというお客様は、ぜひ https://www.intersystems.com/early-access-program/ からご登録ください。登録された方には、一時的な開発ライセンス、新機能を含む最新キットとコンテナ・イメージ、チュートリアル がすべて掲載された評価ポータルをご案内するメールをお送りします。

0
0 0
InterSystems公式 Seisuke Nakahashi · 3月 11

InterSystems IRIS での OpenEHR を利用について

InterSystems IRIS で OpenEHR を利用することについてご質問をいただくことがあります。それに対する回答は一般的に、組織がアプリ構築において OpenEHR をなぜどのように実装したいのかに大きく左右されます。簡単なガイドはこちらになります。

0
0 0
記事 Hiroshi Sato · 3月 11 1m read

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

8192文字を超える文字列をODBC経由で取得した場合に特定のODBCクライアントとの組み合わせにおいて文字列が途切れて取得されるケースが報告されています。

このような状況が発生した場合、該当するODBCデータソースの設定画面でUnicode SQLタイプをチェックすることで問題が解消されることがわかっています。

 

0
0 0
お知らせ Mihoko Iijima · 3月 10

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

25人のコミュニティメンバーが参加した InterSystems 技術文書ライティングコンテスト(USコミュニティ) ですが、なんと!

🌟 38 の素晴らしい記事 🌟の投稿がありました!

コンテストは、革新性と専門知識をもった参加者による非常に質の高い記事が数多く投稿されたため、審査員によるベスト 3 の選出は簡単ではありませんでした。

それでは、受賞作品を発表します!

0
0 0
記事 Hiroshi Sato · 3月 10 1m read

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

大量のレコードが含まれるテーブルに対して、select count(*) from テーブル名の応答が遅い、または応答がタイムアウトする場合には、ビットマップ・エクステント・インデックスを追加することで問題を解消することができます。 

ビットマップ・エクステント・インデックスを追加する方法は、以下をご参照ください。 

ビットマップ・エクステント・インデックスの追加方法

クラス定義に以下のような定義を行うことで、ビットマップ・エクステント・インデックスを追加することもできます。

Index IndexName [ Extent, Type = bitmap ];
0
0 0
記事 Hiroshi Sato · 3月 4 2m read

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

ObjectScriptの%Netパッケージのライブラリクラスを利用して、ファイルを他のサーバーにアップロードすることができます。

以下のCurl コマンドと同じことを ObjectScript で実現する方法を紹介します。

curl -X POST "http://localhost/api/upload/csv?a=123&b=999" -F file=@"C:/temp/a.csv":/temp/a.csv"

クライアントのObjectScriptコードを以下の様に作成します。

0
0 0
記事 Hiroshi Sato · 3月 4 4m read

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

計算プロパティを定義する際に利用可能なキーワードが複数あります。

詳細は、以下をご参照ください。

計算プロパティの定義

実際のこれらのキーワードの関連性は、少々複雑ですので具体的なコードを作成して動作を確認してみます。 

以下のようなクラス定義を作成します。(プロパティとインデックス定義のみ表示します)

完全なクラス定義は以下より、ダウンロードできます。

サンプルクラス定義

0
0 0
記事 Hiroshi Sato · 3月 3 1m read

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

IRISには、データ項目の値を実体として持たずに、何らかの演算処理の結果として提供する機能があります。

これを計算プロパティまたは計算フィールドといいます。

計算プロパティを定義するためには、最低限以下の手順を実行します。

プロパティ定義にSqlComputedキーワードを含めます。

プロパティ定義にSqlComputedCodeを含めて、値を算出するための処理ロジックとして含めます。

または、SqlComputedCodeを含めずに、代わりに<プロパティ名>Computationという名前のクラスメソッドを記述します。

以下は、Age(年齢)プロパティを計算プロパティとして定義した例になります。

0
0 0
お知らせ Mihoko Iijima · 2月 28

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

今年最初のプログラミング・コンテスト(USコミュニティ)の開催が決定しました!

🏆 InterSystems AI プログラミングコンテスト:ベクトル検索、生成AI、AIエージェント 🏆

期間:2025年3月17日~4月6日

賞品総額:$12,000 + GlobalSummit2025 へご招待!

0
0 0
記事 Mihoko Iijima · 10月 10, 2023 15m read

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

この記事では、複雑なJSON形式の文書を「JSONテンプレートエンジン」を利用して生成させる方法をご紹介します。

「JSONテンプレートエンジン」については、6月のウェビナーで使用例をご紹介しましたが、JSON生成対象として医療情報交換標準規格であるFHIRリソースのJSON(例:Patientリソース)を例に解説しています。

このエンジンは、JSON形式の文書であればどのような種類のデータでもご利用いただけますので、一般的なJSON形式の文書を利用して使い方をご紹介します。

例に使用するJSONはこちら👉 https://api.openbd.jp/v1/get?isbn=978-4-7808-0204-7&pretty

このサンプルから以下の部分を抜き出して、ObjectScriptでJSON形式の文書を組み立てていく方法をご紹介します。

0
0 1247
記事 Toshihiko Minamoto · 2月 27 7m read

説明

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

インストール

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

使用法

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

エンドポイント

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

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

WSGI 導入記事をご覧ください: wsgi-introduction

0
0 0