検索

クリアフィルター
記事
Hiroshi Sato · 2021年10月12日

DBリストア手順

これはInterSystems FAQ サイトの記事です。^BACKUP ユーティリティを使用して、DBリストアする方法をご紹介します。 添付のドキュメントでは、オンラインバックアップ と レガシー並行外部バックアップ の2種類のバックアップからのリストア処理の方法を紹介しています。 リストア処理の詳細は、下記ドキュメントページを参照してください。 オンライン・バックアップ・リストア・ユーティリティ【IRIS】Caché オンライン・バックアップ・リストア・ユーティリティについて
記事
Megumi Kakechi · 2021年5月13日

ロックテーブルの使用状況を簡単に確認する方法

これは InterSystems FAQ サイトの記事です。 システムクラス SYS.Lock のメソッド GetLockSpaceInfo() にてロックテーブルの空きサイズ、使用サイズが取得可能です。 %SYS>w ##class(SYS.Lock).GetLockSpaceInfo()4717392,4712512,1200 戻り値は、“AvailableSpace, UsableSpace, UsedSpace” になり、それぞれByte単位の値を表しています。 AvailableSpace:ロックテーブルサイズから使用サイズ(UsedSpace)を引いたサイズ UsableSpace:AvailableSpaceよりロック管理のための内部データを引いたサイズ→これがユーザの使用できるロックテーブル空き容量になります。 UsedSpace:使用サイズ 詳細は、クラスリファレンス をご覧ください。
記事
Mihoko Iijima · 2021年6月14日

TCP接続(OPEN)した際のクライアントのアドレス取得方法

これは InterSystems FAQ サイトの記事です。 接続先クライアントのIPアドレス取得するには、以下の方法で %SYS.ProcessQuery クラスを使用します。 (a) 対象プロセス ID を指定して、ClientIPAddress プロパティ を参照します。 Set Process=##CLASS(%SYS.ProcessQuery).%OpenId("8656") Write Process.ClientIPAddress (b) 全てのプロセスの情報を知りたい場合は、必要な情報のみ取得する SQL クエリを作成し、クラス内で実行することができます。 例) SELECT * FROM %SYS.ProcessQuery で詳細情報を取得できます。 詳細は、以下ドキュメントをご参照ください。%SYS.ProcessQueryについて【IRIS】%SYS.ProcessQueryについて
記事
Makiko Kokubun · 2021年7月14日

動画:KubernetesでのIRISの運用とそれを支える仕組み

*この動画は、2021年2月に開催された「InterSystems Japan Virtual Summit 2021」のアーカイブです。 本動画では、コンテナを開発・デモ環境で使用されている方を対象に、プロダクション環境をコンテナで運用することを目的として Kubernetes の基本及び IRIS data platform の運用を支える仕組みをデモを交えながらご紹介します。 この他にも、開発者コミュニティでは、コンテナやKubernetesに関連する技術情報を公開しています。こちらも合わせてご覧ください。
記事
Megumi Kakechi · 2022年1月30日

アプリケーションのログを^ERRORSグローバルに入れる方法

これは、InterSystems FAQサイトの記事です。 TRY-CATCHで行うことが可能です。以下のように行ってください。 #dim ex As %Exception.AbstractException TRY { "<何かエラーを発生させる処理>" } CATCH ex { do ex.Log() } ^%ETNを使用する場合は、^%ETNを呼び出す際にBACKエントリ(BACK^%ETN)から呼び出してください。 あわせて、以下の関連記事も是非ご覧ください。 アプリケーションエラー(^ERRORS)をコマンドで取得する方法【FAQ】アプリケーションから明示的にエラー詳細情報をログ出力する方法を教えてください。
記事
Megumi Kakechi · 2022年6月29日

ODBCツール等からアクセスした際に表示されるカラム順を制御する方法

これは InterSystems FAQ サイトの記事です。 デフォルトではテーブルのカラムの順番はシステムが自動的に決定します。 順番を変更するにはクラス定義を行う際にプロパティ・キーワード SqlColumnNumber でプロパティ毎に明示的に順番を設定してください。 例: Property Name As %String [SqlColumnNumber = 2]; ドキュメントは以下をご参照ください。 SqlColumnNumber なお、SQLテーブル名を変えたい場合は SqlTableName 、カラム名(フィールド名)を変えたい場合は SqlFieldName を指定します。 ともに、永続クラスのみに適用されます。
記事
Hiroshi Sato · 2020年9月28日

ルーチン一覧をプログラミングで取得する方法

これはInterSystems FAQ サイトの記事です。 %Library.Routine (以降、%Routine)クラスのRoutineListクエリを使用して、プログラムからルーチンの日付やサイズを取得できます。 RoutineListクエリには、引数があり、検索対象となるルーチン名を前方一致や中間一致で指定できます。(ワイルドカードには、* か ? を指定します。) 以下の例では、*.MAC を引数に指定して、検索をしています。 SET tStatement = ##class(%SQL.Statement).%New() DO tStatement.%PrepareClassQuery("%Routine","RoutineList") SET rs = tStatement.%Execute("*.MAC",,0) DO rs.%Display() ルーチン一覧の他に、クラス定義一覧も取得できます。

#iKnow

2 投稿0 フォロワー

#CaretDev

