IBM i におけるコグニティブ・ソリューションの活⽤
ILE RPGからWatson APIを使⽤
-⽇本アイ・ビー・エム株式会社
IBM システムズ・ハードウェア事業本部
Power Systems Technical Sales
© 2017 IBM Corporation
2
■
当資料では、IBM i におけるコグニティブ・システムの実現を⽬的とし、IBM i のILE RPGから
Watson APIを使⽤する⽅法についてご紹介します。
■
当資料は、下記リンク先の内容、サンプル・プログラムを引⽤しています。
•
Paul Tuohy 著 「RPG TALKS TO WATSON」Copyright © 2017 IT Jungle
−
https://www.itjungle.com/2016/09/27/fhg092716-story01/
■
ご参考)この記事は、 e-BELLNET.comでも⽇本語で翻訳されています。
•
「IBM Watosonと話すRPG」 e-BELLNET.com
−
https://www.e-bellnet.com/category/technology/1611/1611-2.html
加速するユーザーの要求に
タイムリーに対応
データ・セキュリティーと
オープン・テクノロジーが
IBM i で実現するコグニティブ時代のIT活⽤
堅牢かつオープンなIBM i
クラウド・テクノロジー
IoT
Social
Web
API
補完・連携
© 2017 IBM Corporation
4
■
Watson Developer CloudでWatson APIサービスを提供
•
2017年3⽉31⽇現在の提供サービスは以下の通りとなります。
Watson API 概要
Personality Insights テキストから筆者の性格を推定する Language Translator(⼀部⽇本語未対応) ※1 ⾃然⾔語テキストについて他⾔語へ翻訳を⾏う Conversation アプリケーションに⾃然⾔語インターフェ ースを追加してエンドユーザとのやり取りを⾃動化 Natural Language Understanding(⽇本語未対応)
⾃然⾔語処理を通じてキーワード抽出、エンティティー抽出、⼼情 分析、感情分析、概念タグ付け、関係抽出、分類法種別、作成者抽 出などを⾏う Text to Speech テキスト⽂章を⾳声に変換する Speech to Text ⾳声をテキスト⽂章に変換する Tradeoff Analytics(⽇本語未対応) 複数の競合する選択肢の中から、選択を⾏う過程を⽀援する Visual Recognition 画像コンテンツに含まれる意味を検出する Natural Language Classifier
テキスト⽂章の分類を⾏う(質問の意図推定など)
Tone Analyzer(⽇本語未対応)
テキストの感情、社交性、⽂体を解析する
Retrieve and Rank
⾃然⾔語の質問に対して回答の候補を返す
分析系
⾳声系
画像系
⾔語系
Document Conversion ⽂書を新しい形式に変換する Discovery(⽇本語未対応) 認知検索およびコンテンツ分析エンジンをアプリケーションに追加して、優れた意思決定を⾏うのに 役⽴つパターン、傾向、およびアクション可能な洞察を識別する https://www.ibm.com/watson/developercloud/services-catalog.html ※1 Language Translatorに関してはニュースドメインのみ⽇本語対応をしています。■
Watson APIの使い⽅を習得・テストできるように⽤意されているサイト
•
Watson API Explorer:
https://watson-api-explorer.mybluemix.net/
−
ILE RPGからAPI呼び出しのテストとしてWatson API Explorerの「Language Translator」を使⽤してい
ます。
© 2017 IBM Corporation
6
■
traslateのGETの横の「/v2/translate」をク
リックしますとパラメータ⼊⼒画⾯が表⽰さ
れます。
•
下記を⼊⼒し、
をクリック
−
model_id : 例) ja-en
−
text : 例)This is a test.
■
「Request URL」が表⽰されます。
•
https://watson-api-
explorer.mybluemix.net/language-translator/api/v2/translate?model_id=
en
-ja
&text=
This%20is%20a%20test.
•
上記URLの⻘太字部分をILE RPGアプリ
ケーション内で3つのパラメータとして
、REST呼び出しをします。
Language Translator
Watson APIのURL構成
-■
REpresentational State Transfer
•
「ウェブのような分散ハイパーメディアシステムのためのソフトウェアアーキテクチャのスタイルの
ひとつ」
(wikipedia
https://ja.wikipedia.org/wiki/REST
より)
•
ネットワーク上のリソース (URI) に対する各種操作をHTTPのGET, POST, PUT,DELETEメソッド
で出来るだけ簡潔に表現、実装
•
クラウド上のサービス/アプリケーションとの⾼い親和性
ご参考)RESTとは
/customers
/orders
warehouses/tokyo/stocks
リソースを取得する
リソースを更新する
リソースを登録する
リソースを削除する
HTTP GETリクエスト
HTTP POSTリクエスト
HTTP PUTリクエスト
HTTP
DELETEリクエスト
etc.
アプリケーション, サービス・リクエスター
リソース
Network
© 2017 IBM Corporation
8
■
このILE RPG サンプル・アプリケーションでは、Watson APIの「Language Translator」
(翻訳機能)を使⽤
•
5250画⾯で⼊⼒した原⽂を「Language Translator」で翻訳し、5250画⾯に結果を出⼒します。
Watson API を使った RPG サンプル・アプリケーション
※5250画面のアプリケーション開発
を推奨しているわけではありません。
ここでは、Webの設定などが不要であ
ることを証明するために
5250画面を
使用しています。
Watson API を使った RPG サンプル・アプリケーション
ILE RPG と Watson APIの連携イメージ
-■
IBM i 7.1以降で使⽤可能なDB2 for i のHTTPメソッド機能を使⽤
•
「SYSTOOLS」スキーマでRESTのHTTPメソッドのサンプルSQLプロシージャー(関数)を提供
•
ILE RPGの組み込みSQLを使って、HTTPGETBLOB関数でWatson APIをGETリクエストし、リソースを取得
IBM i
Language Translator
TOWATSON.SQLRPGLE
…
SYSTOOLS.HTTPGETBLOB
(:https://watson-api-explorer.mybluemix.net/language- translator/api/v2/translate?model_id=en-ja&text=This%20is%20a%20test. ,ʼʼ)CLOB
…
DB2
for i
HTTP GETリクエスト
TOWATSOND.DSPF
リソースを取得
原文の
言語
訳文の
言語
言語
訳文
© 2017 IBM Corporation
10
Watson API を使った RPG サンプル・アプリケーション
表⽰装置ファイル
A
INDARA
A
DSPSIZ(24 80 *DS3)
A
CF03(03)
A
R DATAR
A
1 27
'Watson翻訳'
A
COLOR(BLU)
A
3 1
'言語 (1=英語, 2=スペイン語,'
A
3 35
'3=フランス語, 4=イタリア語,'
A
3 67
' 5=日本語)'
A
4 1
'原文の言語:'
A
FROMLANG
1 0
B
4 15
VALUES(1 2 3 4 5)
A
EDTCDE(X)
A
4 20
'訳文の言語:'
A
TOLANG
1 0
B
4 34
VALUES(1 2 3 4 5)
A
EDTCDE(X)
A
6 1
'原文:'
A
FROMTEXT
320
O
B
8 1
CHECK(LC)
A
13 1
'訳文'
A
TOTEXT
320
A
O
14 1
A
19 1
'SQLCode:'
A
SQLCODEO
5 0
O
19 10
A
24 2
'F3=Exit'
A
COLOR(BLU)
■
表⽰装置ファイル「TOWATSOND.DSPF」のサンプル・ソース
•
⼊⼒フィールド
−
FROMLANG:原⽂の⾔語
−
TOLANG:訳⽂の⾔語
−
FROMTEXT:原⽂
•
出⼒フィールド
−
TOTEXT:訳⽂
−
SQLCODEO :エラー時の
SQLコード
•
F3キー:プログラム終了
A) データ構造は⾔語コードの配列を
定義(コードは、画⾯上の原⽂/
訳⽂⾔語(1 =英語(en)、2 =ス
ペイン語(es)など)に⼊⼒された
番号に対応)
B) F3が押されるまで画⾯を表⽰しな
がらループ
C) transLate_Text()サブプロシージ
ャを呼び出し、原⽂⾔語コード、
訳⽂⾔語コード、原⽂、および、
訳⽂のパラメータを渡す。
Watson API を使った RPG サンプル・アプリケーション
メイン・プロシージャ
-**free
ctl-opt
option
(
*srcStmt
:
*noDebugIO
)
dftactGrp
(
*no
);
dcl-F
toWatsonD
workstn
(
*ext
)
usage
(
*input
:
*output
)
indDs
(
WSI
);
dcl-Ds
WSI
qualified
;
F3Exit
ind pos
(
3
);
end-Ds
;
dcl-Ds
*n
;
*n
char
(
10
)
inz
(
'enesfritja'
);
lang
char
(
2
)
dim
(
5
)
pos
(
1
);
end-Ds
;
exec SQL
set option naming
=
*SQL
;
exfmt
dataR
;
dow not
WSI
.
F3Exit
;
transLate_Text
(
lang
(
fromLang
) :
lang
(
toLang
) :
fromText
:
toText
);
SQLCodeO
=
SQLCODE
;
exfmt
dataR
;
endDo;
■
ILERPG「TOWATSON.SQLRPGLE」のサンプル・ソース (1/3)
A
B
C
© 2017 IBM Corporation
12
A) RPGはCLOBデータ型を認識しな
いため、textBackをSQLTypeの
CLOB変数として定義
−
この定義はコンパイル後2つの
サブフィールド textBack-Len
(データの⻑さ)と
textBack_Data(データ)を持
つデータ構造になる
−
※「systools.httpgetclob」は
データタイプ「CLOB」で返す
B) 「systools.urlencode」を使⽤し
て、⼊⼒されたテキストをエンコ
ード
−
問題の原因となる特殊⽂字(&
や<など)を同等のものに変換
Watson API を使った RPG サンプル・アプリケーション
transLate_Text()サブプロシージャ
-■
ILERPG「TOWATSON.SQLRPGLE」のサンプル・ソース (2/3)
dcl-Proc
transLate_Text
;
dcl-Pi
*n
;
fromLang
char
(
2
)
const
;
toLang
char
(
2
)
const
;
fromText
char
(
320
)
const
;
toText
char
(
320
);
end-Pi
;
dcl-s
str1
varchar
(
1000
);
dcl-s
str2
varchar
(
1000
);
dcl-s
textBack
SQLType
(
CLOB
:
320
);
if (
fromLang
=
toLang
);
toText
=
fromText
;
return;
endIf;
str1
=
%trimR
(
fromText
);
exec SQL
values
trim
(systools.urlencode(:str1,
''
))
into
:str2;
A
C) Watson APIをREST呼び出しし、翻訳を実⾏するURLを⽣成
D) 「systools.httpgetclob」を使⽤して、Watson APIをREST呼び出し。
−
戻り値は、先に定義したtextBackに格納される
E) 結果が返された場合は、データの⻑さ(textBack_Len)分のデータ(textBack_Data)
を戻り値に代⼊
Watson API を使った RPG サンプル・アプリケーション
- transLate_Text()サブプロシージャ
続き-■
ILERPG「TOWATSON.SQLRPGLE」のサンプル・ソース (3/3)
str1
=
'https://watson-api-explorer.mybluemix.net/'
+
'language-translator/api/v2/translate?model_id='
+
fromLang
+
'-'
+
toLang
+
'&text='
+
str2
;
exec SQL
values
char
(systools.httpgetclob(:str1,
''
), 256)
into
:textBack;
toText
=
*blanks
;
if (
textBack_Len
>
0
);
toText
=
%subSt
(
textBack_Data
:
1
:
textBack_Len
);
endIf;
return;
end-Proc;
C
D
E
© 2017 IBM Corporation
14
■
CALL TOWATSON
•
「原⽂の⾔語」、「訳⽂の⾔語」、「原⽂」のパラメータを⼊⼒し、実⾏
Watson API を使った RPG サンプル・アプリケーション
プログラム実⾏
-■
SYSTOOLSは、DB2 for i の提供するSQLツールやサンプルです。
■
IBM i 7.1以降で提供されており、OSバージョン・アップやPTFにより機能が追加されています
。
■
参考リンク:
•
IBM Knowledge Center IBM i 7.3 SYSTOOLS
−
https://www.ibm.com/support/knowledgecenter/ja/ssw_ibm_i_73/rzajq/rzajqsystools.htm
•
New HTTP functions added to SYSTOOLS
−
https://www.ibm.com/developerworks/community/wikis/home?lang=ja#!/wiki/IBM%20i%20Tec
hnology%20Updates/page/New%20HTTP%20functions%20added%20to%20SYSTOOLS
■
※SYSTOOLSで提供されるSQLツールやサンプルはSWMAの対象外です
© 2017 IBM Corporation
16
■
既存のIBM i 基幹業務アプリケーション / データとWatson APIの連携が実現可能
■
Watson APIの活⽤例
•
結果を⾳声で知らせる
Text to Speech で既存のアプリケーションのUXを向上
•
⾃然⾔語インターフェースを追加してユーザとのやり取りを⾃動化する
Conversation で新しいサー
ビスを提供
まとめ
IBM i をWatson APIと連携し、新しいユーザー体験を提供
-DB2
for i
パブリック・クラウドサービス
またはお客様プライベート・クラウドサービス
Power Systems
オンプレミス
基幹業務データ
ユーザー
スマートフォン
タブレット
PC
など
Watson API
HTTP GETリクエスト リソースを取得REST API
ワークショップ、セッション、および資料は、IBMまたはセッション発表者によって準備され、それぞれ独自の見解を反映したものです。それらは情報提供の目的のみで提供されており、 いかなる参加者に対しても法律的またはその他の指導や助言を意図したものではなく、またそのような結果を生むものでもありません。本講演資料に含まれている情報については、 完全性と正確性を期するよう努力しましたが、「現状のまま」提供され、明示または暗示にかかわらずいかなる保証も伴わないものとします。本講演資料またはその他の資料の使用 によって、あるいはその他の関連によって、いかなる損害が生じた場合も、IBMは責任を負わないものとします。 本講演資料に含まれている内容は、IBMまたはそのサプライヤーやラ イセンス交付者からいかなる保証または表明を引きだすことを意図したものでも、IBMソフトウェアの使用を規定する適用ライセンス契約の条項を変更することを意図したものでもなく、 またそのような結果を生むものでもありません。 本講演資料でIBM製品、プログラム、またはサービスに言及していても、IBMが営業活動を行っているすべての国でそれらが使用可能であることを暗示するものではありません。本講 演資料で言及している製品リリース日付や製品機能は、市場機会またはその他の要因に基づいてIBM独自の決定権をもっていつでも変更できるものとし、いかなる方法においても将 来の製品または機能が使用可能になると確約することを意図したものではありません。本講演資料に含まれている内容は、参加者が開始する活動によって特定の販売、売上高の向 上、またはその他の結果が生じると述べる、または暗示することを意図したものでも、またそのような結果を生むものでもありません。 パフォーマンスは、管理された環境において標 準的なIBMベンチマークを使用した測定と予測に基づいています。ユーザーが経験する実際のスループットやパフォーマンスは、ユーザーのジョブ・ストリームにおけるマルチプログラ ミングの量、入出力構成、ストレージ構成、および処理されるワークロードなどの考慮事項を含む、数多くの要因に応じて変化します。したがって、個々のユーザーがここで述べられて いるものと同様の結果を得られると確約するものではありません。 記述されているすべてのお客様事例は、それらのお客様がどのようにIBM製品を使用したか、またそれらのお客様が達成した結果の実例として示されたものです。実際の環境コスト およびパフォーマンス特性は、お客様ごとに異なる場合があります。
IBM、IBM ロゴ、ibm.com、DB2、Power Systems、POWER6、POWER6+、POWER7、POWER7+、POWER8は、世界の多くの国で登録されたInternational Business Machines Corporationの商標です。
他の製品名およびサービス名等は、それぞれIBMまたは各社の商標である場合があります。 現時点でのIBM の商標リストについては、www.ibm.com/legal/copytrade.shtmlをご覧ください。 Linuxは、Linus Torvaldsの米国およびその他の国における登録商標です。
Microsoft, Windows, Windows NT および Windowsロゴは Microsoft Corporationの米国およびその他の国における商標です。 UNIXはThe Open Groupの米国およびその他の国における登録商標です。