RPG開発者のためのIBM i モダナイゼーション入門!
RDi とWeb APIで新しい開発の世界を楽しもう - 第 5 回 -
はじめに
出村:「みなさん、今日はDXを進める上でのWeb API技術についてお話ししましょう。前回の記事ではRDiに関する特集を行いましたが、次はその先にあるWeb APIについてです。」
松田:「Web APIって最近よく聞きますけど、具体的にはどのようなものなんですか?」
出村:「Web APIは、Web技術を利用して異なるプログラム間でデータや機能をやり取りする仕組みです。一般的なWeb通信は人とプログラム間のものですが、Web APIはプログラム同士の通信を意図しています。」


※JSON:JSONとは「JavaScript Object Notation」の略で、「JavaScriptのオブジェクトの書き方を元にしたデータ定義方法」のことです。
JavaScriptでオブジェクトを作成する際は {} や [] などの括弧を使って記述しますが、JSONはその記法の軽量版として業界標準になっています。
JavaScriptとの相性が非常に良く、現在はJavaScript以外にもPythonやJava、PHPなどの幅広い言語で使われています。利用シーンとしては、JavaScriptなどのクライアント言語とPythonなどのサーバサイド言語間のデータのやり取りが多いです。
松田:「なるほど。Web APIは便利そうですね。」
出村:「Web APIは今では様々なシステムに使われています。
例えば、WebアプリやスマートフォンアプリとWebサーバー間の通信です。Web APIを利用して必要な情報のみをWebサーバーとやり取りすることでレスポンスの良い快適なアプリが作成できます。Google Mapのような地図アプリはまさによい例です。利用者は地図をスクロールしながら画面上に見えていない新しい部分の読み込みを続けることで滞りなく地図を見ることができます。もし、Web APIが使われていない地図サイトであれば、地図をスクロールするごとにページ全体が更新されてしまい、使い勝手のよくないものになってしまいますよね。」
出村:「他にも、AIの分野でもWeb APIが活用されています。Chat GPTのような生成AIや画像認識のAIモデルは、クラウド上のWeb APIとしてアクセスできるようになっています。Web APIの使い方がわかれば、最先端の技術を取り入れたシステムを容易に構築できます。」
<Web APIの特徴>
- HTTPSやJSONなど業界標準の通信プロトコルやデータフォーマットを使用するため、プログラム言語やOSに依存しない
- 業界標準のため、実質的に接続先は無限にある
- セキュアな通信によりインターネット経由での連携ができる
- リアルタイム処理が可能
- 様々なSaaSがWeb APIを公開しているため、それらのサービスとの連携や自動化が可能
- Web APIにはいくつか種類があり、代表的なものはRESTとSOAPがある
特にREST APIはクラウドサービスなどインターネット上でのやり取りで広く利用されている
渡邊:「若手の皆さんには、ぜひ積極的にWeb APIに取り組んでほしいですね。これからの技術者にとって、Web APIの理解は必須だと思います。」
松田:「そうですね! 私もこれから本格的に勉強していきます。」
渡邊:「ところで、IBM i でもWeb APIって実現可能なんでしょうか?」
出村:「もちろん IBM i でも実現できます!IBM i ではJavaやPythonのようなオープン系言語の他に、RPGやCOBOL言語を使ってWeb APIを構築できます。(※ただし、ILEであることが条件となります。)IBM i が提供する機能で、JSONデータも簡単に扱えるようになっているので、Web APIの開発もスムーズに行えます。」
松田:「RPGでもできるということは、RDiで学んだことを活かして構築できそうですね。」
出村:「ここからはIBM i に焦点を当ててWeb API開発の実践例についてお話しましょう。」
IBM i におけるWeb APIの活用シーンについて
渡邊:「IBM i にフォーカスすると、どんな場面で活用されているのでしょうか。」
出村:「IBM i についてお話をする際に、ポイントとなるのはまず使い方です。Web APIにおいてIBM i の役割が2つに分けられます。1つ目は、IBM i がアプリケーション・サーバーになるパターンです。既存のIBM i 資産を活用して情報を外部へ公開する形になります。構成方法としてはIBM i にてIWS(Integrated Web Services)を構築するという方法が挙げられます。 IWSとは、ILE RPG や ILE COBOL プログラム(厳密には ILE C/C++ も含まれますが)を Web アプリケーション・サーバーとして構成するためのテクノロジーのことです。
そして、2つ目は、IBM i がクライアントになるパターンです。このパターンでは、クラウドサービスなど外部にあるWeb APIサーバーに対して、IBM i がクライアントとしてアクセスします。」
松田:「IBM i がサーバーにもクライアントにもなりうるのですね!今回初めて知りました。」
渡邊:「使い方について、2パターンあるとのことで、実際の活用シーンについてもより詳しく知りたいです!」
出村:「実際の活用事例をご紹介します。1つ目は、LINE注文でのモバイルアプリ事例です。これは、IBM i がサーバーになるパターンです。具体的には、ポリ袋やごみ袋を開発・製造するお客様がもともと持っているIBM i の受注の仕組みとLINE+チャットボットをWeb APIで連携し、さらに決済処理・与信調査の手間を外部のクラウドサービスとのAPI連携で実現しました。」
松田:「なるほど!この事例では、世間でも利用者が多いLINEを活用することで老若男女問わずダイレクトな情報発信を実現できたのですね。また、既存の基幹システムをそのまま活用していることでプログラム改修などの手間やコストも削減できていますね!」
出村:「そうですね。加えて、クラウドサービスとの連携により、お客様社内での業務となっていた与信調査・売掛管理・貸倒管理についてもすべてサービスに任せることができました。」
渡邊:「APIでIBM i とモバイル端末のLINE、クラウドサービスを連携することで、LINE注文による売上の拡大、お客様の利便性向上、社内業務の効率化をすすめたとても面白い事例ですね。」
出村:「続いての事例は、IBM i がクライアントになっているパターンです。お客様は、当時、既存のRPGⅢのアプリケーションから外部にあるクラウド型ワークフローのサービスを呼び出したいという課題をお持ちでした。同時に、基幹システムの業務アプリの改修は最小限に留めたいとの思いもありました。こちらは、Web APIを使用するためのFFRPGを作成し、これを既存のRPGⅢから呼び出して業務改善に繋げました。」
渡邊:「確かにアプリ改修を最小限にしたいというお客様は多くいらっしゃるイメージがありますね。」
出村:「そうですね。当初は、基幹システムを参照しながらワークフローに手動でデータ入力を行われていました。データ入力の1日の所要時間としては、約16時間だったそうです。」
松田:「複数人で手分けしてもかなりの工数がかかってしまいますね。」
出村:「そのような問題を解決するために、Web APIの技術でもともと使っていたワークフローと基幹システムとの自動連携を実現しました。結果的に、全社で1日あたり2人分相当の入力作業が削減できました。加えて、承認フローも自動的に選択されるので承認者の作業工数も削減されました。」
松田:「Web API によって既存のプログラムと Web 上のアプリケーションを連携させることでかなりの効果が発揮されたのですね。」
渡邊:「そうですね!実際に私も構築してみたくなりました。」
出村:「では、今回は、事例①で取り上げているIBM i がサーバーになるパターンに沿って、Web APIを構築していきたいと思います。実はIBM i 上でAPIサーバーを作成する際には、Java、Node JSやPHPなどで作成が可能ですが、実はRPGでも作成できるんですよ。IBM i を利用されているお客様の中にはまだまだRPGをメインで使われているお客様も多いのでRPG技術者にとってもハードルが低いですよね。」
松田:「なるほど!お作法さえわかれば、RPGユーザーさんであれば自身で作成できてしまうのですね!」
渡邊:「実際に構築をするうえで何を行うのかさらに詳しく手順を見ていきましょう。」
IWSサーバーの構築手順
出村:「IWSサーバーを構築してみましょう。IWSサーバーがILE プログラムを実行するときに使用するユーザー・プロファイルを作ります。ユーザー・プロファイル作成のコマンド例は以下となります。」
- ユーザー・プロファイル作成コマンド例
CRTUSRPRF USRPRF(IWSUSER) PASSWORD(xxxxxxx) STATUS(*ENABLED) USRCLS(*USER) USRCLS(*USER) TEXT('IWSユーザー ') SPCAUT(*NONE) PWDEXPITV(*NOMAX) JOBD(QGPL/QDFTJOBD) CCSID(5035)
松田:「はい。作成できました。」
出村:「次にIWSサーバーを作りましょう。IBM i Webadministrator for iにアクセスします。 http:// (IBM i のホスト名または IPアドレス ):2001/HTTPAdmin です。ログインするユーザーは、 QSECOFR等、特殊権限 *ALLOBJと *IOSYSCFGを持つユーザーでアクセスしてください。」
渡邊:「ログインできました。ブラウザで作成できるのですね。」

