記事 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
記事 Mihoko Iijima · 2021年2月12日 5m read XMLファイルの内容をデータベースに登録する方法 これは InterSystems FAQ サイトの記事です。 XMLファイルの内容を格納する永続クラス定義を作成し、%XML.Adaptor を追加で継承します。 例は以下の通りです(右端の %XML.Adaptorクラスを追加で継承します)。 Class ISJ.Class1 Extends (%Persistent, %Populate, %XML.Adaptor) #ObjectScript #XML #オブジェクトデータモデル #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 2 0 0 800
記事 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 · 2020年4月21日 28m read Caché Mirroring 101:簡単なガイドとよくある質問 Mirroring 101 Cachéミラーリングは、CachéおよびEnsembleベースのアプリケーションに適した信頼性が高く、安価で実装しやすい高可用性および災害復旧ソリューションです。 ミラーリングは幅広い計画停止シナリオや計画外停止シナリオで自動フェイルオーバーを提供するもので、通常はアプリケーションの回復時間を数秒に抑制します。 論理的にデータが複製されるため、単一障害点およびデータ破損の原因となるストレージが排除されます。 ほとんど、またはダウンタイムなしでアップグレードを実行できます。 #Mirroring #ヒントとコツ #システム管理 #データベース #フェイルオーバー #高可用性 #Caché #Ensemble #InterSystems IRIS 2 0 0 519
記事 Mihoko Iijima · 2021年2月19日 4m read VSCode:プロセスにアタッチしてデバッグする方法 開発者の皆さん、こんにちは! VSCode の ObjectScript エクステンションで、プロセスにアタッチしてデバッグする方法についてご紹介します。 ObjectScript エクステンションの基本的な操作方法については、こちらの記事をぜひご参照ください。 解説ビデオ(4分ちょっと)もあります。ぜひご参照ください。 #ObjectScript #VSCode #デバッグ #ビデオ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 2 2 0 7,297
記事 Megumi Kakechi · 2020年9月16日 4m read HTMLからRESTを使って画像ファイルをアップロードする方法 これはInterSystems FAQ サイトの記事です。 HTMLからRESTを使って画像ファイルをアップロードする方法をご紹介します。 1.はじめに、以下のようなhtmlとクラスを作成してください。 *UploadTest.html #CSP #REST API #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 2 3 0 2,245
記事 Hiroshi Sato · 2021年12月20日 1m read <EXTERNAL INTERRUPT>エラーの原因と対処法 これは、InterSystems FAQサイトの記事です。 CSPアプリケーションでは、リクエスト処理時間がサーバー応答タイムアウト値(CSPゲートウェイ管理ページで設定、既定値60 sec)を経過すると、CSPゲートウェイからクライアントブラウザにタイムアウトを通知し、処理を続けているデータプラットフォームサーバプロセスにエラーを発生させます。 エラーが発生している処理を確認して頂き、処理遅延の改善、例えばタイムアウトが発生しないように処理内容を見直して応答時間を短くすることや必要に応じてサーバ応答タイムアウト値を大きくすることで対処可能です。 #CSP #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 103
記事 Megumi Kakechi · 2023年2月2日 2m read 並列クエリについて(%PARALLEL) クエリパフォーマンスを最適化するための方法の一つとして、クエリ単位またはシステム全体でクエリの並列処理を使用することができます(標準機能)。 こちらは、特定のクエリに対しマルチプロセッサシステムでクエリの実行をプロセッサ間で分割して行うものです。並列処理の効果が得られる可能性がある場合のみ、クエリオプティマイザは並列処理を実行します。並列処理の対象はSELECT文のみとなります。 なお、並列プロセスの数は、CPUの数に応じて自動で調整するため、数の指定は行えません。現在のシステムのプロセッサ数は以下のコマンドで確認することができます。 #SQL #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 31
記事 Megumi Kakechi · 2022年1月12日 5m read ミラージャーナルファイルの削除のタイミングと要件 これは、InterSystems FAQサイトの記事です。ミラージャーナルファイルの削除(パージ)のタイミングは以下のようになります。 ・プライマリ・フェイルオーバー・メンバ #Mirroring #システム管理 #ジャーナリング #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 91
記事 Tomoko Furuzono · 2021年12月26日 1m read メッセージ・ログ(messages.log)/コンソール・ログ(cconsole.log) に出力される「Purging Application Error Logs」のメッセージとは これは、InterSystems FAQサイトの記事です。 MM/DD/YY-hh:mm:ss:fff ( ) 0 [Utility.Event] Purging old application errors こちらのメッセージは、エラーではなく、アプリケーションのエラーログを記録した古い ^ERRORSグローバルのパージ処理が実行された際に出力されるメッセージになります。ログを削除した旨のみを伝えるメッセージであり、出力されていても特に問題はありません。また、このログは、^ERRORSグローバルのパージ処理がタスク実行される毎日01:00 に出力されます。 #システム管理 #管理ポータル #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 59
記事 Toshihiko Minamoto · 2022年8月11日 1m read VSCode のヒントとコツ - 名前でクラスを開く Studio では、クラスを直接その名前で開くことができます。何度もクリックしながら目的のクラスに到達するまでパッケージツリー内を移動する必要はありません。 Ctrl + O(またはファイル -> 開く)を押せば、以下のようにクラス名を入力するだけです。 Enter を押すと、クラスが開きます。 VSCode ではこれをどのようにして行えるでしょうか? #ヒントとコツ #開発環境 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 48
記事 Mihoko Iijima · 2021年9月21日 3m read Excel から InterSystems 製品にアクセスする方法 これは InterSystems FAQ サイトの記事です。 Excelのマクロ機能を使ってVBAからREST/JSON経由でアクセスすることが可能です。 REST/JSONを使用したInterSystems製品との連携の簡単なサンプルを以下のGitHubサイトから入手できます。 VBAマクロサンプル マクロサンプルは Solution/activityreport.xlsm をご覧ください。 サンプルは、コンテナを利用しています。READMEに記載の方法でコンテナを開始し、Solution/activityreport.xlsm の「データ取得」ボタンをクリックすると以下の結果が得られます。 #JSON #REST API #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 131
記事 Tomoko Furuzono · 2021年12月7日 2m read メッセージ・ログ(messages.log)/コンソール・ログ(cconsole.log) に出力される「Skipping SET(KILL) global ^xxxx during transaction rollback...」のメッセージとは これは、InterSystems FAQサイトの記事です。このメッセージが出力される要因は以下の2つになります。 同じデータに対して適切に排他を行わずに、別々のプロセスから更新が行われている ロールバックが発生している 詳細は以下の通りです。 メッセージログ/コンソールログに、以下のようなメッセージがある場合、これはロールバック処理にて出力されています。※バージョンによってメッセージは多少異なります。 #システム管理 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 36
記事 Toshihiko Minamoto · 2022年9月14日 2m read VSCode のTips & Tricks - Web ターミナル VSCode から直接 Web ターミナルにアクセスしたいと思いませんか? #ヒントとコツ #開発環境 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 1 63
記事 Megumi Kakechi · 2023年2月23日 3m read IRIS SQLクエリで取得した結果セットのランキング(順位)を算出する方法 弊社サポートセンターに、「IRIS SQLに Oracle の RANK() 関数のようものはありませんか?」というお問い合わせいただくことがあります。 IRIS2021.1以降のバージョンであれば、RANK() や ROW_NUMBER() などの ウィンドウ関数 がサポートされるようになりましたので、以下のように使用することができます。 #SQL #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 16
記事 Hiroshi Sato · 2020年6月29日 2m read ターミナルやAPIを使用してネームスペースやデータベースを作成する方法 Config.Configurationクラス、SYS.Databaseクラスのメソッドを使用して、ネームスペース・データベースの作成及び登録をターミナルから実行することができます。以下はデータベースファル/CacheDB/AAA/cache.datを作成し、構成ファイル(cache.cpf)にデータベース AAA、及び、ネームスペースAAAの登録を行う一連の実行例です。 *実行は、%SYSネームスペースで行って下さい。* #API #ObjectScript #システム管理 #ターミナル #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 1 3 0 324
記事 Hiroshi Sato · 2021年12月28日 2m read コンパイルフラグについて これは InterSystems FAQ サイトの記事です。 コンパイル時のフラグや修飾子の記号と意味については、以下ドキュメントをご参照ください。 コンパイルフラグについて【IRIS】 コンパイルフラグについて なお、開発環境のスタジオやVisual Studio Codeでは、開発環境の設定画面でフラグを変更できます。 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 214
記事 Megumi Kakechi · 2021年10月8日 1m read ターミナルでプログラム実行中にエラーが発生した際、プロンプトを元に戻す方法 これは InterSystems FAQ サイトの記事です。 ターミナルでルーチンを実行し、プログラム上でエラーが発生した時に、エラートラップを適切に設定していない場合、以下のようなデバッグモードになります。 USER>do ^error1 write A^a+2^error1 *AUSER 2d0> この状態から、ルーチン起動の前の状態に戻るにはQuitコマンドを入力します。 USER 2d0>Quit またエラーが発生したルーチン内でトランザクション処理を行なっている場合には、以下のような表示のプロンプトになります。 #ターミナル #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 121
記事 Tomoko Furuzono · 2021年12月7日 1m read UTF-8で保存されたHTMLファイルをリクエストすると、日本語が文字化けする これは、InterSystems FAQサイトの記事です。 プライベートWebサーバを使用して、HTMLファイルをリクエストした際に、日本語が文字化けする場合があります。その場合には、HTMLファイルをBOM(バイト・オーダー・マーク)付で保存してください。 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 92
記事 Mihoko Iijima · 2022年4月14日 10m read データベースのあるディスクの空き容量を確認し、指定サイズを下回る場合に通知する方法の例 これは、InterSystems FAQサイトの記事です。 アプリケーションモニタが提供する %Monitor.System.Diskspace(ディスク容量メトリック)を利用して指定サイズを下回る場合にメール通知を行うように設定を追加することができます。 アプリケーション・モニタのメトリック【IRIS】アプリケーション・モニタのメトリック #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 65
記事 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
記事 Hiroshi Sato · 2021年11月11日 1m read ODBCのクエリタイムアウトを回避する方法 これは InterSystems FAQ サイトの記事です。 タイムアウトを無効にするためには、DSNの設定でクエリタイムアウト無効に設定します。 Windowsコントロールパネル > [管理ツール] > [データソース(ODBC)] > [システムDSN]の構成 で クエリタイムアウト無効 にチェックを入れますと、タイムアウトは無効になります。 アプリケーション側で変更する場合は、ODBC APIレベルで設定することが可能です。 ODBCのSQLSetStmtAttr関数をコールする際に、SQL_ATTR_QUERY_TIMEOUT属性を設定してから、データソースに接続してください。 #ODBC #SQL #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 3,108
記事 Tomoko Furuzono · 2021年12月13日 1m read グローバル単位でジャーナルのON/OFF設定をする方法 これは、InterSystems FAQサイトの記事です。 グローバル単位でジャーナルのON/OFF設定を行いたい場合は、グローバルマッピング設定で、 ・ジャーナルしたいグローバル ⇒ ジャーナルONのデータベースにマッピング)と、 ・ジャーナルしたくないグローバル ⇒ ジャーナルOFFのデータベースにマッピングを分けるという方法があります。 例えば、一部のグローバルのみジャーナルしたくない場合には、そのグローバルを IRISTEMP/CACHETEMP データベースにグローバルマッピングすることで、そのグローバルはジャーナルされなくなります。※IRISTEMP/CACHETEMP データベースは、ジャーナル対象外のデータベースであるため。 ただし、IRISTEMP/CACHETEMP データベースの内容は、再起動時にクリアされますのでご注意ください。 #グローバル #データベース #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 59
記事 Hiroshi Sato · 2020年10月15日 1m read カウンタとして時間経過を正確に計測する方法 これはInterSystems FAQ サイトの記事です。 $ZHorologを使用します。 $ZHorologシステム変数はInterSystems製品を起動してからの経過時間(秒)を保持しています。 2点間の$ZHorolog値の差を取るだけで正確な経過時間を取得する事が出来ます。 詳しくは以下、ドキュメントをご参照ください。 $ZHorologについて【IRIS】 $ZHorologについて この他、秒の小数部を含む時間の日付と時間の取得には $NOW, $ZTimeStamp が使用できます。 #ObjectScript #Caché #Ensemble #InterSystems IRIS 1 0 0 97
記事 Megumi Kakechi · 2021年3月10日 3m read RESTでセッション共有化する方法 これは InterSystems FAQ サイトの記事です。 REST アプリケーションはステートレスであることが想定されています。 しかし、複数の REST 呼び出し間でデータを保持したい場合などの理由で、Webセッションを使用したい場合は、UseSession パラメータを使用することができます。 以下のように、Web アプリケーションのディスパッチクラスとして定義された %CSP.REST のサブクラスでUseSession パラメータを指定することで、CSPと同じようにWebセッションを使用することが可能となります。 Class REST.MyServices Extends %CSP.REST { Parameter UseSession As Integer = 1; 詳細は以下のドキュメントをご覧ください。 #REST API #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 584
記事 Mihoko Iijima · 2021年4月22日 4m read ソースプログラムを隠蔽化する方法 これは InterSystems FAQ サイトの記事です。 ルーチン(*.mac)の場合 ソースプログラムのコンパイル後に生成される *.obj のみをエクスポート/インポートすることでソースの隠蔽化を実現できます。 コマンド実行例は、EX1Sample.mac と EX2Sample.mac のコンパイルで生成される EX1Sample.obj と EX2Sample.obj をエクスポート対象に指定し、第2引数のファイルにエクスポートしています。 別ネームスペースに移動したあと、エクスポートした XML ファイルを利用してインポートを実行しています。 #CSP #デプロイ #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 91
記事 Mihoko Iijima · 2021年8月11日 3m read パフォーマンス低下時の情報収集ツールについて これは InterSystems FAQ サイトの記事です。 以下のような情報収集ツールがあります。 1) 性能評価の為のツール GLOSTAT グローバルアクセスのカウンター情報 mgstat グローバルアクセスのカウンター情報を連続してファイルに記録する JOBEXAM 問題のあるプロセスをモニターする SystemCheck または Buttons 内部情報の収集 使用方法詳細は以下の記事もご参照ください。 #パフォーマンス #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 73
記事 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
記事 Megumi Kakechi · 2022年5月25日 2m read 設定されているネームスペース一覧をプログラムで取得する方法 これは、InterSystems FAQサイトの記事です。%SYS.Namespace クラスの List クエリで取得することができます。 次のようなルーチンを作成し、ターミナルで実行してください。 1. サンプルの作成 #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 88
記事 Mihoko Iijima · 2021年4月22日 2m read ユーザ定義エラーを作成する方法のご紹介 これは InterSystems FAQ サイトの記事です。 ユーザ定義エラーとして使用したいエラーコードと対応するメッセージを記述したXMLを用意します。 なお、エラーコードは負の整数で設定してください。 <?xml version="1.0" encoding="UTF-8" ?> <MsgFile Language="ja"> <MsgDomain Domain="UserErrors"> <Message Id="-111" Name="MyError">エラーが発生しました</Message> <Message Id="-222" Name="MyError2">エラーが発生しました2</Message> </MsgDomain> </MsgFile> XML ファイルが作成できたら使用したいネームスペースにロードします。 #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 47