2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【IBM i × Node.js】IBM Web Administration for iのAPI機能について考える【Swaggerについて】

Last updated at Posted at 2025-10-28

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プログラムを使用した自動的な開始・停止などを行うことができません。

5.一括管理できない

それぞれ設定したAPIについて、同じような設定変更を行う場合(例えばSecure Transportの設定や、実行ユーザ、ライブラリリスト、URIパステンプレートの変更など)に、すべてのAPIについてウィザードで再配置(再設定)を行う必要があり、一括で同じ設定に変更するような機能がありません。

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に帰属します。
詳細はこちらを参照ください。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?