InterSystems公式 Toshihiko Minamoto · 2023年3月12日 3m read クラスの生成方法、呼び出し方法の変更(IRIS 2023.1~) IRIS 2023.1でのメソッドコードの生成と呼び出し方法の変更について、お知らせしたいと思います。 IRIS のクラスは、2 つの主要なランタイムコンポーネントで構成されています。 クラスディスクリプタ - クラスを構成するメソッド、プロパティ、クラスパラメータ、およびこれらのそれぞれに関連する属性(パブリック/プライベート設定など)が最適化されたリストです。 ObjectScriptコード - メソッドが呼び出されたときに実行される ObjectScript コードを含むルーチンのセットです。 クラス/オブジェクトのメソッドを呼び出すと、ディスパッチコードがクラス記述子からメソッドを探し、呼び出しが許可されているかどうかを確認し、正しいクラスコンテキストを設定し(その過程で $this を更新)、最後に関連するクラスルーチンにある ObjectScript コードを呼び出します。 #ObjectScript #InterSystems IRIS #InterSystems公式 2 0 0 20
記事 Megumi Kakechi · 2023年3月8日 2m read 2つのグローバルの内容を比較する方法 これは InterSystems FAQ サイトの記事です。 ^%GCMP ユーティリティにて2つのグローバルの内容を比較することができます。 例としてUSERとSAMPLESネームスペースにある、^testと^testを比較する場合は以下のようになります。※以下の例では、2つのネームスペースに全く同じグローバルを700個作り、その中の一つの中身を変えて検出対象としています。 #ObjectScript #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 12
記事 Mihoko Iijima · 2023年2月21日 3m read InterSystems Developer Hub:クリック1回で開始できるチュートリアル(4種)のご紹介 開発者の皆さん、こんにちは! 開発者向け情報を集めた「Developer Hub」ページが新たに登場しました! このページには、4種類のチュートリアルが用意されています。チュートリアはブラウザ上で動作し、VSCodeやIRISターミナル、管理ポータルなどチュートリアルで使用するすべての画面が1つのタブ内で開くようになっています。 チュートリアルを試すための事前準備は不要で、クリック1回ですぐにお試しいただけます!(ユーザ登録も不要です)(チュートリアル開始方法は、ページ末尾をご覧ください。) #ObjectScript #Python #REST API #SQL #チュートリアル #初心者 #機械学習 #相互運用性 #InterSystems IRIS #InterSystems IRIS for Health 2 0 0 31
記事 Megumi Kakechi · 2023年2月6日 3m read ファイル操作関連のTips ファイルとディレクトリの操作に使用できる API 、%Library.File クラス (%File が省略形) の便利なサンプルコードをご紹介します。 こちらのAPIを使用して、ディレクトリやファイルの中身をのぞいたり、作成・書込み・読込みを行ってみます。 ★ディレクトリ内のファイル一覧をリストする 以下のサンプルは、C:\temp フォルダ内の *.txt ファイルをリストします(ファイルパス_サイズ_作成日)。 #ObjectScript #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 2 0 0 55
記事 Toshihiko Minamoto · 2023年1月31日 1m read Chat GPTを使う 皆さん、こんにちは。 最近話題のChat GPTですが、試しに使ってみました(今更かもしれませんが)。 ObjectScriptを知っているみたいです なので、 と質問すると、 #ObjectScript #InterSystems IRIS 5 0 0 199
記事 Mihoko Iijima · 2022年12月7日 1m read ObjectScript クックブック 開発者の皆さん、こんにちは! InterSystems全製品のサーバ側コードで利用できる「ObjectScript」の基本の使い方から、困ったときのヒント集、エラーの読み方など、日本語ドキュメントの逆引きになるようなページを目指して、「ObjectScriptクックブック」を作成しました! - ObjectScriptの基本の「き」 Hello Worldの出力から始めたい方に最適です。 - CookBook(こんなときどうする?集) ObjectScriptの記述に困ったときに読んでいただけるヒント集です。コミュニティに寄せられたご質問をどんどん掲載していきます。 - ObjectScriptでエラーが発生したら ObjectScriptのプログラムでエラーが発生したときのエラーメッセージの読み方から、エラー情報の取得方法などを解説しています。 #ObjectScript #ヒントとコツ #初心者 #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 3 0 0 73
記事 Toshihiko Minamoto · 2022年11月22日 5m read 時間の支配者になるには - タイムトラベル タイムトラベルとはパリを訪ねるようなもの。 ガイドを読むだけじゃなく、そこに足を踏み入れなければならない。 ご飯を食べて、動詞の使い方を間違えたり、2 倍の料金を請求されたり、見ず知らずの人とキスするものさ。 ドクター これから時空を超えた旅をしましょう。未来と過去の日付を見て、様々なフォーマットで計算する方法を説明します。 ターディスは待ちません。コントロールに就いてしっかりつかまりましょう。 #ObjectScript #ヒントとコツ #Caché 0 0 0 30
記事 Toshihiko Minamoto · 2022年11月2日 7m read 時間の支配者になるには ー誕生 良識のある人にはルールなんていらない。 ドクター 日付と時間のマスターになるのは簡単なことではありません。いつも問題になる上、どのようなプログラミング言語でも混乱することがあります。そこでこのタスクが可能な限り単純になるように、分かりやすく説明していくつかのヒントをご紹介しましょう。 さぁ、ターディスに乗り込みましょう。あなたを時間の支配者にして差し上げます。 #ObjectScript #ヒントとコツ #Caché 1 1 0 60
記事 Mihoko Iijima · 2022年10月19日 1m read VSCode:クラスメソッド実行文をワンクリックでコピーできるようになりました!(VSCode:ObjectScriptエクステンション) 開発者の皆さん、こんにちは! ターミナルでクラスメソッドを実行するとき、パッケージ名やクラス名などの入力候補が出てこないので、 ##class(パッケージ名.クラス名).メソッド名() の記述をミスったりちょっと面倒だな・・と感じること、ありませんか??(第1回 InterSystems Idea-A-Thon(アイデアソン) でも、もっとシンプルに呼び出せるようにしよう!のアイデアが投稿されていたようです。) (私も含めて)そんな方に、朗報です!📣 #ObjectScript #ターミナル #ヒントとコツ #InterSystems IRIS #VSCode Open Exchange app 2 0 0 53
記事 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 49
記事 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 61
記事 Seisuke Nakahashi · 2022年5月31日 6m read OAuth 2.0 を利用して IRIS から Gmail を送信する 2022年5月30日より、外部アプリからGmailを送信するには OAuth 2.0が必須になりました (リンク) そのため、IRIS から Gmail を送信したい 場合は、今後は OAuth 2.0 を利用して Gmailアカウントに接続する 必要があります。 そこで、IRIS コード ObjectScript を使って、OAuth 2.0 でGmailアカウントに接続&メール送信するサンプルを作成しました。 ぜひご活用ください! #OAuth2 #ObjectScript #InterSystems IRIS 2 0 0 536
記事 Toshihiko Minamoto · 2022年4月26日 8m read クラスの全プロパティをリストする(ObjectScript がお気に入りな理由) @Ming Zhou から素晴らしい質問をいただきました。その回答は、まさに私がObjectScriptを愛用している理由を表しています。 初めて誰かに ObjectScript や IRIS を説明する際、必ず、クラスを記述してコンパイルし、テーブルを取得して、オブジェクトまたはリレーショナルのいずれか最も自然な観点からデータを操作できると説明しています。 いずれにせよ、これは単に、グローバルと呼ばれる非常に高速な内部データ構造を囲む薄めのラッパーであり、速度をさらにバーストさせる必要がある場合にも使用できます。 #ObjectScript #オブジェクトデータモデル #InterSystems IRIS 0 0 0 137
記事 Mihoko Iijima · 2022年3月29日 3m read SSL/TLS を使用しているメールサーバへメールを送信するコードサンプルご紹介 これは、InterSystems FAQサイトの記事です。 メール送付のコードを記述する前に、管理ポータルで SSL/TLS 構成を作成します。 管理ポータル > システム管理 > セキュリティ > SSL/TLS 構成 メール送付までの流れは以下の通りです。 #ObjectScript #SSL #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 119
記事 Tomoko Furuzono · 2022年3月29日 1m read 現在実行中のコードの位置(どの行を実行中か)を知る方法 これは、InterSystems FAQサイトの記事です。 現在実行中のコードの位置は、$STACK関数を使用して $STACK($STACK,"PLACE") で取得できます。 サンプルコードは以下ドキュメントをご参照ください。 現在実行中のコードの位置を取得する方法について【IRIS】現在実行中のコードの位置を取得する方法について #ObjectScript #Caché #InterSystems IRIS 0 0 0 27
記事 Tomoko Furuzono · 2022年3月29日 1m read SQLでのNULLデータの取り扱い これは、InterSystems FAQサイトの記事です。 SQLの場合、NULLデータと空文字列 ('')は区別されます。それぞれの設定・確認方法は、以下のようになります。 (1) NULLデータ 【SQL】 insert into test (a) values (NULL)select * from test where a IS NULL 【InterSystems ObjectScript】 set x=##class(User.test).%New()set x.a="" (2) 空文字列 ('') 【SQL】 #ObjectScript #SQL #Caché #InterSystems IRIS 0 0 0 94
記事 Tomoko Furuzono · 2022年3月29日 1m read プログラムでCSVファイルを1行ずつ読み込む方法 これは、InterSystems FAQサイトの記事です。 %SQL.Util.Proceduresクラスの CSV() プロシジャを使用することにより、実現できます。下記が使用例のコードとなります。(test.csvというファイルが c:\temp にあるという前提) #ObjectScript #SQL #Caché #InterSystems IRIS 0 0 0 137
記事 Toshihiko Minamoto · 2022年3月10日 4m read ストレージ定義の変更による危険性 背景 先日、ObjectScript の永続(Persistent)クラスのプロパティを編集していたところ、ストレージ定義が最後の変更を反映するように更新されていないことに気づきました。 この場合、クラス定義に不要となったプロパティを削除した上で保存し、再コンパイルしましたが、それでもストレージ定義に残ったままになっていました。 それでも焦ることはありませんでした。 ストレージ定義がコンパイル時に自動生成されるのであれば、それを削除して、クラスを再コンパイルすればよいからです。 もちろん、この後、削除されたプロパティはストレージ定義に表示されなくなりました。 問題解決... ですよね? (ブブー、間違いです) 後になって、このアプローチはクラスにデータが保存されていないときに機能することがわかりました。 ただし、既存のデータがあるのであれば、重大なデータ参照の問題が発生する可能性があります。 そもそもストレージ定義とは? #ObjectScript #オブジェクトデータモデル #Caché 0 0 0 40
記事 Toshihiko Minamoto · 2022年3月8日 8m read Caché ObjectScriptによるExcelドキュメントの生成 InterSystemsを使用してExcelファイルを生成する方法はたくさんあります。ZENレポートやIRISレポート(Logiレポートまたは正式にはJReportsと呼ばれるレポート)のほか、サードパーティのJavaライブラリを使用するなど、可能性はほぼ無限です。 しかし、Caché ObjectScriptだけで単純なスプレッドシートを作成したい場合はどうでしょうか。 (サードパーティアプリケーションを使用せずに、です) 私の場合、大量の生データを含むレポート(金融関係の人たちが好むレポート)を生成する必要がありますが、私のZEN/IRISでは対応できません。私が呼ぶところの「ゼロバイトファイル」が生成され、基本的にJavaのメモリ不足となり、レポーティングサーバーに大きな負荷を生じてしまいます。 これは、Office Open XML(OOXML)を使って実現できます。 Office Open XML形式は、多数のXMLファイルで構成されるZIPパケージです。 つまり基本的には、これらのXMLファイルを生成してZIP圧縮し、.xslxに名前を変更すればよいのです。 それくらい単純です。 #ObjectScript #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 141
記事 Tomoko Furuzono · 2022年3月1日 2m read オブジェクトのプロパティやメソッドに動的にアクセスする方法 これは、InterSystems FAQサイトの記事です。 オブジェクトに対する一般的な処理をサポートする各種関数を提供しています。詳細は以下ドキュメントをご参照ください。オブジェクトへの動的アクセス【IRIS】オブジェクトへの動的アクセス サンプルクラス(Sample.Person)を使用して、利用例をご紹介します。 #ObjectScript #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 135
記事 Tomoko Furuzono · 2022年3月1日 1m read マッピングされたクラス・ルーチンをコンパイルする方法 これは、InterSystems FAQサイトの記事です。 マップされたクラス・ルーチンも含めてコンパイルする場合は、コンパイラ修飾子に "/mapped=1" もしくは "/mapped" を指定します。 例えば、以下のように行います。 【例1】クラスリストを取得してコンパイル do $System.OBJ.GetClassList(.list,"/mapped") // build your list starting from .list do $System.OBJ.Compile(.list) 【例2】全てのクラスをコンパイル #ObjectScript #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 43
質問 Akio Hashimoto · 2022年2月3日 エラー時の行番号について 皆さん こんにちは。 最近ではVSCodeでIRISのプログラミングを行っている方も多いと思います。 クラスメソッドなんかをコーディングし、実行してエラーとなった場合に、以下のようなエラーメッセージが取得できると思います。 > <UNDEFINED> zNewMethod+32^ClassName.1 これは、NewMethodというメソッド内の32行目でUNDEFINEDが発生した事を指していますが、これは実際にはClassName.clsのNewMethod内の32行目ではなく、ClassName.1というルーチン(int)のzNewMethodでの32行目を示しています。 .clsから生成されるintは空行が削られたり、複数ルーチンに分割されたりしますので、実際のClassName.clsを開いてNewMethodの32行目を見ても実際のエラー箇所では無い場合があります。 VSCodeで開発をしていると、これが結構面倒なのですが、エラーメッセージに出力される行番号を .clsや、.mac 上での行番号に変える方法があれば教えて頂きたく、よろしくお願い致します。 #ObjectScript #InterSystems IRIS 2 2 0 121
記事 Toshihiko Minamoto · 2022年2月9日 2m read IRIS-NativeAPI-Nodejs-compact (jp) これは、前回の「DockerマイクロサーバーとしてのIRIS Native APIを使用するWebSocketクライアントJS」のフォローアップです。 すべてのピースが1つのDockerイメージにまとめられたため、インストールがはるかに簡単になりました。 作業が楽になります。 ただしもちろん、マイクロサービスの原則はわかりにくくなくなっています。 オールインワンのバンドルパッケージであるため、 コンパクトになっています。 #Docker #JavaScript #Microservices #Node.js #ObjectScript #コンテスト #コンテナ化 #InterSystems IRIS Open Exchange app 0 0 0 73
記事 Mihoko Iijima · 2022年2月4日 7m read Embedded Python 試してみました 開発者の皆さん、Python好きの皆さん、こんにちは! ドキュメントをみながら IRIS 2021.2 に追加された Embedded Python を試してみました! IRIS にログインしてるのに Pythonシェルに切り替えできて Python のコードが書けたり、Python で import iris するだけで SQL を実行できたりグローバルを操作できるので、おぉ!✨という感じです。 ぜひ、みなさんも体感してみてください! では早速。 まず、IRISにログインします。Windows ならターミナルを開きます。Windows 以外は以下実行します。 #Embedded Python #ObjectScript #Python #SQL #オブジェクトデータモデル #初心者 #InterSystems IRIS #InterSystems IRIS for Health 4 0 0 355
記事 Toshihiko Minamoto · 2022年2月1日 5m read DockerマイクロサーバーとしてIRIS Native APIを使用したWebSocketクライアントJS これはIRIS 2020.2で動作するコーディングの例です 最新バージョンとは同期していません。 また、InterSystemsのサポートによるサービスはありません動作中のデモを確認できるデモビデオを以下で公開しています。https://youtu.be/dSV-0RJ5Olg 皆さんこんにちは 完全に新しいIRISイメージとたった4行のDockerコマンドを使って実行するイメージを使ってマイクロサービスのデモを行いましょう。 2020年6月1日 - rcc すべてのパーツを1つのコンテナイメージにまとめたコンパクトなオールインワンバージョンが公開されました。 詳細はこちら: IRIS-NativeAPI-Nodejs-compact 2020年5月24日 - rcc Dockerを使った簡易インストールを追加しました。コンテキストを参照 2020年5月25日 - rcc Linux & Windowsに最適な検証済みの強化スクリプトはこちらhttps://github.com/rcemper/WSockClientMicroSV/blob/master/READMEwindows.MD 2020年5月26日 - rcc このデモは、Caché用にすでに存在するNode.jsに基づくWebSocketクライアントを再設計したものです。 主に以下のような変更点があります。 新しいIRIS Native API for Node.jsの使用。特にグローバル配列を操作する場合 直接トリガーされたクライアントからサーバー設計への変更 マイクロサービス/マイクロサーバーの例として、結果を別のdockerイメージに配置 マイクロサービスの実行を制御するための単純なインターフェースをIRISに追加 #Docker #JavaScript #Microservices #Node.js #ObjectScript #グローバル #コンテスト #コンテナ化 #InterSystems IRIS Open Exchange app 0 0 0 70
記事 Megumi Kakechi · 2022年1月30日 1m read アプリケーションのログを^ERRORSグローバルに入れる方法 これは、InterSystems FAQサイトの記事です。 TRY-CATCHで行うことが可能です。以下のように行ってください。 #dim ex As %Exception.AbstractException TRY { "<何かエラーを発生させる処理>" } CATCH ex { do ex.Log() } ^%ETNを使用する場合は、^%ETNを呼び出す際にBACKエントリ(BACK^%ETN)から呼び出してください。 あわせて、以下の関連記事も是非ご覧ください。 #ObjectScript #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 1 94
記事 Tomoko Furuzono · 2021年12月26日 1m read 特殊変数$ZTIMESTAMP をローカルのタイムゾーンに変更する方法 これは、InterSystems FAQサイトの記事です。$ZTIMESTAMPはUTC形式で日付時刻を返すため、ローカルのタイムゾーンに変更するためには以下システムオブジェクトを利用します。 $SYSTEM.Util.UTCtoLocalWithZTIMEZONE($ZTIMESTAMP) 上記出力結果は ddddd,sssss.fff の形式で出力されます。 ddddd:$HOROLOGの日付と同じ形式 sssss:現在の日付の午前 0 時からの経過秒数を示す整数 fff :秒の小数部を示す可変桁数 ※ $HOROLOGに似ていますが、$HOROLOGには秒の小数部分は含まれません。 #ObjectScript #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 68
記事 Hiroshi Sato · 2021年11月29日 2m read イメージファイルをFTPサーバからアップロード/ダウンロードする方法 これは、InterSystems FAQサイトの記事です。 FTPサーバから、アップロード/ダウンロードする方法は以下の通りです。 1. FTPサーバにイメージファイルをアップロードする #ObjectScript #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 58
記事 Toshihiko Minamoto · 2021年11月9日 18m read 別のIRISメッセージビューワを作成する IRISインターオペラビリティのメッセージビューワで何かを変更できるとしたら、何を変更しますか? #Docker #ObjectScript #InterSystems Package Manager (IPM) #ビジネスオペレーション #ビジネスサービス #メッセージ検索 #相互運用性 #Ensemble #InterSystems IRIS Open Exchange app 0 0 0 78
記事 Megumi Kakechi · 2021年10月28日 2m read TIMESTAMP型のフォーマットについて これは InterSystems FAQ サイトの記事です。 TIMESTAMP型はInterSystems製品では、%Library.TimeStampデータタイプ(=%TimeStamp)に対応していて、フォーマットは YYYY-MM-DD HH:MM:SS.nnnnnnnnn です。 小数点以下の精度を変更したい場合は、以下の方法で設定します。 1) システムワイドに設定する 管理ポータル:[システム管理] > [構成] > [SQLとオブジェクトの設定] > [一般SQL設定] GETDATE(), CURRENT_TIME, CURRENT_TIMESTAMP のデフォルト時刻精度 に 0~9 の範囲で桁数を指定できます。 #ObjectScript #SQL #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 524