1.IBM Web Administration for iについて
IBM Web Administration for iはIBM iのWEBサーバやWEBアプリケーションを、ブラウザのGUIで管理できるツールです。
それぞれウィザード形式でデプロイまでできるので、コマンドがまだ使えないようなIBM iビギナーであっても使いやすい機能となっています。
この機能についての解説は詳しい記事があるのでここでは割愛します。
2.Swaggerとは
詳しく書いているQiita記事があるのでこれも割愛します。
3.IBM Web Administration for iの現状の不満点
- ウィザード形式でわかりやすいがやや冗長に感じる
- Swaggerのエクスポートは可能だが、インポートができない
- 既存の定義をコピーして新しいAPIを作る機能がない
- CLI(コマンドライン)連携が足りなくて、CI/CD・DevOpsに使いにくい
- 一括管理できない
といったことが挙げられました。
これらの問題点について
- 1.ウィザード形式でわかりやすいがやや冗長に感じる。
-
例えばRPGをキックするAPIを作成しようとしたときの手順は、
1."新規サービスの配置"をクリック
2.ILEオブジェクトを使用するか、SQLを使用するかの選択
3.PCML(パラメータ定義)ファイルの選択
4.URLパステンプレートの設定
5.セキュリティレベルの選択(HTTP使用不可/BASIC認証の使用)
6.プロシージャのパラメータのマッピングの設定
7.API公開時の文字列のトリミングルール・成功/失敗の返し方の設定
8.使用するHTTPメソッドの設定・パラメータで入出力を許可するデータオブジェクトタイプの設定
9.WEBサービスを実行するユーザIDの設定
10.ライブラリリストの設定
11.トランスポート情報の受け渡し(HTTPメタ情報)
と、複数APIを設定する場合に冗長に感じます。
- 2.Swaggerのエクスポートは可能だが、インポートができない
-
ウィザードでREST-APIを設定・作成した後、配置済みサービスのサービス定義から確認できます。
ここから表示してダウンロード可能ですが、
ダウンロードしたものをほかのAPIサーバにインポートする機能がありません。
- 3.既存の定義をコピーして新しいAPIを作る機能がない
- 同じ設定で、違うRPGを呼ぶようなAPIを作成する場合でも、前述のウィザードを使用して毎回設定を作成する必要があります。
- 4.CLI(コマンドライン)連携が足りなくて、CI/CD・DevOpsに使いにくい
- HTTPサーバーは同じようにIBM Web Administration for iから設定が可能ですが、 こちらはhttpd.confの編集および、始動・停止も5250エミュレータのコマンドラインから実行することができます。 しかしApplication ServerについてはSwaggerの編集およびAPIの始動・停止をコマンドラインから行う方法が見つかりませんでした。 したがって、CLプログラムを使用した自動的な開始・停止などを行うことができません。
4.現状の不満点を解消したい
| 不満点 | 理想の解決策 |
|---|---|
| ウィザードが冗長 | JSON/YAMLでConfig as Code化し、自動生成できるようにする |
| Swaggerはエクスポートのみ | Swaggerインポート機能を追加して双方向で扱えるようにする |
| 定義のコピーができない | Swagger編集 → インポートで複製・派生定義を可能にする |
| CLI連携が弱い | CLIから開始・停止・再配置を行えるようにしてCI/CD対応 |
| 一括管理できない | Swaggerテンプレートを一括変更+ホットリロードで反映 |
それぞれの要件を鑑み、Node.jsでの実装が最適と考えました。
理由としては、
-
openapi-backendでYAML/JSONの読み込みが簡潔に行える -
swagger-ui-express,express-openapi-validator,spectralなどを使用することで、設計~運用までカバーできる -
itoolkitを使用するとIBM iとの連携もカンタン!
といったところがあります。
他のサーバサイド候補としてPythonとPHPの比較もしておきます。
| 言語 | 強み | 弱み |
|---|---|---|
| Node.js | Swagger読み込みライブラリ豊富 (openapi-backend) / CI/CDとの親和性 / IBM i連携も可 |
JS/TSに慣れていないと学習コスト |
| Python |
ConnexionでOpenAPI→ルーティング可能 / データ加工に強い |
IBM iとの接続実績は少なめ |
| PHP | Laravel資産活用しやすい / Toolkit安定 | Swaggerは生成寄り、インポートが弱い |
5.まとめ
- GUIウィザードはIBM iビギナーに優しいが、大規模運用では冗長で一括変更も困難
- Swaggerを「唯一の正」とし、JSON/YAMLでConfig as Code化することで解決できる
- その実装基盤としては、ライブラリ・ツールが揃ったNode.jsが最適
- IBM iユーザーにとっても
itoolkitにより既存RPGプログラムとの連携が容易
👉 IBM Web Administration for i の今後の公式機能拡張にもぜひ期待したい!
5.参考サイト
当記事の著作権はIBMに帰属します。
詳細はこちらを参照ください。