2017年度 OSS 秋セミナー 【Open 技術分科会 】活動報告 · 2017-10-23 ·...

42
2017年度OSS秋セミナー【Open技術分科会】活動報告 2017年9月14日 ソリューション・ラボ・横浜 川島 光雄

Transcript of 2017年度 OSS 秋セミナー 【Open 技術分科会 】活動報告 · 2017-10-23 ·...

2017年度OSS秋セミナー【Open技術分科会】活動報告

2017年9月14日

ソリューション・ラボ・横浜 川島 光雄

目次

分科会活動方針

メンバー

分科会 活動体制

活動報告

分科会活動方針

IBM i OSを活用できる技術について

検証及び稼動確認を行うことで、技術習得を行う。

・技術習得

・他社との交流

・分科会発表

・OSS勉強会

活動日時毎月 第三金曜日 18時~20時 で活動※場所は東京近郊skypeでの参加も現在実施中

メンバー

SLY 川島(リーダー)

JBCC 富田(副リーダー)

JBCC 植村

オム二サイエンス 田中

NDIソリューションズ 平野

ティアンドトラスト 北原

ベルコム 梶野

KIS 藤野

SOLPAC 後藤

アイビス 濱田

※敬称略

JBAT 土井

JBAT 杉本

JBAT 田口

JBAT 冨永

SLY 高柳

SLY 中村

SLY 金子

三和コムテック 渋谷

<オブザーバー>

IBM 菅田様登録:12社 19名 平均8名程度の参加

2017年分科会 活動体制

OSS幹事会

Open技術分科会

新技術Python

活用事例php

AS活用(Watson

Analytics)

オムニサイエンス 田中JBAT 土井NDIS 平野

SLY 高柳 SLY 川島JBCC 富田

分科会 リーダー:SLY 川島副リーダー:JBCC 富田

2017年活動実績

2017年6月16日(金) 18時~20時 JBAT様川崎ソリッドスクェア2017年7月28日(金) 18時~20時 オムニサイエンス様茅場町2017年9月14日(木) 14時~17時45分 OSS秋セミナー発表

<今後予定>2017年10月19日(木) 18時~20時 オムニサイエンス様茅場町

2017年活動報告

チーム1 オムニサイエンス田中JBAT 土井NDIS 平野

Pythonによる機械学習構築事例

Pythonは、Windows、Linux/Unix、Mac OS Xなどの主要なオペレーティングシステムはもちろん、Javaや.NETなどの仮想環境でも動作するプログラミング言語です。

IBMi上でPythonを利用した機械学習アプリケーション活用

HTML

HTML

将来像

今年度の取り組み

BlueMix

IBMi

WebServer(Python)

MachineLearningプログラム

Node-Red

REST API

【テーマ】

toDO

今年度の活動としてIBMi上で以下の検証・実装を進める

Python稼働環境構築

Python用Webサーバーの構築

機械学習環境の構築

Python ⇔ DB2・RPGとの連携確認

機械学習アプリケーションの作成

➡済

➡済

➡未

➡苦戦中

➡何を作るか要検討

成果報告

Python稼働環境構築

導入

以下ライセンスプログラムの追加導入- 5733OPS Option 2(Python 3.4)- 5733OPS Option 3(GCC scripts)

以下Python用追加パッケージPTFの導入- DB2 connector (SI58191)- Toolkit for IBM i (SI58195)- FastCGI gateway support (SI58192)- lightweight web framework (SI58193)

Python稼働環境構築

確認

バージョン確認と対話実行

Python用Webサーバーの構築

flipflop(FastCGIモジュール)インストール- pip3 install /QOpenSys/QIBM/ProdData/OPS

/Python-pkgs/flipflop/flipflop-*-py34-*.whl

Bottle(アプリケーションフレームワーク)インストール- pip3 install /QOpenSys/QIBM/ProdData/OPS

/Python-pkgs/bottle/bottle-*-py34-*.whl

追加モジュールのインストール

Python用Webサーバーの構築

Sample.py

ブラウザから“Hello World”を表示

from bottle import route, run, template

@route('/sample')def index():

return 'Hello World!!'

run(host='192.168.2.112', port=8083)

Python用Webサーバーの構築

サーバー起動

ブラウザからアクセス

bash-4.3$ python3 /home/oss/sample.pyBottle v0.12.8 server starting up (using WSGIRefServer())...Listening on http://192.168.2.112:8083/Hit Ctrl-C to quit.

機械学習環境の構築

scikit-learnとは

Pythonのオープンソースの機械学習ライブラリの一つ

分類や回帰、クラスタリングなどの機能が実装されている

入門用として扱いやすい…らしい

『scikit-learn』 の導入

