検索

クリアフィルター
記事
Mihoko Iijima · 2020年7月20日

【はじめてのInterSystems IRIS】セルフラーニングビデオ:アクセス編:IRIS で作成する REST サーバの仕組み

IRIS で作成する REST サーバの仕組みを解説します。 このビデオには、以下の関連ビデオがあります。 IRISの基本操作についてのビデオ(索引ページ) InterSystems開発者コミュニティ biginnerタグ一覧 もくじ 0:55~ 今回の説明内容解説と関連ビデオについて IRISでのJSON操作について 手動によるRESTディスパッチクラスの作成 APIファーストによるRESTディスパッチクラスの作成 3:00~ RESTとは? 3:52~ 動作の仕組み 6:23~ RESTディスパッチクラスとは 8:04~ RESTディスパッチクラスの実装方法 8:34~ RESTディスパッチクラス:全て手動で作成する方法 概要 9:30~ RESTディスパッチクラス:APIファーストで作成する方法 概要 11:12~ 共通:ベースURLの設定(管理ポータルでの設定) 11:37~最後まで 確認できたこと ※YouTubeでご覧いただくと、もくじの秒数にジャンプできます。
記事
Megumi Kakechi · 2023年6月6日

DockerにWebGatewayをインストールする方法

これは InterSystems FAQ サイトの記事です。 こちらでは、InterSystems Container Registry(ICR) より入手可能なコンテナイメージを使用する方法をご案内します。 ※WRCDirectのダウンロードサイト より入手可能なイメージを使用する場合も同じようにできます。 その際、Name:Web でフィルタリングしていただくと、Web Gateway の Docker イメージが見つけやすくなります。※インターシステムズが提供する webgateway コンテナイメージには、Web ゲートウェイと Apache Web サーバの両方が含まれています。 【手順】 1. ブラウザより https://containers.intersystems.com/ にアクセスし、インターシステムズWRC認証情報でログインします。 2. Dockerログイントークンかログインコマンドを取得します。 3. 取得した認証情報を使い、Dockerインターフェース(PowerShellウインドウやLinuxコマンドラインなど)でICRへの認証を行います。 以下の例のように、表示されるDocker ログインコマンドをコピー、ペーストすることで認証できます。 docker login -u="provided_username" -p="provided_password" containers.intersystems.com 4. 利用可能なコンテナイメージを確認します。  ICRウェブポータル にWRCアカウントでログインし、  InterSystems IRIS Product Family > webgateway > バージョン(例:2023.1.0.229.0) をクリックすると、以下のような pull コマンドを確認できます。 ※開発者コミュニティで作成されたアカウントの場合は、Communityエディションのみダウンロードすることが可能です。 webgateway2023.1.0.229.0 Linux/amd64: docker pull containers.intersystems.com/intersystems/webgateway:2023.1.0.229.0 Linux/arm64: docker pull containers.intersystems.com/intersystems/webgateway-arm64:2023.1.0.229.0 ※キットから直接の場合 docker load -i webgateway-2023.1.0.229.0-docker.tar.gz 5. 次のようなイメージができていることを確認します。 $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE containers.intersystems.com/intersystems/webgateway 2023.1.0.229.0 1a690ab8d70c 5 days ago 300MB 6. CSP.ini および CSP.conf ファイルを用意します。  ※既存の構成を失うことなくコンテナをアップグレードできる 永続的な %SYS 機能 で実行します(オプション) ※今回は、Web ゲートウェイの構成が格納されているコンテナ内に /dur と呼ばれる永続的なデータディレクトリを作成します。  ホストOSは /data/dur 以下に上記構成ファイルを用意します。 サンプルの CSP.conf は以下のようになります。 # CSP config file CSPModulePath "/opt/webgateway/bin/"CSPConfigPath "/opt/webgateway/bin/" <Location "/csp/bin/Systems/"> SetHandler csp-handler-sa</Location><Location "/csp/bin/RunTime/"> SetHandler csp-handler-sa</Location> <Directory "/opt/webgateway/bin/"> AllowOverride None Options None Require all granted <FilesMatch "\.(log|ini|pid|exe)$"> Require all denied </FilesMatch></Directory><Location /csp> CSP On SetHandler csp-handler-sa</Location> 7. webgateway コンテナを作成します。 ※ホストのポート:8080 ににコンテナのポート:80 を割り当てます。 $ docker run -d --name wg11 --publish 8080:80 --volume /data/dur:/dur --env ISC_DATA_DIRECTORY=/dur --env ISC_CSP_INI_FILE=/dur/CSP.ini --env ISC_CSP_CONF_FILE=/dur/CSP.conf containers.intersystems.com/intersystems/webgateway:2023.1.0.229.0 ※Docker for Windows の場合 docker run -d --name wg11 --publish 8080:80 --volume C:/data/dur:/dur --env ISC_DATA_DIRECTORY=/dur --env ISC_CSP_INI_FILE=/dur/CSP.ini --env ISC_CSP_CONF_FILE=/dur/CSP.conf containers.intersystems.com/intersystems/webgateway:2023.1.0.229.0 8. Webゲートウェイに接続します。 http://localhost:8080/csp/bin/Systems/Module.cxw 接続に成功すると、以下のような画面が表示されます。 9. サーバアクセス(Server Access)の設定で、IRISサーバの情報を設定すると、管理ポータルには以下のURLでアクセスできます。 http://localhost:8080/csp/bin/Systems/Module.cxw 詳細は以下のドキュメントをご覧ください。 InterSystems Web ゲートウェイ・コンテナの使用法 【ご参考】Apache Webサーバ(プライベートWebサーバ: PWS)インストレーションの廃止