0 投稿0 フォロワー
お知らせ
Seisuke Nakahashi · 2023年2月20日

製品リリースの新しい頻度について

インターシステムズでは、お客様のニーズにお応えし、定期的に製品リリースのポリシーを変更しています。 今回新しくメンテナンスリリースの頻度を変更しました。これにより、大切なお客様やパートナーのみなさまが製品導入の計画をたてやすくなったり、機能改善の調整をしやすくなっていただければ幸いです。 本記事では、データプラットフォーム製品のリリース頻度を改めてお伝えするとともに、最新の変更点についてご案内いたします。 なぜ変更するのか? お客様に私たちの新バージョンをより早くお届けするため。 お客様に新しいプラットフォーム (OSバージョンや周辺技術) により早く適応いただくため。 特に3rdパーティーのライブラリにおいて発生する、セキュリティ問題により頻繁に対応するため。 お客様からの「より正確な製品スケジュール」へのリクエストに応えるため。 私たちのリリース頻度について変わらないこと インターシステムズでは InterSystems IRIS 2018 から、以下2つの製品ラインをリリースしてきました (オリジナル記事はこちら)。 CD (継続的デリバリー) リリース - 私たちの新機能をいち早くご提供します。これによりお客様のアプリケーションでは、継続的に更新しながら新機能を取り入れるような、理想的な開発と展開が可能となります。「快速列車 (fast train)」と呼ぶことがあります。 EM (拡張メンテナンス) リリース - CDリリースよりも頻度は下がりますが、より安定したリリースをご提供します。新機能を入手するより、メンテナンスリリースを通じて製品の修正を入手することがより大切となる、大規模なエンタープライズアプリケーションには理想的なリリースとなります。「鈍行列車 (slow train)」と呼ぶことがあります。 EMリリースは、バージョン番号が YYYY.1 となっているため、簡単に見分けがつきます (例: 2022.1、2023.1) CDリリースのバージョン番号は YYYY.2、YYYY.3 となります。 1年前にリリース頻度を更新し、CDリリースにキットを追加したり、InterSystems IRIS や InterSystems IRIS for Health 同様、HealthShare や Health Connect にもこれらのリリースサイクルを導入しました (こちらの記事もご覧ください)。CDリリースには以下3点の制限が残っています。まず、メンテナンスバージョンやセキュリティ修正はリリースされません。つぎに、Caché および Ensembleからのインプレース変換は出来ません。最後に、CDリリースからアップグレードできるのは、次のCDリリースか次のEMリリースに限定されます。 新機能のリリースは (EMリリース、CDリリースいずれも) お客様がダウンロードして新機能を試すことが出来るプレビュー段階を経て行われます。プレビュー版をお使いいただくことで、新リリースに先駆けて準備いただけます。プレビュー版は、新製品のフィードバックや、アプリケーションが新リリースで正常に動作することを確認する素晴らしい機会となります。2022.2 から、プレビュー版は2週間おきの水曜にリリースされています。 この新しいリリース頻度についてのお客様からのフィードバックは、非常に好意的なものでした。インターシステムズは、この2つの製品ラインを、高い品質を維持しながら運用してきました。 プラットフォームの更新 多くのお客様は現在、とくにクラウド環境においては、新しいOSにより早く適応されています。そこでインターシステムズはリリース頻度を変更しました。2022年から、メンテナンスリリースで新しいオペレーティングシステムを追加でサポートするようになりました。2022.1.1では Ubuntu 22.04のサポート、2022.1.2では RHEL 9 のサポートが追加されました。これにより、お客様が新しいオペレーティングシステムにいち早く適応いただけるようになりました。 セキュリティ更新は、特に OpenSSLのようなオペレーティングシステムにパッケージされた共有ライブラリでは、より頻繁に行われています。バージョン 2022.1 から、OpenSSL ライブラリは、オペレーティングシステムに同梱されたものを使用するよう変更しました。これにより、お客様がOS経由でセキュリティ更新を行うことができます。ただこれにより、Linuxオペレーティングシステムのメジャーバージョンごとに、InterSystemsの製品キットが異なるようになります。そのため EMリリースごとに、サポートするLinuxオペレーティングシステムは 2 メジャーバージョンに限定されます。新しいOSのサポートをメンテナンスリリースで追加した場合、古いOSバージョンのサポートは削除しません。このときは3種類のキットが存在する状況となり、次のEMリリースで2種類のキットに減ります。たとえば、2022.1.2 は、3種類の Red Hat キットがあります (RHEL 7、RHEL 8、RHEL 9)。 2022.1.3 も同じセットになりますが、2023.1.0 では RHEL8 と RHEL 9 のみになります。 プラットフォームの変化がスピードアップしているので、お客様に今後の予定を明確にお知らせしたいと考えています。インターシステムズは3か月ごとに「プラットフォーム・アップデート」をニュースレターとしてお伝えしてきました。このたび初めて、プラットフォーム・アップデートを開発者コミュニティで公開しました(英語)。ニュースのフォーマットや更新頻度について、ぜひフィードバックをお聞かせください。 メンテナンスバージョンとセキュリティの更新 CachéやEnsembleでのメンテナンス更新と同じく、InterSystems IRIS でも 2年間、メンテナンス更新をご提供します (ミニマムサポートバージョンをあわせてご覧ください)。メンテナンス更新に加えて、セキュリティ修正も提供しています。 関連製品やプラットフォームをひっくるめて、EMリリースの一連の更新を「ストリーム」と呼んでいます。たとえば、2021.1.0、2022.1.1、2022.1.2はひとつのストリームで、2022.1.0、2022.1.1、2022.1.2は違うストリームになります。つまりインターシステムズは、3つのストリームに対してメンテナンスバージョンを提供していることになります (InterSystems IRIS ・InterSystems IRIS for Health・Health Connect の最新EMと、1つ前のEM、そしてCaché・Ensemble の3つです - Caché・Ensemble は1つのストリームになっています)。 2023年4月から、インターシステムズはセキュリティ修正を、InterSystems IRIS の現在リリース中のバージョン ならびに 過去3年間のリリースに対して行います。Caché の最新メンテナンスリリースも同様です。つまりセキュリティ修正は、メンテナンス対象のストリームに加えて、対象外の2つのストリームに対しても行われます (合計5つのストリームが対象です)。例えば 2024年には、InterSystems はセキュリティ修正を、そのときの最新である InterSystems IRIS 2024.1.x に加えて、2023.1.x、2022.1.x、2021.1.x に対しても提供します。また Caché 2018.1.x にも提供します。 インターシステムズは最近、セキュリティ脆弱性の取り扱いに関するポリシーを、より多くのセキュリティ問題 - ほとんどが重要度中または低のもの - を取り扱えるように、より良く変更しました (こちらの記事もごらんください(英語))。現在は、セキュリティに関する更新をすべてのリリースで行っています。重要度高または緊急の問題の情報については、すべてのサポートストリームで修正対応されるまで、詳細は公開されません (情報が悪用されセキュリティ脆弱性をつかれる事態を防ぐためです)。対応された時点で、脆弱性の詳細をそえたセキュリティアラートを公開します。 予測しやすいメンテナンスリリース 多くのお客様から、インターシステムズ製品のソフトウェア更新が定期的に行われ、かつその入手時期を元に計画を立てたいとリクエストをいただきます。そこでインターシステムズは、メンテナンスリリースのスケジュールを以下のように正式に決定しました。 最新の InterSystems IRIS ストリーム: 3ヶ月ごとにメンテナンスリリースを行う 1つ前の InterSystems IRIS ストリーム: 6か月ごとにメンテナンスリリースを行う Caché・Ensemble: 12カ月ごとにメンテナンスリリースを行う InterSystems IRIS 2022.1 ストリームでは、メンテナンスリリースを 1月18日に発表しました (2022.1.2リリースアナウンスはこちら)。InterSystems IRIS 2021.1ストリーム と Caché・Ensemble 2018.1ストリームは 2月28日に発表予定です。 2023年には、1つのEMリリース (2023.1) と 2つのCDリリース (2023.2、2023.3) を予定しています。2023.1.0が 正式版 (GA) としてリリースされると、それが最新 InterSystems IRIS ストリームとなり、2022.1 が1つ前のストリームになります。 WRCから過去リリースの削除 (ICRは例外) リリース頻度が高くなり、多くのキットがリリースされると (Linux OSメジャーバージョンごとに1つ)、WRC 製品ダウンロードページで取得できるキット数が莫大になり、お客様を混乱させることになります。そこでダウンロードページから、ストリームごとに古いキットを定期的に削除する運用をはじめています。 最新のCDバージョンのみ入手できます。例えば、2022.3が正式リリースされたため、2022.2イメージは2月末に削除されます。 各ストリームの最新メンテナンスバージョンのみ入手できます。例えば、2022.1.2がリリースされたので、2022.1.1は削除されました。これにより、お客様が既存のセキュリティ問題を含んだバージョンを誤ってインストールする事態を防ぐことができます。​ ご依頼があれば過去バージョンを入手いただけます。ただ、1つの共通バージョンを多くのサイトで運用されているお客様は、そのバージョンをお手元に保管いただくことをお勧めします。ファイル完全性を保証するため、全てのキットとコンテナは署名されており、チェックサムやPGP署名ファイルをWRC製品ダウンロードページから入手いただけます。 ただし、InterSystemsコンテナレポジトリ (ICR) については状況が異なります。それは、CI/CDパイプラインでは、お客様が特定のバージョンを使うケースが多いからです。ICR では、2年以上経過するまでは古いイメージを削除しません。インターシステムズは、お客様が現在のCI/CDパイプラインをお使いいただくことをお勧めします。またお客様からも、そのように運用するとフィードバックをいただいています。 お客様の成功に全力を尽くします 上記でお伝えした変更は全て、お客様の成功をお手伝いさしあげるために行ったものです。インターシステムズは、お客様からいただいたセキュリティ、プラットフォームへの適応、メンテナンス更新、リリース頻度に関するご心配をお聞きし、いただいたフィードバックをもとに運用ルールを変更しています。ご意見やご提案がございましたら、遠慮なくインターシステムズにお寄せくださいませ。
記事
Toshihiko Minamoto · 2023年6月27日