機械学習環境の構築

pip3 install scikit-learn

Numpyがない…

pip3 install numpy

gccがない…

➡まずchroot環境でgccを使えるようにする

機械学習環境の構築

CRTUSRPRF USRPRF(OSS) PASSWORD() USRCLS(*SECOFR) TEXT('oss') CHGUSRPRF USRPRF(OSS) LOCALE(*NONE) HOMEDIR('/QOpenSys/oss/./home/oss’)

mkdir -p /QOpenSys/oss/home/ossmkdir -p /QOpenSys/QIBM/ProdData/OPS/GCCcd /QOpenSys/QIBM/ProdData/OPS/GCC./chroot_setup.sh chroot_minimal.lst /QOpenSys/oss./chroot_setup.sh chroot_OPS_GCC.lst /QOpenSys/oss./chroot_setup.sh chroot_OPS_SC1.lst /QOpenSys/oss./chroot_setup.sh chroot_includes.lst /QOpenSys/oss./chroot_setup.sh chroot_OPS_PYTHON.lst /QOpenSys/oss./chroot_chown.sh oss

➡ここからssh接続

export PATH=/opt/freeware/bin:/usr/binexport LIBPATH=/opt/freeware/lib:/usr/libcd /QOpenSys/QIBM/ProdData/OPS/GCC./pkg_setup.sh pkg_perzl_bash-4.3.lstbash./pkg_setup.sh pkg_perzl_gcc-4.8.3.lstgcc –version

➡gccが使えるように

機械学習環境の構築

export 'CC=gcc'export LDSHARED="/QOpenSys/QIBM/ProdData/OPS/Python3.4/lib

/python3.4/config/ld_so_aix gcc -shared -bI:/QOpenSys/QIBM/ProdData/OPS/Python3.4/lib/python3.4/config/python.exp“

pip3 install numpy (成功!)

pip3 install scikit-learn

Scipyがない…

pip3 install scipy

blasとlapackがない…

➡wgetしてもmakeできない!

機械学習環境の構築

➡http://www.oss4aix.org/download/RPMSから新しいmake(4.2)とgfortranを入手blasとlapackのmake成功

pip3 install scipy

cannot import name 'HTTPSHandler’

➡libssl.so.1、libcrypto.so.1がchroot環境のlibssl.a、libcrypto.aに含まれていないので、/QOpenSys/usr/libからコピー

機械学習環境の構築

pip3 install scipy

0706-012 flag is not recognized. ☜イマココ

【構築にトライして分かったこと】IBMi PASE環境用に用意されていないものを導入するのは非常に困難。PTFとして提供される可能性??

今後の予定

引き続き機械学習環境の構築

Python ⇔ DB2・RPGとの連携確認

機械学習の基礎の学習

機械学習アプリケーションの作成

2017年活動報告

チーム2 SLY高栁

ZendServerを活用したPHP 活用事例

IBM i 上でのPHP活用事例ついてまとめたいと思います

チーム2( PHP活用事例)のスタンス

いきなり余談ですが

2017年度版プログラミング言語トップ100

出展:FOSSBYTES

https://fossbytes.com/100-most-popular-programming-languages/

順位 言語 順位 言語

1 Java 8 JavaScript

2 C 9 Delphi/Object Pascal

3 C++ 10 Swift

4 C# 11 Perl

5 Python 12 Ruby

6 VB.net ・・・ ・・・

7 PHP 39 RPG(OS/400)

チーム2( PHP活用事例)のスタンス

テーマ 「今さらなんて言わずにPHP開発 on IBM i」

PHPの歴史を60秒で振り返る

参考サイト:e-BELLNET.com

2013.4.15 「PHP on i を始めましょう」

What’s new

1995年 PHP 1.0 リリース

2004年 IBM i でPHPが動作(非公式バイナリ:i5 PHP)

2006年 Zend Core for i5/OS リリースにより公式サポート

2016年 PHP7.1(2017年9月時点の最新版)リリース

最新のOSSツールで実装してみます

Webブラウザ

HTTPサーバ

PASE

ZendServer

PHP

MariaDB

RPG/CLDB2 for i

IBM i

実行環境

実装機能

基幹システムの周辺系をターゲットに

Web画面機能を選定中

チーム2 今後の予定

開発環境セットアップZendServer 9 済PHP 7 済MariaDB(ZendDBi)php.ini / httpd.conf 等の設定何らかのフレームワーク

開発メンバーアサインSLYからは超若手メンバーを投入予定PHPを書いてみたい方は声を掛けてください!

活用にあたってのナレッジまとめ

2017年活動報告

チーム3 SLY川島JBCC 富田NID 平野

IBM i の活用について訴求して行きます!

BluemixからDB2と連携してWatson Analyticsの活用事例の作成

2017年活動報告

問題定義

IBM iに蓄積されたデータを有効活用できないか?

活用方法

1.過去データ参照が難しい バックアップは取得しているが・・・→テンポラルDBを活用で過去データ参照がスムーズに!

2.何を分析してよいか分からないWatson Analyticsを活用して分析方法を検討→WebQUERYで分析結果を表示

2017年活動報告

・テンポラルテーブルとは?・使い方・実際の事例

・WebQUERY・使い方・実際の事例

・WatosonAnalyticsとは?・使い方・実際の事例

・BlueMIXとは?・使い方・実際の事例

・AS400との連携・使い方・実際の事例

IBM i Blue Mix Watoson Analytics

連携

2017年活動報告

IBM i WatosonAnalytics連携 構成

IBM iBLUE MIX Watson Analytics

DB

WebQueryデータ分析照会

テンポラルテーブル

5250画面

PHP

分析結果より

DB

サービス

DB

2017年活動報告

タイムトラベル機能 今回作成したテーブル

CREATE TABLE policy_info( policy_id CHAR(4) NOT NULL,

coverage INT NOT NULL,

sys_start TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS ROW BEGIN,

sys_end TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS ROW END,

ts_id TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS TRANSACTION START ID,PERIOD SYSTEM_TIME (sys_start, sys_end) );

管理情報

トランザクション

CREATE TABLE hist_policy_info LIKE policy_infoALTER TABLE policy_info ADD VERSIONING USE HISTORY TABLE hist_policy_info

STEP1:トランザクションテーブル作成

STEP2:履歴履歴テーブル作成

2017年活動報告

タイムトラベル機能 今回作成したテーブル

INSERT INTO policy_info (policy_id, coverage)VALUES('A123',12000);INSERT INTO policy_info (policy_id, coverage)VALUES('B345',18000);INSERT INTO policy_info (policy_id, coverage)VALUES('C567',20000);

STEP2:トランザクションテーブルデータ登録

policy_info

hist_policy_info

2017年活動報告

タイムトラベル機能 今回作成したテーブル

UPDATE policy_info SET coverage = 25000 WHERE policy_id = 'C567'

STEP3:トランザクションテーブルデータ更新

policy_info

hist_policy_info

2017年活動報告

タイムトラベル機能 今回作成したテーブル

DELETE FROM policy_info WHERE policy_id = 'B345';

STEP4:トランザクションテーブルデータ削除

policy_info

hist_policy_info

2017年活動報告

タイムトラベル機能 今回作成したテーブル

SELECT policy_id, coverage, sys_start, sys_endFROM TEMP001.policy_info FOR SYSTEM_TIME AS OF '2017-06-15-18.24.40.361537000244'

STEP5:トランザクションテーブルデータ過去データを参照

policy_info

初期登録時点を指定

2017年活動報告

タイムトラベル機能 今回作成したテーブル

SELECT policy_id, coverage, sys_start, sys_endFROM TEMP001.policy_info FOR SYSTEM_TIME AS OF '2017-06-15-18.24.40.361537000244'

STEP6:トランザクションテーブルデータ過去データを参照

policy_info

初期登録時点を指定

2017年活動報告

タイムトラベル機能 今回作成したテーブル

STEP7:RPGから表示

結果画面

初期登録時点を指定

2017年活動報告

タイムトラベル機能 今回作成したテーブル

STEP8:RPGから表示

結果画面

削除後時点を指定

2017年活動報告

タイムトラベル機能 現時点での成果/考察

考察1マスターデータ系のデータについて過去データが残っていると更新履歴が見れて分かりやすい。例)消費税マスタ等過去の処理を実施したいときは売上日付に合わせたデータを見るようにすれば、売上日時点の消費税テーブルを参照する事が可能

考察2重要なトランザクションについて外部公開(外部接続)するようなテーブルに関して誰が、いつ更新、削除したのか履歴されるので原因究明がしやすくなる

考察3過去データを分析、比較したい場合バックアップからのデータ復元が不要でSQLによって過去比較結果が表示可能※在庫トランザクションがどう推移したのか追跡が可能

2017年活動報告

今後の予定

基幹システムデータだけで WatosonAnalytics事例を検討

SNS等のデータと基幹システムデータを連携した時のWatosonAnalytics事例を検討

Web Query による分析画面の作成

分科会 今期活動予定

毎月 第3金曜日 18時~20時 で活動※場所は東京近郊skypeでの参加も現在実施中(希望者のみ)

10月19日(木)18時~オムニサイエンス様

新規で分科会参加したい方はOSS幹事までご連絡ください。