弊社がどのような順序でどの言語を選択して
開発しているかをご紹介します。
・使用可能な開発言語
コマンド
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インターフェースが実装される時代になるのではないかと
考えています。
