クリアフィルター
お知らせ
Yoichi Miyashita · 2020年7月12日
InterSystems IRIS データ・プラットフォーム および InterSystems IRIS for Health バージョン 2020.2 CD をリリースしました。こちらはCD(continuous delivery)リリースになりますので、OCI(Open Container Initiative)と呼ばれるDockerコンテナー形式でのみ使用可能です。
リリースのビルド番号は 2020.2.0.211.0 です。
InterSystems IRIS データ・プラットフォームバージョン 2020.2 は、以下の拡張機能を備えた重要なセキュリティアップデートを提供します。
・TLS 1.3のサポート・SHA-3のサポート
InterSystems IRIS for Health バージョン 2020.2 にはさら以下の機能が含まれます。
・FHIR R4データ変換・FHIRサーバーの新しい構成UI・IHE RMUプロファイルのサポート・IHEコネクタソンの更新
これらの詳細はドキュメント(英語)でご覧いただけます。InterSystems IRIS データ・プラットフォームhttps://docs.intersystems.com/iris20202/csp/docbook/DocBook.UI.Page.clsInterSystems IRIS for Healthhttps://docs.intersystems.com/irisforhealth20202/csp/docbook/DocBook.UI.Page.cls
リリースノートもご覧ください。InterSystems IRIS データ・プラットフォームhttps://docs.intersystems.com/iris20202/csp/docbook/Doc.View.cls?KEY=GCRNInterSystems IRIS for Healthhttps://docs.intersystems.com/irisforhealth20202/csp/docbook/DocBook.UI.Page.cls?KEY=HXIHRN
サポートプラットフォームは、以下のドキュメントをご覧ください。 InterSystems IRIS データ・プラットフォームhttps://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=ISPInterSystems IRIS for Healthhttps://docs.intersystems.com/irisforhealthlatest/csp/docbook/Doc.View.cls?KEY=ISP
InterSystems IRIS Studio 2020.2 は、Microsoft Windowsでサポートされるスタンドアロンの開発イメージです。 InterSystems IRISとIRIS for Healthバージョン 2020.2 以前、およびCache と Ensemble で動作します。
キットが必要なお客様は、カスタマーサポートセンターまでご連絡いただき、必要なプラットフォームをお知らせください。WRC Direct ユーザの方は以下のURLより入手可能です。 https://wrc.intersystems.com/wrc/coDistribution2.csp
x64 および arm64 のコミュニティエディションは、次の Docker Store から入手できます。InterSystems IRIS データ・プラットフォームdocker pull store/intersystems/iris-community:2020.2.0.211.0docker pull store/intersystems/iris-community-arm64:2020.2.0.211.0InterSystems IRIS for Healthdocker pull store/intersystems/irishealth-community:2020.2.0.211.0docker pull store/intersystems/irishealth-community-arm64:2020.2.0.211.0
記事
Toshihiko Minamoto · 2020年4月16日
インターシステムズ開発者コミュニティへようこそ!
ここは、Intersystems IRIS,Caché,Ensemble,HealthShare,Intersystems Business Inteligence, NLPといったインターシステムズ製品や技術について情報を読んだり、議論することができるサイトです。
サイトの内容について
本サイトには主にアナウンス、記事、質問とその回答、ビデオがあります。インターシステムズの製品や技術を使った経験やベストプラクティスを記事にしており、インターシステムズ社員とコミュニティメンバーの両方が記事を投稿できるようになっています。また、リリースノートや新機能の説明、体験談、技術的な事例も掲載されています。
もちろん、全世界のインターシステムズ製品の経験豊富なエンジニアに質問し、その回答を得られる場所でもあります。
メンバー登録について
本サイトにメンバー登録することで、インターシステムズ製品のソリューションを構築、デプロイ、保守するのに役立つソリューションやツール、技術、アプローチに関する記事を投稿、コメントしたり、質問、回答することができます。アカウント作成方法はこちらです。ただし弊社サポートセンター(WRC)のアカウントをお持ちの方はそのログイン名、パスワードでログインできますのでアカウント作成は不要です。
また、ログイン方法や投稿方法はこちらをご参照ください。
注意:インターシステムズの製品、技術に関係しない投稿記事、行動規範にそぐわない記事はモデレータにより削除されることがあります。
インターシステムズ開発者コミュニティの行動規範はこちらをご参照ください。
登録されたメンバーの方々は投票することができます。あなたが良いと感じた記事や質問、回答には、ぜひ投票ください。
非常にずさんな投稿、労力をかけていない投稿、明らかに不正確で危険な回答には反対票を投じることができます。
その際は、反対票を投じた理由や改善内容等コメントを残していただきますようお願いします。
サイトの動作について
投稿はタグによって分類されます。必須タグと呼ばれる、投稿時に指定するグループと呼ばれるタグがあります。必須タグは、インターシステムズの製品、サービスに関連しており、少なくとも1つは指定する必要があります。 タグは投稿を分類するのに役立つもので、登録しておくと、メールやRSSで通知を受けることができます。
気に入ったメンバーをフォローすることもできます。これはそのメンバーの投稿やコメントを購読することになります。
メインページでは、投稿のフィードを見ることができ、最新の投稿やコメント、回答が表示されます。
フィードフィルターを使って、購読したタグだけを見たり、最も投票されたタグや新着投稿だけを見たりすることもできます。
開発者コミュニティのメンバーや投稿、回答などの数値を確認できるDCアナリティクスサイトもあります。
その他の情報については、開発者コミュニティFAQを参照してください。
購読と通知について
登録されたメンバーは、Developers Community上でのさまざまなアクションに関する通知をメールで受け取ることができます。その方法はこちらの記事をご覧ください。
RSSは誰でも購読することができます。
Intersystems Global Masters
インターシステムズのアドボカシーハブです。インターシステムズ技術を支持頂ける方は、ぜひチームにご参加ください。あなたに課題やバッジ、リワードをお渡しします。詳細はこちらをご覧ください。
Intersystems Open Exchange
ツールやフレームワーク、ソリューション、サンプル等が掲載されています。詳細はこちら。
その他
本サイトについてのご質問はFAQをご参照いただくか、こちらのフィードバックページでご質問下さい。
様々な案内等はtwitterならびにfacebookページより行っています。
記事
Hiroshi Sato · 2021年7月27日
これは InterSystems FAQ サイトの記事です。
InterSystemsでサポートを保証するバージョンは、最小サポートバージョン(ミニマムサポートバージョン)となります。最小サポートバージョンは、通常リリース後 2 年以内のバージョンになります。保守契約のあるお客様には、最小サポートバージョンより前のバージョンに対しても技術的なご質問や障害時の対応は可能な限りさせていたいただきますが、その保守対応はベストエフォートとなり、深刻な問題に対してもそのバージョンに対応したワークアラウンドや修正(パッチ)のご提供が難しくなります。
そのような場合には、最新バージョンへのバージョンアップをお勧めいたします。
最小サポートバージョンについては、以下のドキュメントをご覧ください。
最小サポートバージョン
記事
Makiko Kokubun · 2021年8月18日
*この動画は、2021年2月5日に開催したウェビナーのアーカイブです。
InterSystems IRIS data platform は、拡張性に優れ、相互運用性、分析機能を備えたアプリケーション開発のためのデータプラットフォームです。この動画では、これからインターシステムズのデータプラットフォーム製品をお使いになる開発者の方を対象に、その特徴を20分でご紹介します。
このような方を対象としています。
初めてインターシステムズのデータプラットフォーム製品をお使いになる方、ご興味のある方
新しいデータプラットフォームを試してみたい方
Caché から IRIS への移行をご検討中の方
ぜひご覧ください!
お知らせ
Mihoko Iijima · 2022年6月19日
開発者の皆さん、こんにちは!21回目の InterSystems プログラミングコンテストを開催します!
お題は👉 🏆 InterSystems Full Stack コンテスト 2022 🏆 です!
期間: 2022年6月27日~7月17日まで(詳細は末尾をご参照ください)
💰賞金総額: $10,000 💰
コンテストのテーマ:
💡 Full Stack アプリケーション 💡
InterSystems IRIS、InterSystems IRIS For Health、または、IRIS Cloud Servies をバックエンドに使用して、Full Stack ソリューションを開発してください!
今回のコンテストでの「Full Stack」の対象ですが、REST API、Native API、ODBC/JDBC、Embedded Python を介して InterSytems IRIS にデータを追加、変更、削除を行うフロントエンドWebまたはモバイル・アプリケーション です。
さらに、
今回、開発者の皆様に、地球規模の課題の解決に挑戦していただくことを決定しました。 気候変動問題への取り組みに焦点を当てたソリューションでこのコンテストに参加されることをお勧めします。
1) 地球温暖化や気候変動に関する問題を解決できるアプリケーションであれば、特別なボーナスが与えられます。
2) また、地球温暖化や気候変動に関連するデータセットを作成し、Open Exchange に公開すると、別のボーナスもあります。
さぁ! さらなるサステナブルな世界のために、あなたの革新的な貢献を期待しています。デジタル技術を磨いて、気候変動問題の解決策を開発しましょう!
一般的な応募条件:
応募可能なアプリケーション
Open Exchange アプリケーションの新規作成、または既存アプリケーションであっても大幅に改善されているものであればご応募いただけます。
コミュニティの担当チームは、コンテストへの応募を承認する前に申請された全アプリケーションをレビューします。
全てのアプリケーションは IRIS Community Edition 、 IRIS for Health Community Edition 、 IRIS Advanced Analytics Community Edition のいずれかで動作する必要があります。
アプリケーションはオープンソースであり、GitHubで公開されている必要があります。
アプリケーションの README ファイルは、英語で記述してください(日本語で記述したものがあればそのまま掲載いただき、英文の追記をお願いします。翻訳アプリを使用しますが翻訳をお手伝いすることもできますのでお気軽にお知らせください!)。また、インストール手順や、アプリケーションがどのように動作するかの説明、またはビデオデモを含めてください
優勝特典:
1. Experts Nomination – 審査員から多く票を集めたアプリケーションには、以下の賞金が贈られます。
🥇 1位 - $4,000
🥈 2位 - $2,000
🥉 3位 - $1,000
🌟 4-15位 - $100
2. Community winners – 開発者コミュニティで多く票を集めたソリューションには、以下の賞金が贈られます。
🥇 1位 - $1,000
🥈 2位 - $750
🥉 3位 - $500
✨ 受賞者全員にグローバルマスターズ・バッジをプレゼントします!!
複数の参加者が同数の票を獲得した場合、全参加者が勝者となり賞金は勝者間で分配されます。
スケジュール:
🛠 アプリケーション開発と応募期間:
2022年6月27日(00:00 EST): コンテスト開始!
2022年7月10日(23:59 EST): 応募締め切り!
✅ 投票期間:
2022年7月11日(00:00 EST): 投票開始!
2022年7月17日(23:59 EST): 投票締め切り!
応募、投票期間中、アップロードしたアプリケーションは改良できます。
参加資格:
どなたでもご参加いただけます!(InterSystems 開発者コミュニティのアカウントを作成するだけでご応募いただけます)
👥 開発者がチームを組んで共同でアプリケーションを作成し、応募することもできます! 1チーム 2~5名 までご参加いただけます。
チームでご応募いただく場合は、アプリケーションの README にチームメンバー名の記載をお忘れなく!!(開発者コミュニティのプロファイルのリンクもお願いします)
Helpful Resources:
✓ Full Stack アプリケーションに合った InterSystems IRIS Docker テンプレート:
IRIS Full Stack template
Basic InterSystems IRIS Docker template
IRIS REST API template
Native API template
IntegratedML template
IRIS Analytics template
✓ オンラインコース(英語)
Implementing RESTful Applications
✓ ビデオ
REST API design and Development
REST API in 5 minutes
Data-Driven Web Apps
【はじめてのInterSystems IRIS】セルフラーニングビデオ:アクセス編:(REST)手動で作成するディスパッチクラス
【はじめてのInterSystems IRIS】セルフラーニングビデオ:アクセス編:(REST)APIファーストで作成するRESTディスパッチクラス
✓ For beginners with IRIS:
Build a Server-Side Application with InterSystems IRIS
Learning Path for beginners
【はじめての InterSystems IRIS】セルフラーニングビデオ 索引
✓ For beginners with ObjectScript Package Manager (ZPM):
How to Build, Test and Publish ZPM Package with REST Application for InterSystems IRIS
Package First Development Approach with InterSystems IRIS and ZPM
✓コンテストへの応募方法
Need Help?
ご質問がある場合は、この投稿へコメントいただくか、InterSystems の Discord server チャンネルにご参加ください!
皆様からのアプリケーションのご応募、お待ちしております!👍
❗️ コンテストに参加された場合、こちらに記載されているコンテスト規約に同意したものとみなされます。ご応募の際、ご一読いただきますよう、お願い申し上げます❗️
ご応募方法について
以下の応募方法ビデオをご参照ください。
以下、コンテストに応募する迄の手順をご説明します。
コンテスト応募までの流れは以下の通りです(※ビデオでは、3番以降の内容をご紹介しています)。
1、IRISプログラミングコンテスト用テンプレートを使用して、開発環境を準備します。
2、コンテスト用アプリケーションを作成します。
3、コンテストの準備が完了したら、ソースコードをローカルのGitリポジトリへコミットします。
初回コミット時に、Gitの初期設定がないためコミットが失敗することがあります。その場合は、以下のコマンドでGitユーザ名とEmailを設定します。
git config --global user.name "ここにユーザ名"
git config --global user.email "ここにメールアドレス”
4、ローカルのGitリポジトリのコミットが完了したら、リモートのGitリポジトリを作成します。
リポジトリ作成後、リモートリポジトリのURLをコピーします。
5、リモートのGitリポジトリへPushします。
git push ここにリモートのリポジトリのURL
6、OpenExchangeにログインし、アプリケーションを追加します。
※事前にDeveloper communityでユーザアカウントを作成する必要があります。ログイン後、Profile→Applications から Application をクリックし、4 でコピーしたリモートのGitリポジトリのURLを設定します。
アプリケーションを登録すると、画面右上に「Send Approval」のボタンが表示されるので、クリックします。
再度作成したアプリケーションを開くと、「Apply for Contest」ボタンが表示されるので、クリックすると応募が完了します。
記事
Megumi Kakechi · 2025年5月29日
これは InterSystems FAQ サイトの記事です。
InterSystems製品では、複数のプロセスが同時に同じデータにアクセスする場合、排他制御を行うためにロックを使用できます。ロックは、データの更新を正しく行い整合性を保つための仕組みで、あるデータに対する更新処理を制御するために使用します。ロックを操作するには、LOCK(L)というコマンドが使用できます。
こちらの記事では、InterSystems製品で使用できるロックの種類、LOCKコマンドの使い方をご紹介します。
★ロックの種類
増分
単純
排他(既定)
LOCK +^A
LOCK ^A
共有
LOCK +^A#"S"
LOCK ^A#"S"
プラス記号 (+) をつけると、増分ロックになります。1つのプロセスで複数の増分ロックを追加できます。プラス記号 (+) をつけないと、単純ロックになります。こちらは、1つのプロセスで1つのロックのみ所有できます。単純ロックコマンド実行時に既存のロックがあった場合、そのプロセスが保持している既存のロックをすべて削除し、新しいロックを追加します。
排他ロック:データを更新するために使用するロックです。プロセスが特定のロック名の付いた排他ロックを所有している時、その他のプロセスは、そのロック名の付いたロックを取得できません。SQLでいうと、INSERT, UPDATEやDELETE文の実行時にかかります。
共有ロック:データを参照していることを示すためのロックです。プロセスが特定のロック名の付いた共有ロックを所有しているときに、その他のプロセスは、そのロック名の付いた共有ロックを取得できます。ただし、その他のプロセスはそのロック名の付いた排他ロックを取得できません。SQLでいうと、Read Committed モードでの SELECT文の実行時にかかります。
★ロックの方法
ロックを追加する(lockname:ロック名※、locktype:後述)※ロック名は任意の名前ですが、共通の規則としてロックする項目(グローバル・変数等)の名前と同じロック名を使用します。
LOCK +lockname#locktype
ロックを削除(解放)する
LOCK -lockname#locktype
使用例:
(A) Lock ^a // このコマンドを実行すると、^bだけが最終的に残ります
Lock ^b // ※Lock ^b だけの場合、ほかのロックを全て解放した後、^bだけロックを持ちます
(B) Lock +^a // このコマンドを実行すると、^a,^bの二つロックが残ります。
Lock +^b
尚、正常に終了したプロセスは取得していたロックを全て解放します。
★ロックタイプ(locktype)
S — 共有ロックを追加します。"排他ロックと共有ロック" を参照してください。 E — エスカレートロックを追加します。"非エスカレート・ロックとエスカレート・ロック" を参照してください(後述)。 I — 即時アンロックタイプでロック解除を行います。 D — 遅延アンロックタイプでロック解除を行います。
※エスカレートロック大量のロックを管理するためにエスカレートロックを使用します。これは配列のノードをロックする場合に使用されます。例えば、同じ添え字レベルで複数のノードをロックする場合です。ロックのエスカレーションの例(テーブルロック)こちらの記事 でテーブルロックの例を紹介しておりますので、参考になさってください。
★ロック管理ユーティリティでできること
次のユーティリティでロックの管理が行えます。
1. 管理ポータルを使用する方法
⇒ 管理ポータル:システムオペレーション > ロック > ロックを表示(または管理)
2. ^LOCKTAB ユーティリティ を使用する方法
⇒ %SYS>do ^LOCKTAB
3. プログラムを使用する方法
⇒ プログラム内でロック情報を取得する方法
これらのユーティリティでは、主にロックの参照・解放(削除)が行えます。ロックテーブルの参照方法については、関連トピック ロックテーブルの参照方法とその見方 をご覧ください。
以下にそれぞれのユーティリティを使用した、ロックの削除方法をご紹介します。
☆ロックの削除手順(1の管理ポータルで行う方法)
管理ポータル:システムオペレーション > ロック > ロックを管理→ 該当ロックの「削除」リンクより削除を行います。
☆ロックの削除手順(2の ^LOCKTAB ユーティリティで行う場合)
%SYS>do ^LOCKTAB
:
Node Name: XXX
LOCK table entries at 05:22PM 03/06/2025
308464608 bytes usable, 308472544 bytes available.
Entry Process X# S# Flg W# Item Locked
1) 39740 1 ^["^^c:\intersystems\iris\mgr\"]ISC.LMFMON("License Monitor")
:
8) 30100 1 1 ^["^^c:\intersystems\iris\mgr\user\"]A
Waiters: 25164(XE)
Command=> D // 削除の時は D を入力
Entry to delete: 8 // 削除したいロックの番号を入力 + <Enter>
8) 30100 1 ^["^^c:\intersystems\iris\mgr\user\"]A
Are you sure you want to delete this lock? No => yes // Y(y) を入力+<Enter> でロックが削除される
Entry to delete: // 以下、Q + <Enter> で抜ける
:
☆ロックの削除手順(3のプログラムで行う場合)
// プロセスID=2004 が所有するすべてのロックを削除する
Set rc=##Class(SYS.Lock).DeleteAllLocks(2004)
// リモートクライアントシステム 'SystemA' が所有するすべてのロックを削除する
Set rc=##Class(SYS.Lock).DeleteAllLocks("CSystemA")
/// ロック名やプロセスを指定して削除する
// ^|"^^c:\intersystemsdb\mgr\user"|a(1) ロックを削除する
Set rc=##Class(SYS.Lock).DeleteOneLock("^|""^^c:\intersystemsdb\mgr\user""|a(1)")
// プロセスID=2004 が所有する ^|"^^c:\InterSystemsdb\mgr\user"|a(1) ロックを削除する
Set rc=##Class(SYS.Lock).DeleteOneLock("^|""^^c:\intersystemsdb\mgr\user""|a(1)",2004)
★ロックテーブル サイズの変更
以下メニューからロックテーブルのサイズを変更できます。
管理ポータル: [システム管理] > [構成] > [追加の設定] > [メモリ詳細設定] → locksiz
※バージョン2023.1以降では、デフォルト値は0でシステムに最適な値が割り当てられます。 この場合、gmheap パラメータで指定された共有メモリサイズのみでこのサイズが制限されます。※ロックテーブルサイズを変更する場合は、gmheapサイズもあわせて変更します。※ロックテーブルが一杯になるとコンソールログに、以下のようなエラーメッセージが表示されます。 02/08/25-00:05:09:248 (20093) 2 [Generic.Event] LOCK TABLE FULL!!! (Repeat messages will be suppressed for 20 minutes). ロックコマンド自体はエラーにはならず待ち状態になります(^LOCKTABには表示されません)。
【ご参考】適正なロックテーブルサイズの算出方法ロックテーブルの使用状況を簡単に確認する方法SQLのUPDATEやDELETEで、ある程度の数のレコードを一括更新するとSQLエラー -110 が発生します。SQLでレコードをSelectするとSQLエラー -114 が発生します現在の一般メモリヒープ(gmheap)と取得可能なロックテーブル(locksiz)最大サイズについてロックテーブルの参照方法とその見方
お知らせ
Seisuke Nakahashi · 2025年2月11日
開発者コミュニティのみなさま、2025年もよろしくお願いします!今年も素晴らしい製品やニュースをみなさまにお届けいたします。本日は VS Code の InterSystems Language Server 拡張機能の最新バージョンをご紹介します。Language Server 拡張機能の多くは、ObjectScript 拡張機能を通じてご提供することが多いです。そのため、コード補完機能やホバー機能といった、2024年に追加された Language Server 拡張機能の新機能には、なかなか気づきにくいかもしれません。ぜひ Language Server 変更履歴 で、見逃していたかもしれない新機能がないかご確認ください。最新バージョン2.7.0では、Windows ARMプラットフォームがサポートされたので、Surface Pro 11 (私はこの記事をウキウキしながら書いています) のようなデバイスをお持ちの方は、お使いのマシンで素晴らしい ObjectScript 開発を体験いただけます。Language Server 拡張機能をお試しいただき、何かありましたらぜひコメントをお寄せくださいませ。お待ちしております。
記事
Toshihiko Minamoto · 2020年8月13日
皆さん、こんにちは。
InterSystems System Alerting and Monitoring (SAM)をご存知でしょうか。InterSystems IRIS 2020.1以降に対応し、IRISやそのアプリケーションの監視を行うソリューションです。といってもシステム監視を行うPrometheus、アラートを管理するAlertManager、ダッシュボードとしてグラフ等を表示させるGrafanaなどを組み合わせたものですが、IRISの利用者に合わせて設定しやすくなっています。
なお、これらのコンポーネントはDockerコンテナを使用しますので、Docker(19.3.098以降)ならびにDocker compose(1.25以降)をインストールいただく必要があります。
IRISの監視APIについてはこちらをご覧ください。
インストール手順
1. アプリケーションのインストール
アプリケーション自体はDockerコンテナにて提供されますので、DockerComposeのファイルやシェルスクリプトを以下のGitHubリポジトリからダウンロードします。https://github.com/intersystems-community/sam
以下のgzipファイルをダウンロードし、展開します。sam-1.0.0.XXX-unix.tar.gz
$ tar zpxvf sam-1.0.0.115-unix.tar.gz
展開されたディレクトリに移動し、start.shを実行します。
$ ./start.sh
以上で、各種コンテナがダウンロードされ、起動されます。
2. IRISサーバの設定
インストールが完了すると、ブラウザから以下のURLにアクセスします。
http://localhost:8080/api/sam/app/index.csp
ブラウザを実行しているホストとコンテナをインストールしたホストが異なる場合は、localhostの代わりにコンテナをインストールしたホスト名を入力してください。
以下のようにユーザ名、パスワードを聞いてきますので、ユーザ名:Admin、パスワード: SYSを入力し、ログインボタンをクリックします。
ログインに成功しますと新たなパスワードを求めてきますので、Old Passwordには「SYS」、「New Password」、「Retype New Password」には新たなパスワードを入力し「Login」ボタンをクリックします。
Welcomeメッセージが表示されますので、「Create Your First Cluster」ボタンをクリックします。
以下の画面が表示されますので、「Cluster name」欄にクラスタ名の内容を記述し。「Add Cluster」をクリックします。
つづいてインスタンス名の設定を記載します。以下のようにClusterの選択画面が表示されていますので、画面中央右の「+New」というボタンをクリックします。
以下の画面が表示されますので、IRISサーバのIPアドレスかホスト名、Webアクセス用のポート番号、インスタンス名を入力し、「Add Instance」ボタンをクリックします。
以上で設定は終了です。
3. サーバの監視
設定が終了すると、以下のようにclusterごとに各サーバの状態が表示されます。
各インスタンスをクリックしますと、以下のような画面が表示され、CPU使用率などのメトリックがグラフ表示されます。
画面右手中央の「View in Grafana」をクリックしますと、Grafanaを使用してダッシュボードのグラフをカスタマイズできます。
最後に
IRISサーバの監視が意外(?)と簡単な設定でできたと思います。ぜひ一度お試しください。英語になりますが、インストール方法の詳細はhttps://docs.intersystems.com/sam/csp/docbook/Doc.View.cls?KEY=ASAMをご参照ください。
ご意見、ご質問等もお待ちしています。
SAMではアプリケーションに合わせて監視項目を追加することも可能です。まず、%SYS.Monitor.SAM.Abstractクラスを継承したクラスを作成し、PRODUCTパラメータにアプリ名、GetSensors()メソッドにてSetSensor()メソッドを使用し、メトリックを登録し、クラスをコンパイルします。試しに先日作成した温湿度計のデータを取得するようにしました。
Class REST.Monitor Extends %SYS.Monitor.SAM.Abstract
{
Parameter PRODUCT = "temperature";
Method GetSensors() As %Status
{
set lastdate=$order(^Temp(""),-1)
quit:lastdate="" $$$OK
set lasttime=$order(^Temp(lastdate,""),-1,data)
quit:lasttime="" $$$OK
set temp=$lg(data),hum=$lg(data,2)
set now=$horolog
do ..SetSensor("temperature",temp)
do ..SetSensor("humidity",hum)
do ..SetSensor("latency",$piece(now,",")-lastdate*86400+$piece(now,",",2)-lasttime)
quit $$$OK
}
}
ターミナルを起動し%SYSネームスペースに移動、以下のメソッドを実行します。(第2パラメータのUSERはREST.Monitorが存在するネームスペース)
%SYS>set status = ##class(SYS.Monitor.SAM.Config).AddApplicationClass("REST.Monitor", "USER")
戻り値の変数statusが1でしたら、正常に登録できています。
登録が終わりましたら、以下のURLにアクセスし、先ほどクラスを作成したホストを選択します。http://localhost:8080/api/sam/app/index.csp
画面右手中央の「View Grafana」をクリックします。
画面上部に以下のようなアイコンが表示されますので、「Add Panel」(赤枠部分)をクリックします。
以下のようにパネルが作成されますので、「Add query」をクリックします。
Queryのメトリックスを指定し、Legend欄にデータのコメントを入力します。
グラフが追加されましたら、画面上方の「Save Dashboard」(赤枠部分)をクリックします。
SAM (http://localhost:8080/api/sam/app/index.csp) にアクセスしますと、新たにパネルが追加されています。
以上です。
お知らせ
Makiko Kokubun · 2021年1月28日
開発者のみなさん、こんにちは!
インターシステムズは、2/16(火)~ 2/18日(木)の3日間にかけて、オンラインカンファレンス「InterSystems Japan Virtual Summit 2021」を開催致します。
⚡️ 現在、事前登録受付中です! ⚡️
テーマは「データプラットフォーム最前線 ニューノーマル時代に求められるアジリティとレジリエンス」です。InterSystems IRIS 、IRIS for Health の最新技術情報を多くのセッションを通してお届け致します。ぜひご参加ください。*本セミナーは日本語での開催となります。
InterSystems Japan Virtual Summit 2021
DAY1 2/16(火)10:00-11:40
基調講演:適応力と柔軟性を高めるデータプラットフォームの最新情報について
DAY2 2/17(水)15:00-17:30
先進データテクノロジーセッション:既にインターシステムズ製品をお使いの方向けに、IRISへのマイグレーションやパフォーマンスについての技術セッション
HL7® FHIR® によるインターオペラビリティセッション: FHIR の概要や最新情報と、IRIS for Healthでの医療データ共有、最新機能について
DAY3 2/18(木)15:00-17:15
先進データテクノロジーセッション :Python、Kubernetes など、最新技術を活用した IRIS の運用と開発、IntegratedMLなどIRISの最新機能について
昨年行われた「InterSysetms Virtual Summit 2020」の技術セッションもオンデマンドで公開します(字幕付き)。
開催形式:オンライン配信
参加費:無料(事前登録制)
詳細・申込Webはこちらから
3日間で数多くの技術コンテンツをお届けいたします。ぜひご参加ください!
記事
Mihoko Iijima · 2021年5月7日
開発者の皆さん、こんにちは!
この記事では、Java から IRIS へ接続する方法の中から XEP(ゼップ)を利用して、GPS (GPX)データを高速に取り込むサンプルをご紹介します。
Java の実行環境や IRIS がお手元になくても大丈夫です!コンテナ 🐳 のビルド+開始で体験できる「実行環境テンプレート」をご用意しました。
ソースコードは コミュニティの Git で公開 していますので、docker、docker-compose 、git がインストールされた環境であれば、すぐにお試しいただけます(Javaの実行環境はコンテナでご提供するので準備不要です)。
操作方法は、Gitの README に記載しています。ぜひお試しください。
この記事の中では、コード解説を追加しています。ぜひ、最後までお付き合いください!
1)処理概要
GPX データを IRIS へ渡す迄の流れにリアクティブプログラミングが行える RxJava2 のライブラリを使用しています。
メモ:サンプルコードの中では、GPS データを直接受信するのではなく、Google マイマップやサンプル GPS データから GPX ファイルに変換したデータを入力に使用しています。
実行時、複数(数十~千)の GPS データが含まれる GPX ファイルを引数に指定し情報を入力します。 XMLからリストを作成し、作成したリストを RxJava2 の Flowable に渡し、データのフィルタリングを行い、IRIS へデータを渡しています。
サンプルの GPX ファイルは、Google マイマップから作成しています。マイマップから作成した GPS には、残念ながら速度が含まれません。
弊社パートナーのビズベース様より、速度が含まれる GPS データをご提供いただきました(ファイル:Test-DriveData13.gpx.xml )。ビズベース様提供データ Test-DriveData13.gpx.xml を入力した場合は、0km/h より速いデータだけを処理するように記載しています。
1-1) Java から IRIS へ接続する方法
4 手法あります(サンプルでは、この中の 1 つを利用しています)。
SQLでアクセスする場合に便利な JDBC の利用
大量データを高速に登録したい場合に最適な XEP
キーバリュー形式でデータを設定/取得したい場合の Native API
Hibernate を利用する方法
サンプルは、2) 大量データを高速に登録したい場合に最適な XEP(ゼップ) を利用しています。
1-2) XEP について
XEP は、Javaで作成したオブジェクトを IRIS に永続化する際に使用する接続方法です(事前に IRIS 側でクラス/テーブルの作成は不要)。
データ登録までの流れは以下の通りです。
IRIS に永続化したいオブジェクトを Java クラスで用意
XEP を利用して IRIS に接続し、Java クラスのスキーマ情報を IRIS へ投影(Java クラスを分析し、スキーマをインポート)
永続化したい Java オブジェクを 1 つ以上作成し、Java の配列にセット
IRIS へ渡して永続化(store() メソッドを利用して登録)
XEPについて詳しくは、ドキュメントをご参照ください。
2) 実行環境テンプレートの使用方法
テンプレートはコンテナを利用しています。 Docker、docker-compose、git が利用できる環境でお試しください。
使用するコンテナのイメージ
データ登録後、ストリートビューで表示を確認できます。
URL: http://お使いのホスト:62774/csp/user/StreetView.html
ストリートビューの正確な表示には、GoogleのAPIキーが必要となります。
APIキーを入手されたら、Git clone 後、./IRIS/web 以下にある apikey.txt に API キーを保存してから IRIS 用コンテナのビルドを行ってください(ビルド時に、apikey.txt の中身を反映しながらコンテナを作成しています。記載がない場合はキー無しの状態でお試しいただけます)。
コンテナ開始までの手順詳細については、以下リンク先をご参照ください。
2-1) ダウンロード (git clone)
2-2) ストリートビューの表示をお試しいただくための準備
2-3) Java実行環境用コンテナを使う場合
3) Java の実行をホストで行う場合
3-1) Linuxの場合
3-2) Windows の場合
2-3) の手順例
サンプルコードについて
実行に使用している Start.java では、引数に渡される GPX ファイルから、リストを作成しています(リストの作成には GPXInput.java を使用)。
リストには、GPXInput クラスのインスタンスを登録しています。
GPXInput クラスのインスタンスには、GPX ファイルから取得した、緯度(lat)、経度(lon)、速度(speed)を設定しています。
Google マイマップで線を引いた GPS データは、速度が入ってこないため、速度データがある場合のみ speed にデータを設定しています。
(以下、GPXInput.java から一部抜粋)
public class GPXInput extends DefaultHandler {
Double lat;
Double lon;
Double speed;
Double heading;
//XMLから読み取った情報をListに格納
public static List<GPXInput> datalist = new ArrayList<GPXInput>();
GPXInput クラスのインスタンスが入ったリスト作成後、Start.java の中で、IRISに接続するために必要なインスタンスを作成しています(以下、抜粋して記載しています。IRISへの接続情報は、 Start.java の 12~16 行目をご参照ください)。
// XMLからGPXInputインスタンスを設定するリストを作成
List<GPXInput> datalist=GPXInput.GPXToList(Paths.get(args[0]).toFile().toString());
System.out.println("リストの個数=" + datalist.size());
// EventPersisterを利用してIRISへ接続し、スキーマ作成
EventPersister xepPersister = PersisterFactory.createPersister();
xepPersister.connect(host,port,namespace,username,password);
// 既存にクラスがある場合、テストデータのため全消去
String classname="JavaXEPSample.GPXInput";
xepPersister.deleteExtent(classname);
// フラットスキーマとしてインポート
xepPersister.importSchema(classname);
最後の行の xepPersister.importSchema(classname); では、Java クラスのインスタンスを永続化するため、Java クラス名(ここでは、JavaXEPSample.GPXInput)を引数に指定し、スキーマをインポートしています。
残りの処理は、作成したリストを IRIS へ渡し、永続化するだけです。
今回のサンプルでは、本物の GPS データが流れてくるわけではないのですが、そうなっても対応できるようにリアクティブプログラミングが行える RxJava2 のライブラリを使用しています。
サンプルでは、EmitData.java の中で記述しています。
EmitData.java では、最初に Java クラスのインスタンス永続化などに使用する「イベント」を作成しています。
イベントの作成は、 EventPersister から作成します(例文の xepPersister は、EventPersister のインスタンスで、EmitData.java の Start() 関数の第1引数で受け取っています)。
Event xepEvent = xepPersister.getEvent(Javaクラス名); //イベントを操作するインスタンスを作成しています
この後の永続化の処理ですが、GPS データ受信の度に1件ずつ永続化するか、全件まとめて永続化するか、タイミングを選択できます。
本物の GPS データを受信している場合は、通知(subscripbe()の第1引数)のタイミングが良いと思いますが、サンプルでは GPX ファイルからデータを一括で取得しているのもあるので、データ送付の完了通知(subscripbe()の第3引数)のタイミングで一括登録しています(XEP は 1件だけ/一括 のどちらでも登録できます)。
インスタンスの永続化を命令している行は、以下の1行です。
xepEvent.store(storedata);
ということで、処理全体は以下の通りです。
public class EmitData {
public static void Start(EventPersister xepPersister,List<GPXInput> datalist,String classname) throws InterruptedException{
// EventPersisterからEventを作成
Event xepEvent = xepPersister.getEvent(classname);
//フィルタされた値をためておくList
List<GPXInput> storelist = new ArrayList<GPXInput>();
Flowable.fromIterable(datalist)
.subscribeOn(Schedulers.io())
.filter(obj->(obj.speed == null) || ((obj.speed !=null)&&(obj.speed>0)))
.subscribe(
// データ通知時
// ** 1件ずつIRISへ登録することもできますが、対象全件一括登録を行うため一旦リストに格納しています **
obj -> {
storelist.add(obj);
System.out.println("onNext:" + obj.lat + "-" + obj.lon + "-" + obj.speed);
},
// 第2引数:エラー通知時
error -> System.out.println("エラー=" + error),
//第3引数:完了通知
() -> {
System.out.println("フィルタ後の個数: " + storelist.size());
GPXInput[] storedata = storelist.toArray(new GPXInput[storelist.size()]);
xepEvent.store(storedata);
System.out.println("データ登録完了!");
});
Thread.sleep(2000);
}
}
ここまでが、Java で行っている流れです。
サンプルでは、この他に IRIS に登録した GPS (緯度と経度)を REST で取得し、ストリートビューで確認できるようにもしています(IRIS 内に REST ディスパッチクラス を用意しています)。
IRIS で作成する REST サーバについてご興味ある方は、ぜひこちらの記事もご参照ください。
GPX に含まれる経度と緯度の情報だけでも、ストリートビューは表示できますが、視点の向きを安定させるため Java 実行後に IRIS に用意したルーチン(enrich.mac)を呼び出し、情報を追加しています。
(以下、一部抜粋)
calcdegree(x1,y1,x2,y2)
set rd=($ZPI/180)
set temp1=$zsin((x2-x1)*rd) if temp1=0 {return ""}
set temp2=$zcos(y1*rd) * $ztan(y2*rd)- $zsin(y1*rd)*$zcos((x2-x1)*rd)
set degree=90-($zarctan(temp2/temp1)*180/$ZPI)
if (x2-x1)>=0 {
set degree=90-($zarctan(temp2/temp1)*180/$ZPI)
}
else {
set degree=270-($zarctan(temp2/temp1)*180/$ZPI)
}
return degree
サンプルの GPX ファイルは、桜島、江の島、戸隠へ向かう道、有馬温泉へ向かう道、哲学の道、サグラダファミリア付近、ピラミッド付近、など用意しています。こんな時期ですので、ちょっとした 🚴 お散歩感覚 🚙 でストリートビューの表示をお楽しみいただけたらと思います。
最後までお付き合いいただきありがとうございました!
<参考にさせていただいたページ>
ストリートビューの表示:https://www.asobou.co.jp/blog/web/streetview
XMLの読み込み:https://engineer-club.jp/java-xml-read
記事
Toshihiko Minamoto · 2021年1月26日
2019年 10月 17日
Anton UmnikovInterSystems シニアクラウドソリューションアーキテクトAWS CSAA、GCP CACE
[AWS Glue](https://aws.amazon.com/glue/) は、完全に管理された ETL (抽出、変換、読み込み) サービスです。データの分類、クリーンアップ、強化、そして様々なデータストア間でデータを確実に移動させるという作業を簡単にかつコスト効率の良いかたちで行えるようにするものです。
InterSystems IRIS の場合、AWS Glue を使用すれば、大規模なデータをクラウドとオンプレミスのデータソースの両方から IRIS に移動させることができます。 ここで考えられるデータソースは、オンプレミスのデータベース、CSV、JSON、S3 バケットに保管されている Parquet ファイルならびに Avro ファイル、AWS Redshift や Aurora といったクラウドネイティブのデータベースを含みますが、これらに限定されません。
本記事では、読者の皆さんが、AWS Glue について少なくとも [AWS Glue の入門チュートリアル](https://aws.amazon.com/glue/getting-started/) を完了している程度の基本的な知識をお持ちであるという前提で話を進めていきます。 InterSystems IRIS をデータターゲット、すなわち「データシンク」として使用するかたちで AWS Glue Jobs を設定する際の技術的な側面に着目します。
画像ソース
AWS Glue Jobs は「サーバーレス」で実行されます。 ジョブの実行に必要なリソースはすべて、ジョブが実際に実行されている間だけ AWS により動的にプロビジョニングされ、ジョブが完了すると同時に破棄されます。つまり、必要なインフラストラクチャにかかる継続的なコストをプロビジョニングしたり、管理したり、負担したりすることが不要であり、ジョブが実際に実行されている間だけ請求が発生するため、ジョブのコードを書くことだけに労力を費やすことができます。 「アイドル」時間中は、S3 バケット、ジョブコードの保管、および設定に使用される以外のリソースが消費されることはありません。
通常、Glue Job は動的にプロビジョニングされる Apache Spark で実行され、また PySpark コードで記述されますが、選択肢は他にも複数存在します。 Glue Job は、データがデータソースから抽出される _ _the _"Extract"_、Glue API を使ってビルドされる一連の _"Transformations"_、そして最後に最終変換データがターゲットシステムに書き込まれる _"Load"_ または _「シンク」_の各部分で構成されます。
AWS Glue が IRIS と対話できるようにするには、以下を確認する必要があります。
* Glue から関連する IRIS インスタンスへのネットワークアクセスが確立されている
* Glue Job は IRIS JDBC ドライバーの JAR ファイルにアクセスできる
* Glue Job は InterSystems IRIS JDBC と互換性のある API を使用している
それでは、必要な各ステップを詳しく見ていきましょう。
## IRIS との接続を確立する
AWS コンソールで、AWS Glue->Connections->Add Connection、と順に選択します。
接続名を入力し、Connection Type に「JDBC」を選択します。
JDBC の URL 欄に、IRIS インスタンスの JDBC 接続文字列、ユーザー名、パスワードを入力します。
次のステップは非常に大切で、_**Glue がそのエンドポイントを IRIS インスタンスと同じ VPC に配置することを確認する必要があります。**_IRIS インスタンスの VPC と Subnet を選択します。 すべての TCP ポートにおいて自己参照する受信規則が設定されたセキュリティグループであれば、どれでも使用できます。 (IRIS インスタンスのセキュリティグループなど)
## JDBC ドライバーへのアクセス権を持つ IAM ロール
まだ行っていない場合は、S3 バケットに IRIS JDBC ドライバーの JAR ファイル「intersystems-jdbc-3.0.0.jar」をアップロードしてください。 この例では、s3://irisdistr バケットを使用しています。 アカウントによって異なると思います。
_**そのファイルにアクセスできる (Glue Job の) IAM ロール**_を Glue がスクリプトやログなどを保管するのに使用する別の S3 バケットと一緒に作成する必要があります。
それが JDBC ドライバーのバケットに対して読み取りアクセスを持っていることを確認してください。 今回は、このロール (GlueJobRole) と事前定義されている AWSGlueServiceRole にすべてのバケットへの読み取り専用アクセスを与えています。 このロールのアクセス権限はさらに制限することができます。
## Glue Job の作成と設定
新規 Glue Job を作成します。 先ほどのステップで作成した IAM ロールを選択します。 それ以外はすべてデフォルトのままにします。
「Security configuration, script libraries, and job parameters (optional)」で、「Dependent jars path」を S3 バケット内にある intersystems-jdbc-3.0.0.jar の場所に設定します。
ソースには、既存のデータソースの 1 つを使用します。 先ほど触れたチュートリアルの内容を実行された方は、少なくとも 1 つはお持ちのはずです。
「Create tables in your data target」オプションを使い、前のステップで作成した IRIS への接続を選択します。 それ以外はすべてデフォルトのままにします。
ここまでの手順を正しく行っていれば、下のような画面が表示されるはずです。
もう少しです! IRIS にデータを読み込むには、スクリプトに小さな変更を 1 つだけ加える必要があります。
## スクリプトの調整
Glue が生成したスクリプトには、Spark を対象とした AWS の専用拡張機能 [AWS Glue Dynamic Frame](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-pyspark-extensions-dynamic-frame.html) が使用されています。 ETL ジョブにいくつかのメリットがあるほか、AWS がマネージドサービスオファリングを提供していないデータベースにはデータが書き込まれないようにしてくれます。
ここで良いお知らせです。データベースにデータを書き込む時点では、「ダ―ディ」なデータに対してスキーマを強制しないなど、Dynamic Dataframe が提供する利点はすべて不要となりました (データを書き込む段階でデータは「クリーン」と判断されるため)。また、Dynamic Dataframe を AWS に管理されるターゲットだけでなく IRIS にも対応できる Spark のネイティブ Dataframe に変換するという作業も簡単に行えます。
変更が必要な行は、上の画像で示す40行目です。 最終行の 1 つ前の行です。
以下のように変更する必要があります。
#datasink4 = glueContext.write_dynamic_frame.from_jdbc_conf(frame = dropnullfields3, catalog_connection = "IRIS1", connection_options = {"dbtable": "elb_logs", "database": "USER"}, transformation_ctx = "datasink4")
dropnullfields3.toDF().write \
.format("jdbc") \
.option("url", "jdbc:IRIS://172.30.0.196:51773/USER/") \
.option("dbtable", "orders") \
.option("user", irisUsername) \
.option("password", irisPassword) \
.option("isolationlevel","NONE") \
.save()
irisUsername と irisPassword には、IRIS JDBC への接続に使うユーザー名とパスワードが入ります。
_**注意:** パスワードは絶対にソースコードに保管してはいけません!! [AWS Secrets Manager](https://aws.amazon.com/secrets-manager) などのツールを使用することをおすすめしますが、本記事でセキュリティの詳細をそこまで深く掘り下げるのは、割愛させていただきます。 AWS Glue における AWS Secrets Manager の使用法については、こちらの[記事](https://aws.amazon.com/blogs/big-data/use-aws-glue-to-run-etl-jobs-against-non-native-jdbc-data-sources/)をおすすめします。_
「Run Job」ボタンをクリックした後は、AWS Glue が ETL を実行してくれるのでリラックスしてお待ちください。
まあ最初はエラーがいくつか出ると思いますが... 珍しいことではないと思います。 入力ミスがあったり、セキュリティグループのポートが間違っていたり... AWS Glue は CloudWatch を使って、すべての実行データやエラーログを保存します。 問題の原因については、ロググループ _/aws-glue/jobs/error_ と _ /aws-glue/jobs/output_ を参照してください。
クラウドで ETL をお楽しみください!
-Anton
記事
Toshihiko Minamoto · 2021年2月4日
開発者の皆さん、こんにちは!
InterSystems ObjectScript でライブラリやツール、パッケージなどを開発していると、「このパッケージはどうすればターゲットマシンに展開できるのか?」という疑問がよく浮かびます。
また、私たちは、既に別のライブラリがインストールされていることを想定したり、その特定のバージョンのことを考慮したりしながらパッケージを開発しています。
JavaScript や Python などでコーディングを行うと、依存関係を管理しながらパッケージを展開するのに [パッケージ管理システム](https://ja.wikipedia.org/wiki/%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E7%AE%A1%E7%90%86%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0) が必要になります。
これを踏まえ、 [InterSystems ObjectScript Package Manager](https://openexchange.intersystems.com/package/ObjectScript-Package-Manager-2) のリリースを発表したいと思います!
**注意!**
**免責事項**
**pm.community.intersystems.com にある InterSystems ObjectScript Package Manager サーバー、および pm.community.intersystems.com または [Github](https://github.com/intersystems-community/zpm) からインストール可能な InterSystems ObjectScript Package Manager クライアントは、インターシステムズではサポートされておらず、MIT ライセンスに従い現状有姿の状態で表示されます。 このツールの使用や開発、このツールに対する貢献は自己責任とさせていただきます。**
**どのような仕組みか?**
InterSystems ObjectScript Package Manager は、2 つの部分で構成されています。 Package Manager サーバーは、ObjectScript パッケージをホストし、ZPM クライアントがパッケージを展開、一覧表示できるよう API を 開示します。 現在、 [pm.community.intersystems.com](http://pm.community.intersystems.com) より Developers Community Package Manager サーバーをご使用いただけます。
IRIS システムにインストールした ZPM クライアントを使用すれば、どのようなパッケージでも InterSystems IRIS にインストールできます。
**InterSystems Package Manager の使用方法とは?**
1. 使用可能なパッケージの一覧を確認する
https://pm.community.intersystems.com/packages/-/all を開き、現在使用可能なパッケージの一覧を確認します。
[{"name":"analyzethis","versions":["1.1.1"]},{"name":"deepseebuttons","versions":["0.1.7"]},{"name":"dsw","versions":["2.1.35"]},{"name":"holefoods","versions":["0.1.0"]},{"name":"isc-dev","versions":["1.2.0"]},{"name":"mdx2json","versions":["2.2.0"]},{"name":"objectscript","versions":["1.0.0"]},{"name":"pivotsubscriptions","versions":["0.0.3"]},{"name":"restforms","versions":["1.6.1"]},{"name":"thirdpartychartportlets","versions":["0.0.1"]},{"name":"webterminal","versions":["4.8.3"]},{"name":"zpm","versions":["0.0.6"]}]
各パッケージには、それぞれ名前とバージョンがあります。
InterSystems IRIS にパッケージをインストールするには、最初に InterSystems ObjectScript Package Manager クライアント (別名 ZPM クライアント) をインストールする必要があります。
**2. Package Manager クライアントをインストールする**
ZPM サーバーから ZPM クライアントの最新リリースを取得します
https://pm.community.intersystems.com/packages/zpm/latest/installer
これは XML の ObjectScript パッケージなので、Management Portal を使ってクラスにインポートするか、以下のコマンドを実行すればインストールできます。
USER>Do $System.OBJ.Load("/yourpath/zpm.xml","ck")
ZPM クライアントは %SYS に Z パッケージとしてインストールされるので、インストールが完了した後はどのネームスペースからでも呼び出すことができます。
**3. ZPM クライアントの操作**
ZPM クライアントには CLI インターフェースがあります。 ZPM は以下のようにどのネームスペースでも呼び出せます。
USER>zpm
zpm: USER>
使用可能なコマンドの完全な一覧は、ヘルプを呼び出してください。
現在使用可能なパッケージの一覧は ZPM サーバーでご確認ください (pm.community.intersystems.com)
zpm: USER>repo -list-modules -n registry
deepseebuttons 0.1.7 dsw 2.1.35 holefoods 0.1.0 isc-dev 1.2.0 mdx2json 2.2.0 objectscript 1.0.0 pivotsubscriptions 0.0.3 restforms 1.6.1 thirdpartychartportlets 0.0.1 webterminal 4.8.3 zpm 0.0.6
**パッケージをインストールする**
パッケージをインストールするには、以下のコマンドを実行します
install package-name version
これでパッケージとすべての依存関係が一緒にインストールされます。 「version」を省けば、最新のパッケージを取得できます。 ウェブターミナルの最新バージョンは、以下のコマンドでインストールします。
zpm: USER> install webterminal
**既にインストールされているものを確認する方法**
「list」コマンドを呼び出します
zpm:USER> list
zpm 0.0.6
webterminal 4.8.3
**パッケージをアンインストールするコマンド**
zpm: USER> uninstall webterminal
**サポートされている InterSystems のデータプラットフォーム**
現在、ZPM は InterSystems IRIS と InterSystems IRIS for Health をサポートしています。
**自分のパッケージを Package Manager の一覧に載せたい**
可能です。 要件は以下のとおりです。
* InterSystems IRIS で実行できるコードを使っている
* ルートディレクトリに module.xml がある。
Module.xml は、パッケージの構造を示すファイルで、デプロイ段階でセットアップされる必要があります。 module.xml の例はいたって単純です。
[ObjectScript の例](https://github.com/evshvarov/objectscript/blob/master/module.xml)
比較的シンプルな例:
[Samples BI](https://github.com/isc-zpm/Samples-BI/blob/master/module.xml) (以前の HoleFoods)
ウェブターミナル
**依存関係のあるモジュール**
DeepSee Web は MDX2JSON がインストールされていることを前提とします。その時のmodule.xml に記載されている内容はこちらをご覧ください:
[DeepSeeWeb](https://github.com/isc-zpm/DeepSeeWeb/blob/master/module.xml)
ご自身のアプリケーションが Community Package Manager の一覧に記載されることをご希望の方は、この記事にコメントしていただくか、私まで直接ご連絡ください。
**コラボレーションとサポート**
ZPM サーバーのソースコードは現時点では使用いただけませんが、近々ご用意いたします。
ZPM クライアントのソースコードは [こちら](https://github.com/intersystems-community/zpm) からご使用いただけます。また、現在同ソースコードは、InterSystems開発者コミュニティでサポートされていますが、インターシステムズではサポートされていません。 [問題](https://github.com/intersystems-community/zpm/issues)や[プルリクエスト](https://github.com/intersystems-community/zpm/pulls)があれば、お気軽に送信してください。
**ロードマップ**
現在のロードマップは以下のとおりです。
* Open Exchange のサポートを導入する
* パッケージの更新とアップロードを自動化するオートメーションを導入する
* ZPM サーバーをオープンソースとして提供する
今後も最新情報にご期待ください。InterSystems IRIS で InterSystems ObjectScript パッケージを開発しましょう!
お知らせ
Seisuke Nakahashi · 2023年11月13日
InterSystems は SAM (System Alerting & Monitoring) の開発を終了し、 今後は非推奨とすることを決定しました。 InterSystems は本テクノロジーを利用しているお客様のサポートを続けますが、新規プロジェクトでの利用を推奨しません。
これは、SAM が提供するオブザーバビリティに関心をもつようなお客様はほとんど、既存の運用プラットフォームのビューをより優れたものにするために、すでにIRIS の Metric API と構造化ログを、組織のオブザーバビリティ・プラットフォームに接続済みだと判明したことによります。
現在ご利用中または利用を予定されていた SAM に関するご質問は、弊社担当アカウントチームにお問合せいただくか、 @Bob Kuszewski までご連絡ください。
記事
Megumi Kakechi · 2024年2月28日
これは InterSystems FAQ サイトの記事です。
InterSystems IRIS との通信に SSL/TLS を使用する際のクライアントの構成は、使用する技術によって変わってきます。
1. ODBCクライアント、IRISクライアントから接続の場合(IRISスタジオやターミナルなど)2. .NET クライアントから接続の場合(SSLDefs.iniは要りません)
★1.ODBCクライアント、IRISクライアントから接続の場合(IRISスタジオやターミナルなど)
ODBCやIRISクライアントから接続する場合は、以下の記事にある設定が必要となります。具体的には、SSLDefs.iniという設定ファイルを作成し、決められた場所に配置します。
【ご参考】スーパーサーバやTelnetポートでSSLを有効にする際のクライアントの設定
注意:設定ファイル (SSLDefs.ini) の使用には、以下の制限が適用されます。
この設定ファイルは、irisconnect.dll 実行可能ファイルまたは irisconnect64.dll 実行可能ファイル (それぞれ 32 ビット・マシン用と 64 ビット・マシン用) を使用する接続にのみ使用できます。他のメカニズム (ADO など) を使用する接続では、この設定ファイルは使用されません。
Windows クライアントから InterSystems IRIS への接続でこの設定ファイルが使用される場合、Kerberos 認証はサポートされません。
設定ファイル (SSLDefs.ini) の使用における制限について
★2..Net クライアントから接続の場合(SSLDefs.iniは要りません)
ADO.NET より接続する場合は、上記 SSLDefs.ini は使用しません。クライアントOSの設定で、TLS 1.2 を有効にしてください。
【ご参考】クライアントで TLS 1.2 を有効にする方法
以下のドキュメントもご覧ください。InterSystems IRIS との通信に TLS を使用するための .NET クライアントの構成