質問 Hiroshi Sato · 2025年9月25日 Base64のエンコードに<ILLEGAL VALUE> エラーで失敗する これは InterSystems FAQ サイトの記事です。 $System.Encryption.Base64Encodeに指定するデータは、UTF8にエンコードして渡す必要があります。 日本語が含まれるローカル変数をこのメソッドの引数として指定すると<ILLEGAL VALUE>エラーが返ります。 以下のようにUTF8に変換後引数として渡す必要があります。 #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 6
記事 Hiroshi Sato · 2025年9月25日 2m read GROUP BY や DISTINCT クエリで大文字で検索されてしまう場合の対処方法 これは InterSystems FAQ サイトの記事です。 何の設定も行なっていない場合、GROUP BYやDISTINCTで指定したフィールドは大文字小文字を区別せずに全て大文字として処理されます。 これはGROUP BYやDISTINCTのグループ化がフィールドに対して定義された照合タイプに基づいて行われ、その文字列照合の既定値がSQLUPPERになっているためです。 以下のドキュメントに説明がある通り、DISTINCT は、フィールドに対して定義された照合タイプに基づいて、文字列値をグループ化します。 大文字/小文字の区別と DISTINCT の最適化 #SQL #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 10
記事 Hiroshi Sato · 2025年9月3日 2m read 大量データをJSON形式で渡す方法 これは InterSystems FAQ サイトの記事です。 ダイナミックオブジェクトの%ToJSONメソッドを利用することで簡単にJSONデータを送信することができます。 但し、標準的な方法では、出力するJSONのデータがIRIS文字列の最大長(約32万文字 正確には$SYSTEM.SYS.MaxLocalLength()が返す値)を超えると<MAXLENGTH>エラーとなります。 これを回避するためには、文字列として返すのではなく、%ToJSONメソッドの出力先としてStreamを指定し、その結果作成されたそのStreamデータを順次読み取って、出力先に書き出すようにする必要があります。 以下のように処理できます。 #API #JSON #REST API #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 37
記事 Hiroshi Sato · 2025年9月3日 3m read JSON_OBJECT/JSON_ARRAYに関する既知の制限事項/不具合 これは InterSystems FAQ サイトの記事です。 JSON利用の普及に伴いインターシステムズは、JSONに関連する様々な機能強化をIRISに対して行なっています。 その一環として、SQLのJSON_OBJECTのサポートがあります。 この機能に関して現時点より(2025年6月)古いバージョンでは残念ながら制限や不具合が存在しています。 今後も機能強化やバグフィックスを継続していく予定となっているため、この機能の利用を検討および既に利用している方は最新バージョンでのご利用をお勧めします。 ここでは、現時点でわかっている制限事項/不具合についてお知らせします。 #JSON #SQL #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 19
記事 Hiroshi Sato · 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の動かし方はほとんど変わりません。 #Docker #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 16
記事 Hiroshi Sato · 2025年8月4日 2m read IRIS for MACにODBCでアクセスする方法その3 前回、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ドライバーを設定する方法を紹介します。 #ODBC #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 16
記事 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 42
記事 Hiroshi Sato · 2025年7月27日 4m read ODBCログの取得方法(UNIX) これは InterSystems FAQ サイトの記事です。 ODBCクライアントからのアクセスでエラーが発生した場合、返ってきたエラーメッセージやコンソールログ上の情報だけでは原因がよくわからない場合があります。 そのような場合にODBCドライバのクライアントログを有効にすることで、エラーについての詳細情報を取得することができます。 ODBCログの有効化については以下をご参照ください。 ODBCログの有効化 UNIX系のシステムの場合、上記に記載されている通り、2種類のログが取得できます。 #ODBC #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 38
記事 Hiroshi Sato · 2025年7月27日 2m read JSON形式のファイルを読み書きするサンプル これは InterSystems FAQ サイトの記事です。 ダイナミックオブジェクトの%FromJSONFileメソッドを利用すると簡単にJSON形式のファイルの内容をダイナミックオブジェクトにコピーすることができます。 以下の形式のJSONファイルをそのメソッドを使用して取り込む例は以下のようになります。 #JSON #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 12
記事 Hiroshi Sato · 2025年7月27日 4m read ODBCログの取得方法(Windows) これは InterSystems FAQ サイトの記事です。 ODBCクライアントからのアクセスでエラーが発生した場合、返ってきたエラーメッセージやコンソールログ上の情報だけでは原因がよくわからない場合があります。 そのような場合にODBCドライバのクライアントログを有効にすることで、エラーについての詳細情報を取得することができます ODBCログの有効化については以下をご参照ください。 ODBCログの有効化 Windowsの場合は、上記に記載されている通り、2種類のログが取得できます。 #ODBC #SQL #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 57
記事 Hiroshi Sato · 2025年7月27日 1m read WEBGatewayのサーバー設定項目で、Minimum Server Connections、Maximum Server Connectionsの項目が表示されない これは InterSystems FAQ サイトの記事です。 「Maximum/Minimum_Server_Connections」の設定で、ApacheのMPM(Multi Processing Module)設定が、prefork になっている場合、Apache ワーカープロセスあたり2つ以上の IRIS/Caché コネクションを設定しても意味がないために、設定自体出来なくなっております。 ※ preforkでは1つのプロセスが1つのスレッドを持ちます。 preforkの詳細は以下をご参照ください MPM prefork/worker/eventの違い #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 17
記事 Hiroshi Sato · 2025年6月22日 1m read python3コマンドでEmbedded Pythonを動かす方法(macOS) .pyファイルの中でIRISのEmbedded Pythonを動作させる際にirispythonコマンドで実行する方法はドキュメント上で紹介されていましたので、以前より使用していました。 しかし、普通のpythonコマンドを使用するとうまく実行できなかったのですが、最近その謎(原因)が解けたので紹介します。 これは、Mac特有の問題である可能性が高くWindowsやLinuxでは何の問題もなく実行できるのかもしれません。 エラーは以下のようなエラーです。 #Embedded Python #Python #InterSystems IRIS #InterSystems IRIS for Health 0 1 0 51
記事 Hiroshi Sato · 2025年4月2日 2m read IRIS for MACにODBCでアクセスする方法その2 その1で設定したODBCのシステムDSNを使って、LibreOfficeからアクセスしてみたいと思います。 ここでLibreOfficeをデスクトップから起動すると、詳細は不明ですが、日本語の表示がうまくできません。 (ロケール情報が正しく取得できていない様です) なので、少し面倒なのですがターミナルから起動する必要があります。 起動する前にロケールが正しく設定されているか確認する必要があります。一般的には、LC_ALLは設定されていないので、この環境変数に値を設定してエクスポートします。 #ODBC #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 41
記事 Hiroshi Sato · 2025年4月2日 3m read IRIS for MacにODBCアクセスする方法 その1 Mac版のIRISにSQLを使用して他ツールからアクセスするケースはそもそも少ないと思いますが、DBeaverにJDBCを使用してアクセスできることはこのコミュニティの住人であれば、知っている人は結構いるかと思います。 しかし今回ちょっと理由があってMac上のIRISにODBCを使ってアクセスする方法についてトライしてみました。 ここではその備忘録を書き留めておこうと思います。 実際の所、Mac上のクライアントツールでODBCでアクセスできるツールもそんなにないのですが、 候補としてMS-Excel(MS-Query経由)またはLibreOfficeがありました。 まず結論としてExcelは色々とトライしましたが、原因不明ですがうまくつながりませんでした。 (どうもExcel(MS-Query)が拒絶している感じです) LibreOfficeは何とか接続でき、データの取得はできる様になりました。 まず、前準備としてODBC Driver Managerというものをセットアップする必要があります。 #JDBC #ODBC #SQL #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 37
記事 Hiroshi Sato · 2025年4月1日 1m read IRISから外部のWebAPIを呼び出したとき、レスポンス内の全角文字が化ける これは InterSystems FAQ サイトの記事です。 Content-Typeにcharset 情報が含まれていない場合、IRIS/Cachéは文字コードを判断できず文字コード変換が行われません。 そこで、以下のように、「自動的な文字変換を行わず、UTF-8に変換する処理を記述」することで、その指定がある無しに関わらず、対応することができます。 #JSON #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 73
記事 Hiroshi Sato · 2025年3月17日 2m read 既存のネームスペースで、インターオペラビリティ機能を無効にする方法 これは InterSystems FAQ サイトの記事です。 ネームスペースを管理ポータルで作成する際に、デフォルトでは、『相互運用プロダクション用にネームスペースを有効化』にチェックがついているため、そのチェックを意図的に外さない限り、新規作成したネームスペースは、インターオペラビリティ機能が有効になっています。 この機能が有効であることによる実用上の弊害(パフォーマンス等に影響する)は、特にありませんが、管理ポータル上のクラス表示にこの機能に関連するクラスが先に表示されて、ユーザー作成クラスの表示に余計な操作が必要になる等の操作上の余分な手間が発生する場合があります。 管理ポータル上でこの設定を無効にするメニューは用意されていませんが、以下の手順で無効化することができます。 - 相互運用性ネームスペースの無効化 #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 22
記事 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 89
記事 Hiroshi Sato · 2025年3月10日 1m read select count(*)の応答に時間がかかる、あるいはタイムアウトが発生する場合の対処法について これは InterSystems FAQ サイトの記事です。 大量のレコードが含まれるテーブルに対して、select count(*) from テーブル名の応答が遅い、または応答がタイムアウトする場合には、ビットマップ・エクステント・インデックスを追加することで問題を解消することができます。 ビットマップ・エクステント・インデックスを追加する方法は、以下をご参照ください。 ビットマップ・エクステント・インデックスの追加方法 クラス定義に以下のような定義を行うことで、ビットマップ・エクステント・インデックスを追加することもできます。 #ヒントとコツ #リレーショナルテーブル #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 121
記事 Hiroshi Sato · 2025年3月4日 2m read ObjectScriptを使用し、ローカルファイルを他のサーバーにアップロード(POST)する方法 これは InterSystems FAQ サイトの記事です。 ObjectScriptの%Netパッケージのライブラリクラスを利用して、ファイルを他のサーバーにアップロードすることができます。 以下のCurl コマンドと同じことを ObjectScript で実現する方法を紹介します。 #API #CSV #ObjectScript #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 82
記事 Hiroshi Sato · 2025年3月4日 4m read 計算プロパティの使用方法2 これは InterSystems FAQ サイトの記事です。 計算プロパティを定義する際に利用可能なキーワードが複数あります。 詳細は、以下をご参照ください。 計算プロパティの定義 実際のこれらのキーワードの関連性は、少々複雑ですので具体的なコードを作成して動作を確認してみます。 以下のようなクラス定義を作成します。(プロパティとインデックス定義のみ表示します) 完全なクラス定義は以下より、ダウンロードできます。 サンプルクラス定義 #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 51