#コンテスト

144 投稿1 フォロワー
記事
Makiko Kokubun · 2021年4月27日

動画:IntegratedML ー SQLから始める機械学習

*この動画は、2021年2月に開催された「InterSystems Japan Virtual Summit 2021」のアーカイブです。 機械学習やAIの進歩が、社会的にも大きな話題になっています。 しかしながら、実際に機械学習を活用したシステムを開発し、ビジネスに生かすところに到達するまでには様々な課題があります。例えば、データサイエンティストと呼ばれる高度なスキルを持った人材の不足もその一つです。 InterSystems は、アプリケーション開発者の方々が、IRIS data platform に保存されているデータとSQLを用いて、機械学習を容易に利用できる仕組み「IntegratedML」を開発しました。この動画では、IntegratedML の仕組みや使い方について解説します。 間もなくリリース予定の InterSystems IRIS 2021.1 に、IntegratedML が含まれます。現在 2021.1のプレビュー版を公開中です。 詳しくはこちらをご覧ください。 本動画ではデモを行っています。デモをご覧になりたい方は 16:36 からご覧ください。
記事
Megumi Kakechi · 2021年9月1日

SQL文ではなくユーザコードでクラスクエリを記述する方法

これは InterSystems FAQ サイトの記事です。 InterSystems製品のクラスクエリにはSQL文を利用する方法と、ユーザコードによる記述が選択できます。 スタジオメニューの [クラス] >[追加] > [クエリ] を選択すると、クエリウィザードが起動します。 画面に、「実装」を選択する項目があり、「このクエリはユーザコードで定義されている」を選択すると SQL文ではなく、ユーザコードによりクエリ定義が行えます。 次画面以降では、必要な情報として、入力パラメータ、結果セットの選択カラムの指定を行います。 ウィザード終了後、ユーザコードのひな型として、以下のメソッドがクラス定義に追加されます。 {QueryName}Execute() {QueryName}Fetch() {QueryName}Close() ({QueryName}はクエリウィザードで指定するクエリ名です。) これらのメソッドに実際に実行したいユーザコードを記述していきます。 以下に、詳細記述とJavaから呼び出すサンプルがございますのでご参照ください。 https://github.com/Intersystems-jp/classquery_sample
記事
Hiroshi Sato · 2020年10月15日

カウンタとして時間経過を正確に計測する方法