REST の設計と開発

## はじめに 今日の相互運用性分野に従事する多くの人にとって、REST は最高峰にあります。 REST API 開発用のツールとアプローチが溢れかえる中、コードを書き始める前に、どのツールを選び、何を計画する必要があるでしょうか? この記事では、堅牢性、適応性、および一貫性に優れた REST API を構築できるようにする設計パターンと考慮事項を焦点としています。 CORS サポートと認証管理の課題に他する実行可能なアプローチについて、REST API 開発の全段階に適用できる様々なヒントとテクニック、最適なツールを織り交ぜながら説明します。 InterSystems IRIS Data Platform で利用できるオープンソース REST API と複雑化し続ける API の課題にどのように取り組むかについてお読みください。 これは、[同じトピックに関する最近のウェビナー](https://community.intersystems.com/post/webinar-mar-14-rest-api-design-and-development)を記事にしたものです。 ## 2020 年のメモ この記事を書いてから 1 年半が過ぎました。 現在でも関連性があると思いますが、REST API の開発をこれまでになく簡単にする画期的な新機能を紹介したいと思います。 - [API 管理](https://community.intersystems.com/post/introducing-intersystems-api-manager) - API のライフサイクルを管理します。 - [%JSON.Adaptor](https://irisdocs.intersystems.com/iris20221/csp/docbookj/DocBook.UI.Page.cls?KEY=GJSON_adaptor) - JSONオブジェクトの変換を単純化します。 - [仕様優先型 REST API 開発](https://jp.community.intersystems.com/node/476556) - REST API の効果的な開発手法です。 ## この記事の内容 - REST API アーキテクチャ - ブローカー - ブローカーの分離 - ブローカーのパラメーター - コードの一般化 - CORS - 認証 - 開発ツール - 例 - JSON - まとめ - リンク ## REST API アーキテクチャ この記事の読者が REST API と InterSystems テクノロジーを使った REST API の実装の基本についてよく理解していることを希望します。 このトピックに特化した記事、ウェビナー、トレーニングコースがたくさんあります。 いずれにせよ、まず初めに、REST API を含む、アプリケーションの共通高レベルアーキテクチャから始めたいと思います。 以下のようなアーキテクチャです。 ![REST API アーキテクチャ](https://habrastorage.org/webt/mn/xs/vs/mnxsvsezrsne7tjtrnrfeqjkpu4.png) アプリケーションの主なレイヤーを見てみましょう。 ### データ クラスなどの永続データ。 ### ターミナル API これは、データを管理するレイヤーです。 データとのすべてのやり取りは、この API を通じて行われます。 この API のメソッドはデバイスへの書き込みを行わず、次のいずれかのみを返します。 - オブジェクト - ステータスまたは例外 ### Web API 受信リクエストを、ターミナル API が理解する形式に変換して呼び出します。 ターミナル API が返す結果は、クライアントが読み取れる形式(通常は JSON)に変換されて、クライアントに返されます。 Web API は直接データを操作しません。 私は、「REST API」ではなく「Web API」という用語を使用しています。これは、Web API は InterSystems プラットフォームでもサポートされている [WebSocket](https://docs.intersystems.com/iris20221/csp/docbookj/DocBook.UI.Page.cls?KEY=GCGI_op_serv) などに基づく別のアーキテクチャを使って実装することが可能であるためです。 ### クライアント 通常は JavaScript で書かれますが必ずしもそうとは限りません。これが、エンドユーザーが使用できるアプリケーションです。 このレベルは、直接データベースを操作したり、ビジネスロジックを実装したリ、アプリケーションの状態を保管してはいけません。 このレベルでは通常、インターフェース、事前入力検証、単純なデータ操作(並べ替え、グループ化、集計)など、最も単純なビジネスロジックのみが使用可能です。 この分離によって、アプリケーションから複雑さが取り除かれ、デバッグが容易になります。 これは、[多層アーキテクチャ](https://ja.wikipedia.org/wiki/%E5%A4%9A%E5%B1%A4%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3)と呼ばれるアプローチです。 ## ブローカー ブローカーは、REST API ロジックを含むクラスです。 以下の特徴があります。 - `%CSP.REST` のサブクラスである - URL とコード内のメソッドを一致させるルートが含まれる たとえば、以下のルートがあります。 `` クライアントが `/path/10/20` に GET リクエストを送信すると、`Package.Class` の `ClassMethod` が `10` と `20` の引数で呼び出されます。 ## ブローカーの分離 ### 「物理的」な分離 REST API には多くのルートが存在することがあるため、1 つのブローカーがすぐにメソッドでオーバーロードしてしまいます。 これを防止するには、以下のようにブローカを複数のクラスに分割します。 ![「物理的」な分離](https://habrastorage.org/webt/6u/rg/dt/6urgdt3zvhgxvk-_x-mptussne0.png) 説明: - Abstract broker(抽象ブローカー)はリクエストを変換し、CORS リクエストを確認して、REST API ロジックに関係のない他の技術的タスクを実行します。 - Broker 1..N には、リクエストに対し、ターミナル API メソッドを呼び出してターミナル API のレスポンスをクライアントに返す処理を行うメソッドが含まれます。 ### 「論理的」な分離とバージョン管理 通常、ブローカーには呼び出されたメソッドに URL を一致させるルートが含まれていますが、ブローカー間でリクエストを渡すマップも含まれています。 その仕組みは以下のとおりです。 `` この例では、`/form` から開始するすべてのリクエストが `Destination.Broker` に渡されます。 これにより、ブローカーの分離が可能になります。 ブローカーは次のように分離する必要があります。 - バージョン - ドメイン ![「物理的」な分離](https://habrastorage.org/webt/iz/86/gj/iz86gjogk53ahxw8qoq6fktzhhg.png) ## ブローカーのパラメーター REST ブローカーのパラメーターには、以下が推奨されます。 Parameter CONTENTTYPE = {..#CONTENTTYPEJSON}; Parameter CHARSET = "UTF-8"; Parameter UseSession As BOOLEAN = 1; 説明 - CONTENTTYPE — レスポンスが JSON であることに関する情報を追加します。 - CHARSET — レスポンスを UTF8 に変換します。 - UseSession — セッションを使用してユーザーを追跡します。詳細は「認証」をご覧ください。 すべてのブローカーは 1 つの抽象ブローカーから継承されるため、これらのパラメーターをその抽象ブローカーに 1 回指定するだけで十分です(プライマリスーパークラスのパラメーターのみが継承されることに注意してください)。 ## コードの一般化 REST API の開発時によく発生する問題の 1 つは、ブローカー間でのコードのコピーアンドペーストです。多数のルートとコードのコピーが発生してしまうため、これは不適切な実践です。 これを回避するには、メソッドジェネレーターに必要となる可能性のあるすべてのメタ情報が含まれた [%Dictionary](http://docs.intersystems.com/latest/csp/documatic/%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=%25SYS&CLASSNAME=%25Dictionary.ClassDefinition) パッケージで[コード生成](https://docs.intersystems.com/iris20221/csp/docbookj/DocBook.UI.Page.cls?KEY=GOBJ_generators)を使用することをお勧めします。 コード生成の大規模な使用例には、RESTForms ライブラリがあります。 最後に、コード生成を使用すると、REST API の一貫性を高めることができます。 ## CORS クロスオリジンリソース共有(CORS)は Web ページ上の制限付きリソース(フォントなど)を、最初にリソースが提供されたドメイン外の別のドメインからリクエストできるようにする仕組みです。 CORS を使用して REST API にアクセスできるようにするには、次のパラメーターをブローカーに追加します。 Parameter HandleCorsRequest = 1; これにより、他のドメインのページが REST API にアクセスできるようになります。 これは安全な方法ではないため、`OnHandleCorsRequest` メソッド、そのシグネチャーもオーバーライドする必要があります。 ClassMethod OnHandleCorsRequest(pUrl As %String) As %Status {} このメソッドはリクエストのオリジンをチェックし、ホワイトリストに登録されたオリジンからのみのアクセスを許可します。 次は、オリジンを取得するメソッドです。 ClassMethod GetOrigins() As %String { set url = %request.GetCgiEnv("HTTP_REFERER") return $p(url,"/",1,3) // get http(s)://origin.com:port } ## 認証 1 人のユーザーが 1 つのライセンスを使用して 1 つのセッション内で作業するには、次の条件が満たされるように、システム管理ポータルで REST と CSP アプリケーションを構成する必要があります。 1. すべてのブローカーに実質的に `Parameter UseSession = 1;` が設定されている。 2. すべての Web アプリケーションで認証済み(パスワード)アクセスのみを許可する。 3. すべての Web アプリケーションに適切な `Session` タイムアウト(900、3600)が設定されている。 4. すべての Web アプリケーションに同じ `GroupById` 値が設定されている。 5. すべての Web アプリケーションに同じ `cookie path` が設定されている。 ## 開発ツール デバッグには、以下のような外部ツールを使用できます。 - REST クライアント(Postman)- REST API 開発者向けの主要デバッグツールです。 リクエストの保存とドキュメント化、JSON レスポンスの「Pretty」表示、複数の環境へのリクエストの送信が可能で、開発者向けにその他多数のツールが提供されます。 - プロキシサーバーのインターセプト(Fiddler)- 開発者は、リクエストのインターセプト、表示、編集、および複製が可能です。 - パケットアナライザー(Wireshark)- パケットの破損、エンコードの問題、リモートヘッドレスシステムの分析、および上記のツールでは不十分なその他の状況に役立ちます。 curl や wget などのコマンドラインツールを使用しないことを強くお勧めします。 また、REST API(REST API 以外)の様々なデバッグアプローチに関する連載記事([パート 1 - 外部ツール](https://jp.community.intersystems.com/node/501166)、[パート 2 - 内部ツール](https://jp.community.intersystems.com/node/501171))も用意しました。 ## 例 動作する REST API の例をいくつか紹介します。 InterSystems IRIS は、%API パッケージでいくつかの REST API を提供しています。 - Atelier - API 管理 - InterSystems: DocDB - InterSystems: BI - InterSystems: Text Analytics - InterSystems: UIMA さらに、ドキュメントには [REST に関するチュートリアル](https://docs.intersystems.com/iris20191/csp/docbookj/DocBook.UI.Page.cls?KEY=AFL_REST)も含まれています。 [Learning.InterSystems.com](http://Learning.InterSystems.com) には、REST に関するコースがいくつか用意されています。 また、GitHub には、オープンソースの REST API もあります。 ### InterSystems IRIS: BI - MDX2JSON MDX2JSON — MDX2JSON 変換用の REST API です。 キューブ、ダッシュボード、ウィジェット、およびその他の要素に関するメタ情報も提供されています。 2014.1+ で利用可能です。 クライアントは、AngularJS とハイチャートで構築される InterSystems IRIS: BI ダッシュボード用の Web ベースのレンダラーです。 以下のように表示されます。 ![DeepSeeWeb](https://habrastorage.org/web/815/5ab/c73/8155abc739b64bb1a4a90978f2ad2a18.png) ### InterSystems IRIS: Interoperability Workflow [Workflow](https://docs.intersystems.com/iris20221/csp/docbookj/DocBook.UI.Page.cls?KEY=EGWF_preface) は、自動ビジネスプロセスの実行にユーザーが参加できるようにするモジュールです。 [Workflow REST API](https://github.com/intersystems-ru/EnsembleWorkflow) はユーザーのタスクを公開します。 2014.1+ で利用可能です。 [Web クライアント](https://github.com/intersystems-ru/EnsembleWorkflowUI)で可視化を確認できます。 ![EnsembleWorkflowUI](https://habrastorage.org/files/1b1/5ea/25c/1b15ea25ccbb41c89e3a4be6f3b35cfb.png) ![EnsembleWorkflowUI](https://habrastorage.org/files/f70/355/030/f703550305be4c3d85ed2202019f196c.png) ### RESTForms [RESTForms](https://github.com/intersystems-ru/RESTForms) には、自己検出型の堅牢な汎用 REST API ソリューションが提供されているため、新しい REST API の作成が簡単に行えるようになります。 2016.1+ で利用可能です。 RESTForms については、 [パート 1](https://community.intersystems.com/post/restforms-rest-api-your-classes) と[パート 2](https://community.intersystems.com/post/restforms-rest-api-your-classes-part-2-queries) に分けて詳しく説明した記事を書きました。 RESTForms では以下のようないくつかのルートを利用できます。 | メソッド | URL | 説明 | | ------ | -------------------------------- | ------------------------------------ | | GET | form/info | RESTForms 対応のクラスをすべてリストします。 | | GET | form/info/all | 利用可能なすべてのクラスに関するメタ情報を取得します。 | | GET | form/info/:class | 利用可能な 1 つのクラスに関するメタ情報を取得します。 | | GET | form/object/:class/:id | ID とクラスでオブジェクトを取得します。 | | GET | form/object/:class/:id/:property | ID、クラス、およびプロパティ名でオブジェクトのプロパティを取得します。 | | POST | form/object/:class | オブジェクトを作成します。 | | PUT | form/object/:class/:id | 動的オブジェクトを介してオブジェクトを更新します。 | | PUT | form/object/:class | 標準オブジェクトを介してオブジェクトを更新します。 | | DELETE | form/object/:class/:id | オブジェクトを削除します。 | | GET | form/objects/:class/:query | SQL クエリを実行します。 | このプロジェクトでは、コードの一般化(コード生成と %Dictionary パッケージを使用)が積極的に使用されています。 クライアントは Angular と React で利用でき、以下のように表示されます。 ![RESTForms](https://habrastorage.org/web/402/b4b/e02/402b4be02e8e48779c7a925aa706e5fd.png) ## JSON JavaScript Object Notation の略で、REST API でよく使用されるテキストシリアル化形式です。 InterSystems 製品の JSON サポートはバージョン 2009.2 以降で提供されていましたが、バージョン 2016.2 において大幅に改善されました。 [ドキュメント](https://docs.intersystems.com/iris20221/csp/docbookj/DocBook.UI.Page.cls?KEY=GJSON)には JSON だけに関するものがあります。 ## まとめ - REST は最も一般的で広く採用されている API テクノロジーの 1 つです。 - REST API を提供する場合は、以下に限定されず、複数のクライアントテクノロジーの中から選択できます。 - JavaScript(AngularJS、React、ExtJS など) - モバイルアプリ(Cordova などのテクノロジー、またはネイティブアプリ) - InterSystems テクノロジーを使えば、簡単に REST API を作成できます。 ## リンク - [ドキュメント](https://docs.intersystems.com/iris20221/csp/docbookj/Doc.View.cls?KEY=GREST_intro) - [REST 関連ウェビナー](https://learning.intersystems.com/course/view.php?id=791) - Web をデバッグする: [パート 1](https://jp.community.intersystems.com/node/501166)、[パート 2](https://jp.community.intersystems.com/node/501171) - RESTForms: [パート 1](https://jp.community.intersystems.com/node/479226)、[パート 2](https://jp.community.intersystems.com/node/479236) - [コミュニティのチュートリアル](https://community.intersystems.com/post/lets-write-angular-1x-app-cach%C3%A9-rest-backend-start-here)
記事
Mihoko Iijima · 2020年11月6日

