社長ブログ

55. 新年の開発雑記

新年明けましておめでとうこざいます。
今年もよろしくお願い申し上げます。
 
昨年後期よりは既にお伝えしていますように
パネル・グループ(UIM)をインターフェースとする
ノーコード開発ツールを新製品として開発しています。
_
 

■ パネル・グループとは

 
パネル・グループ(UIM)とはi5/OSのインターフェースの
95%以上を構成しているIBM社内用のインターフェース・オブジェクトです。
それをIBMユーザーでもむ使えるようにとAPIを公開していますが
APIを使えるユーザーも少ないのであまり普及はしていません。
しかしi5/OSの中核を成すだけあってその構造とパフォーマンスには
目を見張るものがあります。
現在の段階でRPGプログラムを出口プログラムとして
組み込めるところまで成功していますが
RPGプログラムを組み込むことによるパフォーマンスの良さは
開発している小職自身が驚いてしまうほどのパフォーマンスの良さです。
これには相当驚きました。

■ 画面サイズの制約がない

_

パネル・グループはHTMLと同じタグ言語であり行・桁位置の指定がありません。
従って画面サイズの制約もありません。
IBMは元々将来を見据えて画面サイズを自由に拡張できるように
考えていたようです。
パネル・グループに画面サイズの制約がないことはHTMLとも互換性、親和性が
あり容易にHTMLに変換することができるのも今の時代に合っています。
これまでのWeb化では5250インターフェースを変換していましたが
5250インターフェースに変換するのではなく直接HTMLを出力することができます。
今、㈱オフィスクアトロでは手分けしてHTMLインターフェースをWebデザイナーの
力も借りて開発中です。

■ イベント駆動型のオブジェクト指向

製品としてノーコード開発ツールではSQLによってデータ・ベースの
検索や更新まで行いますのでプログラムを組み込む必要はありません。
( SQLはどのIBM iでも使用可能です。)
とはいうものの自社では相当のビジネス・ロジックを組み込む必要があり
とても簡易のツールでは対応しきれないと考えている方もおられると
思いますがこの新製品のノーコード開発ツールでは必要な部分にだけ
RPG/COBOLを組み込むことができます。
 
このように途中に組み込むプログラムのことを出口プログラムと呼びます。
さてパネル・グループの出口プログラムはイベント駆動型と言って
実行キーや機能キーを押したイベントが発生したときを
処理するプログラムとして組み込みます。

これまでのRPG/COBOLのアプリケーションでは一本のプログラムだけで
すべてのイベントを記述していましたがパネル・グループでは
まず最初にパネル・グループを表示するだけのプログラムによって
パネル・グループを表示して表示プログラムはそれだけの役目です。

次にそのパネル・グループで実行キーや機能キーを押す度に
それぞれの機能を処理するだけのプログラムが呼び出されて実行されます。

このように書くとひとつのパネル・グループを処理するのに複数のプログラムが
必要になり無駄が多いように見えますが各プログラムは他のアプリケーションでも
共用して使うことができることが多く結果的にオブジェクトの再利用が
進みます。
このようにイベトン毎のプログラムを記述することをイベント駆動型と呼び
これはjavaやVisualBASIC, VisualC++, C#, VBAなどと同じ構造です。

よく多言語からIBM iに移行してきた開発者がRPGやCOBOLがわかりにくいと
表現するのはメイン・ルーチンがあるからです。
実は他言語でもメイン・ルーチンはあるのですがわかりやすくするために
メイン・ルーチンハ隠蔽されてしまっていて見えないだけなのです。

パネル・グループではJavaなどと同じように出口プログラムはイベント起動の
プログラムだけを記述することになります。

■ データ・ベース処理はSQLプロシージャー

ノーコード・プログラムなわけですがデータ・ペースのアクセスや結合、
更新はすべてSQLプロシージャーによって行われます。
SQLプロシージャーというのはAutoWebの動的コンボ・ボックスや
POPUPウィンドウでお馴染みの実績あるストアド・プロシージャーのことです。
内部処理はSQLで行われますがCPUメモリに確保されますので
パフォーマンスに最適です。
SQLストアド・プロシージャーはJavaなどのJDBCドライバや
ODBCドライバのパフォーマンス改善のためにIBMが開発したSQL命令を
保管して実行する機能です。
今度の新製品でもSQLストアド・プロシージャーが内部で自動的に生成されて
保管されます。