出村:「そうです。各IWSサーバーの起動状況の確認や、起動・停止・再起動等もできます。ここからの具体的な構築手順は文末のPDFを参照してください。構築できましたか?」
松田:「はい。構築できました。左上が実行中になっています。」

出村:「それでは、配置済みサービスの管理をクリックしましょう。初期状態では、「ConvertTemp」というサンプルのWebサービスが登録されています。
早速、VS Codeを使って実行してみましょう。」
渡邊:「VS Codeを使うのですね。インストールや日本語化、REST Clientのインストールについては、以下のサイトが参考になりますね。」
- VS Codeのインストール、日本語化
https://qiita.com/YurimyMiyu/items/5ce7821f1e3e5905c3ee - REST Clientのインストール
https://qiita.com/mgmgmogumi/items/61f0b896580d3e6db2bb
出村:「そうですね。他のツールを使うこともできますが、VS Codeはシンプルで使いやすいです。「ConvertTemp」は華氏を摂氏に変えてくれるAPIです。リクエストをVS Codeで作って、レスポンスを確認しましょう。リクエストは以下に添付のhttpファイルの通りです。要素のTEMPINに送信する華氏の値が入っています。」
【リクエスト内容】
ConvertTempTest.http
松田:「VS Codeで作成できました。SendRequestから実行すると、右側側に、TEMPOUTとして、37.77が表示されています。」

