クリアフィルター
記事
Makiko Kokubun · 2021年3月23日
*この動画は、2021年2月に開催された「InterSystems Japan Virtual Summit 2021」のアーカイブです。
この動画では、Caché/EnsembleからInterSystems IRISへの移行プロセスについてご説明しています。
Caché/Ensembleから InterSystems IRIS への移行を考えられている方は、まずこちらをご覧ください。「移行する際の注意点」、「移行の方法」、「必読ドキュメント」、「キットや評価ライセンスの入手方法」など、IRIS移行の際に必要となる情報をまとめてご案内しています。
もくじ 0:50~ InterSystemsIRIS の簡単な紹介 2:05~ サポートプラットフォームについて 2:55~ 移行方法について(インプレース変換のご紹介) ⇒インプレース変換:Caché/Ensembleから直接アップグレードが可能です(2016.2~) 5:35~ 各種ドキュメントのご紹介 7:10~ キットや評価ライセンスの入手方法10:50~ 新しいリリースサイクル(EM/CDリリース)12:25~ InterSystems IRIS 導入ガイドについて ⇒レガシー機能の取り扱いや注意点など、内容を簡単にご紹介15:40~ インプレース変換の手順とデモ(デモは19:15~)
開発者向けまとめページでは、QuickStarts、ドキュメントや開発者コミュニティへのリンク、IRIS を簡単に始めることのできるクラウド(AWS/Azure/GCP)のマーケットプレイスへのリンクなどまとめています。こちらも是非ご覧ください。
記事
Toshihiko Minamoto · 2021年4月26日