これはInterSystems FAQ サイトの記事です。 $ZHorologを使用します。 $ZHorologシステム変数はInterSystems製品を起動してからの経過時間(秒)を保持しています。 2点間の$ZHorolog値の差を取るだけで正確な経過時間を取得する事が出来ます。 詳しくは以下、ドキュメントをご参照ください。 $ZHorologについて【IRIS】 $ZHorologについて この他、秒の小数部を含む時間の日付と時間の取得には $NOW, $ZTimeStamp が使用できます。 詳しくは以下、ドキュメントをご参照ください。 $NOWについて【IRIS】$NOWについて$ZTimeStampについて【IRIS】$ZTimeStampについて

#.NET

11 投稿0 フォロワー

#ビジネスプロセス(BPL)

3 投稿0 フォロワー

#ビジネスオペレーション

10 投稿0 フォロワー

#システム管理

212 投稿0 フォロワー
記事
Tomoko Furuzono · 2025年4月10日

サーバのIPアドレスやマシン名をオブジェクトスクリプトで取得する

これはInterSystems FAQサイトの記事です。 サーバのIPアドレスやマシン名は、%SYSTEM.INetInfoクラスのメソッドで取得することが出来ます。 set hostname=$System.INetInfo.LocalHostName() //マシン(ホスト)名 set ip=$system.INetInfo.HostNameToAddr($system.INetInfo.LocalHostName())  //IPアドレス
記事
Megumi Kakechi · 2021年2月18日

jQueryを使用してIRISからJSONデータを取得する方法

jQuery($.getJSON と $.ajax)を使用した InterSystems IRIS データのJSON形式での取得方法をご紹介します。 以下にサンプルをご用意しました。 https://github.com/Intersystems-jp/REST_JSON_sample サンプルには、次の内容が含まれます。 ・REST + JSON・REST + CORS ※それぞれ、$.getJSON と $.ajax で取得する方法を記載しています。 ※サーバ側ではSelect文の実行結果をJSON_OBJECT関数を使用しJSON文字列で出力しています。 関数については以下のドキュメントをご覧ください。 JSON_OBJECT関数 使用手順は以下になります。 1. USERネームスペースに json.xml をインポート・コンパイル 2. テスト用データの作成(ターミナルで以下のコマンドを実行する) USER>do ##class(Sample.Person).Populate(200) 3. 初期設定(REST用) 管理ポータル > セキュリティ管理 > ウェブ・アプリケーション 新しいウェブ・アプリケーションを作成ボタンを押す 名前 /csp/user/rest ネームスペース USER ディスパッチ・クラス REST.Person 保存ボタンを押す 4. test_json.html をWEBサーバに配置する 例: C:\Inetpub\wwwroot <-- IIS ルート C:\InterSystems\IRIS\CSP\user <-- cspフォルダ 5. test_json.htmlをブラウザで開く 例: http://localhost/test_json.html http://localhost:52773/csp/user/test_json.html ※サンプル内のクロスドメイン対応URLは、http://127.0.0.1:52773/ を使用(PWS用サンプル) 6. テキストボックスに適当なID(1,2,100 など)を入力し、検索ボタンを押して出力結果を確認する。 ★IRISでJSONを操作する基本情報については、こちらの記事をご覧ください(ビデオもご紹介しています)。 【はじめてのInterSystems IRIS】セルフラーニングビデオ:アクセス編:IRIS での JSON の操作

#ミートアップ

4 投稿0 フォロワー

#CSP

37 投稿0 フォロワー
記事
Mihoko Iijima · 2022年7月4日

Embedded Python:ExcelからPDFに変換する方法(Windows環境のみ)