出村:「無事取得できましたね。IBM i Webadministrator for iの「ConvertTemp」のプロパティを見ると、以下の画面になります。リクエストを受けた時に、プログラムに表示されている、IBM iのRPGプログラム「QIWSSAMPLE.SRVPGM」が動作します。」

松田:「なるほど。このようにRPGのプログラムがIWSのサービスに紐づいているのですね。」
渡邊:「プログラムは実際にどう作ればいいのでしょうか。」
出村:「詳細な手順については、次号にて改めて説明しますね。今回は、IWSでの実行方法を以下にまとめます。」
<IWSでの実行方法>
- IWSのAPI定義にRPGプログラムを登録
→最終的にRPG呼ばれる - IWSのAPI定義にSQLを直接入力
→SQLが実行される(プログラムは不要)
次回予告
出村:「今回はWeb APIについて、概要や具体的な活用シーン、IWS構築手順・サンプルプログラムの実行についてお話しました。」
松田:「Web APIサーバーの構築はこれからですが、今回伺ったお話だけでもWeb APIについて具体的なイメージが湧いた実感があります。」
渡邊:「そうですね。次回は、実際にWeb APIサーバーを構築した様子や手順をお伝えできたらと思います。」
PDF資料 IWSサーバー作成手順.pdf
次号へつづく

出村 宏志
ベル・データ株式会社 アプリケーションビジネス本部DX推進部
1995年ベル・データ㈱に入社
1999年より約15年ほどIBM i のインフラエンジニアを経験し、その後アプリケーション開発に従事。キャンプで焚火をしながらボーっとするのが最近の楽しみです。

渡邊 隆
ベル・データ株式会社 アプリケーションビジネス本部DX推進部
ネットワーク、オープン、セキュリティ、DX関連のプリセールス、構築、サポートを経て、現在はDX推進部に所属。工場DXソリューションを担当しながら、初挑戦のIBM i に格闘中。休日は、クラッシックピアノの練習や仲間との弾き合い会を楽しんでいます。

松田 三奈
ベル・データ株式会社 アプリケーションビジネス本部DX推進部
新卒よりインフラエンジニアとしてPowerサーバーのリプレイスに従事し、現在はDX推進部に所属。休日は、カフェ巡りや旅行など天候に関わらず外に出てアクティブに活動することが好きです。
あわせて読みたい記事

RPG開発者のためのIBM i モダナイゼーション入門!
RDi とWeb APIで新しい開発の世界を楽しもう - 第 1 回 -

RPG開発者のためのIBM i モダナイゼーション入門!
RDi とWeb APIで新しい開発の世界を楽しもう - 第 2 回 -

RPG開発者のためのIBM i モダナイゼーション入門!
RDi とWeb APIで新しい開発の世界を楽しもう - 第 3 回 -
