記事 Megumi Kakechi · 2022年10月13日 4m read デプロイモードで別環境にプログラムを配布する方法 以下、デプロイモード(配置モード)でプログラムを配布する方法を2つご紹介します。 ① DB内のソースコードをデプロイモードでエクスポートする方法 ② ソースコード用DBを用意してIRIS.datごとデプロイモードにする方法 ①は、プログラムのみデプロイモードでエクスポート/インポートできるので、初回システム構築時はもちろん、プログラムの修正が発生した時などソースの一部のみエクスポートすることも可能となります。②は、IRIS.dat ごとデプロイするので初回システム構築時に IRIS.dat のみ配置すればよく手順が単純です。 クラスがデプロイモードになると、そのクラスのメソッドとトリガのソースコードは削除されます。クラスがデータ型クラスである場合、クエリキャッシュによって実行時にメソッド定義が必要になる可能性があるために、メソッド定義が保持されるのでご注意ください。 #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 94
記事 Toshihiko Minamoto · 2022年10月11日 2m read python openpyxl ライブラリを使用して IRIS クエリを Excel ファイルにエクスポートするためのモジュール 皆さん、こんにちは。 このプロジェクトをコンテストに応募します。 エクスポートモジュールは、多くのプロジェクトに不可欠であり、通常、本番サーバーにて使用されています。 属性初期化モジュールの呼び出しにて、さまざまなシナリオを実装しました。GCR で実証する多くの追加プロジェクトによる最大化と、本番インスタンスにネイティブにインストールするための最小化の両方です。 #ツール #InterSystems IRIS Open Exchange app 0 0 0 88
記事 Megumi Kakechi · 2022年10月6日 4m read メッセージログ(messages.log) のログ深刻度が 2 以上でメールを送るようにする方法 Caché/Ensemble 時代からご使用のお客様にはなじみの機能だと思いますが、IRISには「システムがインスタンスのメッセージログ/messages.log(Cachéの場合は コンソールログ/cconsole.log) を監視し、ログ・レベル2(重大なエラー) 以上 のアラートを受け取るとメールを送信する」ログ・モニター機能があります。この機能を使用すると、アラートログ (alerts.log)へのログ書き込み管理のほかに、メールを送信することもできます。 メール送信の設定は、^MONMGR ユーティリティを使用して簡単に行えます。 以下に、サンプルをご案内します。 #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 148
記事 Toshihiko Minamoto · 2022年10月5日 4m read Djangoへようこそ IRIS における Python サポートの最近の改善と、InterSystems による Python DB-API サポートへの継続的な作業により、 Django プロジェクトに IRIS サポートを実装しました。Python DB-API の使用により、他のデータベースと連携することが可能です。 Django で、IRIS にデータを保存する単純なアプリケーションを試してみましょう。 #Embedded Python #Python #フレームワーク #InterSystems IRIS #InterSystems IRIS for Health Open Exchange app 0 0 0 136
記事 Toshihiko Minamoto · 2022年10月5日 5m read 開発者コミュニティ投稿を最大限に活用する方法 開発者の皆さんこんにちは。 誰かのヘルプが必要だったり、興味のある機能を議論したり、みんなにアナウンスしたり、知識を共有したりしませんか?この記事ではそのすべての方法について説明します。 より簡単に投稿方法にたどり着くために以下の項目を用意しました。 一般的なガイドライン 質問 記事やアナウンス 議論 一般的なガイドライン 最初に、開発者コミュニティサイトのトップメニューにある「新しい投稿」ボタンをクリックします。 その後、質問やアナウンス、記事、議論の作成が選択できるエディタが表示されます。投稿の種類に応じて必須項目と任意項目が表示されます。 #チュートリアル #ヒントとコツ #初心者 #開発者コミュニティ公式 0 0 0 89
記事 Megumi Kakechi · 2022年10月3日 1m read InterSystems IRIS は 2フェーズコミットをサポートしていますか? これは InterSystems FAQ サイトの記事です。 Question: InterSystems IRIS は 2フェーズコミットをサポートしていますか? Answer: サポートしていません。 2フェーズコミットはデータベースシステムがサポートしているだけでは十分ではなく、アプリケーションサーバ等の各実装が定めている2フェーズコミットのプロトコルを駆使して、アプリケーションを構築する必要があります。 また関連するシステムの全てのコンポーネントが対応している必要がある、ロングトランザクションには向いていないなど、現実に実装する局面では様々な制約事項があります。 2フェーズコミットは、技術面、設計および実装面、コスト面、性能面などハードルが非常に高いため、実際には限られた領域での利用に留まっています。 #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 61
記事 Toshihiko Minamoto · 2022年9月26日 8m read プログラムによるインターオペラビリティの実行例 プログラムによる本番環境アクセス プログラムで本番環境(インターフェース)を編集するには、相互運用性 apis と SQL クエリを組み合わせて使用できます。 現在のネームスペース 大まかに言えば、その時点で作業しているネームスペースと本番環境を知ることが重要です。 // Object script // アクティブなネームスペースはこの変数に格納される $$$NAMESPACE // ネームスペースを出力 Write $$$NAMESPACE # Python import iris # このメソッドからアクティブなネームスペースが返される iris.utils._OriginalNamespace() # ネームスペースを出力 print(iris.utils._OriginalNamespace()) >>> DEMONSTRATION 現在の本番環境(アクティブまたは最後に実行した本番環境) 本番環境の名前を知ることも重要です。次の API を使用してネームスペース内のアクティブな本番環境を取得できます。 #Embedded Python #ObjectScript #相互運用性 #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 100
記事 Megumi Kakechi · 2022年9月21日 2m read SQL ゲートウェイを使用した外部データベースへのアクセス方法について SQL ゲートウェイ接続を使用した、外部データベースへのアクセス方法についてご説明します。 手順は以下になります。 1. 外部ソースへの SQL ゲートウェイ接続の作成を行います ※こちらの例では、IRISの別インスタンスへの接続を試しています。 ※ODBCを使用される場合は、事前にシステムDSN(64bit)の準備が必要です。管理ポータルより [システム管理] > [構成] > [接続性] > [SQLゲートウェイ接続] の 新規接続作成 ボタンをクリックします。 接続の種類を選択し、必要項目を設定します。以下のサンプルは、ODBC接続(別IRISインスタンスのDSN設定)を行っています。 #JDBC #ODBC #SQL #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 191
記事 Toshihiko Minamoto · 2022年9月20日 6m read データ移行ツール パート III: DB2 から IRISへ これは、市場に出回っている主なデータベースから InterSystems IRIS への移行に関する連載第 3 回目の記事です。 このパートでは、DB2 からの移行手続きを説明します。前の記事で説明したとおり、現時点ではいくつかの移行オプションが存在しますが、 最も一般的なオプションは、DBeaver(https://openexchange.intersystems.com/package/DBeaver)または SQLGateway を使用する 2 つの方法です。 最初のオプションはこの記事で紹介しますが、2 つ目のオプションは Robert Cemper が書いた「SQLgateway を使ったデータベース移行」(https://community.intersystems.com/post/db-migration-using-sqlgateway)という優れた記事で紹介されています。 # データのインポートとエクスポート #InterSystems IRIS 0 0 0 166
記事 Toshihiko Minamoto · 2022年9月14日 2m read VSCode のTips & Tricks - Web ターミナル VSCode から直接 Web ターミナルにアクセスしたいと思いませんか? #ヒントとコツ #開発環境 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 1 134
記事 Toshihiko Minamoto · 2022年9月10日 49m read Python のみを使用した InterSystems のインターオペラビリティフレームワーク このフォーメーションは私の GitHub にあり、30 分で csv ファイルと txt ファイルの読み取りと書き込み方法、Postgres を使ったIRIS データベースとリモートデータベースの挿入とアクセス方法、FLASK API の使用方法について説明します。これらすべてに、PEP8 命名規則に従った、Python のみのインターオペラビリティフレームワークを使用します。 #API #Embedded Python #Python #データベース #フレームワーク #ベストプラクティス #Ensemble #InterSystems IRIS #VSCode #学習ポータル 1 0 0 151
記事 Megumi Kakechi · 2022年9月9日 3m read データベースをバックアップする際の停止時間をできるだけ短くしたいとき これは InterSystems FAQ サイトの記事です。外部バックアップ機能と、SANソリューションが提供するスナップショット(スナップクローン、ミラークローンなど呼び方はベンダ毎に異なります)などのテクノロジを利用することで、バックアップ時のインスタンス停止時間を最短にすることができます。 操作手順概要は以下の通りです。 #システム管理 #バックアップ #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 106
記事 Megumi Kakechi · 2022年9月5日 2m read Web経由でイメージファイルを IRIS にアップロード/ダウンロードする方法 これは InterSystems FAQ サイトの記事です。 Web 経由でのイメージファイルのアップロード/ダウンロードを行うサンプルをご紹介します。サンプルでは、以下の手順でファイルの「アップロード/ダウンロード」を行っています。 Stream型のプロパティをもったクラスを用意する upload ボタン押下でイメージファイルをIRISサーバにアップロードする アップロードされたデータを %request.MimeData で受け取り CopyFromAndSave メソッドを使ってコピー&1 のクラスに保存する アップロードされたファイルを画面に表示する download ボタンを押下し、1 のクラスに保存したファイルをローカルにダウンロードする。 サンプルプログラムの使い方は次のとおりです。 #CSP #ヒントとコツ #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 149
記事 Toshihiko Minamoto · 2022年8月31日 7m read データ移行ツール - パート IV: Microsoft SQL Server から IRIS これは、市場に出回っている主なデータベースから InterSystems IRIS への移行に関する連載第 4 回目の記事です。 このパートでは、Microsoft SQL Server から移行するための手順を説明します。 前の記事で説明したとおり、現時点ではいくつかの移行オプションが存在しますが、最も一般的なオプションは、DBeaver(https://openexchange.intersystems.com/package/DBeaver)または SQLGateway を使用する 2 つの方法です。 最初のオプションはこの記事で紹介しますが、2 つ目のオプションは Robert Cemper が書いた「SQLgateway を使ったデータベース移行」(https://community.intersystems.com/post/db-migration-using-sqlgateway)という優れた記事で紹介されています。 # データのインポートとエクスポート #InterSystems IRIS 0 0 0 134
記事 Megumi Kakechi · 2022年8月30日 4m read 各アクセス方法(ダイレクト/SQL/オブジェクトアクセス)による速度の違いについて これは InterSystems FAQ サイトの記事です。InterSystems IRIS Data Platform(以下IRISと表記)ではマルチモデルのサポートにより、データに対して様々なアクセス手法を使用することができます。 主だったアクセス手法としてダイレクトアクセス、SQLアクセス、オブジェクトアクセスがあります。 ダイレクトアクセス は、IRISのネイティブ構造であるグローバルと呼ばれるキーバリュー型のデータに直接アクセスする方法です。 SQLアクセス は、リレーショナルデータベースシステムにアクセスするための標準言語であるSQLを使用してデータにアクセスする方法です。 #システム管理 #パフォーマンス #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 222
記事 Hiroshi Sato · 2022年8月28日 1m read 特定のテーブルデータのみをロールバックしないようにする これは InterSystems FAQ サイトの記事です。 実行ログデータなどトランザクション中にロールバックが発生しても前の状態に戻ってほしくないデータがあります。 それらのデータをロールバックされないデータベースIRISTEMPに配置することで上記の要件に対応できます。 一時グローバルと IRISTEMP データベース ロールバックさせたくないテーブルの実体をこのデータベースにマッピングすることでロールバック後に情報を残すことができます。 ただし、このデータベースはIRIS再起動で内容がクリアされますので、永続的に保持したい場合には、いずれかのタイミング(ロールバック後等)で永続テーブルにコピーを行う必要があります。 #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 111
記事 Mihoko Iijima · 2022年8月25日 1m read データベース xxxENSTEMP、xxxSECONDARY について これは InterSystems FAQ サイトの記事です。 メモ:xxx にはネームスペース名が入ります。 xxxENSTEMPは、プロダクション実行中に作成される一時データが保存されるデータベースです。^IRIS.Temp.Ens* のグローバルがこのデータベースにマッピングされています。なお、xxxENSTEMPはジャーナルにかかれない設定のデータベースです。 xxxSECONDARYは、プロダクションで使用される資格情報を保存するデータベースです。^Ens.SecondaryData* のグローバルがこのデータベースにマッピングされています。 注意:InterSystems IRIS for Health、HealthShare ではこれらデータベースは作成されません 詳細は以下ドキュメントをご覧下さい。 #データベース #ヒントとコツ #相互運用性 #Ensemble #InterSystems IRIS 0 0 0 59
記事 Toshihiko Minamoto · 2022年8月25日 2m read クラス/テーブルのサイズ情報を計算する その昔、クラス/テーブルのデータ、ストリーム、インデックスのサイズを判断するのは簡単なことでした。%GSIZE を実行して、D、S、I グローバルをそれぞれ確認するだけで済みました。 ところが最近では、シャーディングや、最適化されたグローバル名、分離されたグローバルのインデックスでは以下のような %GSIZE 出力が生成されます。 #SQL #シャーディング #InterSystems IRIS Open Exchange app 1 0 0 77
記事 Hiroshi Sato · 2022年8月22日 1m read 正規表現を使ってパターンに一致した部分文字列を取得する方法 これは InterSystems FAQ サイトの記事です。 正規表現を使用する$Locate()関数がご使用いただけます。 正規表現の使用方法 使用方法の例は以下の様になります。 USER>write strあいうえおかきくけこABC123456さしすせそ USER>write $locate(str,"[A-Za-z]{3}[0-9]{6}",,,val)11 USER>write valABC123456 USER> #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 115
記事 Megumi Kakechi · 2022年8月18日 1m read クライアントからターミナルにログインできない場合のチェック項目について これは InterSystems FAQ サイトの記事です。 クライアントからターミナルにログイン(接続)できない時、ターミナル接続を可能にするサービスが有効になっていないことが原因として考えられます。 ターミナル接続を可能にするサービスが有効になっていないことが原因として考えられます。 管理ポータル :[ホーム] > [システム管理] > [サービス] 有効になっていない場合は、リンクをクリックしてサービス定義編集画面を開き、"サービス有効"にチェックを入れて保存します。 もう一つの原因としてはOSのファイアウォールによりターミナル接続が遮断されている場合が考えられます。 リモートでターミナル接続される場合はファイアウォールの設定を無効にしてお使い下さい。 #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 183
記事 Toshihiko Minamoto · 2022年8月17日 11m read %SYSTEM.Encryption クラスを習得する #セキュリティ #ベストプラクティス #InterSystems IRIS Open Exchange app 1 0 0 162
記事 Toshihiko Minamoto · 2022年8月11日 1m read VSCode のヒントとコツ - 名前でクラスを開く Studio では、クラスを直接その名前で開くことができます。何度もクリックしながら目的のクラスに到達するまでパッケージツリー内を移動する必要はありません。 Ctrl + O(またはファイル -> 開く)を押せば、以下のようにクラス名を入力するだけです。 Enter を押すと、クラスが開きます。 VSCode ではこれをどのようにして行えるでしょうか? #ヒントとコツ #開発環境 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 145
記事 Megumi Kakechi · 2022年8月8日 3m read テーブルデータ一括削除の際にジャーナルデータを最小限にする方法 これは InterSystems FAQ サイトの記事です。 テーブル(クラス) のデータを削除する際に %KillExtent() というメソッドを使用すると、レコードを1ずつ削除するのではなく、データを格納しているデータグローバル、インデックス定義のグローバル(ノード) をまとめて 削除することができます。 #システム管理 #ジャーナリング #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 137
記事 Hiroshi Sato · 2022年8月8日 1m read TCP アダプタの StayConnected の設定に関する注意点 これは InterSystems FAQ サイトの記事です。 TCP アダプタを使用するビジネスホストの [接続中を維持(StayConnected)]と[プールサイズ(PoolSize)]のデフォルト設定値は以下の通りです。 StayConnected = -1(常時接続タイムアウト無し)PoolSize = 1 ネットワークの問題でビジネスホストへの接続が切断された場合に、プロダクション側では切断されたことを検知できないため新しい接続を受け付けません。 またこの状況の時、イベントログにも記録されません。 StayConnected が デフォルト値(-1)の場合、接続がタイムアウトしないため新しい接続を受け付けるためには、ビジネスホストを再起動する必要があります。 #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 97
記事 Hiroshi Sato · 2022年8月8日 1m read コンソールログにメッセージを書く方法 これは InterSystems FAQ サイトの記事です。 コンソールログに任意のメッセージを書き込む方法として%SYS.System クラスの WriteToConsoleLog メソッドを使用することができます。 以下に例を示します。 %SYS>write ##class(%SYS.System).WriteToConsoleLog("xxxxx log message",0,0)1 WriteToConsoleLogメソッドに指定できるパラメータの詳細は、以下のドキュメントをご参照下さい。 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 69
記事 Toshihiko Minamoto · 2022年8月2日 5m read ライセンス消費状況について サポートではこのような質問をたまに受けることがあります。何かが、または誰かが、想定以上のライセンスを使用しており、それを調べなければなりません。 調べるタイミングは2回あります。 1 つは、アプリケーションが動作しないか、ターミナル経由で接続しようとすると次のような「愛くるしい」メッセージが表示され、ライセンスが使い果たされていることに気づいたときです。 <LICENSE LIMIT EXCEEDED> メッセージ: 2 つ目のタイミングは、アプリケーションを使用できなかったことがあったという苦情をエンドユーザーから受けたときですが、問題が発生しているのを確認するには遅すぎます。 こういった場合には通例、messages.log に「License Limit exceeded xxxx times」というメッセージが確認されます。 #システム管理 #デバッグ #監視 #InterSystems IRIS 0 0 0 219
記事 Hiroshi Sato · 2022年8月1日 1m read ユーザーがブラウザの閉じるボタン(Xボタン)を押してCSPページを終了した時にサーバで検知する方法 これは InterSystems FAQ サイトの記事です。 残念ながら良い方法はありません。 もし処理の流れとして突然処理を中断されると不都合がある場合には、OnunloadHandler内でalertメソッドにより、Xボタンを押さないように注意を促すようなメッセージを出す方法が考えられます。 一般的には、ユーザ都合で処理中断されてもサーバ側処理内でデータの整合性等に不都合が発生しない様にアプリケーションの実装を行う必要があります。 ページのアンロード時に呼び出されるOnunloadHandler内でサーバ・メソッドを呼び出す方法は様々な問題があるため、使用することはお勧めしません。 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 75
記事 Megumi Kakechi · 2022年7月31日 2m read 任意のカスタムエラーを発生させる方法 これは InterSystems FAQ サイトの記事です。TRYブロック内で任意のカスタムエラーを発生させたい場合、以下のように throw で例外を渡すことが可能です。 以下のサンプルでは、Stcount が 1 より小さい場合にカスタムエラーを発生させています。 #ObjectScript #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 166
記事 Megumi Kakechi · 2022年7月26日 5m read Embedded Python:lxmlを使用しWebスクレイピングした表の結果をグローバルに格納する Embedded Python で Excel のデータを IRIS グローバルに格納する方法 では Excel データを pandas.DataFrame に取り込んで、それを InterSystems IRIS グローバルに保存する方法をご紹介しました。 今回は「lxml を使用し Web スクレイピングした表(テーブル)のデータを InterSystems IRIS グローバルに格納する」方法をご紹介します。 ※以下は Windows 上の IRIS でのインストール方法になります。 UNIX ベースのシステムでは、pip3 コマンドを使用してインストールします。詳細は ドキュメント をご覧ください。 #Embedded Python #ヒントとコツ #InterSystems IRIS #InterSystems IRIS for Health 2 0 0 161
記事 Toshihiko Minamoto · 2022年7月26日 5m read Jupyter Notebooks に ObjectScript を追加する方法 Jupyter Notebook は、多数の異なるマークアップ言語とプログラミング言語でコードを実行できるセルで構成された対話型環境です。 Jupyter はこれを実現するために適切なカーネルに接続しなければなりませんが、 ObjectScript カーネルがなかったため、それを作成することにしました。 こちらから試すことができます。 結果を少し覗いてみましょう。 #API #Python #InterSystems IRIS Open Exchange app 0 0 0 68