開発者の皆さん、こんにちは! PythonでExcelからPDFへ変換を行うには、pywinを使うとできるらしいので、IRISにあるデータをDataframeに設定した後Excelに出力し、ExcelからPDFに変換する流れを、Embedded Pythonで試してみました。 メモ:pywinはWindows環境下で動くモジュールのようです。 Excelに出力するデータですが、例では、SELECTの結果をDataframeに格納する方法を利用しています。グローバル変数の情報をDataframeに格納する方法については、以下の記事で詳しくご紹介しています。ぜひご参照ください。Embedded Python で IRIS グローバル($LB) を Pandas Dataframe に変換する方法 まずは、必要なモジュールをインストールする必要があるので、pywin32 モジュールを irispipを使ってインストールします。 以下の例では、IRIS for Health が c:\InterSystems\IRISHealth にインストールされている状態で実行しています。 Embedded Pythonは、IRIS/IRIS for Health どちらでも利用できます。​​​​ c:\InterSystems\IRISHealth\bin>irispip install --target c:\InterSystems\IRISHealth\mgr\python pywin32 Collecting pywin32 Using cached pywin32-304-cp39-cp39-win_amd64.whl (12.2 MB) Installing collected packages: pywin32 Successfully installed pywin32-304 // 以下省略 pywin32モジュールインストール後、以下の作業を行うことで、Embedded Python でExcelからPDFへの変換を実行できるようになりました。 専用DLL(pythoncom39.dll とpywintypes39.dll)を c:\windows\system32以下にコピー pywin32のパス2種(<IRISインストールディレクトリ>\mgr\python\win32\lib と <IRISインストールディレクトリ>\mgr\python\win32)を sys.pathに追加 IRISのサービスアカウントを管理者ユーザに変更:ご参考「サービスアカウントの変更について【IRIS】」 それぞれの手続きをご紹介します。 1. 専用DLL(pythoncom39.dll とpywintypes39.dll)を c:\windows\system32以下にコピー インストール後、さっそく import win32com.client を実行したいところですが、IRISターミナルから起動するPythonシェルで実行すると以下のエラーが出てしまいます。 >>> import win32com.client Traceback (most recent call last): File "<input>", line 1, in <module> File "c:\intersystems\irishealth\mgr\python\win32com\__init__.py", line 5, in <module> import win32api, sys, os ModuleNotFoundError: No module named 'win32api このエラーをググりますと、以下の投稿に辿り着き、 How to fix "ImportError: DLL load failed" while importing win32api 👆52番の回答を試してみると、インポートできるようになりました。 具体的な手続きは以下の通りです。 irispipでインストールしたpywin32の2種類のDLL(pythoncom39.dll とpywintypes39.dll)を c:\windows\system32にコピーします。 irispipでインストールされる場所:<IRISインストールディレクトリ>\mgr\python\pywin32_system32 例)C:\InterSystems\IRISHealth\mgr\python\pywin32_system32 2. pywin32のパス2種を sys.pathに追加 import win32com.client を行うため、sys.pathにpywin32のインストールで用意される以下2つのディレクトリを追加する必要がありました。 参考記事:http://blog.livedoor.jp/blackcode/archives/python-win32api-import-error.html <IRISインストールディレクトリ>\mgr\python\win32\lib <IRISインストールディレクトリ>\mgr\python\win32 例は以下の通りです。 import sys sys.path += ['C:\InterSystems\IRISHealth\mgr\python\win32\lib','C:\InterSystems\IRISHealth\mgr\python\win32'] 3. IRISのサービスアカウントを管理者ユーザに変更 1、2までで、import win32com.client は成功しますが、肝心のExcelからPDFへ変換する流れでエラーが出ます😢。 どうやら、ExcelからPDF変換の流れを管理者権限で実行する必要があり、IRISのサービスアカウントが規定(SYSTEMアカウント)である場合に失敗します。 IRISのサービスアカウントを管理者に変更します(管理者権限でコマンドプロンプトを起動した後、以下のコマンドを実行します)。 例)<IRISインストールディレクトリ>\bin> irisinstall setserviceusername 構成名 ユーザ名 パスワード c:\InterSystems\IRISHealth\bin>irisinstall setserviceusername IRISHealth userx passwordx サービスアカウント変更後、IRISの再起動が必要となります。 サービスアカウントの変更について【IRIS】 ※サービスアカウントを変更した場合の注意点 サービスアカウントを LOCAL_SYSTEM から変更すると、権限が不足するため、IRIS開始時の共有メモリの取得に Large Page (※)が使用できなくなります。※Windows上でのCaché共有メモリの割り当てについて Large Pageを使用するためには、変更したアカウントに対して"メモリ内のページのロック" 特権を付与する必要があります。“メモリ内のページのロック” 特権の付与は、ローカルセキュリティポリシー(secpol.msc)より実施します。 1~3までの手続きを行った後、以下のPythonスクリプトファイルを実行できるようになります。 スクリプト例では、2つ関数を用意しています。以下それぞれの概要です。 関数:CreateExcel(ファイルフルパス) では、Test.Personテーブルを作成し、テストデータを4件登録し、Excel出力しています。(関数最後にTest.PersonをDropしています) Excel出力の為、openpyxlとpandasのインストールが必要です。irispipでインストールしてから実行してください。 例)c:\InterSystems\IRISHealth\bin\irispip install --target c:\InterSystems\IRISHealth\mgr\python openpyxlc:\InterSystems\IRISHealth\bin\irispip install --target c:\InterSystems\IRISHealth\mgr\python pandas 関数:Output(エクセルファイルフルパス,PDFファイルフルパス) では、関数CreateExcel()を呼び出し、Excelファイルを準備してから、PDF変換を行っています。 第1引数:出力したいエクセルファイル名をフルパスで指定します。例)c:\\temp\\Book4.xlsx 第2引数:Excelから変換するPDF保存名でフルパスで指定します。 例)c:\\temp\\Book4.pdf サンプルコードは以下の通りです。 import sys sys.path += ['C:\InterSystems\IRISHealth\mgr\python\win32\lib','C:\InterSystems\IRISHealth\mgr\python\win32'] # 以下 python.exeから実行する時のパス sys.path+=['c:\intersystems\irishealth\mgr\python','c:\intersystems\irishealth\lib\python'] import iris #-------------------------------------------- import win32com.client import pandas as pd import openpyxl from openpyxl.utils.dataframe import dataframe_to_rows def CreateExcel(filename): sql="create table Test.Person (Name VARCHAR(50),Email VARCHAR(50))" rs=iris.sql.exec(sql) rs=iris.sql.exec("insert into Test.Person (Name,Email) VALUES('テスト1','test1@mail.com')") rs=iris.sql.exec("insert into Test.Person (Name,Email) VALUES('テスト2','test2@mail.com')") rs=iris.sql.exec("insert into Test.Person (Name,Email) VALUES('テスト3','test3@mail.com')") rs=iris.sql.exec("insert into Test.Person (Name,Email) VALUES('テスト4','test4@mail.com')") df=iris.sql.exec("select Name,Email from Test.Person").dataframe() #df.to_excel(filename) wb=openpyxl.Workbook() ws = wb.create_sheet(title="シート1") ws.append(['行番号', '名前', 'メール']) for i,row in enumerate(dataframe_to_rows(df,header=False)): if i==0: continue ws.append(row) wb.save(filename) wb.close() rs=iris.sql.exec("drop table Test.Person") def Output(filename,pdfname): CreateExcel(filename) excel = win32com.client.Dispatch("Excel.Application") wb=excel.WorkBooks.Open(filename) wb.WorkSheets("シート1").Select() wb.ActiveSheet.ExportAsFixedFormat(0,pdfname) excel.quit() 上記コードを c:\WorkSpace\TryPython\ExcelToPDF.py に配置した状態とします。 ObjectScritpからの実行例は以下の通りです。 set sys=##class(%SYS.Python).Import("sys") do sys.path.append("c:\WorkSpace\TryPython") set e=##class(%SYS.Python).Import("ExcelToPDF") do e.Output("c:\\temp\\Book5.xlsx","c:\\temp\\Book5.pdf") Pythonシェルからの実行例は以下の通りです。 C:\WorkSpace\TryPython> python Python 3.9.10 (tags/v3.9.10:f2f3f53, Jan 17 2022, 15:14:21) [MSC v.1929 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys.path+=['C:\WorkSpace\TryPython'] >>> import ExcelToPDF as e >>> e.Output("c:\\temp\\Book6.xlsx","c:\\temp\\Book6.pdf") 少し前準備が多いですが、Pythonの機能を活用してIRISにあるデータをExcel出力+PDF変換までできました🐍 Pythonとても便利ですね!