記事
· 2025年12月8日 5m read
WebSocketの使用

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

WebSocketは、リアルタイム双方向通信を可能にするプロトコルで、Webアプリケーションの動的な操作性を向上させるために広く活用されています。

この技術は、TCP上で動作し、HTTPプロトコルを介して接続を確立します。

一度接続が確立されると、持続的な接続が維持され、サーバーとクライアントが効率的にデータを交換できるのが特徴です。

通常のHTTP通信の場合、クライアントからのリクエストに対してサーバーが応答するというのが基本的な動作になるため、サーバーから非同期にデータを送信することが難しいですが、WebSocketを利用することでそのような機能を簡単に実現できます。

一方で、サーバーからの一方向の非同期通信が実現できれば良いという要件であれば、SSE (Server-Sent Events)を使用することもできます。

0 0
0 23
記事
· 2025年12月8日 2m read
Native SDK for Pythonの使用方法

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

PythonからIRISにアクセスするためのNative SDK for Pythonと呼ばれるインタフェースが用意されています。

Javaや.Net用に用意されているNative SDKと同等な機能が提供されています。

(一部異なる機能があります)。

また、Python用にはEmbedded Pythonと呼ばれるIRISと密に連携した機能があります。

IRISから最大限の性能を得るためには、Embedded Pythonが適していますが、以下のような場合、Native SDKが適しているケースもあります。

0 0
0 25
記事
· 2025年12月8日 1m read
Native SDK for .NETの使用方法

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

.NETからIRISにアクセスするためのNative SDK for .NETと呼ばれるインタフェースが用意されています。

JavaやPython用に用意されているNative SDKと同等な機能が提供されています。

