
ここはとある都内のオフィスの一角。
少しずつ PowerBuilder に触れる機会が増えてきたお嬢様系若手社員、鉄久乃 レイラ(てくの れいら)さん。
今日も優雅にキーボードを叩いていると、背後から先輩同士の会話が聞こえてきました。
「お疲れ様。例の住所登録の画面、進捗如何かしら?」
「基本機能はレイラさんと一緒に確認してるところですけれど、やっぱり外部の Web API を叩いてデータ持ってくるようにしたほうがいいですわね」

「え…?なに?PPAP?ペンパイナッポーアッポーペンがどうかしまして…?」
全然違いますよレイラさん…(セキュリティの方の PPAP ですらない…)
どうやら今回も、盛大な勘違いの螺旋に迷い込んでしまったようです。
しかし、先輩が言った『API』は、現代のシステム開発において「他人の力を借りて最強になる」ための魔法の杖。
それでは今回は…
『API』『Web API』とは一体なんなのか?PowerBuilder ではどうやって使えるのか?について解説していきましょう。


「ペンとパイナップルの話じゃ…ないんですのー?!!」
そもそも API(Application Programming Interface)とは、『プログラム同士が、お互いの複雑な中身を知らなくても、特定のルールに従って機能やデータをやり取りするための窓口』のことです。
API と一口でいっても、Windows API とか Database API とか、いろいろ種類があるんですが・・・
今回先輩たちが話していたのはこちらです。
Web API: インターネットの向こう側にあるサービスを呼び出して使用するもの
今回、先輩たちが話していたのは前者のほう。
Web API は、API の中でも、インターネット( HTTP/HTTPS 通信)を介して、異なるソフトウェアやシステム同士がデータをやり取りするための窓口のことを指しています。

「窓口ィ~?いまいちピンときませんわね…」
例えば、身近な例だとこんなものがあります。
・郵便番号検索 API:郵便番号を送ると住所を表示してくれる
・決済 API:クレジットカード決済処理を外部サービスに任せる
・AI API:テキストを送ると、ChatGPT などの AI が回答をしてくれる

「なるほど~!それなら普段使っているサービスなんかで、それっぽいものが確かに身に覚えがあるような!」
でしょう?
現代のシステム開発において、外部のクラウドサービスや社内の別システムとデータを連携する際に、この Web API を利用するのは標準的な手法となっています。
Web API にもいくつか種類があるんですが・・・
最も主流なのは RESTful Web サービス(REST API)と呼ばれるもので、主に軽量な JSON(JavaScript Object Notation)形式のデータを使って通信を行っています。

「ジェイソン…?13日の金曜日に何かが起きるんですの…?」
違いますッ!勝手にホラーにしないでッ!
カンタンにいうと、「人間にも読みやすく、コンピュータにとっても扱いやすい、データの書き方のルール」のことです。
現在は JavaScript に限らず、あらゆるプログラミング言語間でデータをやり取りする際の「世界標準語」として使われています。

「ほほ~う、ですわ!」
PowerBuilder からもこれらを呼び出すことで、自前で実装するのが大変な機能も簡単に組み込むことができたりするよ!ということですね。

「Web API が便利でスゴイ奴ってのは理解しましたわ…
じゃあ、これを PowerBuilder で使いたい場合は、何をどうやればいいのかしら?」
では次に・・・PowerBuilder で Web API と連携する方法について、超カンタンなサンプルを元に紹介していきましょう。
(今回は、コンテンツ公開時点での最新バージョンである、PowerBuilder 2022 R3 日本語版に基づいて解説します)
PowerBuilder でWeb API(REST API)と連携する場合の主要な通信役として、2 つの代表的なオブジェクトをご紹介しますね。
それぞれ目的によって使い分けられています。
① RESTClient
ざっくり言うと:超かんたん・全自動コース
Web API から受け取った JSON データを、データウィンドウに直接、自動でパッと表にして貼り付けてくれます。初心者には圧倒的にこちらがおすすめです。
メリット:1 行のコードでデータウィンドウに反映できる
デメリット:JSON の構造がデータウィンドウと一致する必要がある
② HTTPClient
ざっくり言うと:こだわり・手作りコース
データウィンドウを使わず、プログラムの内部で「生の文字データ」として受け取りたい時に使います。少し複雑なデータを受け取って、自分で細かく処理したい時に便利です。
メリット:自由度が高い(データウィンドウが不要)
デメリット:自分で JSON を解析する手間がかかる ※
※取得した JSON データが複雑な構造をしている場合は、JSONParser や JSONPackage 、JSONGenerator といった専用オブジェクトを組み合わせて、データの解析や抽出を行うことができます。
今回は、先ほどの「RESTClient」を使って、Web API から 1 件の社員データを取得し、画面上のデータウィンドウに直接表示させるというサンプルを実装してみましょう。
今回は、Appeon 社が提供している学習・テスト用のデモ API(https://demo.appeon.com/PB/webapi_client/employee/102)を呼び出してみましょう。
この API は渡された数字(社員ID)をもとに名前や住所などの社員の情報を取得するものです。これを用いて、「社員 ID が 102 番の人」のデータを取得してみます。
データを受け取るための受け皿となるデータウィンドウを用意しておきましょう。
1.外部ソース(External)を選択してデータウィンドウ(例:d_employee)を新規作成します。
2.APIから返されるJSONのキー名と完全に一致するカラム名(empid、fname、lnameなど)を定義します。
3.ウィンドウ(例:w_main)にデータウィンドウコントロール(dw_1)を配置し、作成した d_employee をセットしておきます。


画面に配置したボタンの Clicked イベントなどに、以下のコードを記述してみましょう。
long ll_return RestClient lnv_RestClient // 1. RESTClientオブジェクトのインスタンスを生成 lnv_RestClient = Create RestClient // 2. Web APIを呼び出し、データウィンドウにデータを取得 ll_return = lnv_RestClient.RetrieveOne(dw_1, "https://demo.appeon.com/PB/webapi_client/employee/102") // 3. 取得結果の戻り値を判定 if ll_return = 1 then MessageBox("完了", "データを取得しました。") elseif ll_return = 0 then MessageBox("確認", "該当するデータが存在しません。") else MessageBox("エラー", "取得に失敗しました。エラーコード: " + String(ll_return)) end if // 4. RESTClientオブジェクトを破棄し、メモリを解放 Destroy lnv_RestClient

「わあっ表示された!本当に、インターネットから PowerBuilder に情報を引っ張ってこれましたわ!」

如何でしたでしょうか?
最初は「API」という言葉に戸惑っていたレイラさんでしたが、実際に簡単な RESTClient を使ってみて、実はとても簡単に外部の便利な機能と繋がれることがわかりました。

「最初はなんのこっちゃと思いましたけれど…
Web API ってわたくしの代わりに難しいお仕事をしてくださる有能な執事のような存在ですのね!
うちのじいやぐらい優秀!」
Web API をマスターすれば、AI 連携や地図表示など、システムの可能性は無限大です。
皆さんもぜひ、PowerBuilder の機能を活用して、便利なシステム作りに挑戦してみてくださいね。
初心者令嬢の PowerBuilder 奮闘記 シリーズ
他のお話はコチラから!