データアクセス層、サービス層、
JSON層の3つを自動生成
X-Elevateは、テンプレートベースのAPI開発ツールで、従来のIBM i対応のAPI開発ツールにはない数々の特徴を備えた製品である。
ウイザードに従ってライブラリやファイル、フィールドなどを選択してコンパイルすると、Db2 for iにアクセスするための「データアクセス層」、ビジネスロジックが記述された「サービス層」、データ交換を行う「JSON層」の3つの層をもつフリーフォームRPG(FF RPG)プログラムがテンプレートに基づき自動生成される(図表1)。
サービス層のビジネスロジックは自由に追加・修正でき、FF RPGプログラムなのでオープン系エンジニアでも追加・修正が容易である。またテンプレートベースの開発なのでプログラムの属人化を防ぐことができ、開発の標準化を徹底することができる。さらにFF RPGプログラムはILEオブジェクト化されるので継承性があり、IBM i OSのバージョンアップやマシンリプレースの影響を受けずに利用を継続できる。
新しい設計思想に基づく
API開発ツール
市場で流通するIBM i対応のAPIツールとX-Elevateとの違いについてGxPの阿野幸裕氏は、「従来のAPI開発ツールは既存のRPGプログラムなどをラッピングしてAPI化し外部から利用する方式ですが、X-ElevateはAPIをテンプレートベースで新規に開発するアプローチです」と言い、次のように続ける。
「既存のCLやRPG、画面インターフェースをラッピングしてAPI化する方式は、既存のプログラムにない機能を追加する場合、既存のCL、RPGで実装するか、クライアント側のアプリケーションに実装するしかありません。そうするとビジネスロジックが分散されて複雑、非効率になったり、RPGとAPI開発のそれぞれのスキルをもつ複数のエンジニアが必要になったりします。また、既存のアプリケーションが数千ステップに及ぶような場合、プログラム1本の中身が複数機能を含んでいるのでクライアント側アプリケーションの開発自由度が奪われるため、既存アプリケーションの部品化が必要になる場合も見かけられます。X-Elevateは従来のIBM i向けAPI開発の課題を克服した、新しい設計思想に基づくAPI開発ツールです」
「また、ツール選定担当者や決裁者の方へのメッセージとしては、X-Eleveteは純粋な開発ツールであるため生成されたFFRPGプログラムは手組みしたものと変わりません。よって、本番運用はIBM iの純正機能で可能であり、本番環境ごとにサブスクやライセンスの課金が発生しないというメリットがあります」
テンプレートベースで進む
スピーディな開発
ここからはX-Elevateの開発の様子を見てみよう。「開発は非常にシンプルで、テンプレートの選択→ファイルの選択と定義→コード生成とコンパイル、の3つのステップで完了します(図表2)」と、GxP モダナイゼーション事業本部の吉村佐和子 氏(モダナイゼーション部エキスパート)は説明する。
X-Elevateにログインすると、最初にテンプレートの選択画面が表示されるので選択。ここでは「CRUD」を選択(図表3)。
次の画面(図表4)で、プログラム名(ここでは「PGM0521」)とタイトル(ソースに書き込まれる)を記述し、その次の画面(図表5)でプロシージャ名を付け、IBM iの命名規則に則ったオブジェクト名を記述して次へ進む。
次はファイルの追加・変更を行うための画面(図表6)。
「ライブラリ」欄の右横の「サーバーをブラウズ」をクリックすると、IBM i上のファイル名とライブラリ名が一覧表示されるので、該当するファイルとライブラリを選択。
「OK」で次に進むと、ファイルとライブラリが正しく選択されたことを示す画面に続けて、ユーザーのリクエストに対する一連の処理結果をJSON形式で返すフィールドの選択画面へと移る(図表7)。
左側にフィールドが一覧表示されるので、必要なフィールドを選択して、「>」の操作で右側へ移す。そして「次」をクリックするとコードが生成されて画面4で記述したファイル名でローカルに保存する(図表8)。
生成されたプログラムは、ローカルで確認できる(図表9)。
コンパイル用のXMLコードと、データアクセス層のSQLRPGとRPGLE、サービス層のSQLRPGとRPGLE、JSON層のSQLRPGとRPGLEがそれぞれ別のタブにFFRPGコードでリストされる。
F6キーまたはGenerateボタンを押すと、前述のxmlとFFRPGコードがIBMi上に送信され、xml内の手順に基づきコンパイルが行われる。
IBM i上にコンパイルされたプログラムとモジュールは5250画面で確認できる(図表10)。
図表5でプログラム名を「CUSTLIST」としたサービスプログラムと、データアクセス層・サービス層・JSON層のそれぞれのモジュールが確認できる。
7つの特徴を備える
「モジュラーモノリス」プログラム
X-Elevateのメリットは、次の7点にまとめられる。
①テンプレートによる高速API開発
②開発の標準化
③FF RPGプログラムの自動生成
④3層構造のプログラム
⑤オープン系技術者の活用
⑥IBM iの継承性やセキュリティの利用
⑦脱ベンダーロックイン
④の「3層構造のプログラム」は、オープン系技術者にとっては一般的なデータ層・アプリケーション層・プレゼンテーション層の3層に対応するもので、これによりオープン系技術者の活用が容易になる。
またGxPと開発元のFresche Solutionsでは、生成されるRPGプログラムのタイプを「モジュラーモノリス」と呼んでいる。モジュラーモノリスはマイクロサービス開発の弱点(高い難易度、長期の開発など)を克服する開発手法として最近注目を集めているもので、1つのプログラム(モノリス)でありながら内部では機能ごとに分割(モジュール)されているプログラムを指す。モジュラーモノリスのプログラムはモジュールごとに改修・拡張できるメリットがあり、スピーディな保守・開発が可能である。
「X-Elevateでは、モジュラーモノリスのほかに、オープン対応の新しい技術やサービスを容易に取り込めるという特徴も備えています。今後は、API開発用のテンプレートに加えて多様なテンプレートを追加していく予定で、X-ElevateはFF RPGプログラムをテンプレートベースで縦横に開発できるツールへと成長しています」と、阿野氏は展望を述べる。
<関連記事>
◎インタビュー IBM i向けの新しいAPI開発ツール「X-Elevate」登場 ~阿野 幸裕氏 株式会社GxP
◎X-elevate
https://x-elevate.jp/
[i Magazine 2024 Summer 掲載]