SELECTのみを実行できるユーザ作成方法について

これはInterSystems FAQ サイトの記事です。 SELECT のみを実行できるユーザを作成するには、ユーザかロールに対してテーブルへのアクセス権限を設定することで対応できます。 設定は、管理ポータルか、GRANT 文を実行することで設定できます。GRANT 文については、以下ドキュメントもご参照ください。InterSystems SQL リファレンス - GRANT【IRIS】CachéSQLリファレンス - GRANT 管理ポータルでの設定は、ユーザまたはロールの編集画面内「SQLテーブル」タブを使用します。 ユーザに直接設定する場合は以下のメニューを利用します。  [ホーム] > [システム管理] > [セキュリティ] > [ユーザ] > [ユーザ編集] ロールに設定する場合は、以下のメニューを使用します。 [ホーム] > [システム管理] > [セキュリティ] > [ロール] > 新規ロール作成 ※ ロール名を指定し、保存するまで詳細設定画面が表示されません。 ※ 作成したロールをユーザに付与することで、テーブルへのアクセス権限をロールで一元管理できます。 SQLテーブルでの権限設定 手順は以下のとおりです。 ネームスペースを選択(例は SAMPLES を選択) テーブル追加ボタンを押下 スキーマを選択 (例は Samples を選択) 設定対象のテーブル(例は、Person )を「選択済み」に移動し権限を設定(SELECTのみにチェック) 適用ボタン押下
記事
Mihoko Iijima · 2021年7月28日