■ 出口プログラムも自動生成

パネル・グループの開発をやったことのない人にとってはパネル・グループの
開発はどうやればよいかわからないということになりますが
この新製品では出口プログラムも自動生成されます。
出口プログラムと言ってもわずか100ステップ以下の短い簡単なソースです。
SQLストアド・プロシージャーもパフォーマンスに優れていますが
出口プログラムに変更すると開発者も驚くほどパフォーマンスが
良くなります。
これはRPGやCOBOLプログラマーが今まで経験したことのない
素早さで実行されることに驚かれるにちがいありません。
よく昔に流行したCASEツールは簡単にできるという触れ込みであるものの
かなり重くて動きが鈍い製品ばかりでした。
RPGで作る5~6倍くらい遅いものばかりでした。
それに比べても手作りで開発したRPGよりも体感的にも驚く速さになります。
経験豊かなプログラマーがいくら頑張ってみてもこのパフォーマンスは
出せないと思います。

■ オブジェクト解析が生んだツール

このようにパネル・グループをインターフォースという使うだけで

・画面サイズの制約がない
・RPG/COBOL+DSPFよりパフォーマンスが圧倒的に優れている

という利点がありながらなぜパネル・グループが普及しなかったのでしょう。
それは扱うに難しいオブジェクトであるからです。
パネル・グループの入出力にはすべてAPIによる操作が必要です。
元々IBM社内用のオブジェクトであったのですからそれは当然としても
パネル・グループにいろいろな情報や属性を埋め込んでも
それを読取るAPIが存在しないためパネル・グループそのものを
十分に活用することができなかったのです。

これに対して㈱オフィスクアトロでは5年以上前から少しずつ
パネル・グループのオブジェクトを読取って解析するプログラムの
開発を進めてきました。
DSPFやデータ・ベース構造を読取るAPIは莫大な構造のAPIが
提供されていますがパネル・グループのオブジェクトを読取るAPIは
何もなかったのです。
しかしようやくパネル・グループの解析プログラの感性によって
パネル・グループにノーコード開発ツールとしての構成要素を
埋め込んでおけば解析ツールによってそれらを読取ることによって
パネル・グループというオブジェクトひとつだけですべてを
完結させることができるようなったのです。

例えばそのパネル・グルーブが読取るデータ・ベースの名前や
ライブラリー名さらにどのように読むのかというSQL文なども
パネル・グルーブの中に埋め込んでおけば
開発したオブジェクト解析プログラムよっていつでも簡単に
読取ることができます。
オブジェクトを直接読取るわけですからパフォーマンスにも
問題はありません。

例えばあなたが開発したRPGプログラムのオブジェクトの内部に
どのようにこのプログラムをコンパイルすればよいか
そのコンパイル・コマンドが埋め込まれていて
それをいつでも読み取ることができると想像しててみてください。
それと同じことをパネル・グルーブの中に埋めこむわけです。

パネル・グルーブにアプリケーションとして実行に不可欠な情報を
必要なだけ埋め込んでおけば後から実行時にいつでも取り出して
参照することができるようになりました。
このようにしてパネル・グルーブのオブジェクトを解析する
プログラムの開発成功によって初めてパネル・グルーブを
アプリケーションとして利用することが可能になったのです。

ベースのとなる基礎技術の開発がそれまで不可能であったことを
可能にしてくれます。
もちろんこの基礎技術だけでは製品化が簡単というわけではなく
それ以降も様々な難解なハードルを超えてきたこともあります。

ソリューションという製品はそれまでなかったソフトウェア製品として
新しい価値を生み出すことにあるのですが今回のノーコード開発ツールは
どこのソフトウェア会社も類似的にも真似のできない製品であると
思います。
それに対してお客さまがどのような評価をして頂けるかを
非常に楽しみにしております。
Web化や電子帳票化も含めて㈱オフィスクアトロの技術の集大成として
今年2024年に発表のときを迎える予定です。

– 2024年正月 –