(一部異なる機能があります)。

    Native SDKを利用することで以下のようなことを実装することができます。

    1. ObjectScriptやEmbedded Pythonで作成したメソッドの実行
    2. IRISオブジェクトの操作
    3. IRISグローバルデータの操作
    4. ADO.NETによるデータベースアクセス

    以下からこれらのサンプルプログラムを取得することができます。

    0 0
    0 26

    CSPでWebアプリケーションを開発する方法は今では推奨されていませんが、既存資産が膨大にあって、他の手法への書き換えには相当の時間がかかりそうな方々はたくさんおられることでしょう。

    そういう方々は、しばらくはそれらCSPファイルのメンテナンスの必要性があるかと思います。

    IRISではVSCodeが主たるIDEとなっていますが、開発環境がWindowsのみであれば、CSPファイルをSJISでメンテナンスしておけば、問題は起こりません。

    ところが、それらのファイルをUNIX環境(LinuxやMac)に持っていって、VSCodeで編集作業を開始すると、文字化けの嵐となってしまいます。

    これは以前にポストしましたが、UNIX環境のIRISは何も設定しないとロケールがenuw(英語)となっているためです。

    さらにこれを日本語専用ロケールに変えても、unix環境ではロケールがjpuwの場合、ファイルの読み書きのエンコーディングが、utf8となっているので、cspファイルのエンコーディングがSJISのままでは都合が悪いです。

    従ってCSPファイルのエンコーディングをUTF8に変更する必要があります。

    しかし、プラットフォームの切り替えのたびにエンコーディングを変更するのも面倒です。

    0 0
    0 21

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

    SQLアクセス( ADO含む)を行う場合は、SQLトランザクションを使用して、トランザクションを制御します。

    一方オブジェクトアクセス(ObjectScript)ではtstart / tcommit / trollbackコマンド
    (Native SDK for .NETでは IRIS の TStart(), TCommit(), TRollback() メソッド)
    によってトランザクションを制御します。

    この2種類のトランザクションモードを混在させて使用することはサポートされていません。

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

    トランザクション管理

    0 0
    0 23

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

    $System.Encryption.Base64Encodeに指定するデータは、UTF8にエンコードして渡す必要があります。

    日本語が含まれるローカル変数をこのメソッドの引数として指定すると<ILLEGAL VALUE>エラーが返ります。

    以下のようにUTF8に変換後引数として渡す必要があります。

    0 0
    0 23

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

    何の設定も行なっていない場合、GROUP BYやDISTINCTで指定したフィールドは大文字小文字を区別せずに全て大文字として処理されます。

    これはGROUP BYやDISTINCTのグループ化がフィールドに対して定義された照合タイプに基づいて行われ、その文字列照合の既定値がSQLUPPERになっているためです。

    以下のドキュメントに説明がある通り、DISTINCT は、フィールドに対して定義された照合タイプに基づいて、文字列値をグループ化します。

    大文字/小文字の区別と DISTINCT の最適化

    1 0
    0 35
    記事
    · 2025年9月3日 2m read
    大量データをJSON形式で渡す方法

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

    ダイナミックオブジェクトの%ToJSONメソッドを利用することで簡単にJSONデータを送信することができます。

    但し、標準的な方法では、出力するJSONのデータがIRIS文字列の最大長(約32万文字 正確には$SYSTEM.SYS.MaxLocalLength()が返す値)を超えると<MAXLENGTH>エラーとなります。

    これを回避するためには、文字列として返すのではなく、%ToJSONメソッドの出力先としてStreamを指定し、その結果作成されたそのStreamデータを順次読み取って、出力先に書き出すようにする必要があります。

    以下のように処理できます。

    0 0
    0 67

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

    JSON利用の普及に伴いインターシステムズは、JSONに関連する様々な機能強化をIRISに対して行なっています。

    その一環として、SQLのJSON_OBJECTのサポートがあります。

    この機能に関して現時点より(2025年6月)古いバージョンでは残念ながら制限や不具合が存在しています。

    今後も機能強化やバグフィックスを継続していく予定となっているため、この機能の利用を検討および既に利用している方は最新バージョンでのご利用をお勧めします。

    ここでは、現時点でわかっている制限事項/不具合についてお知らせします。

    0 0
    0 34
    記事
    · 2025年9月3日 1m read
    MacでDockerを動かす選択肢 Colima

    以前はMac上でDockerを動かす場合は、Docker for Macを使用していましたが、ある時点でマルウェア判定されてしまい、削除されてしまいました。

    以下の記事によれば、最新版では解決しているようです。

    Docker Desktop for Macがエラーで起動できない件(#7527)についての情報

    そこで他の選択肢はないか調べてみるといくつか選択肢がありました。

    その中でColimaというのがあり、設定してみました。

    Colima で Docker と Docker Compose を使ってみた

    設定も非常に簡単であり、実際のdockerやdocker composeの動かし方はほとんど変わりません。

    0 0
    0 38

    前回、macOS上でLibreOfficeからODBC経由でアクセスするためのセットアップについて記事を書きました。

    今回 .Net経由でODBCにアクセスする方法を試したので報告します。

    LibreOfficeの場合、iODBCでしたが、.Netの場合は、unixODBCを使用します。

    従来のバージョンでは、IRISのunixODBCドライバーはUnicode対応(ワイド)でなかったため、.NetのODBCでは日本語を正しく処理できませんでしたが、2025.2よりワイドドライバーが追加されたため正しく処理できるようになりました。

    今回.Net経由のアクセスを試した理由は、ODBC版Cache DirectエミュレータをMacで動かせないかと考えたからです。

    ODBC版Cache Directエミュレータ

    こちらのリポジトリにも設定方法の詳細を記載していますが、Mac上でunixODBCドライバーを設定する方法を紹介します。

    0 0
    0 28
    記事
    · 2025年7月27日 3m read
    JDBCログの取得方法

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

    JDBCクライアントからのアクセスでエラーが発生した場合、返ってきたエラーメッセージやコンソールログ上の情報だけでは原因がよくわからない場合があります。

    そのような場合にJDBCドライバのクライアントログを取得することで、エラーについての詳細情報を取得することができます。

    JDBCログの取得方法については以下をご参照ください。

    JDBCのログ

    ログを指定する際に、ディレクトリ名を含まずに直接ファイル名を指定した場合、そのアプリケーションのディレクトリにその指定したファイル名でログが出力されます。

    1 0
    0 80
    記事
    · 2025年7月27日 4m read
    ODBCログの取得方法(UNIX)

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

    ODBCクライアントからのアクセスでエラーが発生した場合、返ってきたエラーメッセージやコンソールログ上の情報だけでは原因がよくわからない場合があります。

    そのような場合にODBCドライバのクライアントログを有効にすることで、エラーについての詳細情報を取得することができます。

    ODBCログの有効化については以下をご参照ください。

    ODBCログの有効化

    UNIX系のシステムの場合、上記に記載されている通り、2種類のログが取得できます。

    0 0
    0 67

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

    ダイナミックオブジェクトの%FromJSONFileメソッドを利用すると簡単にJSON形式のファイルの内容をダイナミックオブジェクトにコピーすることができます。

    以下の形式のJSONファイルをそのメソッドを使用して取り込む例は以下のようになります。

    0 0
    0 32
    記事
    · 2025年7月27日 4m read
    ODBCログの取得方法(Windows)

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

    ODBCクライアントからのアクセスでエラーが発生した場合、返ってきたエラーメッセージやコンソールログ上の情報だけでは原因がよくわからない場合があります。

    そのような場合にODBCドライバのクライアントログを有効にすることで、エラーについての詳細情報を取得することができます

    ODBCログの有効化については以下をご参照ください。

    ODBCログの有効化

    Windowsの場合は、上記に記載されている通り、2種類のログが取得できます。

    0 0
    0 134

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

    「Maximum/Minimum_Server_Connections」の設定で、ApacheのMPM(Multi Processing Module)設定が、prefork になっている場合、Apache ワーカープロセスあたり2つ以上の IRIS/Caché コネクションを設定しても意味がないために、設定自体出来なくなっております。

    ※ preforkでは1つのプロセスが1つのスレッドを持ちます。

    preforkの詳細は以下をご参照ください

    MPM prefork/worker/eventの違い

    0 0
    0 25

    .pyファイルの中でIRISのEmbedded Pythonを動作させる際にirispythonコマンドで実行する方法はドキュメント上で紹介されていましたので、以前より使用していました。

    しかし、普通のpythonコマンドを使用するとうまく実行できなかったのですが、最近その謎(原因)が解けたので紹介します。

    これは、Mac特有の問題である可能性が高くWindowsやLinuxでは何の問題もなく実行できるのかもしれません。

    エラーは以下のようなエラーです。

    0 3
    0 94

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

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

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

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

    起動する前にロケールが正しく設定されているか確認する必要があります。

    一般的には、LC_ALLは設定されていないので、この環境変数に値を設定してエクスポートします。

    1 0
    0 56