IRIS と他社のシステム統合製品との違い

これは InterSystems FAQ サイトの記事です。 一般的なシステム統合製品はメッセージエンジン製品を中心にビジネスプロセス管理製品、ポータル製品、ビジネスアクティビティモニタリング製品などの付随する製品を1つのパッケージ製品(スイート製品と呼ばれることも多い)として提供しています。 パッケージとして提供はしていますが、個々の構成製品は通常別々に作成されたもので、操作法、リポジトリ管理、開発手法、管理手法等が各製品バラバラでシステム統合プロジェクトを実施するに当たり、これら全ての製品に習熟するためには膨大な時間がかかります。 また各製品毎に担当者をアサインするということも考えられますが、そうすると各担当者間のコミュニケーションが必要となりプロジェクト管理の手間が増えます。 InterSystems IRIS data platform にはシステム統合に必要な全ての機能が1つの製品に含まれており、統一された操作法、一元化されたリポジトリ、1つの首尾一貫した開発/管理環境が提供されます。 従ってシステム統合プロジェクトを開始する際の敷居をかなり低くすることが可能です。
記事
Toshihiko Minamoto · 2022年9月14日

VSCode のTips & Tricks - Web ターミナル

VSCode から直接 Web ターミナルにアクセスしたいと思いませんか? ![](/sites/default/files/inline/images/images/image(1532).png) これは、VSCode のTips & Tricksシリーズの記事です。SOAP ウィザードに関する前の記事に非常によく似ています。 原理と結果は同じですが、ユースケースは異なります。 VSCode から Web ターミナルを開きたいと仮定します(この優れたツールをまだあまり使用できない方は、作成者 @Nikita.Savchenko7047 本人のこちらの[ホームページ](https://intersystems-community.github.io/webterminal/)をご覧ください)。前の記事で説明したものに似たアプローチを使用できます。 もう一度その手順を説明します - * ObjectScript 拡張機能の JSON 設定を開きます。 * 'conn' オブジェクトに 'links' オブジェクトを追加します。 * 'links' 内に以下の行を追加します。             "$(terminal) WebTerminal": "${serverUrl}/terminal/?ns=${ns}${serverAuth}"   以下のようになります。 ![](/sites/default/files/inline/images/images/image(1535).png)   これを行ったら、VSCode の下のステータスバーで[接続]をクリックすると、メニューに Web ターミナルが表示されます。 これは、[こちら](https://github.com/intersystems-community/vscode-objectscript/pull/444)の VSCode ObjectScript の GitHub 課題ディスカッション(上記の URL で使用される ${...} 変数に関する内容)で @John.Murray が提案したものです。 以下の GIF では、このプロセスを簡単に実演しています(標準のメニューから Web ターミナルを起動するオプションまで)。 ![](/sites/default/files/inline/images/vscodewebterminalvideo.gif)    
記事
Toshihiko Minamoto · 2022年9月20日

データ移行ツール パート 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)という優れた記事で紹介されています。 ## 移行プロセス用のサンプルデータを取得 GitHub では、2 つのデータベースをビルドして実行する Docker Compose プロジェクトをダウンロードできます。 * **ソースデータベース**: サンプルデータベースを含む DB2 データベースの Docker インスタンス。 * **ターゲットデータベース**: ソースデータベースを受け取る準備のできたスキーマを含む InterSystems IRIS データプラットフォームの Docker インスタンス。 **サンプルを取得して実行するには、以下の手順に従います。** 1. git リポジトリの https://github.com/yurimarx/migration-db2-iris に移動します。 2. プロジェクトを Clone します。git clone https://github.com/yurimarx/migration-db2-iris.git   3. migration-db2-iris プロジェクトフォルダに移動します。 4. ビルドを実行します: docker-compose build 5. コンテナを実行します: docker-compose up -d 6. Docker デスクトップで、インスタンスに問題がないことを確認します。 ![](/sites/default/files/inline/images/images/image(3531).png) ## 移行するデータについて 最初の 2 つのパートでは、販売データベースを操作しました。 DB 2 の場合は、インストールにサンプルデータベース(より完全な販売データベース)が含まれているため、この記事ではそのデータベースを使用します。 移行されるデータは以下のとおりです。 ![](/sites/default/files/inline/images/images/image(3532).png) DB 2 から IRIS への移行プロセスには、22 個のテーブルが含まれます。 移行先は、InterSystems IRIS データベースの USER ネームスペース内にある dc_test スキーマです。 ## DB2 から IRIS に移行するためのオープンソースツール: DBeaver DBeaver は、市場に出回っている主要データベース製品を使用する際に、データオブジェクトを接続、作成、ドロップ、選択、更新、および削除するデータベースツールです。 https://openexchange.intersystems.com/package/DBeaver からダウンロードできます。 インストール手順に従って、この優れた製品をノートパソコンかデスクトップにインストールしてください。 DBeaver は、データベースのメーカーやバージョンが異なる場合であっても、データベース接続間でデータを移行するために使用できます。 ## DBeaver を使って、ソースデータベースとターゲットデータベースを接続 移行するデータベース接続を設定します。 **DBeaver への DB2 接続を設定するには:** 1.    DB2 への初回接続には、5~10 分かかります。 これは、Docker インスタンスが作成された後に DB2 スクリプトがサンプルを構築するために必要な時間です。 2.    DBeaver で、[ファイル]>[新規作成]に移動します。 3.    [データベース接続]を選択して、[次へ]をクリックします。 ![](/sites/default/files/inline/images/images/image(3533).png) 4.    [SQL]タブ >[DB2 LUW]を選択して、[次へ]をクリックします。 ![](/sites/default/files/inline/images/images/image(3534).png) 5.    以下の図に示されるように、DB2 接続のフィールドに入力します。 ●    ホスト: localhost●    ポート: 50000●    データベース: sample●    ユーザー名: db2inst1●    パスワード: password●    [終了]をクリックします。 **DBeaver への InterSystems IRIS 接続を設定するには:** 1.    DBeaver で、[ファイル]>[新規作成]に移動します。 2.    [データベース接続]を選択して、[次へ]をクリックします。 ![](/sites/default/files/inline/images/images/image(3537).png) 3.    [SQL]タブ >[InterSystems IRIS]を選択して、[次へ]をクリックします。 ![](/sites/default/files/inline/images/images/image(3538).png) 4.    DBeaver が InterSystems IRIS ドライバーのダウンロードを要求したら、[はい]または[OK]を押します。 5.    以下の図に示されるように、InterSystems IRIS 接続のフィールドに入力します。 ●    ホスト: localhost●    データベース/スキーマ: user●    ユーザー名: _SYSTEM●    パスワード: SYS●    [テスト接続]と[終了]をクリックします。 接続(sample と user)がデータベースナビゲーターで利用できるようになります。 ![](/sites/default/files/inline/images/images/image(3540).png) ## 移行を行う 移行を行うには、以下の手順に従います。 1.    sample 接続(DB2 接続)> public を展開し、すべてのテーブルを選択します。 以下の図のように、選択したテーブルを右クリックして、[データをエクスポート]を選択します。 ![](/sites/default/files/inline/images/images/image(3541).png) 2.    以下の図のようにデータベースを選択して、[次へ]をクリックします。 ![](/sites/default/files/inline/images/images/image(3542).png) 3.    [選択]ボタンをクリックします。 ![](/sites/default/files/inline/images/images/image(3543).png) 4.    dc_test を選択して、[OK]をクリックします。 ![](/sites/default/files/inline/images/images/image(3544).png) 5.    IRIS と DB2 では、XML 値の格納に異なるデータ型が使用されているため、ターゲットデータベースのデータ型構成を変更する必要があります。 6.    DB2INST1.CATALOG テーブルを展開して CATALOG フィールド(XML フィールド型)を選択し、[列…]をクリックします。 ![](/sites/default/files/inline/images/images/image(3545).png) 7.    ターゲットの型を LONGVARBINARY から VARCHAR(10000) に変更して、[OK]をクリックします。   ![](/sites/default/files/inline/images/images/image(3546).png) 8.    このプロセスを他のテーブルで繰り返します。 a.    CUSTOMER の INFO と HISTORY フィールド b.    PRODUCT の DESCRIPTION フィールド c.    SUPPLIERS の ADDR フィールド d.    PURCHASEORDER の PORDER フィールド 9.    ターゲットデータ型の変更が完了したら、[次へ]をクリックします。 ![](/sites/default/files/inline/images/images/image(3547).png) 10.    [フェッチサイズ]を 1000000 に設定して、[次へ]をクリックします。 ![](/sites/default/files/inline/images/images/image(3548).png) 11.    データ読み込み設定のデフォルト値を受け入れて、[次へ]をクリックします。 ![](/sites/default/files/inline/images/images/image(3549).png) 12.    [確認]で[続行]をクリックします。 ![](/sites/default/files/inline/images/images/image(3550).png) 13.    これで、データベースナビゲーターで、InterSystems IRIS dc_test スキーマ内のすべての DB2 テーブルが表示されるようになりました。 ![](/sites/default/files/inline/images/images/image(3551).png) テーブルの移行プロセスは非常に単純でしたが、 ビュー、関数、トリガー、およびストアドプロシージャについては、ObjectScript か SQL で SQL ソースコードを書き直す必要があります。