この記事には、IAM の基本概念を学習するための、教材、例、演習が含まれます。
すべてのリソースはこちらの git から入手できます: https://github.com/grongierisc/iam-training
ソリューションは [training ブランチ](https://github.com/grongierisc/iam-training/tree/training)にあります。
この記事では、次の点について説明します。
- [1. 入門](#1-introduction)
- [1.1. IAM とは?](#11-what-is-iam-)
- [1.2. API 管理とは?](#12-what-is-an-api-management-)
- [1.3. IAM ポータル](#13-iam-portal)
- [1.4. このトレーニングの流れ](#14-flow-of-this-training)
- [2. インストール](#2-installation)
- [2.1. インストールには何が必要?](#21-what-do-you-need-to-install)
- [2.2. IAM と IRIS の連携の仕組み](#22-how-iam-works-with-iris)
- [2.3. セットアップ](#23-setup)
- [2.4. IAM のインストール](#24-install-iam)
- [2.4.1. Iris イメージ](#241-iris-image)
- [2.4.2. IAM イメージ](#242-iam-image)
- [2.4.3. Docker ファイルを更新する](#243-update-the-docker-file)
- [2.4.4. docker-compose を更新する](#244-update-the-docker-compose)
- [2.4.5. オプション: .env として IRIS_PASSWORD を追加する](#245-option--add-iris_passward-as-env)
- [2.4.6. テストしよう!](#246-test-it-)
- [3. その 1: サービス/ルート](#3-first-serviceroute)
- [3.1. サービスを作成する](#31-create-a-service)
- [3.2. ルートを作成する](#32-create-a-route)
- [3.3. テストしよう!](#33-test-it-)
- [4. その 2: プラグインの使用](#4-second-go-further-with-plugin)
- [4.1. プラグインをサービスに追加する](#41-add-a-plugin-to-the-service)
- [4.2. テストしよう!](#42-test-it-)
- [5. その 3: 独自認証の追加](#5-third-add-our-own-authentication)
- [5.1. コンシューマを追加する](#51-add-consumers)
- [5.2. Basic 認証プラグインを追加する](#52-add-basic-auth-plugin)
- [5.3. ACL プラグインを追加する](#53-add-acl-plugin)
- [5.4. ACL とログイン情報で USER を構成する](#54-configure-user-with-acl-and-credentials)
- [5.5. テストしよう!](#55-test-it-)
- [6. 演習: レート制限](#6-exercice-rate-limiting)
- [6.1. ソリューション](#61-solution)
- [7. 開発者ポータル](#7-dev-portal)
- [7.1. 概要](#71-overview)
- [7.2. 有効にしよう!](#72-enable-it-)
- [7.3. 最初の仕様を追加する](#73-add-your-first-spec)
- [7.4. テストしよう!](#74-test-it-)
- [7.5. 演習](#75-exercise)
- [7.5.1. ソリューション](#751-solution)
- [8. 開発者ポータル(その 2): 認証](#8-dev-portal-part-two-authentication)
- [8.1. Basic 認証を有効にする](#81-enable-basic-auth)
- [8.2. アクセスを制限する](#82-limit-access)
- [8.2.1. ロールを作成する](#821-create-a-role)
- [8.2.2. 仕様にロールを追加する](#822-add-role-to-spec)
- [8.2.3. テストしよう!](#823-test-it-)
- [8.2.3.1. 新しい開発者を登録する](#8231-register-a-new-developer)
- [8.2.3.2. この開発者を承認する](#8232-approve-this-developer)
- [8.2.3.3. この開発者のロールを追加する](#8233-add-role-for-this-developer)
- [8.3. 開発者の Oauth2 を追加する](#83-add-oauth2-for-developer)
- [8.3.1. その 1: Basic 認証を削除する](#831-first-remove-basic-auth)
- [8.3.2. その 2: application-registration プラグインを追加する](#832-second-add-application-registration-plugin)
- [8.3.3. リンクサービスとドキュメント](#833-link-service-and-documentation)
- [8.3.3.1. テストしよう!](#8331-test-it-)
- [9. 安全な管理ポータル](#9-secure-management-portal)
- [9.1. 管理者を作成する](#91-create-an-admin)
- [9.2. Kong Manager の Basic 認証を有効にする](#92-enable-basic-auth-for-kong-manager)
- [9.3. RBAC で Kong Admin API を使用する](#93-use-kong-admin-api-with-rbac)
- [9.3.1. トークンで管理者ユーザーを作成する](#931-create-and-admin-user-with-a-token)
- [10. プラグイン](#10-plugins)
- [10.1. コミュニティプラグインをインポートする](#101-import-a-community-plugin)
- [10.1.1. コミュニティプラグインで新しい Kong/IAM docker イメージを構築する](#1011-build-a-new-kongiam-docker-image-with-the-community-plugin)
- [10.1.2. テストしよう!](#1012-test-it-)
- [10.1.2.1. 使ってみよう!](#10121-use-it-)
- [10.2. 新しいプラグインを作成する](#102-create-a-new-plugin)
- [10.2.1. ファイル構造](#1021-file-structure)
- [10.2.1.1. handler.lua](#10211-handlerlua)
- [10.2.1.1.1. 例](#102111-example)
- [10.2.1.2. schema.lua](#10212-schemalua)
- [10.2.1.3. *.rockspec](#10213-rockspec)
- [10.2.2. 構築しよう](#1022-build-it)
- [10.2.3. ヒント](#1023-tips)
- [11. CI/CD](#11-cicd)
- [11.1. postman コレクションを作成する](#111-create-the-postman-collection)
- [11.1.1. IAM が起動しているか](#1111-is-iam-startup-)
- [11.1.2. 古いデータを削除する](#1112-delete-old-datas)
- [11.1.3. サービス/ルートを作成する](#1113-create-serviceroute)
- [11.1.3.1. ヒント](#11131-tips)
- [11.2. newman で実行する](#112-run-it-with-newman)
# 1. 入門

## 1.1. IAM とは?
IAM は、InterSystems API Manager の略で、**Kong Enterprise Edition** が土台となっています。
このため、Kong Open Source エディションの他に、次の機能にアクセスすることができます。
* 管理者ポータル
* 開発者ポータル
* 高度プラグイン
* Oauth2
* キャッシング
* ...

## 1.2. API 管理とは?
API 管理は、Web アプリケーションプログラミングインターフェース(API)の作成と公開、その使用ポリシーの適用、アクセスの制御、サブスクライバーコミュニティの育成、使用統計の収集と分析、およびパフォーマンスのレポート作成を行うプロセスです。 API 管理コンポーネントは、開発者とサブスクライバーのコミュニティをサポートする仕組みとツールをもたらします。

## 1.3. IAM ポータル
Kong と IAM は第一に API として設計されています。つまり、Kong/IAM で行われることすべては Rest 呼び出しまたは管理者ポータルで行えるということです。
この記事の中では、すべての例や演習は次のようにして提示されています。
| IAM ポータル | Rest API |
| ----------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
|  |  |
## 1.4. このトレーニングの流れ
この記事では、IAM を IRIS Rest API のプロキシとして使用することを狙いとしています。
この Rest API の定義は、次の場所にあります。
```url
http://localhost:52773/swagger-ui/index.html#/
```
または次の場所にあります。
```url
https://github.com/grongierisc/iam-training/blob/training/misc/spec.yml
```
この記事は main ブランチから始めてください。
記事の最後に到達すると、training ブランチと同じ結果が得られるはずです。
# 2. インストール

## 2.1. インストールには何が必要?
* [Git](https://git-scm.com/downloads)
* [Docker](https://www.docker.com/products/docker-desktop)(Windows をお使いの方は、Docker インストールで「Linux コンテナ」が使用されるように設定してください)。
* [Docker Compose](https://docs.docker.com/compose/install/)
* [Visual Studio Code](https://code.visualstudio.com/download) と [InterSystems ObjectScript VSCode 拡張機能](https://marketplace.visualstudio.com/items?itemName=daimor.vscode-objectscript)
* InterSystems IRIS IAM 対応のライセンスファイル
* IAM Docker イメージ
## 2.2. IAM と IRIS の連携の仕組み
Kong/IAM の起動時に、コンテナは curl 呼び出しによって、Kong/IAM のライセンスをチェックします。
この呼び出しのエンドポイントは、IRIS コンテナの Rest API です。
参考: Kong ライセンスは IRIS のライセンスに組み込まれています。

## 2.3. セットアップ
Git clone によって、次のリポジトリのクローンを作成します。
git clone https://github.com/grongierisc/iam-training
次のようにして、最初の Rest API を実行します。
docker-compose up
テストを行います。
```url
http://localhost:52773/swagger-ui/index.html#/
```
ログイン/パスワード: SuperUser/SYS
## 2.4. IAM のインストール
### 2.4.1. Iris イメージ
まず、Community エディションをライセンスエディションに切り替える必要があります。
これを行うには、InterSystems Container Registry へのアクセスをセットアップして、アクセス制限付きの IRIS イメージをダウンロードする必要があります。
[開発者コミュニティ](https://jp.community.intersystems.com)の「[InterSystems Container Registry のご紹介](https://jp.community.intersystems.com/node/496571)」をご覧ください。
* WRC ログイン情報を使って https://containers.intersystems.com/ にログインし、*トークン*を取得します。
* コンピュータに Docker ログインをセットアップします。
```bash
docker login -u="user" -p="token" containers.intersystems.com
```
* InterSystems IRIS イメージを取得します。
```bash
docker pull containers.intersystems.com/intersystems/irishealth:2020.4.0.524.0
```
### 2.4.2. IAM イメージ
[WRC Software Distribution](https://wrc.intersystems.com/wrc/coDistribution.csp) を使用します。
* コンポーネント > ダウンロードに移動して *IAM-1.5.0.9-4.tar.gz* ファイルをダウンロードし、解凍(unzip & untar)してイメージを読み込みます。
```bash
docker load -i iam_image.tar
```
### 2.4.3. Docker ファイルを更新する
IRIS Community エディションをライセンスエディションに変更します。
* containers.intersystems.com/intersystems/irishealth:2020.4.0.524.0
* key フォルダにある iris.key を追加します。
dockerfile を編集して、その上に次の部分を追加します。
```dockerfile
ARG IMAGE=containers.intersystems.com/intersystems/irishealth:2020.4.0.524.0
# 第 1 ステージ
FROM $IMAGE as iris-iam
COPY key/iris.key /usr/irissys/mgr/iris.key
COPY iris-iam.script /tmp/iris-iam.script
RUN iris start IRIS \
&& iris session IRIS < /tmp/iris-iam.script \
&& iris stop IRIS quietly
# 第 2 ステージ
FROM iris-iam
```
この部分では、マルチステージの dockerfile を作成します。
* 第 1 ステージでは、IRIS が IAM ライセンスを提供できるようにします。
* 第 2 ステージは、REST API ビルド用です。
新しい IRIS イメージを構築して IAM エンドポイントとユーザーを有効にする新しい iris-iam.script ファイルを作成します。
```objectscript
zn "%SYS"
write "Create web application ...",!
set webName = "/api/iam"
set webProperties("Enabled") = 1
set status = ##class(Security.Applications).Modify(webName, .webProperties)
write:'status $system.Status.DisplayError(status)
write "Web application "_webName_" was updated!",!
set userProperties("Enabled") = 1
set userName = "IAM"
Do ##class(Security.Users).Modify(userName,.userProperties)
write "User "_userName_" was updated!",!
halt
```
### 2.4.4. docker-compose を更新する
docker-compose ファイルを次のように更新します。
* db
* IAM の postgres データベース
* iam-migration
* データベースのブートストラップ
* iam
* 実際の IAM インスタンス
* 永続データ用のボリューム
次の部分を docker-compose ファイルの最後に追加します。
```yml
iam-migrations:
image: intersystems/iam:1.5.0.9-4
command: kong migrations bootstrap up
depends_on:
- db
environment:
KONG_DATABASE: postgres
KONG_PG_DATABASE: ${KONG_PG_DATABASE:-iam}
KONG_PG_HOST: db
KONG_PG_PASSWORD: ${KONG_PG_PASSWORD:-iam}
KONG_PG_USER: ${KONG_PG_USER:-iam}
KONG_CASSANDRA_CONTACT_POINTS: db
KONG_PLUGINS: bundled,jwt-crafter
ISC_IRIS_URL: IAM:${IRIS_PASSWORD}@iris:52773/api/iam/license
restart: on-failure
links:
- db:db
iam:
image: intersystems/iam:1.5.0.9-4
depends_on:
- db
environment:
KONG_ADMIN_ACCESS_LOG: /dev/stdout
KONG_ADMIN_ERROR_LOG: /dev/stderr
KONG_ADMIN_LISTEN: '0.0.0.0:8001'
KONG_ANONYMOUS_REPORTS: 'off'
KONG_CASSANDRA_CONTACT_POINTS: db
KONG_DATABASE: postgres
KONG_PG_DATABASE: ${KONG_PG_DATABASE:-iam}
KONG_PG_HOST: db
KONG_PG_PASSWORD: ${KONG_PG_PASSWORD:-iam}
KONG_PG_USER: ${KONG_PG_USER:-iam}
KONG_PROXY_ACCESS_LOG: /dev/stdout
KONG_PROXY_ERROR_LOG: /dev/stderr
KONG_PORTAL: 'on'
KONG_PORTAL_GUI_PROTOCOL: http
KONG_PORTAL_GUI_HOST: '127.0.0.1:8003'
KONG_ADMIN_GUI_URL: http://localhost:8002
KONG_PLUGINS: bundled
ISC_IRIS_URL: IAM:${IRIS_PASSWORD}@iris:52773/api/iam/license
volumes:
- ./iam:/iam
links:
- db:db
ports:
- target: 8000
published: 8000
protocol: tcp
- target: 8001
published: 8001
protocol: tcp
- target: 8002
published: 8002
protocol: tcp
- target: 8003
published: 8003
protocol: tcp
- target: 8004
published: 8004
protocol: tcp
- target: 8443
published: 8443
protocol: tcp
- target: 8444
published: 8444
protocol: tcp
- target: 8445
published: 8445
protocol: tcp
restart: on-failure
db:
image: postgres:9.6
environment:
POSTGRES_DB: ${KONG_PG_DATABASE:-iam}
POSTGRES_PASSWORD: ${KONG_PG_PASSWORD:-iam}
POSTGRES_USER: ${KONG_PG_USER:-iam}
volumes:
- 'pgdata:/var/lib/postgresql/data'
healthcheck:
test: ["CMD", "pg_isready", "-U", "${KONG_PG_USER:-iam}"]
interval: 30s
timeout: 30s
retries: 3
restart: on-failure
stdin_open: true
tty: true
volumes:
pgdata:
```
ルートフォルダに .env ファイルを追加します。
```env
IRIS_PASSWORD=SYS
```
ちなみに、Kong ポートの定義は次のようになっています。
| ポート | プロトコル | 説明 |
| ----- | ----- | -------------------------------------------------------- |
| :8000 | HTTP | コンシューマからの HTTP 着信トラフィックを取り、上流のサービスに転送します。 |
| :8443 | HTTPS | コンシューマからの HTTPS 着信トラフィックを取り、上流のサービスに転送します。 |
| :8001 | HTTP | 管理 API。 HTTP によるコマンドラインからの呼び出しをリスンします。 |
| :8444 | HTTPS | 管理 API。 HTTPS によるコマンドラインからの呼び出しをリスンします。 |
| :8002 | HTTP | Kong Manager(GUI)。 HTTP トラフィックをリスンします。 |
| :8445 | HTTPS | Kong Manager(GUI)。 HTTPS トラフィックをリスンします。 |
| :8003 | HTTP | 開発者ポータル。 開発者ポータルが有効になっていることを前提に、HTTP トラフィックをリスンします。 |
| :8446 | HTTPS | 開発者ポータル。 開発者ポータルが有効になっていることを前提に、HTTPS トラフィックをリスンします。 |
| :8004 | HTTP | HTTP による開発者ポータルの /files トラフィック。開発者ポータルが有効になっていることが前提です。 |
| :8447 | HTTPS | HTTPS による開発者ポータルの /files トラフィック。開発者ポータルが有効になっていることが前提です。 |
### 2.4.5. オプション: .env として IRIS_PASSWORD を追加する
使いやすいよう(またセキュリティの理由により)、IRIS dockerfile の .env ファイルを使用できます。
使用するには、docker-compose の iris サービスの部分を次のように編集します。
```yml
build:
context: .
dockerfile: dockerfile
args:
- IRIS_PASSWORD=${IRIS_PASSWORD}
```
そして、dockerfile を編集します(ビルドの第 2 または第 1 ステージ)。
```dockerfile
ARG IRIS_PASSWORD
RUN echo "${IRIS_PASSWORD}" > /tmp/password.txt && /usr/irissys/dev/Container/changePassword.sh /tmp/password.txt
```
### 2.4.6. テスト
docker-compose -f "docker-compose.yml" up -d --build
# 3. その 1: サービス/ルート

Kong/IAM の連携の仕組みを覚えていますか?

ここでは、次の項目を構築します。
* サービス
* crud API 用
* ルート
* このサービスにアクセスするためのルート
## 3.1. サービスを作成する
IAM ポータル
Rest API
# サービスを作成する
curl -i -X POST \
--url http://localhost:8001/services/ \
--data 'name=crud' \
--data 'url=http://iris:52773/crud/'
ここで確認したこと: サービスの作成するには、その URL のみが必要です。
## 3.2. ルートを作成する
IAM ポータル
Rest API
# ルートを作成する
curl -i -X POST \
--url http://localhost:8001/services/crud/routes \
--data 'name=crud-route' \
--data 'paths=/persons/*' \
--data 'strip_path=false'
ルートの作成には、次の項目が必要です。
* サービス名
* RegEx が許可されているパス
## 3.3. テスト
元の API
プロキシ API
# レガシー
curl –i --location --request GET 'http://localhost:52773/crud/persons/all' \
--header 'Authorization: Basic U3VwZXJVc2VyOlNZUw=='
# KONG
curl –i --location --request GET 'http://localhost:8000/persons/all' \
--header 'Authorization: Basic U3VwZXJVc2VyOlNZUw=='
ここで確認したこと:
* レガシー側は何も変わらない
* Kong 側:
* ポートを変更する
* パスはルートに対応する
* 依然として認証が必要
# 4. その 2: プラグインの使用
次に、IRIS エンドポイントに対して Kong の自動認証を行ってみましょう。
これを行うために、resquest-transformer というプラグインを使用します。

## 4.1. プラグインをサービスに追加する
IAM ポータル
Rest API
# プラグインを作成する
curl -i -X POST \
--url http://localhost:8001/services/crud/plugins \
--data 'name=request-transformer' \
--data 'config.add.headers=Authorization:Basic U3VwZXJVc2VyOlNZUw==' \
--data 'config.replace.headers=Authorization:Basic U3VwZXJVc2VyOlNZUw=='
## 4.2. テスト
元の API
プロキシ API
# レガシー
curl –i --location --request GET 'http://localhost:52773/crud/persons/all'
# KONG
curl –i --location --request GET 'http://localhost:8000/persons/all'
ここで確認したこと:
* 元の API にエラー 401 が発生する
* 認証を行わずにデータに到達した
# 5. その 3: 独自認証の追加
ここでは、元の API を損なうことなく、独自の認証を追加してみましょう。

## 5.1. コンシューマを追加する
IAM ポータル
Rest API
# コンシューマ anonymous を追加する
curl -i -X POST \
--url http://localhost:8001/consumers/ \
--data "username=anonymous" \
--data "custom_id=anonymous"
# コンシューマ user を追加する
curl -i -X POST \
--url http://localhost:8001/consumers/ \
--data "username=user" \
--data "custom_id=user"
## 5.2. Basic 認証プラグインを追加する
IAM ポータル
Rest API
# サービスの Basic 認証を有効にする
curl -i -X POST http://localhost:8001/routes/crud-route/plugins \
--data "name=basic-auth" \
--data "config.anonymous=5cc8dee4-066d-492e-b2f8-bd77eb0a4c86" \
--data "config.hide_credentials=false"
説明:
* config.anonymous = anonymous コンシューマの uuid
## 5.3. ACL プラグインを追加する
IAM ポータル
Rest API
# ACL を有効にする
curl -i -X POST http://localhost:8001/routes/crud-route/plugins \
--data "name=acl" \
--data "config.whitelist=user"
## 5.4. ACL とログイン情報で USER を構成する
IAM ポータル
Rest API
# コンシューマグループを追加する
curl -i -X POST \
--url http://localhost:8001/consumers/user/acls \
--data "group=user"
# コンシューマのログイン情報を追加する
curl -i -X POST http://localhost:8001/consumers/user/basic-auth \
--data "username=user" \
--data "password=user"
## 5.5. テスト
元の API
プロキシ API
# レガシー
curl –i --location --request GET 'http://localhost:52773/crud/persons/all' \
--header 'Authorization:Basic dXNlcjp1c2Vy'
# KONG
curl –i --location --request GET 'http://localhost:8000/persons/all' \
--header 'Authorization:Basic dXNlcjp1c2Vy'
# 6. 演習: レート制限
1. 認証されていないユーザーを有効にする
2. 認証されていないユーザーのレートを 1 分あたり 2 回の呼び出しに制限する
## 6.1. ソリューション
1. 認証されていないユーザーを有効にする
IAM ポータル
Rest API
# コンシューマグループを追加する
curl -i -X POST \
--url http://localhost:8001/consumers/anonymous/acls \
--data "group=user"
2. 認証されていないユーザーのレートを 1 分あたり 2 回の呼び出しに制限する
IAM ポータル
Rest API
# レート制限のあるコンシューマを追加する
curl -i -X POST \
--url http://localhost:8001/consumers/anonymous/plugins \
--data "name=rate-limiting" \
--data "config.limit_by=consumer" \
--data "config.minute=2"
# 7. 開発者ポータル

## 7.1. 概要
Kong Developer Portal(Kong 開発者ポータル)では以下が提供されます。
* すべての開発者が信頼できる唯一の情報源
* 直感的なドキュメントのコンテンツ管理
* 合理化された開発者オンボーディング
* ロールベースのアクセス制御(RBAC)

## 7.2. 有効化
IAM ポータル
Rest API
curl -X PATCH http://localhost:8001/workspaces/default --data "config.portal=true"
## 7.3. 最初の仕様を追加する
IAM ポータル
Rest API
curl -X POST http://localhost:8001/default/files -F "path=specs/iam-training.yml" -F "contents=@misc/spec.yml"
## 7.4. テスト
```url
http://localhost:8003/default/documentation/iam-training
```
何が起こりましたか?
これを解決するには?
## 7.5. 演習
1. CORS プラグインをルートに追加する
### 7.5.1. ソリューション
IAM ポータル
Rest API
# CORS を有効にする
curl -i -X POST http://localhost:8001/routes/crud-route/plugins \
--data "name=cors"
# 8. 開発者ポータル(その 2): 認証
## 8.1. Basic 認証を有効にする
IAM ポータル
セッション構成(JSON)
{
"cookie_secure": false,
"cookie_name": "portal_session",
"secret": "SYS",
"storage": "kong"
}
これで、開発者ポータルの認証が有効になりました。
## 8.2. アクセスを制限する
デフォルトでは、認証されていないユーザーがすべてにアクセスできるようになっています。
ロールを作成することで、アクセスを制限することができます。
例として、CRUD API ドキュメントへのアクセスを制限してみましょう。
### 8.2.1. ロールを作成する
IAM ポータル
Rest API
# ロールを有効にする
curl -i -X POST http://localhost:8001/default/developers/roles \
--data "name=dev"
### 8.2.2. 仕様にロールを追加する
IAM ポータル
Rest API
# ロールを有効にする
curl 'http://localhost:8001/default/files/specs/iam-training.yml' -X PATCH -H 'Accept: application/json, text/plain, */*' --compressed -H 'Content-Type: application/json;charset=utf-8' -H 'Origin: http://localhost:8002' -H 'Referer: http://localhost:8002/default/portal/permissions/' --data-raw $'{"contents":"x-headmatter:\\n readable_by:\\n - dev\\nswagger: \'2.0\'\\ninfo:\\n title: InterSystems IRIS REST CRUD demo\\n description: Demo of a simple rest API on IRIS\\n version: \'0.1\'\\n contact:\\n email: apiteam@swagger.io\\n license:\\n name: Apache 2.0\\n url: \'http://www.apache.org/licenses/LICENSE-2.0.html\'\\nhost: \'localhost:8000\'\\nbasePath: /\\nschemes:\\n - http\\nsecurityDefinitions:\\n basicAuth:\\n type: basic\\nsecurity:\\n - basicAuth: []\\npaths:\\n /:\\n get:\\n description: \' PersonsREST general information \'\\n summary: \' Server Info \'\\n operationId: GetInfo\\n x-ISC_CORS: true\\n x-ISC_ServiceMethod: GetInfo\\n responses:\\n \'200\':\\n description: (Expected Result)\\n schema:\\n type: object\\n properties:\\n version:\\n type: string\\n default:\\n description: (Unexpected Error)\\n /persons/all:\\n get:\\n description: \' Retreive all the records of Sample.Person \'\\n summary: \' Get all records of Person class \'\\n operationId: GetAllPersons\\n x-ISC_ServiceMethod: GetAllPersons\\n responses:\\n \'200\':\\n description: (Expected Result)\\n schema:\\n type: array\\n items:\\n $ref: \'#/definitions/Person\'\\n default:\\n description: (Unexpected Error)\\n \'/persons/{id}\':\\n get:\\n description: \' Return one record fo Sample.Person \'\\n summary: \' GET method to return JSON for a given person id\'\\n operationId: GetPerson\\n x-ISC_ServiceMethod: GetPerson\\n parameters:\\n - name: id\\n in: path\\n required: true\\n type: string\\n responses:\\n \'200\':\\n description: (Expected Result)\\n schema:\\n $ref: \'#/definitions/Person\'\\n default:\\n description: (Unexpected Error)\\n put:\\n description: \' Update a record in Sample.Person with id \'\\n summary: \' Update a person with id\'\\n operationId: UpdatePerson\\n x-ISC_ServiceMethod: UpdatePerson\\n parameters:\\n - name: id\\n in: path\\n required: true\\n type: string\\n - name: payloadBody\\n in: body\\n description: Request body contents\\n required: false\\n schema:\\n type: string\\n responses:\\n \'200\':\\n description: (Expected Result)\\n default:\\n description: (Unexpected Error)\\n delete:\\n description: \' Delete a record with id in Sample.Person \'\\n summary: \' Delete a person with id\'\\n operationId: DeletePerson\\n x-ISC_ServiceMethod: DeletePerson\\n parameters:\\n - name: id\\n in: path\\n required: true\\n type: string\\n responses:\\n \'200\':\\n description: (Expected Result)\\n default:\\n description: (Unexpected Error)\\n /persons/:\\n post:\\n description: \' Creates a new Sample.Person record \'\\n summary: \' Create a person\'\\n operationId: CreatePerson\\n x-ISC_ServiceMethod: CreatePerson\\n parameters:\\n - name: payloadBody\\n in: body\\n description: Request body contents\\n required: false\\n schema:\\n type: string\\n responses:\\n \'200\':\\n description: (Expected Result)\\n default:\\n description: (Unexpected Error)\\ndefinitions:\\n Person:\\n type: object\\n properties:\\n Name:\\n type: string\\n Title:\\n type: string\\n Company:\\n type: string\\n Phone:\\n type: string\\n DOB:\\n type: string\\n format: date-time\\n"}'
ここでは、次の箇所が重要です。
```yml
x-headmatter:
readable_by:
- dev
```
次のドキュメントを参照してください: 「[readable_by attribute](https://docs.konghq.com/enterprise/1.5.x/developer-portal/administration/developer-permissions/#readable_by-attribute)」(readable_by 属性)
### 8.2.3. テスト
#### 8.2.3.1. 新しい開発者を登録する

#### 8.2.3.2. この開発者を承認する

#### 8.2.3.3. この開発者のロールを追加する

curl 'http://localhost:8001/default/developers/dev@dev.com' -X PATCH --compressed -H 'Content-Type: application/json;charset=utf-8' -H 'Cache-Control: no-cache' -H 'Origin: http://localhost:8002' -H 'DNT: 1' -H 'Connection: keep-alive' -H 'Referer: http://localhost:8002/default/portal/permissions/dev/update' -H 'Pragma: no-cache' --data-raw '{"roles":["dev"]}'
## 8.3. 開発者向け Oauth2 を追加する
ここでは、開発者が安全に crud API を使用できるよう、Oauth2 認証を追加します。
このフローでは、開発者自身が登録を行い、crud API へのアクセス権を付与します。
### 8.3.1. その 1: Basic 認証を削除する
これを行うには、Basic 認証を BearToken 認証に置き換えます。
まず、Basic 認証/ACL を無効にします。
IAM ポータル
Rest API
# ACL プラグインを無効にする
curl 'http://localhost:8001/default/routes/afefe836-b9be-49a8-927a-1324a8597a9c/plugins/3f2e605e-9cb6-454a-83ec-d1b1929b1d30' -X PATCH --compressed -H 'Content-Type: application/json;charset=utf-8' -H 'Cache-Control: no-cache' -H 'Origin: http://localhost:8002' -H 'DNT: 1' -H 'Connection: keep-alive' -H 'Referer: http://localhost:8002/default/plugins/acl/3f2e605e-9cb6-454a-83ec-d1b1929b1d30/update' -H 'Pragma: no-cache' --data-raw '{"enabled":false,"name":"acl","route":{"id":"afefe836-b9be-49a8-927a-1324a8597a9c"},"config":{"hide_groups_header":false,"whitelist":["user","dev","crud"]}}'
### 8.3.2. その 2: application-registration プラグインを追加する
IAM ポータル
Rest API
# application-registration プラグインを作成する
curl -i -X POST \
--url http://localhost:8001/services/crud/plugins \
--data 'name=application-registration' \
--data 'config.auth_header_name=authorization' \
--data 'config.auto_approve=true' \
--data 'config.display_name=auth' \
--data 'config.enable_client_credentials=true'
### 8.3.3. リンクサービスとドキュメント
IAM ポータル
Rest API
curl 'http://localhost:8001/default/document_objects' --compressed -H 'Content-Type: application/json;charset=utf-8' -H 'Cache-Control: no-cache' -H 'Origin: http://localhost:8002' -H 'DNT: 1' -H 'Connection: keep-alive' -H 'Referer: http://localhost:8002/default/services/create-documentation' -H 'Pragma: no-cache' --data-raw '{"service":{"id":"7bcef2e6-117c-487a-aab2-c7e57a0bf61a"},"path":"specs/iam-training.yml"}'
#### 8.3.3.1. テスト
dev@dev.com としてログインした開発者ポータルで、新しいアプリケーションを作成します。

client_id と client_secret を提供されます。
これらの情報は、Swagger 開発者ポータルで使用できます。
このアプリケーションを crud サービスに登録します。

トークンを取得する:
curl --insecure -X POST https://localhost:8443/persons/oauth2/token \
--data "grant_type=client_credentials" \
--data "client_id=2TXNvDqjeVMHydJbjv9t96lWTXOKAtU8" \
--data "client_secret=V6Vma6AtIvl04UYssz6gAxPc92eCF4KR"
トークンを使用する:
curl --insecure -X GET https://localhost:8443/persons/all \
--header "authorization: Bearer u5guWaYR3BjZ1KdwuBSC6C7udCYxj5vK"
# 9. セキュアな管理ポータル
## 9.1. 管理者を作成する
シードパスワードなしでKong をブートしました。
そのため、RBAC を適用する前に、管理者を作成する必要があります。
これを行うために、次を行ってください。
* [チーム]に移動します。
* 管理者を招待します。
* メールを設定します。
* ユーザー名を設定します。
* ロールをスーパー管理者に設定します。
* 招待します。
* [招待された管理者]に移動します。
* 表示します。
* リンクを生成します。

## 9.2. Kong Manager の Basic 認証を有効にする
この機能を有効にするには、docker-compose ファイルに変更を加える必要があります。
次のコードを iam サービスの環境に追加します。
```yml
KONG_ENFORCE_RBAC: 'on'
KONG_ADMIN_GUI_AUTH: 'basic-auth'
KONG_ADMIN_GUI_SESSION_CONF: '{"secret":"${IRIS_PASSWORD}","storage":"kong","cookie_secure":false}'
```
コンテナを再起動します。
docker-compose down && docker-compose up -d
招待された管理者のリンクに移動します。
```url
http://localhost:8002/register?email=test.test%40gmail.com&username=admin&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MTYzMzYzNzEsImlkIjoiY2JiZGE5Y2UtODQ3NS00MmM2LTk4ZjItNDgwZTI4MjQ4NWNkIn0.sFeOc_5UPIr3MdlQrgyGvmvIjRFvSn3nQjo2ph8GrJA
```
## 9.3. RBAC で Kong Admin API を使用する
RBAC が設定されたため、Kong Admin API は使用できません。
curl -s -X GET \
--url http://localhost:8001/routes
このエラーが発生します。
```json
{"message":"Invalid credentials. Token or User credentials required"}
```
### 9.3.1. トークンで管理者ユーザーを作成する
* [チーム]に移動します。
* RBAC ユーザー
* 新しいユーザーを追加

curl -s -X GET \
--url http://localhost:8001/routes \
--header "Kong-Admin-Token: SYS"
# 10. プラグイン

Kong には品質の高いプラグインが付属しています。
しかし、組み込まれていないプラグインが必要となった場合は、どうすればよいのでしょうか。 コミュニティプラグインを使用する場合はどうすればよいのでしょうか。
この章では、コミュニティプラグインとそのインポート方法について説明します。
その後で、独自のプラグインの構築方法を確認しましょう。
## 10.1. コミュニティプラグインをインポートする
このステップでは、jwt-crafter プラグインを使用することにします。
これは、Kong 自体で JWT トークンを生成できるようにするプラグインで、トーク生成を行う上流のサービスに頼る必要がなくなります。
このプラグインは次の場所にあります。
```
https://github.com/grongierisc/kong-plugin-jwt-crafter
```
docker バージョンを使用しているため、このプラグインをインストールするには、プラグインを組み込む新しいイメージを構築する必要があります。
### 10.1.1. コミュニティプラグインで新しい Kong/IAM docker イメージを構築する
1. この Git のルートに「iam」というフォルダを作成します。
2. この新しいフォルダに dockerfile を作成します。
3. 「plugins」というフォルダを作成します。
1. すべてのコミュニティプラグインを追加する場所です。
4. docker-compose ファイルを更新して、新しいプラグインを有効にします。
plugins フォルダで、コミュニティプラグインの git clone を実行します。
git clone https://github.com/grongierisc/kong-plugin-jwt-crafter
dockerfile は次のようになります。
```dockerfile
FROM intersystems/iam:1.5.0.9-4
USER root
COPY ./plugins /custom/plugins
RUN cd /custom/plugins/kong-plugin-jwt-crafter && luarocks make
USER kong
```
この dockerfile で何を確認できますか?
コミュニティプラグインをインストールするには、ルートフォルダ(rockspec のある場所)に移動して、luarocks make を呼び出しています。 それだけです。 これでプラグインをインストールできました。
docker-compose の方では次を行います。
1. iam イメージタグを編集します。
1. intersystems/iam:1.5.0.9-4 -> intersystems/iam-custom:1.5.0.9-4
2. ビルドコンテキストを追加します。
```yml
build:
context: iam
dockerfile: dockerfile
```
3. 環境変数でプラグインを有効にします。
```yml
KONG_PLUGINS: 'bundled,jwt-crafter'
```
これで新しい IAM イメージをビルドします。
docker-compose build iam
### 10.1.2. テスト
docker-compose up -d
[プラグイン]->[新規]に移動すると、リストの最後に jwt-crafter プラグインが表示されているはずです。

#### 10.1.2.1. 使ってみる
1. 新しいサービスを作成します。
IAM ポータル
Rest API
# サービスを作成する
curl -i -X POST \
--url http://localhost:8001/services/ \
--data 'name=crud-persons' \
--data 'url=http://iris:52773/crud/persons/'
2. ルートを作成します。
IAM ポータル
Rest API
# ルートを作成する
curl -i -X POST \
--url http://localhost:8001/services/crud-persons/routes \
--data 'name=crud-route-jwt' \
--data 'paths=/crud/persons/*' \
--data 'strip_path=true'
3. 自動認証を再利用します。
IAM ポータル
Rest API
# プラグインを作成する
curl -i -X POST \
--url http://localhost:8001/services/crud-persons/plugins \
--data 'name=request-transformer' \
--data 'config.add.headers=Authorization:Basic U3VwZXJVc2VyOlNZUw==' \
--data 'config.replace.headers=Authorization:Basic U3VwZXJVc2VyOlNZUw=='
これで完了です。 jwt-crafter の実際の使用は次のようになります。
```bash
# acl をルートに追加する
curl -i -X POST http://localhost:8001/routes/crud-route-jwt/plugins \
--data "name=acl" \
--data "config.whitelist=test" \
--data "config.hide_groups_header=false"
# サービスを作成する
curl -i -X POST \
--url http://localhost:8001/services/ \
--data 'name=jwt-login' \
--data 'url=http://neverinvoked/'
# ルートを作成する
curl -i -X POST \
--url http://localhost:8001/services/jwt-login/routes \
--data 'name=jwt-login-route' \
--data 'paths=/jwt/log-in'
# サービスの Basic 認証を有効にする
curl -i -X POST http://localhost:8001/routes/jwt-login-route/plugins \
--data "name=basic-auth" \
--data "config.hide_credentials=false"
# サービスの Basic 認証を有効にする
curl -i -X POST http://localhost:8001/routes/jwt-login-route/plugins \
--data "name=jwt-crafter" \
--data "config.expires_in=86400"
# コンシューマを追加する
curl -i -X POST \
--url http://localhost:8001/consumers/ \
--data "username=test"
# コンシューマグループを追加する
curl -i -X POST \
--url http://localhost:8001/consumers/test/acls \
--data "group=test"
# コンシューマのログイン情報を追加する
curl -i -X POST http://localhost:8001/consumers/test/basic-auth \
--data "username=test" \
--data "password=test"
curl -i -X POST http://localhost:8001/consumers/test/jwt \
--data "key=test" \
--data "algorithm=HS256"
# JWT プラグイン
curl -i -X POST http://localhost:8001/routes/crud-route-jwt/plugins \
--data "name=jwt"
```
テストしよう!
```bash
# test:test は base64 でエンコーディングされている
curl -H 'Authorization: basic dGVzdDp0ZXN0' localhost:8000/jwt/log-in
```
```bash
curl --location --request GET 'http://localhost:8000/crud/persons/all' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW0iOiJ0ZXN0Iiwic3ViIjoiODJiNjcwZDgtNmY2OC00NDE5LWJiMmMtMmYxZjMxNTViN2E2Iiwicm9sIjpbInRlc3QiXSwiZXhwIjoxNjE2MjUyMTIwLCJpc3MiOiJ0ZXN0In0.g2jFqe0hDPumy8_gG7J3nYsuZ8KUz9SgZOecdBDhfns'
```
## 10.2. 新しいプラグインを作成する
これは lua を学習する場所ではありませんが、IAM を素早く再起動して新しい開発をテストする方法などのヒントをいくつか紹介します。
### 10.2.1. ファイル構造
```
kong-plugin-helloworld
├── kong
│ └── plugins
│ └── helloworld
│ ├── handler.lua
│ └── schema.lua
└── kong-plugin-helloworld-0.1.0-1.rockspec
```
表記法により、Kong プラグインには kong-plugin のプレフィックスを付ける必要があります。
この例では、プラグインの名前を helloworld とします。
次の 3 つのファイルは必須ファイルです。
* handler.lua: プラグインのコアです。 実装のインターフェースで、各関数は、リクエスト/接続のライフサイクルにおいて希望する時点で実行されます。
* schema.lua: プラグインはおそらく、ユーザーが入力した構成を維持する必要があります。 このモジュールは、その構成のスキーマを保持し、ユーザーが有効な構成値のみを入力できるようにルールを定義します。
* *.rockspec: Rockspec: 仕様ファイルのパッケージです。宣言的な Lua スクリプトで、ロック *.rockspec (テーブルが含まれる Lua ファイル)を構築してパッケージ化する方法に関するルールが含まれます。
#### 10.2.1.1. handler.lua
plugins インターフェースでは、handler.lua ファイル内の次のいずれかのメソッドをオーバーライドして、Kong の実行ライフサイクルのさまざまなエントリポイントにカスタムロジックを実装できます。
| 関数名 | フェーズ | 説明 |
| ---------------- | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| :init_worker() | init_worker | Nginx ワーカープロセスが起動するたびに実行されます。 |
| :certificate() | ssl_certificate | SSL ハンドシェイクのSSL 証明書の配信フェーズで実行されます。 |
| :rewrite() | rewrite | rewrite フェーズハンドラーとしてクライアントからリクエストを受信するたびに、そのリクエストに対して実行されます。 注意: このフェーズでは、サービスもコンシューマも識別されていないため、このハンドラーはプラグインがグローバルプラグインとして構成されている場合にのみ実行されます。 |
| :access() | access | クライアントからのすべてのリクエストに対して、上流サービスにプロキシされる前に実行されます。 |
| :response() | access | header_filter() と body_filter() の両方を置き換えます。 上流サービスからレスポンス全体を受信した後、その一部をクライアントに送信する前に実行されます。 |
| :header_filter() | header_filter | 上流サービスからすべてのレスポンスヘッダーのバイトが受信されると実行されます。 |
| :body_filter() | body_filter | 上流サービスからレスポンス本文のチャンクを受信するごとに実行されます。 レスポンスはクライアントにストリーミングされるため、バッファーサイズを超過し、チャンクごとにストリーミングされる場合があります。 そのため、レスポンスが大きければ、このメソッドが何度も呼び出されることがあります。 詳細は、lua-nginx-module のドキュメントをご覧ください。 |
| :log() | log | レスポンスの最後のバイトがクライアントに送信されると実行されます。 |
##### 10.2.1.1.1. 例
```lua
local BasePlugin = require "kong.plugins.base_plugin"
local HelloWorldHandler = BasePlugin:extend()
function HelloWorldHandler:new()
HelloWorldHandler.super.new(self, "helloworld")
end
function HelloWorldHandler:access(conf)
HelloWorldHandler.super.access(self)
if conf.say_hello then
ngx.log(ngx.ERR, "============ Hello World! ============")
ngx.header["Hello-World"] = "Hello World!!!"
else
ngx.log(ngx.ERR, "============ Bye World! ============")
ngx.header["Hello-World"] = "Bye World!!!"
end
end
return HelloWorldHandler
```
#### 10.2.1.2. schema.lua
ポータルで表示される構成ファイルです。
```lua
return {
no_consumer = true,
fields = {
say_hello = { type = "boolean", default = true },
say_hello_body = { type = "boolean", default = true }
}
}
```
#### 10.2.1.3. *.rockspec
```rockspec
package = "kong-plugin-helloworld" -- hint: rename, must match the info in the filename of this rockspec!
-- as a convention; stick to the prefix: `kong-plugin-`
version = "0.1.0-1" -- hint: renumber, must match the info in the filename of this rockspec!
-- The version '0.1.0' is the source code version, the trailing '1' is the version of this rockspec.
-- whenever the source version changes, the rockspec should be reset to 1. The rockspec version is only
-- updated (incremented) when this file changes, but the source remains the same.
-- TODO: This is the name to set in the Kong configuration `plugins` setting.
-- Here we extract it from the package name.
local pluginName = package:match("^kong%-plugin%-(.+)$") -- "myPlugin"
supported_platforms = {"linux", "macosx"}
source = {
url = "https://github.com/grongierisc/iam-training",
branch = "master",
-- tag = "0.1.0"
-- hint: "tag" could be used to match tag in the repository
}
description = {
summary = "This a demo helloworld for Kong plugin",
homepage = "https://github.com/grongierisc/iam-training",
license = "Apache 2.0"
}
dependencies = {
"lua >= 5.1"
-- other dependencies should appear here
}
build = {
type = "builtin",
modules = {
["kong.plugins."..pluginName..".handler"] = "kong/plugins/"..pluginName.."/handler.lua",
["kong.plugins."..pluginName..".schema"] = "kong/plugins/"..pluginName.."/schema.lua",
}
}
```
### 10.2.2. 構築
ここでは、次の章と同じことを行います: [11.1.1. コミュニティプラグインで新しい Kong/IAM docker イメージを構築する](#1111-build-a-new-kongiam-docker-image-with-the-community-plugin)
ただし、このプラグインに適応させています。
Dockerfile :
```dockerfile
FROM intersystems/iam:1.5.0.9-4
USER root
COPY ./plugins /custom/plugins
RUN cd /custom/plugins/kong-plugin-jwt-crafter && luarocks make
RUN cd /custom/plugins/kong-plugin-helloworld && luarocks make
#USER kong #Stay with root use, we will see why later
```
環境変数でプラグインを有効にします。
```yml
KONG_PLUGINS: 'bundled,jwt-crafter,helloworld'
```
これで新しい IAM イメージをビルドします。
docker-compose build iam
そして docker-compose を起動してテストします。
### 10.2.3. ヒント
IAM コンテナを「デバッグモード」で実行し、コンテナの停止/再開を簡単に行えるようにするには、dockerfile を変更して、プラグインの追加/削除など行います。
iam サービスを次のようにして停止できます。
docker-compose stop iam
そして、シェルを使用して実行モードで起動します。
docker-compose run -p 8000:8000 -p 8001:8001 -p 8002:8002 iam sh
コンテナでは次のように行います。
./docker-entrypoint.sh kong
コーディングをお楽しみください :)
# 11. CI/CD

この記事も残り少なくなりました。
最後に、DevOps/CI/CD について話しましょう。 この章は、IAM/Kong 向けの CI/CD を実装/スクリプト化する方法について、いくつかのアイデアを提供することを目的としています。
Kong は第一に API であるため、すべての Rest 呼び出しをスクリプト化して、各環境で実行させるという考え方です。
postman とその親友の newman(postman のコマンドラインバージョン)を使用すると、Rest 呼び出しのスクリプト化を最も簡単に行うことができます。
## 11.1. postman コレクションを作成する
postman が便利な理由の 1 つは、Rest 呼び出しの前後でスクリプトを実行できるところにあります。
ほとんどの場合、この機能を使用します。
### 11.1.1. IAM が起動しているか
最初のスクリプトでは、IAM が稼働しているかどうかを確認します。

```javascript
var iam_url = pm.environment.get("iam_url");
var iam_config_port = pm.environment.get("iam_config_port");
var url = "http://" + iam_url + ":" + iam_config_port + "/";
SenReq(20);
async function SenReq(maxRequest) {
var next_request = "end request";
const result = await SendRequest(maxRequest);
console.log("result:",result);
if(result == -1)
{
console.error("IAM starting .... failed !!!!");
}
}
function SendRequest(maxRequest) {
return new Promise(resolve => {
pm.sendRequest(url,
function (err) {
if (err) {
if (maxRequest > 1) {
setTimeout(function () {}, 5000);
console.warn("IAM not started...retry..next retry in 5 sec");
SendRequest(maxRequest - 1);
} else {
console.error("IAM starting .... failed");
resolve(-1);
}
} else {
console.log("IAM starting .... ok");
resolve(1);
}
}
);
});
}
```
### 11.1.2. 古いデータを削除する
```javascript
var iam_url=pm.environment.get("iam_url");
var iam_config_port=pm.environment.get("iam_config_port");
pm.sendRequest("http://"+iam_url+":"+iam_config_port+"/plugins", function (err, res) {
if (err) {
console.log("ERROR : ",err);
}
else {
var body_json=res.json();
if(body_json.data)
{
for( i=0; i < body_json.data.length; i++)
{
// Example with a full fledged SDK Request
route_id = body_json.data[i].id;
const delete_route = {
url: "http://"+iam_url+":"+iam_config_port+"/plugins/" + route_id,
method: 'DELETE',
};
pm.sendRequest(delete_route, function(err, res){
console.log(err ? err : res);
});
}
}
}
});
```
ルート、サービス、およびコンシューマでも同じように行ってください。
ルートのあるサービスは削除できないため、この実行順序は重要です。
### 11.1.3. サービス/ルートを作成する
ルートはサービスに依存しています。 この種のケースでは、postman の Test 関数を使用してデータを取得することができます。

画面
スクリプト
var id = pm.response.json().id;
var name = pm.response.json().name;
pm.globals.set("service_crud_id", id);
pm.globals.set("service_crud_name", name);
ここで、レスポンスから、新しいサービスの ID と名前を保存します。
次に、次のルートの作成でそれらを使用します。
画面
スクリプト
service_crud_name = pm.globals.get("service_crud_name");
ここで、グローバル変数「service_crud_name」を取得します。
次に、それを実際の呼び出しで使用します。
画面
スクリプト
{
"paths": [
"/persons/*"
],
"protocols": [
"http"
],
"name": "crud-persons",
"strip_path": false,
"service": {
"name": "{{service_crud_name}}"
}
}
#### 11.1.3.1. ヒント
* ペイロードは json または form-data のいずれかです。
* form-data:

* json:

json 形式を簡単に取得するには、管理者ポータルに移動し、json を表示してコピーします。

## 11.2. newman で実行する
docker run --rm -v "`pwd`/ci/":"/etc/newman" \
--network="iam-training_default" \
-t postman/newman run "DevOps_IAM.postman_collection.json" \
--environment="DevOps_IAM.postman_environment.json"
記事
Makiko Kokubun · 2021年6月8日
*この動画は、2021年2月に開催された「InterSystems Japan Virtual Summit 2021」のアーカイブです。
現在使用している Caché/Ensemble システムから InterSystems IRIS に移行する場合、マイグレーション(インプレース変換)を行うのでなければ現行環境と新環境を一時的に並行稼働させる必要があるかもしれません。
この動画では、そのような場合のインストールや構成についての注意点やデータ移行にどのような技術が利用可能かについてご紹介します。
Caché/Ensemble から IRIS へのマイグレーションについては、こちらもご覧ください。
記事
Tomoko Furuzono · 2021年6月29日
これは、InterSystems FAQサイトの記事です。以下の7つの技術を用いて、VB.NETからInterSystems IRISへ接続し使用することができます。
(A) InterSystems IRIS ADO.NET Managed Provider を利用するInterSystems ADO.NET Managed Provider では、ADO.NET 準拠データベースとして InterSystems IRIS にアクセスでき、データへの簡単なリレーショナル・アクセスを提供します。特に ADO.NET を以前に使用したことのあるユーザにお勧めです。詳細は、以下ドキュメントをご参照ください。InterSystems IRIS ADO.NET Mnaged Providerについて
(B) XEP を利用する。.NETアプリケーションで作成したオブジェクトをそのまま InterSystems IRISへオブジェクトとして保存できます(オブジェクトをテーブルに変換する処理は行われません)。また、登録対象オブジェクトが格納された配列全体を1度に更新することもできるため、シンプルなオブジェクトの構造であれば、データの大量更新に優れたパフォーマンスを発揮します。詳細は、以下ドキュメントをご参照ください。InterSystems IRIS XEP による.NETオブジェクトの永続化について
(C) Native APIを利用するテーブルでもなくオブジェクトでもない、グローバル変数に対するダイレクトなアクセスを行う場合に利用できます。
(D) Entity Frameworkを利用する.NET側で Entity Franeworkを利用した複雑なオブジェクトモデルを利用している場合は、Entity Frameworkによる接続が最適です。Entity FrameworkはADO.NETの拡張機能であるため、.NET側でオブジェクトからの変換が行われInterSystems IRISへはSQLが渡されます。同じオブジェクトを利用するXEPと比較して複雑なオブジェクトモデルを簡単に処理できる利点がありますが、リアルタイムに大量データを更新する処理には向いていません。詳細は、以下ドキュメントをご参照ください。InterSystems IRIS Entity Framework Provider の使用法について
(E) WebServiceを使用するSOAP (Simple Object Access Protocol) に対する完全なサポートを提供していますので、.NETからも利用できます。詳細は、以下ドキュメントをご参照ください。WebサービスおよびWebクライアントの作成について
(F) RESTを使用するInterSytsems IRISにRESTインターフェースを提供するためのディスパッチクラスの作成すれば.NETからも利用できます。詳細は、以下ドキュメントをご参照ください。InterSYstems IRISでのRESTインターフェースの開発について
(G) ODBC経由で接続する他の技術からの接続と同様に、ODBC経由での接続ができます。
記事
Toshihiko Minamoto · 2021年9月16日
## はじめに
InterSystemsは最近、HL7バージョン2の相互運用性に焦点を当てた、IRIS for Health 2020.1のパフォーマンスとスケーラビリティのベンチマークを完了しました。 この記事では、さまざまなワークロードで観察されたスループットを説明し、IRIS for HealthをHL7v2メッセージングの相互運用性エンジンとして使用しているシステムの一般的な構成とサイジングのガイドラインを提供します。
ベンチマークは本番環境にほぼ一致するように設計されたワークロードをシミュレーションしています。 シミュレーションの詳細は、「ワークロードの説明と方法」セクションで説明しています。 テストされたワークロードは、HL7v2 Patient Administration(ADT)とObservation Result(ORU)ペイロードで構成され、変換と再ルーティングが含まれました。
IRIS for Healthの2020.1バージョンは、第2世代のIntel® Xeon® スケーラブルプロセッサとIntel® Optane™ SSD DC P4800XシリーズSSDストレージを使用したコモディティサーバーで、1日当たり23億件を超えるメッセージ(インバウンドとアウトバウンドの合計)スループットの持続を実証しました。 これらの結果は、以前のEnsemble 2017.1 HL7v2スループットベンチマークのスケーラビリティの2倍以上です。
これらのテストでは、IRIS for Healthは、先入先出(FIFO)の順序を保持し、インバウンドメッセージとアウトバウンドメッセージのメッセージとキューを完全に永続化するように構成されました。 キューとメッセージを永続化することで、IRIS for Healthはシステムがクラッシュした際に、データ保護と、履歴メッセージの完全な検索と再送機能を提供することがでます。
さらに、構成ガイドラインは以下のセクションで説明されており、ワークロードのパフォーマンスとスケーラビリティの要件を適切に満たす構成とデプロイを選択する上で役立てられます。
この結果は、IRIS for Healthがコモディティハードウェアで極端なメッセージングスループットを満たすことができ、ほとんどの場合において、1つの小さなサーバーで組織全体にHL7の相互運用性を提供できることを示しています。
* * *
## 結果の概要
HL7相互運用性アクティビティのさまざまな側面を表すために、次の3つのワークロードが使用されました。
* **T1ワークロード:** 単純なHL7メッセージのパススルーを使用します。インバウンドメッセージごとに1つのアウトバウンドメッセージが使用されます。 メッセージは、ルーティングエンジンを使用せずに、Ensemble Business Serviceから直接Ensemble Business Operationに渡されました。 ルーティングルールは使用されず、変換も実行されませんでした。 データベースには、インバウンドメッセージごとに1つのHL7メッセージインスタンスが作成されました。
* **T2ワークロード:** ルーティングエンジンを使って、インバウンドメッセージの平均4つのセグメントを変更し、それを1つのアウトバウンドインターフェースにルーティングします (変換を使用して1対1)。 各インバウンドメッセージでは、1つのデータ変換が実行され、2つのHL7メッセージオブジェクトがデータベースに作成されました。
* **T4ワークロード:** ルーティングエンジンを使用して、個別に変換されたメッセージをそれぞれ4つのアウトバウンドインターフェースにルーティングします。 平均して、インバウンドメッセージの4つのセグメントが変換ごとに変更されました(4 つの変換で1件のインバウンドから4件のアウトバウンド)。 各インバウンドメッセージでは、4つのデータ変換の実行により4つのメッセージがアウトバウンドに送信され、5つのHL7メッセージオブジェクトがデータベースに作成されました。
上記の3つのワークロードは、Red Hat Enterprise Linux 8を実行する2つの750GB 2つのIntel® Optane™ SSD DC P4800X SSDドライブとIntel® Scalable Gold 6252プロセッサを備えた物理48コアシステムで実行されました。 データは、1秒当たり(および1時間当たり)のインバウンドごとのメッセージ数、1秒当たりの(および1時間当たり)のアウトバウンドごとのメッセージ数、および1日10時間のメッセージ合計数(インバウンドとアウトバウンド)で表示されています。 また、特定のレベルのスループットにおいて利用可能なシステムリソースの測定値として、CPU使用率が表示されています。
### スケーラビリティの結果
_表1: このテスト済みのハードウェア構成における4つのワークロードのスループットの要約: _

* 25%のT1/ 25%のT2 / 50%のT4ワークロードの比率で組み合わされたワークロード
* * *
## ワークロードの説明と方法
テストされたワークロードには、HL7v2 Patient Administration(ADT)とObservation Result(ORU)メッセージが含まれ、平均1.2 KBのサイズと平均14のセグメントが含まれました。 変換によっておよそ4つのセグメントが変更されました(T2およびT4ワークロード)。 テストは、TCP/IPを介してメッセージを送受信する48件から128件のインバウンドと48件から128件のアウトバウンドのインターフェースを表します。
T1ワークロードでは、それぞれに16個のインターフェースを持つ4つの個別のネームスペースが使用され、T2ワークロードでは、それぞれに16個のインターフェースを持つ3つのネームスペースが使用され、T4ワークロードでは、それぞれに32個のインターフェースを持つ4つのネームスペースが使用され、最後の「混合ワークロード」では、T1ワークロードに16個、T2ワークロードに16個、T4ワークロードに32個を持つ3つのネームスペースが使用されました。
スケーラビリティは、各インターフェースのトラフィックを徐々に増やして許容可能なパフォーマンス基準で最高のスループットを見つけることで測定されました。 許容可能なパフォーマンスを得るには、メッセージがキューイングやメッセージの配信に測定可能な遅延のない持続的な速度で処理され、平均CPU使用率が80%未満である必要があります。
以前のテストでは、使用されたHL7メッセージのタイプはEnsembleのパフォーマンスやスケーラビリティにとって重要ではありませんでしたが、インバウンドメッセージ数、インバウンドとアウトバウンドメッセージのサイズ、ルーティングエンジンで作成される新しいメッセージの数、および変更されたセグメント数が重要でした。
さらに、以前のテストでは、データ変換でHL7メッセージの個別のフィールドを処理することは、通常、パフォーマンスに影響がないことが示されています。 これらテストの変換では、かなり単純な割り当てを使用して、新しいメッセージが作成されています。 複雑な処理(データ変換での広範なSQLクエリの使用など)によって、結果が異なる場合があることに注意してください。
以前のテストではまた、ルール処理は通常重要でないことも確認されています。 これらのテストで使用されたルーティングルールセットは平均32個のルールで、すべてのルールは単純です。 ルールセットが極端に大きいか複雑な場合は、結果が異なる場合があります。
### ハードウェア
#### サーバーの構成
テストでは、2.1 GHzの48コアの2ソケットシステムで、192 GB DDR4-2933 DRAMと10 Gb Ethernetネットワークインターフェースを使用するソケットごとに24コアを提供する第2世代Intel® Scalable Gold 6252「_Cascade Lake_」プロセッサを搭載したサーバーが使用されました。 このテストでは、Red Hat Enterprise Linux Server 8オペレーティングシステムでInterSystems IRIS for Health 2020.1を使用しました。
#### ディスクの構成
IRIS for Healthを通過するメッセージは、ディスクに完全に永続されます。 このテストの場合、システム内部の2つのIntel 750GB Intel® Optane™ SSD DC P4800X SSDドライブを使用して、片方をデータベース用、もう片方をジャーナル用として分割しました。 さらに、実際の比較を実現できるにように、ジャーナルの同期コミットを有効にして、データの耐久性を強化しています。 前述のT4ワークロードの場合、各インバウンドHL7メッセージはおよそ50 KBのデータを生成しますが、これを表2に説明するように分類できます。 トランザクションジャーナルは通常、メッセージデータやログよりも短い時間オンラインに保持されるため、必要な合計ディスク容量を計算する際に、このことを考慮する必要があります。
_表2: インバウンドHL7 T4メッセージあたりのディスク要件 _
| 項目 | データ要件 |
| -------------- | ------ |
| セグメントデータ | 4.5 KB |
| HL7メッセージオブジェクト | 2 KB |
| メッセージヘッダー | 1.0 KB |
| ルーティングルールログ | 0.5 KB |
| トランザクションジャーナル | 42 KB |
| 合計 | 50 KB |
T4ワークロードはルーティングエンジンを使用して、個別に変換されたメッセージをそれぞれ4つのアウトバウンドインターフェースにルーティングすることを思い出しましょう。 平均して、インバウンドメッセージの4つのセグメントが変換ごとに変更されました(4 つの変換で1件のインバウンドから4件のアウトバウンド)。 各インバウンドメッセージでは、4 つのデータ変換の実行により 4 つのメッセージがアウトバウンドに送信され、5 つの HL7 メッセージオブジェクトがデータベースに作成されました。
本番環境で使用するシステムを構成する場合、HL7メッセージの1日あたりのインバンドボリュームとパージスケジュール、およびジャーナルファイルの保持ポリシーを考慮して、正味要件を計算する必要があります。 また、適切なジャーナルファイルの容量は、ジャーナルディスクボリュームがいっぱいになるのを防ぐようにして構成する必要があります。 ジャーナルファイルは、パフォーマンスと信頼性を考慮して、データベースファイルから物理的に離れたディスクに存在する必要があります。
## まとめ
これらのテストで示されたInterSystems IRIS for Health HL7v2メッセージスループットは、適度な2ソケットコモディティサーバー構成での大規模なスループット性能によって、組織における要求の最も厳しいメッセージワークロードをサポートできることを示しています。 また、InterSystemsは、最新のサーバーとクラウドテクノロジーを活用しながら、バージョンごとにパフォーマンスとスケーラビリティを改善することに絶えず取り組んでいます。
以下のグラフでは、スループットの増加について、Intel® E5-2600 v3(_Haswell_)を使用したEnsemble 2015.1とEnsemble 2017.1のベンチマークと第1世代Intel® Scalable Platinum Series(_Skylake_)プロセッサを使用したEnsemble 2017.1のベンチマークをそれぞれ第2世代Intel® Scalable Gold Series(_Cascade Lake_)プロセッサでIRIS for Health 2020.1を実行した場合の最新の結果と比較しています。
_グラフ1: 単一サーバーでの1日10時間当たりのメッセージスループット(百万単位)。 _

InterSystems IRIS for Healthは、バージョンが上がるたびに、接続機能の柔軟性を提供するとともに、相互運用性スループットの水準を引き上げ続けています。 上記のグラフからわかるように、メッセージスループットは大きく増加しており、同じ10時間の期間と、**23億件以上**という24時間の合計メッセージ速度を維持したまま、T2ワークロードの場合には2017の2倍、2015と比較すると3倍以上に増加しています。
IRIS for Healthの進歩を示すもう1つの重要な指標は、T1ワークロードの純粋なパススルー操作とは対照に、変換とルーティングルーツが組み込まれたより複雑なT2とT4ワークロードでのスループットの向上です。
InterSystemsでは、企業や組織におけるインターオペラビリティ(相互運用性)のニーズに対するソリューションのご相談をお待ちしております。
お知らせ
Mihoko Iijima · 2021年8月26日
開発者の皆さん、こんにちは!
InterSystems Analytics コンテストのテクノロジーボーナスが発表されました!
Adaptive Analytics (AtScale) キューブの使用- 4 ポイントInterSystems Adaptive Analytics では、分析ソリューションに AtScale キューブを作成して使用するオプションを提供しています。
今回、コンテスト用に準備した AtScale サーバ(URLと認証情報は Discord チャンネルで確認できます)にあるキューブを使用するか、JDBC 経由で IRIS サーバに接続し、新しいキューブを作成することもできます。
AtScale を使用した Analytics ソリューションの可視化レイヤでは、Tableau、PowerBI、Excel、Logi を利用することができます。
Adaptive Analytics のドキュメント/AtScale documentation
オンラインラーニング(InterSystems IRIS Adaptive Analytics Essentials)
Tableau, PowerBI, Logi の利用 - 3 ポイント
Tableau、PowerBI、Logi のいずれかを使用して作成したビジュアルについて、それぞれ 3 ポイント獲得できます。
Tableau、PowerBI、Logi を使用したビジュアルの作成については、IRIS BI サーバに直接接続する、または AtScale に接続することで作成できます。
InterSystems Reports では、Logi を利用しています。インストールキットは、InterSystems WRC からダウンロードできます。一時的なライセンスは discord channel で取得できます。
InterSystems Reports のドキュメント
オンラインラーニング(Getting Started with InterSystems Reports)
InterSystems IRIS BI - 3 points
InterSystems IRIS Business Intelligence は、IRIS の機能の1つで、IRIS の永続データに対して BI 用キューブやピボットの作成、インタラクティブなダッシュボードを使って作成した情報をユーザに提供できます。
ドキュメント(InterSystems IRIS Business Intelligence の概要)
IRIS BI キューブ、ピボット、ダッシュボードの例が含まれているテンプレートもあります(iris-analytics-template)。
開発テンプレート(IRIS Analytics Template)の使い方のご紹介(第8回 InterSystems IRIS Analytics コンテスト)
以下、IRIS BIソリューションの例をご紹介します。
Samples BI
Covid19 analytics
Analyze This
Game of Throne Analytics
Pivot Subscriptions
Error Globals Analytics
Creating InterSystems IRIS BI Solutions Using Docker & VSCode (video)
The Freedom of Visualization Choice: InterSystems BI (video)
InterSystems BI(DeepSee) Overview (online course)
InterSystems BI(DeepSee) Analyzer Basics (online course)
InterSystems IRIS NLP (iKnow) - 3 ポイント
InterSystems NLP(旧 iKnow)は、InterSystems IRIS の機能の1つで自然言語テキスト内のエンティティ (フレーズ) とその意味的なコンテキストを識別する自然言語処理用のライブラリです。使用できる言語は、English、German、Dutch、French、Spanish、Portuguese、Swedish、Russian、Ukrainian、Czech、Japanese です。
Learn more about iKnow on Open Exchange
例:
Covid iKnow Text Navigator
Samples Aviation
その他
Analytics ソリューションの中に非構造データを管理するために iKnow を使用すると1ポイント獲得できます。
Docker コンテナの利用 - 2 ポイント
応募するアプリケーションが Docker コンテナ版 InterSystems IRIS を使用している場合、Docker コンテナボーナスポイントを獲得できます。テンプレートの用意もあります。
ZPM Package のデプロイ - 2 ポイント
フルスタックアプリケーションの ZPM(ObjectScript Package Manager) パッケージをビルドして公開し、一緒にデプロイできるようにすると、ボーナスポイントを獲得できます。
zpm "install your-multi-model-solution"
ZPM クライアントをインストールして IRIS にログインしてコマンドを実行します。
ZPM について/ZPM Documentation
Unit Testing - 2 ポイント
InterSystems IRIS コードのユニット・テストを実施したアプリケーションは、ボーナスポイントを獲得できます。
ObjectScript Unit Test については詳しくは、ドキュメントや開発者コミュニティをご参照ください。
あなたのアプリケーションのオンラインデモを作成する - 3 ポイント
オンラインデモとしてアプリケーションをクラウドにプロビジョニングすると、さらに3ポイント獲得できます。
開発環境テンプレートやその他のデプロイメントオプションを使用することができます。例
サンプルアプリケーションの使用方法についてはビデオをご参照ください。
Code quality analysis with zero bugs - 2 ポイント
コード管理のために、Githubアクションに code quality を含め(例)、ObjectScript のバグを 0 にした場合にボーナスポイントを獲得できます。
開発者コミュニティに記事を Upする - 2 ポイント
作成したアプリケーション/プロジェクトの概要を開発者コミュニティの記事として投稿した場合、1 記事に対して 2 ポイント獲得できます。
また、他言語へ記事を翻訳し、掲載した場合も同様にポイントを獲得できます。
Video on YouTube - 3 ポイント
開発した作品の動画を作成し、YouTube に掲載した場合、3ポイント獲得できます。
※ ボーナスポイントについては、変更される可能性もあります。予めご了承ください。
お知らせ
Mihoko Iijima · 2021年9月6日
開発者の皆さん、こんにちは!
今週は、InterSystems Analytics コンテスト2021 の投票週間です!InterSystems IRIS を使い開発されたベストソリューションに投票お願いします!
🔥 投票はこちらから! 🔥
投票方法については、以下ご参照ください。
Experts nomination:
今回は、インターシステムズの経験豊富な審査員がベストアプリを選び、Expert Nominationで賞品をノミネートします。
⭐️ @Evgeny.Shvarov, Developer Ecosystem Manager⭐️ @Carmen.Logue, Product Manager - Analytics and AI⭐️ @Benjamin.DeBoe, Product Manager⭐️ @Asaf.Sinay, Analytics Technologies Support Manager ⭐️ @Alexander.Koblov, Senior Support Specialist⭐️ @Peter.Steiwer, Senior Support Specialist ⭐️ @Margaret.Viau, Support Specialist⭐️ @Samuel.Duncan, Support Specialist
Community nomination:
開発者コミュニティのメンバーは、お好みのアプリケーションに対して1位~3位を指定しながら投票できます。
開発者コミュニティでのあなたの状態
順位
1位
2位
3位
開発者コミュニティに記事を掲載したり、OpenExchange(OEX)にアプリをアップロードしたことがある方
9点
6点
3点
開発者コミュニティに1つの記事を掲載した、または 1アプリケーションを OEX にアップロードしたことがある方
6点
4点
2点
開発者コミュニティへコメントや質問を投稿したことがある方
3点
2点
1点
エキスパートレベル
順位
1位
2位
3位
グローバルマスターズの VIP レベル または、InterSystems Product Managers
15点
10点
5点
グローバルマスターズの Ambassador レベル
12点
8点
4点
グローバルマスターズの Expert レベル または DC モデレーター
9点
6点
3点
グローバルマスターズの Specialist レベル
6点
4点
2点
グローバルマスターズの Advocate レベル または インターシステムズの従業員
3点
2点
1点
今回も「ブラインド投票」します
各応募作品への投票数は、誰にも分らないようになっています。1日1回、この記事のコメント欄に投票数を公開する予定です。
コンテストページ の表示順は、コンテストに応募した時期が早ければ早いほど、上位に表示されます。
メモ:新しいコメントの通知を受けるために、この投稿を購読することをお忘れなく!(記事末尾の ベルのアイコンをクリックするだけ!)
投票に参加するには
Open Exchange へのサインインします(開発者コミュニティのアカウントを使用してください)。
投票ボタンは、開発者コミュニティ内で、質問/回答/記事の掲載/投稿に対するコメント など 記載いただいた方に対して有効になります。 ボタンが押せない場合は、コミュニティへのコメントやオリジナルの記事など、書き込みお願いします!詳細は、こちらの記事をご参照ください。
気が変わった場合は? - 選択をキャンセルして別のアプリケーションに投票できます。
ぜひ 🔥これだ🔥 と思う作品に投票お願いします!
メモ:コンテストへ応募された作品は、投票週間中にバグを修正したり、アプリケーションを改良したりすることができますので、アプリケーションのリリースを見逃さずに購読してください。
お知らせ
Mihoko Iijima · 2022年5月8日
開発者の皆さん、こんにちは!
GW🎏明け、いつもとちょっと違うこと👀を始めてみるのはいかがでしょうか。
例えば、プログラミングコンテスト💰に応募してみる! などなど。
9日より、InterSystems グランプリ・プログラミングコンテストが始まります!このコンテストのお題は「InterSystems データプラットフォームの機能を使う」です。とにかく、InterSysetms IRIS を利用していたら応募できます!ぜひ、参加してみてください!
この記事では、コンテストで賞金を多く獲得するのに役立つ、テクノロジーボーナスについてご紹介します!
InterSystems FHIR - 5
IntegratedML - 4
Interoperability - 3
Production EXtension(PEX) - 4
Embedded Python - 5
Adaptive Analytics (AtScale) Cubes usage - 4
Tableau, PowerBI, Logi の利用 - 3
InterSystems IRIS BI - 3
Docker コンテナの利用 - 2
ZPM パッケージを利用したデプロイ - 2
オンラインデモ - 2
Unit Testing - 2
コミュニティに最初の記事を投稿する - 2
コミュニティに2つ目の記事を投稿する - 1
Code Quality をパスする - 1
YouTube にビデオを公開する - 3
InterSystems FHIR as a Service と IRIS For Health の利用 - 5 points
InterSystems IRIS FHIR Accelerator Service (FHIRaaS) を使用して新規アプリケーションの構築や既存アプリケーションのテストを行う開発者の方々を募集しています!ポータル にサインインし、デプロイメントを行い、プログラミングコンテストのアプリケーションで AWS 上の InterSystems FHIR Server を使い始めましょう。
また、InterSystems IRIS for Health docker 版を使用して FHIR アプリケーションを構築することもできます。docker イメージの構築中に FHIR server の準備ができる IRIS-FHIR-Template をご利用いただけます。FHIR API 4.0.1 のドキュメントは こちら です。FHIR サーバの準備について詳しくは InterSystems IRIS for Health ドキュメント(FHIRサーバ概要) をご参照ください。
IntegratedML の利用 - 4 points
1. あなたの AI/ML ソリューションに InterSystems IntegratedML を使用するとボーナスポイントを獲得できます。
InterSystems IntegratedML template
このテンプレートの使い方の日本語解説ビデオはこちらの記事にあります。
2. データインポートツール
データインポートウィザードの使い方(ドキュメント)
CSVGEN - CSV インポートユーティリティ(ZPMを使います)
CSVGEN-UI - CSVGEN の WebUI
3. ドキュメント
Using IntegratedML
4. オンラインコース & ビデオ:
Learn IntegratedML in InterSystems IRIS
Preparing Your Data for Machine Learning
Predictive Modeling with the Machine Learning Toolkit
IntegratedML Resource Guide
Getting Started with IntegratedML
Machine Learning with IntegratedML & Data Robot
SQLから始める機械学習 ~IntegratedMLのご紹介~
BPL/DTLを使用したプロダクションの作成 - 3 point
IRIS Interoperability プロダクション の重要な機能の1つは、BPL(Business Process Language)で記述できるビジネス・プロセスです。
ビジネス・プロセスのドキュメント:ビジネス・プロセスの定義
ビジネス・ルールは、Interoperability プロダクションのロジックをノーコード/ローコードのアプローチで管理できます。InterSystems IRIS では、視覚的に、また ObjectScript を使用してビジネス・ルールを作成できます。
あなたの Interoperability プロダクションの中で、ビジネス・プロセスやビジネス・ルールを使用してアプリケーションを開発された場合、ビジネス・プロセス/ビジネス・ルールのボーナスポイントを獲得できます。
Business Rule Example
ビジネス・ルールの開発(ドキュメント)
Production EXtension (PEX) の利用 - 4 points
PEX は、Interoperability プロダクションの Python、Java、 .NET 用拡張機能です。
あなたの Interoperability プロダクションの中で、Python、Java、.Net の PEX を使用した場合、ボーナスポイントを獲得できます。
PEX Demo.
PEX : Java および .NET によるプロダクションの開発
InterSystems IRIS には、Python Pex モジュールがあり、Pythonから InterSystems Interoperability プロダクションを開発するオプションが提供されています。あなたのアプリケーションで Python Pex を使用した場合、さらに追加で3ポイント獲得できます。 Guillaume Ronguier が紹介している 代替の python.pex wheel を使用してもOKです。
Embedded Pythonの利用 - 4 points
あなたのアプリケーションに Embedded Python を使用した場合、ボーナスポイントを獲得できます。Embedded Python を利用するためには、InterSystems IRIS 2021.2 以降をご利用ください。
Embedded Pythonを簡単にご紹介します
Embedded Python 試してみました
Embedded Python を使ってレシート(JPG)の中身を IRIS に登録してみました
Embedded Python で Excel のデータを IRIS グローバルに格納する方法
Adaptive Analytics (AtScale) Cubes の利用 - 4 points
InterSystems Adaptive Analytics は、分析ソリューションに AtScale キューブを作成および使用するオプションが用意されています。
あなたは、キューブの使用や作成のためにコミュニティが用意したコンテスト用AtScale サーバを使用できます。また、JDBC経由であなたのIRIS サーバからそのサーバにアクセスできます(URLと認証情報はDiscord Channel で入手できます)。
あなたのAtScaleを使用した分析ソリューションの可視化レイヤは、TableauやPower BI、エクセル、Logiで作成できます。
Documentation, AtScale documentation
Training
Tableau, PowerBI, Logi の利用 - 3 points
Tableau や PowerBI、Logi を使用して可視化を行うと、ボーナスポイントを獲得できます。
可視化は、IRIS BI サーバを使用するか、AtScake との接続により行うことができます。
Logi は、InterSystems Report ソリューションとして利用できます。あなたは、InterSystems WRC よりコンポーザーをダウンロードできます。テンポラリライセンスは、discord channelで入手できます。
Documentation
Training
InterSystems IRIS BI の利用 - 3 points
InterSystems IRIS Business Intelligence は、IRIS の機能で IRIS に格納されているデータに対して BI キューブやピボットを作成でき、その情報をインタラクティブなダッシュボードを使用してユーザに情報提供できます。
Learn more
iris-analytics-template には、IRIS BIキューブ、ピボット、ダッシュボードの例が含まれています。
テンプレートの使い方については、日本語ビデオで解説しています。こちらの記事をご参照ください。
以下、IRIS BI ソリューションの例です。
Samples BI
Covid19 analytics
Analyze This
Game of Throne Analytics
Pivot Subscriptions
Error Globals Analytics
Creating InterSystems IRIS BI Solutions Using Docker & VSCode (video)
The Freedom of Visualization Choice: InterSystems BI (video)
InterSystems BI(DeepSee) Overview (online course)
InterSystems BI(DeepSee) Analyzer Basics (online course)
Docker コンテナの利用 - 2 points
docker コンテナで InterSystems IRIS を稼働させた場合、ボーナスポイントを獲得できます。初めて利用される方向けのシンプルなテンプレートをご用意しています。
テンプレートの概要については、日本語解説ビデオ(12:27~)があります。
ZPM パッケージによるデプロイメント - 2 points
フルスタックアプリケーションの ZPM(ObjectScript Package Manager) パッケージをビルドして公開し、一緒にデプロイできるようにすると、ボーナスポイントを獲得できます。
zpm "install your-multi-model-solution"
ZPM クライアントをインストールして IRIS にログインしてコマンドを実行します。
ZPM について/ZPM Documentation
オンラインデモ公開 - 2 points
オンラインデモとしてアプリケーションをクラウドにプロビジョニングすると、ボーナスポイントを獲得できます。
開発環境テンプレートやその他のデプロイメントオプションを使用することができます。例
サンプルアプリケーションの使用方法についてはビデオをご参照ください。
Unit Testing - 2 points
InterSystems IRIS のコードに Unit Test が実施されているアプリケーションは、ボーナスポイントを獲得できます。
Unit Test について詳しくは、ドキュメントやコミュニティをご参照ください。
コミュニティに初めて記事を投稿する - 2 points
コミュニティに応募したアプリケーションの概要を説明する記事を投稿するとポイントを獲得できます。
コミュニティに2つ目の記事を投稿する - 1 point
2つ目の記事を投稿する、または投稿したアプリケーション概要の翻訳記事を投稿することで、さらボーナスポイントを獲得できます。(3記事以降はポイントが加算されません。)
Code quality pass with zero bugs - 1 point
コードの静的制御のために、code quality Github action 組み込み、ObjectScript のバグが0の場合 ボーナスポイントを獲得できます。
Video on YouTube - 3 points
開発した作品の動画を作成し、YouTube に掲載した場合、3ポイント獲得できます。
上記ボーナスポイントの一覧は変更となる可能性もあります。
お知らせ
Toshihiko Minamoto · 2020年7月19日
この度、プレスリリースを行い、InterSystems開発者コミュニティを正式にオープンしました!
本サイトには、アナウンス、記事、質問とその回答、ビデオがあります。技術的な質問や回答はもちろん、インターシステムズ製品や技術を使った経験を記事として投稿できるようになっています。また、リリースノートや新機能の説明、体験談、技術的な事例も掲載されています。
なお、記事や質問、回答などの投稿にはメンバー登録が必要です。登録方法はこちらをご覧ください。弊社パートナー様はWRCアカウントのユーザ名、パスワードでもログインできます。
質問や回答、記事の投稿方法はこちらをご参照ください。
皆様のご利用をお待ちしております。
お知らせ
Mihoko Iijima · 2023年7月3日
開発者の皆さん、こんにちは!
InterSystems グランプリ・コンテスト2023の投票が開始されました!
🔥 ベストアプリケーションはこれだ!! 🔥と思う作品にぜひ投票をお願いします。
投票方法は以下ご参照ください。
Experts nomination:
インターシステムズの経験豊富な審査員がベストアプリを選び、Expert Nominationで賞品をノミネートします。
⭐️ @Alexander.Koblov, Support Specialist⭐️ @Guillaume.Rongier7183, Sales Engineer⭐️ @Eduard.Lebedyuk, Senior Cloud Engineer⭐️ @Steve.Pisani, Senior Solution Architect⭐️ @Timothy.Leavitt, Development Manager⭐️ @Evgeny.Shvarov, Developer Ecosystem Manager⭐️ @Dean.Andrews2971, Head of Developer Relations⭐️ @Alexander.Woodhead, Senior Systems Developer⭐️ @Andreas.Dieckow , Principal Product Manager⭐️ @Aya.Heshmat, Product Specialist⭐️ @Benjamin.DeBoe, Product Manager⭐️ @Robert.Kuszewski, Product Manager⭐️ @Carmen.Logue , Product Manager⭐️ @Jeffrey.Fried, Director of Product Management⭐️ @Luca.Ravazzolo, Product Manager⭐️ @Raj.Singh5479, Product Manager⭐️ @Patrick.Jamieson3621, Product Manager⭐️ @Stefan.Wittmann, Product Manager⭐️ @Steven.LeBlanc, Product Specialist⭐️ @Thomas.Dyar, Product Specialist⭐️ @Daniel.Franco, Interoperability Product Management
Community nomination:
開発者コミュニティのメンバーは、お好みのアプリケーションに対して1位~3位を指定しながら投票できます。
開発者コミュニティでのあなたの状態
順位
1位
2位
3位
開発者コミュニティに記事を掲載したり、OpenExchange(OEX)にアプリをアップロードしたことがある方
9点
6点
3点
開発者コミュニティに1つの記事を掲載した、または 1アプリケーションを OEX にアップロードしたことがある方
6点
4点
2点
開発者コミュニティへコメントや質問を投稿したことがある方
3点
2点
1点
エキスパートレベル
順位
1位
2位
3位
グローバルマスターズの VIP レベル または、InterSystems Product Managers
15点
10点
5点
グローバルマスターズの Ambassador レベル
12点
8点
4点
グローバルマスターズの Expert レベル または DC モデレーター
9点
6点
3点
グローバルマスターズの Specialist レベル
6点
4点
2点
グローバルマスターズの Advocate レベル または インターシステムズの従業員
3点
2点
1点
「ブラインド投票」とします!
各応募作品への投票数は、誰にも分らないようになっています。1日1回、この記事のコメント欄に投票数を公開する予定です。
コンテストページの表示順は、コンテストに応募した時期が早ければ早いほど、上位に表示されます。
メモ:新しいコメントの通知を受けるために、この投稿を購読することをお忘れなく!(記事末尾の ベルのアイコンをクリックするだけ!)
投票に参加するには
Open Exchange へのサインインします(開発者コミュニティのアカウントを使用してください)。
投票ボタンは、開発者コミュニティ内で、質問/回答/記事の掲載/投稿に対するコメント など 記載いただいた方に対して有効になります。 ボタンが押せない場合は、コミュニティへのコメントやオリジナルの記事など、書き込みお願いします!詳細は、こちらの記事をご参照ください。
気が変わった場合は? - 選択をキャンセルして別のアプリケーションに投票できます。
ぜひ🔥これだ🔥と思う作品に投票をお願いします!
メモ:コンテストへ応募された作品は、投票週間中にバグを修正したり、アプリケーションを改良したりすることができますので、アプリケーションのリリースを見逃さずに購読してください
記事
Makiko Kokubun · 2021年5月18日
*この動画は、2021年2月に開催された「InterSystems Japan Virtual Summit 2021」のアーカイブです。
InterSystems IRISではシャドウイングは非推奨の為、Caché/Ensembleからのマイグレーションに伴い、シャドウイングをご使用頂いているお客様はミラーリングへ移行する必要があります。
この動画では、ミラーリングの概要およびミラーリングの構成例、シャドウイングとの運用上の違いや注意点についてご説明します。
シャドウイングから移行される場合のミラーリングの構成としては、DR非同期またはレポーティング非同期になります。 ミラーリングとシャドウイングでは、データベースファイルやジャーナルファイルの取り扱いが異なります。この点につきまして、動画の後半に紹介しておりますのでご参考下さい。
マイグレーションについては、こちらの動画も合わせてご覧ください。「(動画)InterSystems IRIS へのマイグレーション」
お知らせ
Mihoko Iijima · 2021年7月13日
開発者の皆さん、こんにちは!
✨新しいコンテスト✨「InterSystems 技術文書ライティングコンテスト」の開催が決定しました!
🏆 InterSystems Tech Article Contest 🏆
いつもの「IRIS プログラミングコンテスト」とは異なり、今回は InterSystems のテクノロジに関連するあらゆるトピックについての記事を投稿いただくコンテストです!
応募期間:2021年7月15日~2021年8月15日 8月22日まで延長します!
今回は、応募期間中に投稿いただいた方 全員 に 特別賞 をご用意しています。
🎁優勝賞品:Apple iPad 🎁
月間 55,000人 以上の読者が訪れるインターシステムズ開発者コミュニティに記事を投稿してみませんか?
詳細は以下の通りです。
賞品
1. InterSystems 技術文書ライティングコンテストでは、応募者全員が勝者となりますり!コンテスト期間中に記事を投稿した方には、特別な賞品が贈られます。
🎁 デベロッパーコミュニティパーカ
🎁 InterSystems のステッカー など
2. エキスパートアワード – InterSystems のエキスパートにより審査されます。
🥇 1位: Apple iPad 128GB
🥈 2位: Amazon Kindle 8G Paperwhite
🥉 3位: Nike Utility Speed Backpack
(または、代替品として Raspberry Pi 4 8GB + InterSystems IRIS Community Image セットが贈られます)
3. 開発者コミュニティアワード – 「いいね!」が最も多かった記事に贈られます。受賞者は、以下の賞品の中から1つを選ぶことができます。
🎁 Nike Utility Speed Backpack
🎁 Amazon Kindle 8G Paperwhite
参加資格
どなたでもご参加いただけます!(InterSystems 開発者コミュニティのアカウントを作成するだけでご応募いただけます)
コンテストのスケジュール
📝 2021年7月15日 ~2021年8月15日: この期間にコミュニティへの記事の投稿と投票が行われます。
期間中に記事を公開してください。
開発者コミュニティメンバーは、公開された記事に「いいね!」をつけることで「開発者コミュニティアワード」の投票を行ったことになります。
《注意》記事の公開が早ければ早いほど、「いいね!」を集める期間が長くなります。
🎉 2021年8月16日: 勝者発表!
応募条件
❗️ コンテスト期間中に書かれた記事で、以下の条件を満たすものは、自動的にコンテストに参加することができます。
InterSystems の技術に関連する記事を投稿してください。
英語での投稿をお願いします。
記事は、新しい記事で投稿してください(既存の記事の続編でも構いません)。
盗用や翻訳された記事は無効です。
1000文字以上の記事を投稿してください。
チームの投稿ではなく、個人投稿のみを対象とします(同一著者による複数応募も可)
どんな記事を書いたらいい?
❗️ InterSystems の技術に関連した技術的な内容の記事を投稿してください。
以下の表は、投稿内容についての参考情報です。あくまで例なので、投稿する記事の内容は自由にご選択ください。
#
Topic
詳細
1
Embedded Python Introduction(Embedded Python 紹介)
Embedded Python は、InterSystems IRIS のエキサイティングな新機能で、開発者はPythonでメソッドやSQLプロシージャを記述することができます。
2
Embedded Python from Interoperability(Interoperability の観点からの Embedded Python)
Interoperability(相互運用性)の観点から、Embedded Python がどのように活用できるかを探ります。
3
Embedded Python: Translating by Language Constructs(Embedded Python:言語構成による翻訳)
InterSystems は Embedded Python のシームレスな統合を目指していますが、スムーズに行うためにいくつかのヒントやコツがあります(アンダースコアのメソッド、dictionary、list など)。
ObjectScript から Python の機能を呼び出す最良の方法は何か、について探ります。
4
Intro to InterSystems Reports Designer(InterSystems Reports デザイナー紹介)
この記事の続きで、以下の内容をカバーします。
Catalog の作成方法
ベーシックレポートタイプの作成
グラフ (bar, pie, line, gauge, heatmap, ...)
テーブル(サマリや詳細)
クロス集計
レポートサーバへレポートを発行する。
スケジュールの作成
参考になるチュートリアル: Getting Started with InterSystems Reports
5
Calling Reports from Interoperability/IRIS(Interoperability / IRIS から InterSystems Reports を呼び出す方法)
InterSystems Reports を IRIS や Interoperability のプロダクションで実行(取得)する方法についての記事
6
Map Reports with InterSystems(InterSystems と地図レポート)
地理空間データを使用した InterSystems Reports によるレポートの作成方法について説明します。(HoleFoods データセットには、販売地の情報が含まれています。)
7
How to do CI/CD with InterSystems IRIS (InterSystems IRIS で CI/CD を行うには)
–
8
Change Data Capture with Kafka Connect(Kafka Connect での データ変更キャプチャ)
Kafka Connectをセットアップし、Kafal Connect JDBCコネクタを介してSQLデータをエクスポート&インポートする方法を示す例など。
9
Applying analytics / ML to the SQL Statement Index(Analytics / ML をSQL文インデックスに適用する)
–
10
My favorite maintenance tasks, automated(私の好きなメンテナンスタスク、自動化)
–
11
Leveraging the Audit database(監査データベースの活用)
–
12
The three steps to set up GitHub Actions that make your app invincible(アプリを無敵にする GitHub Actions の設定3手順)
–
13
OAuth2 authorization in IRIS instance(IRIS インスタンスでの OAuth2 認証)
–
14
Setup mirroring on K8s(K8s でのミラーリングセットアップ)
–
15
Using %MDX and %KPI instead of Subject Area in IRIS Analytics(IRIS Analytics でサブジェクト領域の代わりに%MDXと%KPIを使用する)
–
16
Trying External Language Gateways / compare to the gateways of old(外部の言語ゲートウェイへの挑戦/旧ゲートウェイとの比較)
例
17
Streaming events to Kafka from IAM(IAMからKafkaへのイベントストリーミング)
–
18
IntegratedML walkthrough
–
19
Exporting requests to Excel using Python(Pythonを使用してリクエストをExcelにエクスポートする)
–
20
Integrating cloud services with productions(クラウドサービスとプロダクションの連携)
例:MS Azure Cognitive ServicesやAmazon Rekognitionなど。
21
Working with IKO(IKOの仕事)
–
22
IKO IRIS on AWS Kubernetes with Hugepages
–
23
Incorporating backups with IKO(IKOでバックアップを組み込む)
–
24
IKO – Create a cluster with compute nodes, SAM, and no sharding(IKO - コンピュートノード、SAM、シャーディング無しのクラスタを構成する)
CPFファイルを含めて、私たちのベストプラクティスを設定します。
25
Data Science shared workgroup setup with ECP(ECPとデータサイエンス共有ワークグループの設定)
データサーバーがあり、各データサイエンティストはデスクトップ上にコンピュートノードを持っています。接続を切ってもデータは利用でき、再接続すると同期します。
26
クラウド導入時のストレージの選択肢(ローカルストレージ、ブロックストレージなどのパフォーマンスの違い)やトレードオフ(ブロックストレージを使用する場合はミラーが不要な場合があるなど)について解説した記事。
–
注)同じテーマでも、著者が異なる記事はOKです。
この記事のコメント欄に、あなたのトピックのアイデアを自由にお寄せください。
皆さんの✨素敵✨な記事をお待ちしています! 皆さんこんにちは!技術文書ライティングコンテストが始まりました💨
投稿は「英語」の指定がありますが、日本のコミュニティに「日本語」で投稿してください!
開発者コミュニティチームで(翻訳ツールを使いながら)翻訳させていただきます。
8月15日(US時間)までに投稿された方全員に🎁プレゼント🎁がありますので、ぜひこの機会に投稿してみください!お待ちしてます! 現在、5 記事が投稿されています🤩
「いいね!」を付けて参加者を応援しましょう!(開発者コミュニティアワードは「いいね!」の数で勝者が決まります!)
📍 https://community.intersystems.com/contests/1 ❗️ 応募期間を8月22日までに延長しました!
まだまだコンテストへご応募いただけます!このチャンスをお見逃しなく!
(記事を投稿された方 全員 へ 特別賞 があることもお忘れなく!!)
お知らせ
Makiko Kokubun · 2021年9月17日
開発者のみなさん、こんにちは!インターシステムズ開発者コミュニティでは、4回に渡り、InterSystems IRIS 2021.1の新機能や、開発を行う上で役に立つ機能をご紹介するウェビナーを開催します。10月の火曜と木曜のお昼に、弊社の技術者が30分でインターシステムズの最新テクノロジーについて解説します。ぜひお気軽にご視聴ください!
※ (2022/4/1更新)YouTubeにアーカイブを公開しました。こちらよりご覧いただけます。
開催予定
第1回:10/12(火)InterSystems IRIS Adaptive Analytics のご紹介第2回:10/14(木)Python Gateway のご紹介第3回:10/19(火)SQL から始める機械学習 – IntegratedML のご紹介第4回:10/21(木)FHIR 新機能
時間:12:30~13:00予定(約30分)配信形式:ON24を使用したオンライン配信参加費:無料
詳細・事前登録はこちらから
プレビュー:IRIS & InterSystems IRIS for Health 2021.1 新機能のご紹介
このビデオでは、昨年リリースされたバージョン2020.1から、新バージョン2021.1の間で追加/改善/強化された機能についてご紹介しています。合わせてご覧ください。
お知らせ
Mihoko Iijima · 2023年3月27日
開発者の皆さん、こんにちは!
技術文書ライティングコンテスト:InterSystems IRISチュートリアル へ応募いただいた記事のボーナスポイントが決定しました!
※ 14番の記事は日本のメンバーからのご応募です!💪
No
Article
Topic bonus
Video bonus
Discussion bonus
Translation bonus
New member bonus
Total points
1
Quick sample database tutorial
+
+
4
2
Tutorial - Working with %Query #1
+
+
+
9
3
Tutorial - Working with %Query #2
+
+
8
4
Tutorial - Working with %Query #3
+
+
8
5
Tutorial - Streams in Pieces
+
+
8
6
SQLAlchemy - the easiest way to use Python and SQL with IRIS's databases
+
+
+
9
7
Creating an ODBC connection - Step to Step
+
+
+
9
8
Tutorial - Develop IRIS using SSH
+
+
+
9
9
InterSystems Embedded Python in glance
+
5
10
Query as %Query or Query based on ObjectScript
+
5
11
Setting up VS Code to work with InterSystems technologies
+
+
4
12
Tutorial: Improving code quality with the visual debug tool's color-coded logs
+
3
13
Kinds of properties in IRIS
0
14
Backup and rebuilding procedure for the IRIS server
+
+
4
15
Stored Procedures the Swiss army knife of SQL
+
+
4
16
Tutorial how to analyze requests and responses received and processed in webgateway pods
0
17
InterSystems's Embedded Python with Pandas
+
+
6
18
Tutorial for Middle/Senior Level Developer: General Query Solution
+
+
+
9
19
Tutorial - Creating a HL7 TCP Operation for Granular Error Handling
0
20
Tutorial from Real Practice in China Hosipital Infomatics Construction: How to autobackup your code/ auto excute code when you are not allowed to use Git?
+
3
ボーナスポイントは記事の更新により変更される場合もあります。
ボーナスポイントについてのお問い合わせはこの記事の返信欄へお願いします。
お知らせ
Mihoko Iijima · 2020年12月4日
開発者の皆さん、こんにちは!
第8回 Analytics コンテストの続報 📣 の「テクノロジーボーナス」について紹介します。
InterSystems IRIS BI(旧DeepSee)
InterSystems IRIS NLP
IntegratedML
実データの利用
ZPM を利用したパッケージの開発
Docker コンテナの利用
ボーナス詳細は以下ご参照ください。
InterSystems IRIS BI - 1 point
InterSystems IRIS BI(旧DeepSee)は、IRIS の分析機能で、IRIS に格納されたデータに対して BI キューブやピボットを作成し、インタラクティブなダッシュボードを使用してユーザーに情報を提供することができます。
InterSystems IRIS BI のドキュメントはこちらからご参照いただけます。
開発環境のテンプレート(IRIS-Analytics-template)には、IRIS BI のキューブ、ピボット、ダッシュボードの例が含まれています。使い方の日本語解説ビデオ付き記事もあります。ぜひご活用ください!
InterSystems IRIS NLP (iKnow) - 1 point
InterSystems NLP は、iKnow としても知られている InterSystems IRIS に含まれる機能であり、英語、ドイツ語、オランダ語、フランス語、スペイン語、ポルトガル語、スウェーデン語、ロシア語、ウクライナ語、チェコ語、日本語の自然言語テキスト内のエンティティ (フレーズ) とその意味的文脈を識別する自然言語処理のためのライブラリです。
InterSystems IRIS NLP (日本語)概要については、 ホワイトペーパーをご参照ください。
以下のビデオでは、NHKニュース(NHKオンラインニュース[社会]のRSS)を読み込んだ結果、抽出されたエンティティを確認できる IRIS の「ドメインエクスプローラー」を利用して確認するまでの流れを解説しています。
この他、NLPのAPI(REST/Webサービス)についてはそれぞれのドキュメント(REST/Webサービス)をご参照ください。
iKnow について詳細は、Open Exchange をご参照ください。
アプリケーション例については、以下 OpenExchange をご参照ください。
Covid iKnow Text Navigator
Samples Aviation
その他のアプリケーション
IntegratedML - 1 point
IntegratedML は InterSystems IRIS の AutoML 技術で、SQL を拡張した ML 用 DDL文を利用して機械学習を行うことができ、ソリューションの AI や機械学習の計算を簡素化して自動化することができます。
IntegratedMLの詳細については、こちらをご覧ください。
また、こちらの日本語解説ビデオでは、IntegratedML の概要解説(0:00~3:00)と、IntegaretedMLと DataRobot の連携例を解説しています。
IntegratedML を使用するには IRIS の特別な Docker イメージが必要ですので、こちらでご確認ください。
アプリケーション例については、以下 OpenExchange をご参照ください。
A basic integratedML template :日本語解説ビデオはこちら(00:46~17:55)をご参照ください。
その他のアプリケーション例
IRIS Analyticsソリューションで IntegratedML を使用すると、さらに1ポイント追加されます。
実データの利用 - 1 point
InterSystems IRIS Analytics の実際の利用例をご紹介いただければと思います。実際のデータセットをソリューションに含めてご応募いただくと、1ポイント追加されます。
ZPM を利用したパッケージの開発 - 1 point
フルスタックアプリケーション用の ZPM(ObjectScript Package Manager) パッケージをビルドして公開し、ZPM を使ってデプロイできるアプリケーションをご応募いただくと、ボーナス点を獲得できます。
ZPM クライアントがインストールされている IRIS 上での zpm コマンド実行例です。
zpm "install your-full-stack-solution-name"
ZPM クライアントについて
ZPMのドキュメント
Docker コンテナの利用
Docker コンテナ上で動作する InterSystems IRIS を使用してアプリケーションをご応募いただくと「Dockerコンテナ」ボーナスを獲得できます。
また、以下の 開発環境のテンプレートのいずれかを使用している場合、ボーナスを得ることができます。
IRIS Interoperability Template
Interoperabilityの概要が動作の仕組みについては、 Interoperabilityを使ってみよう!の日本語記事もご参照ください。
上記、掲載されている技術の使用方法について、ご質問がありましたら、お気軽に開発者コミュニティにお問い合わせください。
コンテストへのご参加、お待ちしてます!
注意:現在のテクノロジーボーナスリストはコンテスト開始前に変更される可能性もあります。予めご了承ください。