RPG

568. プログラム開発の順序と選択

弊社がどのような順序でどの言語を選択して
開発しているかをご紹介します。

・使用可能な開発言語

コマンド
CLP
ILE-RPG
パネル・グループ
JavaScript
HTML
Python
その他


・開発順序

(1)コマンドから始める開発

ある機能を作るためにはコマンドが
開発することが多いのです。
全体像を把握して機能をコマンドで表示することから
始めます。

(2)CPPとしてのCLP

コマンドを処理するプログラムのことをCPPと呼びますが
CRTCMDCPPという社内コマンドでコマンドを処理するCLPを
簡単に瞬時に生成できます。
  生成されたCLPの中での処理の検討を開始します。

(3)CLPでできるものはCLPで

  簡単なファイル保守や印刷出力または簡単な入力は
できるだけCLPで処理するようにしています。
CLPでもRUNSQLを使えばSQL文でレコードの追加・変更・削除が
行えるのでマスターファイル保守にいちいちRPGで開発する必要はありません。

(4)インターフェースはDSPFよりパネル・グループで

DSPFを使えば簡単かも知れないがIBM提供のアプリのほとんどの
インターフェースはパネル・グループ(*PNLGRP)である。
パネル・グループ(*PNLGRP)を使うとそれを処理するオブジェクトが
複数に分かれることが多いがそれらのオブジェクトは
  オブジェクト指向として再利用可能になる場合が多いのです。
パネル・グループ(*PNLGRP)の利用でオブジェクト再利用とともに
DSPFより速いパフォーマンスを得ることができます。

(5)サービス・プログラムの検討

 
 
システムの中で共有して使う機能はサービス・プログラム(*SRVPGM)として
  まとめることを検討します。
サービス・プログラムが扱うデータがIFSのストリーム・ファイルを
扱うのであればC言語で開発しますがレコードを扱う場合は
RPGで開発します。
  また弊社では独自のサービス・プログラムをいくつか開発しています。
これらの汎用サービス・プログラムがあるあかげでオープン系との
スムースな互換に成功しています。

・CVTMOD4: EBCDICとASCIIコードに変換に利用されます。
・UNI_CODE: EBCDICとUTF-8の変換に利用します。
・XML2JSON: XML とJSONコードの変換に利用します。

(6)プログラムの検討

CLP内部から呼び出されて処理するプログラムはできるだけ
CLPで処理できるものはCLPで処理します。
別のプログラムの呼出しが必要となれば管理も大変だし
  呼出しのオーバー・ヘッドを減らしたいからです。
前述のように処理するのがIFSであればC言語で開発しますが
レコードであればRPGで開発します。

(7) API使用の検討

弊社製品の開発ではこのあたりでもう既に多くのAPIを
使用しているはずです。
ソフトウェア製品となるとパフォーマンスだけてなく
技術の点で多くのAPIの活用が必要になります。
ソリューションという名前のソフトウェア製品は
今まで世の中でできていなかったことを実現する製品ですから
当然、APIなどの高度な技術が必要になります。
例えばAutoWebは5250ストリームの内部を解析していますし
DSPFオブジェクトそのものをリアルタイムにAPIで解析しています。
Spoolライターもスプール内部をC言語で深い階層まで解析しています。
プリンタとの通信ではLPR,IPPやTELNETなどのいくつもの通信プロトコルを
使ってプンンタと通信しています。
HTTPプロトコルではApacheよりはるかに進化したALASKAという
HTTPサーバーをAutoWebもSpoolライターにも搭載されています。

(8)インターフェースによる言語の選択

 
 
HTMLインターフェースの場合は必要であれば
JavaScriptやSTRPCCMD(=PCオーガナイザー)に頼る場合も
あります。
また最近ではAIとの会話はREST APIを使いますので
RPGでも可能ですがREST APIに適したPythonを使います。
PythonはOS Ver7.5以降はプレ・インストールはされていませんが
弊社ではPythonのインストーラを開発しましたので
どのOSでもPythoの利用が可能です。
  Pythonと任意のオープン系ツールをインストール可能にした
インストーラの至便性は大きくこれはIBMが行ってきた
インストーラと同じAPIで同じ原理で動作します。

(9) PASE環境の活用


IBM iのPASE環境とはIBM AIX(=UINIX互換のOS)のプログラムを
移植してテストすることができる環境のことです。
このオープン化の時代にあっては新しい技術が次々と
世界中で開発されています。
 弊社ではそれらをIBM iで再利用の可能性をさぐるために
PASE環境への移植を何度も試しています。
社内にはIBM AIXやLINUXも導入してテストを繰り返しています。
 単にIBM i内部の知識や環境にとどまるのではなく
 製品もオープン化すべきであると考えています。

(10) AIの活用

 
 
今回、AIアシスト・ソリューション: Chao!! を開発して
IBM iのAI活用の大切さに着目しましたので
もっと手軽に製品でAIを活用できるようにと考えています。
つまり弊社のどの製品からでもAIを手軽に活用できる方法は
ないかと模索しています。
かつてMicrosoftがExcelなどでアニメを伴ったヘルプを
搭載したことがありましたが将来はどんな製品でも
AIインターフェースが実装される時代になるのではないかと
考えています。