記事 Toshihiko Minamoto · 2024年3月28日 12m read 150 行未満のコードで IRIS クロスファンクショナルアプリを作成する ローコードへの挑戦 こんな状況を思い浮かべてください。「ウィジェットダイレクト」というウィジェットとウィジェットアクセサリーを販売する一流のネットショップで楽しく勤務しています。先日、上司から一部の顧客がウィジェット商品にあまり満足していないという残念な話を聞き、苦情を追跡するヘルプデスクアプリケーションが必要となりました。さらに面白いことに、上司はコードのフットプリントを最小限に抑えることを希望しており、InterSystems IRIS を使って 150 行未満のコードでアプリケーションを提供するという課題をあなたに与えました。これは実際に可能なのでしょうか? 免責事項: この記事は、非常に基本的なアプリケーションの構築を記すものであり、簡潔さを維持するために、セキュリティやエラー処理などの重要な部分は省略されています。このアプリケーションは参考としてのみ使用し、本番アプリケーションには使用しないようにしてください。この記事ではデータプラットフォームとして IRIS 2023.1 を使用していますが、それ以前のバージョンでは記載されているすべての機能が提供されているとは限りません。 #JSON #ObjectScript #REST API #SQL #キューブ # データのインポートとエクスポート #分析 #相互運用性 #管理ポータル #InterSystems IRIS Open Exchange app 1 1 0 41
記事 Tomohiro Iwamoto · 2020年5月7日 15m read データプラットフォームとパフォーマンス-パート7 パフォーマンス、スケーラビリティ、可用性のためのECP Cachéの優れた可用性とスケーリング機能の1つは、エンタープライズキャッシュプロトコル(ECP)です。 アプリケーション開発中に考慮することにより、ECPを使用した分散処理は、Cachéアプリケーションのスケールアウトアーキテクチャを可能にします。 アプリケーション処理は、アプリケーションを変更することなく、単一のアプリケーションサーバーから最大255台といった非常に高いレートにまで、アプリケーションサーバー処理能力を拡張できます。 #ECP #システム管理 #Caché #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 320
記事 Toshihiko Minamoto · 2020年10月5日 15m read CachéとCosFakerを使ったテスト駆動開発の簡単な紹介 CachéとCosFakerを使ったテスト駆動開発の簡単な紹介 読了****目安時間: 6分 皆さん、こんにちは。 私がTDDに初めて出会ったのは約9年前のことです。すぐに夢中になってしまいました。 最近は非常に人気が出てきているようですが、残念ながら多くの企業ではあまり使われていないようです。 また、主に初心者の方ではありますが、一体それがなんであるのか、どのように使うのかといったことさえも知らない開発者もたくさんいます。 #テスト #Caché #InterSystems IRIS Open Exchange app 1 0 0 308
記事 Megumi Kakechi · 2020年10月13日 4m read Java から InterSystems IRIS のクラスメソッドを呼び出す方法 これはInterSystems FAQ サイトの記事です。InterSystems IRIS Native API for Java のメソッドに、IRIS クラスメソッドを呼び出す classMethod***() があります。ObjectScript メソッドおよび関数の呼び出し こちらを使用することで、InterSystems IRIS Native API for Java から InterSystems IRIS のクラスメソッドを呼び出すことが可能です。以下、使用方法について簡単なサンプルをご紹介します。 *SampleNativeAPI .java #Java #ヒントとコツ #InterSystems IRIS 1 0 0 191
記事 Toshihiko Minamoto · 2020年12月24日 6m read MQTTを使ったIRISとデバイスとの通信 皆さんこんにちは。 IRIS 2020.1からMQTTアダプタが新たに追加されました。MQTTはPublish/Subscribe型のシンプルで軽量なメッセージングプロトコルです。帯域が低いネットワーク環境やArduinoやRaspberry PIといったワンボードマイコンやシングルボードコンピュータなどでも動作できます。今回はクラウド上のUbuntuサーバにIRISをインストールし、MQTTアダプタを使いEsp8266というマイコンで取得した温度、湿度、気圧データをIRIS上のデータベースに登録する方法について説明したいと思います。 アーキテクチャ 今回のアーキテクチャは以下の通りです。 #IoT #相互運用性 #InterSystems IRIS 1 0 0 1.3K
記事 Mihoko Iijima · 2021年2月26日 2m read プロセス一覧をプログラムで取得する方法 これは InterSystems FAQ サイトの記事です。 %SYS.ProcessQuery クラスの AllFields クエリを使用すると取得できます。 #システム管理 #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 180
記事 Makiko Kokubun · 2021年3月23日 2m read 動画:InterSystems IRIS へのマイグレーション *この動画は、2021年2月に開催された「InterSystems Japan Virtual Summit 2021」のアーカイブです。 この動画では、Caché/EnsembleからInterSystems IRISへの移行プロセスについてご説明しています。 https://www.youtube.com/embed/612KLqB5mdY[これは埋め込みリンクですが、あなたはサイト上の埋め込みコンテンツへのアクセスに必要な Cookie を拒否しているため、それを直接表示することはできません。埋め込みコンテンツを表示するには、Cookie 設定ですべての Cookie を受け入れる必要があります。] Caché/Ensembleから InterSystems IRIS への移行を考えられている方は、まずこちらをご覧ください。「移行する際の注意点」、「移行の方法」、「必読ドキュメント」、「キットや評価ライセンスの入手方法」など、IRIS移行の際に必要となる情報をまとめてご案内しています。 #Webセミナー #InterSystems IRIS 1 0 0 243
記事 Hiroshi Sato · 2021年9月23日 2m read アプリケーション使用中にインデックス再構築を複数プロセスで実行する方法 これは InterSystems FAQ サイトの記事です。%IndexBuilder クラスを使用して、複数プロセスを利用してインデックス再構築を行うことができます。 Sample.Person の Home_State(連絡先住所の州情報)カラムに対して標準インデックス HomeStateIdx を定義する目的での例で記載します。 手順は以下の通りです。 1、追加/再構築予定のインデックス名をクエリオプティマイザから隠します。 >write $system.SQL.SetMapSelectability("Sample.Person","HomeStateIdx",0)1 2、新インデックスを定義するクラス定義のスーパークラスに %IndexBuilder を一番右端に追加します。 #ヒントとコツ #Caché #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 151
記事 Toshihiko Minamoto · 2021年10月20日 4m read PythonとIRISグローバルを使用したブログの作成 インターネットを使うようになってから (1990年代後半)、PythonとIRIS グローバルを使ってブログを書いていますが、常にCMS (コンテンツ管理システム) でブログ、ソーシャルメディア、さらには企業ページに情報を簡単に投稿できるようにしていました。 数年後、自分がマークダウンファイルに収めて使ってきたすべてのコードをgithubに入れました。 ネイティブAPIでデータをIntersystems IRISに入れて永続化するのはとても簡単だったので、このアプリケーションを作成して少しSQLを忘れ、キー・バリュー・データベースモデルを受け入れることにしました! ブログとは? これはWEB LOGの略名で、基本的にはユーザーが書いてページに投稿、公開できるプラットフォームです。 #Multi-model #Python #グローバル #InterSystems IRIS Open Exchange app 1 0 0 173
記事 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 75
記事 Mihoko Iijima · 2022年4月14日 10m read データベースのあるディスクの空き容量を確認し、指定サイズを下回る場合に通知する方法の例 これは、InterSystems FAQサイトの記事です。 アプリケーションモニタが提供する %Monitor.System.Diskspace(ディスク容量メトリック)を利用して指定サイズを下回る場合にメール通知を行うように設定を追加することができます。 アプリケーション・モニタのメトリック【IRIS】アプリケーション・モニタのメトリック #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 146
記事 Toshihiko Minamoto · 2022年8月17日 11m read %SYSTEM.Encryption クラスを習得する #セキュリティ #ベストプラクティス #InterSystems IRIS Open Exchange app 1 0 0 272
記事 Megumi Kakechi · 2023年2月12日 3m read %TimeStamp型プロパティを使用した範囲指定のクエリが遅い場合の対処方法 これは InterSystems FAQ サイトの記事です。 日時検索で、TimeStamp型のクエリのパフォーマンスが出ない場合の対処法をご紹介します。 %TimeStamp データ型形式 (yyyy-mm-dd hh:mm:ss.ffff)は、人が読めることを目的とした ODBC 日付形式の文字列として格納されます。そのため、どうしてもデータサイズが大きくなりクエリの実行に時間がかかってしまいます。%TimeStamp型のプロパティにインデックスを作成している場合にも、クエリオプティマイザはそのインデックスを優先して最適化するようにはなっておりません。 #SQL #ヒントとコツ #InterSystems IRIS #InterSystems IRIS for Health 1 0 1 290
記事 Toshihiko Minamoto · 2023年9月5日 10m read 整合性チェック: 高速化と低速化 Caché と InterSystems IRIS データベースの整合性は、システム障害から完全に保護されてはいますが、物理ストレージデバイスが保管しているデータは、デバイスの障害によって破損してしまいます。 そのため、多くのサイトでは、データベースの整合性チェックを定期的に実行するように選択しており、特に特定のバックアップが災害時に信頼できるかどうかを検証するためにバックアップが行われています。 システム管理者がストレージの破損を伴う災害に対応するために、整合性チェックも緊急に必要となる場合もあります。 整合性チェックはチェックされているグローバルの各ブロック(すでにバッファーにない場合)を、グローバル構造で指示された順序で読み取る必要があります。 これには膨大な時間がかかりますが、整合性チェックは、ストレージサブシステムが維持できる限り高速に読み取ることができます。 #システム管理 #パフォーマンス #ベストプラクティス #Caché #InterSystems IRIS 1 0 0 122
記事 Megumi Kakechi · 2023年10月10日 6m read IRISのライセンス使用量の推移を調査する方法 弊社FAQサイトや開発者コミュニティには、ライセンスに関する記事を数多く掲載しています。 こちらの記事では、上記記事でご紹介している様々な機能をTipsとして使い、実際にライセンス使用量の推移を調査する方法をご紹介します。 1.ライセンス使用状況をスポットで確認する方法(今現在の使用状況) 2.ある一定期間のライセンス使用状況を継続して監視する方法 1.ライセンス使用状況をスポットで確認する方法(今現在の使用状況) 現在のライセンス使用量は管理ポータルで確認できます。[システムオペレーション] > [ライセンス使用量] #システム管理 #ヒントとコツ #InterSystems IRIS #InterSystems IRIS for Health 1 0 1 118
記事 Tomohiro Iwamoto · 2023年12月19日 11m read Debezium ご存じでしょうか Debeziumをご存じでしょうか? グローバルサミット2023にて、Debeziumを題材としたセッション「Near Real Time Analytics with InterSystems IRIS & Debezium Change Data Capture」がありましたので、ご覧になられた方もおられるかと思います。 ご興味がありましたら、グローバルサミット2023の録画アーカイブをご覧ください。 FAQによると、"dee-BEE-zee-uhm"(ディビジウム..ですかね)と読むそうです。元素周期表のように複数のDB(s)を束ねる、というニュアンスみたいです。 CDC(Change data capture)という分野のソフトウェアです。 外部データベースでの変更を追跡して、IRISに反映したいという要望は、インターオペラビリティ機能導入の動機のひとつになっています。一般的には、定期的にSELECT文のポーリングをおこなって、変更対象となるレコード群(差分。対象が少なければ全件)を外部システムから取得する方法が、お手軽で汎用性も高いですが、タイムスタンプや更新の都度に増加するようなバージョンフィールドが元テーブルに存在しない場合、どうしても、各ポーリング間で重複や見落としがでないように、受信側で工夫する必要があります。また、この方法ではデータの削除を反映することはできませんので、代替案として削除フラグを採用するといったアプリケーションでの対応が必要になります。 CDCは、DBMSのトランザクションログをキャプチャすることで、この課題への解決策を提供しています。DebeziumはRedHatが中心となっているCDCのオープンソースプロジェクトです。 #オープンソース #データベース #フレームワーク #リレーショナルテーブル #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 135
記事 Mihoko Iijima · 2020年12月7日 2m read SELECT ... FOR UPDATE を使用できるかどうか これは、InterSystems FAQサイトの記事です。 SELECT ... FOR UPDATE は明示的な行ロック取得の方法として多くの RDBMS で実装されているため、この機能を使われているケースも多いと思います。 このシンタックスは InterSystems 製品ではエラーにはなりませんが、期待されるような行ロックの取得は行われません。 この記事では同等の機能を実現する方法をご紹介します。 DECLARE CURSOR C1 IS SELECT Name FROM Person WHERE Name LIKE 'A%' FOR UPDATE OPEN C1 LOOP FETCH C1 INTO name ... name を表示 ... 終了ならLOOPをEXIT END LOOP CLOSE C1 上記のようなSQL文は、下記のSQL文で代替可能です。 ※下記2行目のUPDATE文の実行により対象行に対して排他ロックがかかるため、他DBの動作と異なる点ご注意ください。 #SQL #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 384
記事 Toshihiko Minamoto · 2021年3月1日 6m read IRISのInteroperability機能を使ったWindows共有フォルダでのファイル連携 開発者の皆さんこんにちは。Windows共有しているリモートサーバに出力されたファイルでデータ連携する際、セキュリティ上、資格情報が必要となるケースが良くあるかと思います。いままでCachéで連携していた時には%ZSTARTルーチンや常駐プロセスのルーチンにて「net useコマンド」を実行されていたかと思いますが、IRISではInteroperability機能が使用できますので、前回の記事で作成したビジネスサービスクラスを元に、資格情報を使ってWindows共有フォルダにアクセスできる機能を追加したいと思います。 仕組み ビジネスサービスが起動、停止する際に呼び出されるOnInit()、OnTearDown()メソッドにnet useコマンドを埋め込み、指定されている資格情報を使ってnet useコマンドで共有フォルダへの接続、切断を行います。 #Microsoft Windows #ObjectScript #相互運用性 #InterSystems IRIS 1 0 0 395
記事 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 177
記事 Mihoko Iijima · 2023年4月6日 1m read IRISで作成するシンプルなRESTfulサービスとAngular Webアプリの組み合わせを試せるチュートリアル:REST + Angular App 開発者の皆さん、こんにちは! この記事では、Developer Hub にあるチュートリアルの4番目のご紹介となる REST + Augular App チュートリアル についてご紹介します。 チュートリアルでは、IRISを利用してRESTサービスで使用するテーブル、データ、RESTサーバの機能をサンプルコードをコピーしながら作成していきます。 チュートリアルの中で作成するWebアプリはとてもシンプルな内容で、データベースにブックマークとして登録したいURLを保存し、参照するだけのページとしています。 データの登録も、IRISの管理ポータルのSQLメニューでINSERT文を実行する形式で進めていきます。 #Angular #REST API #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 151
記事 Toshihiko Minamoto · 2023年7月24日 8m read Embedded Python を使ってストアドプロシージャを作成する Python は世界で最も使用されているプログラミング言語になり(出典: https://www.tiobe.com/tiobe-index/)、SQL はデータベース言語としての道をリードし続けています。 Python と SQL が連携して、SQL だけでは不可能であった新しい機能を提供できれば、素晴らしいと思いませんか? 結局のところ、Python には 380,000 を超える公開ライブラリがあり(出典: https://pypi.org/)、Python 内で SQL クエリを拡張できる興味深い機能が提供されています。 この記事では、Embedded Python を使用して、InterSystems IRIS データベースに新しい SQL ストアドプロシージャを作成する方法を詳しく説明します。 サンプルとして使用する Python ライブラリ この記事では、IRIS で SQL を扱う人にとって非常に便利な GeoPy と Chronyk という 2 つのライブラリを使用します。 #Embedded Python #Python #SQL #ベストプラクティス #InterSystems IRIS #InterSystems IRIS for Health Open Exchange app 1 0 0 186
記事 Mihoko Iijima · 2023年10月10日 15m read 複雑なJSONの生成に便利な「JSONテンプレートエンジン」の使い方ご紹介 開発者の皆さん、こんにちは。 この記事では、複雑なJSON形式の文書を「JSONテンプレートエンジン」を利用して生成させる方法をご紹介します。 「JSONテンプレートエンジン」については、6月のウェビナーで使用例をご紹介しましたが、JSON生成対象として医療情報交換標準規格であるFHIRリソースのJSON(例:Patientリソース)を例に解説しています。 このエンジンは、JSON形式の文書であればどのような種類のデータでもご利用いただけますので、一般的なJSON形式の文書を利用して使い方をご紹介します。 #JSON #ObjectScript #オブジェクトデータモデル #ヒントとコツ #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 468
記事 Hiroshi Sato · 2023年12月26日 4m read CSPアプリケーションをReactを使って書き換えるその2 CSPを使って作成したアプリケーションをReactを使用して書き換える2回目の記事です。 前回の記事で紹介したショップデモの書き換えについてもう少し詳しく説明します。 まずReactについて、インターネット上に様々な情報が提供されていますので、それらを利用しながら学習するということも可能だとは思いますが、一方で学習時間を短縮するには、やはりReactについて説明した本を一通り読む方が速いのではないかと思います。 実際Reactに関する本はたくさんあるので、その中から自分に合いそうなものを選ぶのが良いかと思います。 ちなみに参考までに私が学習に使ったものは、以下です。 #CSP #React #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 75
記事 Minoru Horita · 2020年6月2日 14m read グローバルはデータを保存するための魔法の剣ですパート2 - ツリー #Node.js #グローバル #データモデル #パフォーマンス #リレーショナルテーブル #初心者 #Caché #InterSystems IRIS 1 0 0 524
記事 Mihoko Iijima · 2020年10月25日 4m read IRIS の開始に失敗し messages.log に ^STURECOV を使用して復旧するように記載されている場合の操作方法 これはInterSystems FAQ サイトの記事です。 IRIS の開始ができず、messages.log に以下のようなエラーが出力された場合の対処方法についてご説明します。 #システム管理 #ヒントとコツ #InterSystems IRIS #InterSystems IRIS for Health 1 0 1 464
記事 Henrique Dias · 2020年12月25日 2m read 実行中のiris-analytics-package 皆さん、こんにちは。 iris-analytics-パッケージには、「企業が自社のソフトウェアで InterSystems Analytics の サポートをいかに簡単、そしてシンプルに利用できるかを示す」意図があります。 新しいシンプルなソリューションを作成したり、OpenExchange を使用して既存のソリューションを改善したりすることもできます。 InterSystems IRISにアップグレードしている企業のほとんどは、ツールが提供するすべての機能を活用しています。 このコンテストでの私のもう一つのターゲットは、インターシステムズを長く利用していても、自分たちがアクセスしている可能性をフルに活用していない企業です。 #CSP #キューブ #アナライザ #コンテスト #ダッシュボード #分析 #Caché #InterSystems IRIS #InterSystems IRIS BI (DeepSee) Open Exchange app 1 0 0 333
記事 Toshihiko Minamoto · 2021年4月26日 41m read ゼロから使いこなす IAM(InterSystems API Manager) この記事には、IAM の基本概念を学習するための、教材、例、演習が含まれます。 すべてのリソースはこちらの git から入手できます: https://github.com/grongierisc/iam-training ソリューションは training ブランチにあります。 この記事では、次の点について説明します。 #InterSystems IRIS Open Exchange app 1 0 0 468
記事 Hiroshi Sato · 2021年9月17日 2m read スタジオ、ターミナル、管理ポータルのライセンス消費ユーザをまとめる方法 これは InterSystems FAQ サイトの記事です。※ IRIS Data Platformのサーバーライセンス(プロセッサーコア単位の課金)では以下の内容は適用されませんので、ご注意お願いします。 2012.1以降のバージョンより、ライセンス管理が厳格化されたために、管理ポータルでもライセンスを消費するようになりました。 デフォルトでは、管理ポータルは独立したID(CSPセッション)単位でライセンスを消費するために同一ユーザが複数ライセンスを消費するようになります。 スタジオ、ターミナル、管理ポータル全ての消費ライセンスをに同一ユーザにまとめる方法は以下になります。 (1) スタジオ、ターミナル、管理ポータルに共通ユーザでログイン 管理ポータル: [システム管理] > [セキュリティ] > [サービス] 以下3つを「パスワード」認証のみに変更 #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 1 361
記事 Tomoko Furuzono · 2021年12月13日 1m read グローバル単位でジャーナルのON/OFF設定をする方法 これは、InterSystems FAQサイトの記事です。 グローバル単位でジャーナルのON/OFF設定を行いたい場合は、グローバルマッピング設定で、 ・ジャーナルしたいグローバル ⇒ ジャーナルON(「はい」)のデータベースにマッピング ・ジャーナルしたくないグローバル ⇒ ジャーナルOFF(「いいえ」)のデータベースにマッピングと、分けることで可能です。 但し、通常のデータベースは、ジャーナルOFF設定であっても、トランザクション中の更新についてはジャーナルファイルに記録されます。 #グローバル #データベース #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 106
記事 Toshihiko Minamoto · 2023年2月8日 7m read 2020.1 の新機能: ユニバーサルクエリキャッシュ InterSystems IRIS 2020.1 には、重要なアプリケーションの構築を支援する新機能と機能改善が多数盛り込まれています。 2019.1 から 2020.1 までに行われた多数の大幅なパフォーマンス改善のほかに、最近の SQL の歴史において最も大きな変更点の 1 つであるユニバーサルクエリキャッシュ(UQC)が導入されています。 この記事では、SQL ベースのアプリケーションに対するそのインパクトについて、技術的な観点で詳しく説明しています。 #SQL #InterSystems IRIS 1 0 0 100