IBMiオープンソース活用事例

【 IBM i におけるオープンソース活用 】
OpenSource協議会 - System i
2011/11
0
2006年 最初はOSSパッケージから始まった
オープンソースを利用した工事進捗!
OSSのXOOPS(PHP)利用
1
2007年 グリーン画面をブラウザに!
System i の既存システムを活かす
・5250画面をブラウザに集約
・IBM i とExcelを連携
ポイント
・既存システムを活かしてPHPで構築
・部内3名(RPGプログラマ、1名がWebを学習)
・PHPの習得は容易、しかし以外の学習が多い(Apache/SQL/HTML・・・)
2
2008年 5250画面からの脱却!
BIで活用
・データの集計/分析に活用
・グラフの活用
ポイント
・ドリルダウンが可能になった
・グラフ表現でわかりやすくなった
3
2007年 購買システムをOSSで実現!
・ファイル転送をリアルタイムに改善
・PCクライアントへのソフト導入が不要
ポイント
・1画面に納まる情報量が格段に増えた。
・バッチの取り込みからリアルタイムの取り込みになった
(CSVファイル出力、取り込みが不要になった)
・操作性が向上した
(現品票、納品リストにQRコード印刷/部品の図面PDF表示/SSL)
4
2009年 受注システムをWebで実現!
・既存システム(RPG)を継承
・得意先システムをWebで実現
【検索/照会】
PHP
DB2/400
PHPとリンク
動画スト
リーミング
パス
イメージ
ファイル
【帳票】
【在庫引当/注文】
WRK
RPG
PHP
・受注入力のロジックを利用
・受注ファイル出力
・在庫引き当
・与信チェック
5
2010年 受注から生産までWeb化!
注文から製造指示まで一連の流れをWeb化!
システム構築前
営業
システム構築後
製造
営業
製造
指図仕様書を
ブラウザへ入力
指図仕様書をExcelへ入
力後、FAX又は郵便
紙は
製造へ
担当者のポータ
ルに一覧される
Accessで
入力
PHP
事務
IBM i
PDF が製造へ
事務
IBM i
5250で発注
入力
原価計算
課題:
・業務拡大においてExcelでの対応が困難になった。
・営業と製造のシームレス化が行われていない
・特注品の増大で設計図を扱いたい
ブラウザで発注
入力
原価計算
ポイント
・ブラウザで一元管理
・PDF作成のOSSを活用
・パフォーマンス向上で Ajax の活用(DBアクセスの分散)
6
ここまでのまとめ
事例を見てみると
① 基幹業務を継承しつつ、5250のWeb化が多い。
② 業務システムの一部をWeb化して生産性を上げる事例が続いて多い。
③ オープンソースはコスト的なメリットはあるが、協力者との関係は重要
構築技術を見てみると
① IBM i 技術者とPHP技術者の連携が必要
② 生産性向上のためEXCEL/PDF/グラフ等のOSS部品を活用する
③ Webの技術進化は早く、Ajax等の技術を取り入れて操作性の向上や
パーフォーマンスの向上をはかる。
7
パフォーマンスアップを考慮された活用事例
在庫の一元管理
マルチ言語対応
中国
本社:東京
在庫情報
入出庫管理
在庫情報
入出庫管理
PASE環境
VPN
DB2
PHP
フィリピン
在庫情報
入出庫管理
既存RPGプログラム
System i 520
リモートアクセス
による開発
8
SQLパフォーマンスの考慮点
1:SQLはPreparedStatementを利用
2:テーブルオープン回数は最小限に
3:インデックスを作成して利用する
4:SELECT *の使用は避ける
5:相対レコード番号の利用は避ける
6:数値データタイプの変換は避ける
7:算術演算式使用を避ける
8:LIKE句使用の際の注意点
9:WHERE節内でのスカラー関数の利用は避ける
SQLパフォーマンスモニターで確認しよう!
9
パフォーマンスのまとめ
① RPGのDBアクセスがPHP DBアクセスより早い。これをうまく活用する
② 極力単純なSQLにする。
③ インデックスを作成する。
④ 表示行が多い場合、PAGER等のオープンソースを活用する
⑤ 更新処理はRPGを利用するとよい
⑥ 今回出てこなかったがAjax等の非同期アクセスも有効
10
10
操作性や見栄えの良い活用事例
VB(Visual Basic)アプリケーションをPHPで再構築
・受注システム
・RIA(Rich Internet Applications)の実現(VBと同様のイメージおよび操作性)
オープンソースの【Ext JS】(JavaScriptライブラリー)を活用
・5250 との連携
5250のメニューよりブラウザ画面を表示(サインオンユーザーやジョブ属性を引き継ぐ)
・既存のRPGを少量の変更でストアドプロシージャとして活用
データの登録、更新 (コミットメント制御あり)
11
Ext JS の RIA 部品(代表的なもの)
Tabs
TreePanels
MessageBox
Complex
Forms
Layout
CheckBox
Drag and Drop
Grid
DataView
Graph
12
RIAのまとめ
① javascript製の部品活用で見栄えや開発生産性が上がる
② PHP + JavaScriptでスキルの取得が必要
③ Ajaxの非同期アクセスはパフォーマンスにも有効
・通信の状況を見るモニターがあると便利(ex. Fiddler)
・サーバ側(IBM i)やネットワークの負担の低減になる
④ 既存のVB資産の操作性を損なうことなくブラウザアプリを構築できる
・操作性が変らないためお客様の教育コストも軽減できる
13
ご清聴ありがとうございました。
OpenSource協議会 - System i
14