Delphi 向け OpenAPI クライアント/サーバーツール — 比較ガイド

2026 年時点で Delphi と C++ Builder 開発者が利用できる OpenAPI クライアントおよびコード生成の選択肢 (sgcOpenAPI、OpenAPI Generator、Swagger Codegen、mORMot 2、TMS XData と付属の OpenAPI Delphi Generator、手書きの REST クライアント) を中立的に、出典付きで調査した内容です。すべての機能の根拠は、各プロジェクトの公式ドキュメントへのリンクで示しています。

OpenAPI 仕様から動作する Delphi コードに至る 6 つの経路

各選択肢の概要を 1 段落でまとめ、公式ドキュメントやリポジトリへのリンクを示します。詳細な比較は下のマトリックスをご覧ください。

OpenAPI Generator

OpenAPI Tools コミュニティ · Apache 2.0 (オープンソース)

オープンソースの Java ツールで、もともとは Swagger Codegen からフォークされたものです。60 以上のクライアントジェネレーターと 40 以上のサーバースタブジェネレーターを提供します。C、C#、C++ (cpp-restsdk、Qt5、Oat++、Tizen、Unreal Engine 4)、Go、Java、Kotlin、PHP、Python、Rust、TypeScript など多数の言語のクライアントやサーバーを生成します。公式のジェネレーター一覧に Delphi / Object Pascal / Free Pascal のターゲットは含まれていません。

Official page

Swagger Codegen

SmartBear / コミュニティ · Apache 2.0 (オープンソース)

SmartBear によるオリジナルの Java コードジェネレータープロジェクトで、2018 年に OpenAPI Generator がフォークされた元のプロジェクトです。ActionScript、Ada、Apex、Bash、C#、C++、Clojure、Dart、Elixir、Erlang、Go、Groovy、Haskell、Java、Kotlin、Lua、Node.js、Objective-C、Perl、PHP、PowerShell、Python、R、Ruby、Rust、Scala、Swift、TypeScript に対応します。3.x 系は OpenAPI 3.0 をサポートし、2.x 系は OpenAPI 2.0 (Swagger) のみをサポートします。いずれの系統にも Delphi や Object Pascal のジェネレーターはありません。

Official page

mORMot 2 OpenAPI client generator

Arnaud Bouchez / Synopse · MPL / GPL / LGPL (オープンソース)

mORMot 2 には mormot.net.openapi.pas が同梱されており、OpenAPI 3.x または Swagger 2.0 ドキュメント (ファイルまたは URL) を読み込み、FPC / Delphi の Pascal クライアントユニットを生成します。DTO として高レベルのレコードと動的配列、列挙値のための Pascal 列挙型、HTTP ステータスコードの例外への変換を生成します。このユニットは FPC と Delphi 7 / 2009 以降を対象とし、より広範な mORMot SOA / ORM フレームワークの一部として動作します。

Official page

TMS XData & OpenAPI Delphi Generator

TMS Software / Landgraf Software · 商用 (XData) / Apache 2.0 + Commons Clause (ジェネレーター)

TMS XData は商用の Delphi 用 REST / JSON / ORM リモーティングフレームワークです。XData サーバーは自身のエンドポイント向けに /openapi/swagger.json で OpenAPI (旧 Swagger) ドキュメントを公開でき、SwaggerUI / Redoc と組み合わせて利用できます。付属の OpenAPI Delphi Generator (もともとは XData に同梱されていましたが、現在は landgraf-dev/openapi-delphi-generator として独立したオープンソースプロジェクト) は、Swagger 2.0 / OpenAPI 3.0 ドキュメントを読み込み、TXDataClient で利用する Delphi インターフェースと DTO クラスを生成します。

Official page

手書きの REST クライアント (Indy / THTTPClient)

Indy Project / Embarcadero · BSD / MPL (Indy) · RAD Studio EULA (THTTPClient)

よくある現実として、開発者は TIdHTTP (Indy) や System.Net.HttpClient.THTTPClient (Delphi に同梱) を使って REST クライアントを手書きしています。コード生成もスキーマもなく、RTL の JSON ユニット (または TJSONObject) を使って手動で JSON をマーシャリングします。認証、リトライ処理、ページネーションもすべて自前で実装することになります。

Official page

機能の横並び比較

チェック () は、プロジェクトがネイティブサポートをドキュメント化していることを示します。ダッシュ () は、プロジェクトがネイティブには提供していないことを示します。チルダ (~) は、部分的 / アドオン経由 / 明示的にドキュメント化されていないことを示します。確認できた内容は出典セクションをご覧ください。

ジェネレーター、ランタイム、ライセンス

15 行
機能 sgcOpenAPI OpenAPI Generator Swagger Codegen mORMot 2 OpenAPI クライアントジェネレーター TMS XData と OpenAPI Delphi Generator 手書きの REST クライアント (Indy / THTTPClient)
Delphi クライアントを生成 OpenAPI 3.x からネイティブな Object Pascal クライアント
C++ Builder コードを生成 C++ Builder VCL / FMX ターゲット (BCC32 / BCC64) ~ ~ ~ ~
サーバースタブを生成 OpenAPI 仕様からサーバー側のスケルトンを生成
ネイティブ Delphi サーバーランタイム 生成されたエンドポイントを Delphi / C++ Builder プロセス内でホストする組み込み HTTP サーバーコンポーネント ~
ライブ OpenAPI ドキュメントを公開 サーバーが自身の openapi.json / openapi.yaml をランタイムで公開し、ディスカバリーや SwaggerUI / Redoc に対応
サーバー側のリクエスト / レスポンス検証 受信リクエストと送信レスポンスをランタイムで OpenAPI スキーマに対して検証 ~ ~ ~ ~
HTTP/2 クライアント 生成クライアントでのネイティブな HTTP/2 トランスポート ~ ~ ~ ~
型付き JSON DTO 強く型付けされたクラス / レコード / 列挙型 ~
OAuth2 / JWT ヘルパー OAuth2 フローと JWT ヘルパーを組み込み ~
非同期 / 同期ヘルパー 非同期と同期の両方の呼び出しパターン ~
マルチプラットフォームランタイム Win / macOS / Linux / iOS / Android
同梱のベンダー SDK AWS / Azure / GCP / Microsoft Graph のビルド済み SDK
商用利用可 クローズドソースの商用利用をライセンスが許可
活発なメンテナンス 直近 12–18 か月以内のリリースまたはタグ付け活動 ~
ライセンスモデル ライセンス種別 商用 Apache 2.0 (オープンソース) Apache 2.0 (オープンソース) MPL / GPL / LGPL 商用 (XData) + Apache 2.0 + CC (ジェネレーター) BSD / MPL (Indy) · RAD Studio EULA (THTTPClient)
ドキュメント化されたネイティブサポート ネイティブには提供されない ~ 部分的 / アドオン経由 / 未検証

sgcOpenAPI への移行 — 何が違うか

上記のいずれかから切り替える場合の違いに関する短いメモです。対立的ではなく、実用的な対応関係を示します。

OpenAPI Generator から移行する場合

OpenAPI Generator は Delphi をターゲットとしていないため、ここでの「移行」とは、同じ仕様から sgcOpenAPI の Delphi クライアントと並行して C# / Java / TS クライアントを生成することを意味します。これまでの構成が OpenAPI Generator でビルドした C# ラッパーを Delphi から COM や REST 経由で利用するものだった場合、sgcOpenAPI は Delphi クライアントを直接生成することで、その中間層を取り除きます。

Swagger Codegen から移行する場合

Swagger Codegen は Delphi をターゲットとしていません。これまでのワークフローで汎用の C# や Java クライアントをエクスポートして Delphi 向けにラップしていた場合、sgcOpenAPI を使えば同じ仕様から Delphi クライアントを直接生成でき、ラッパー層を取り除けます。

mORMot 2 OpenAPI クライアントジェネレーターから移行する場合

mORMot の OpenAPI クライアントジェネレーターは、より広範なフレームワークの内部に存在します。アプリケーションがジェネレーターのみを利用し、SOA / ORM / WebSocket レイヤーを使っていない場合、sgcOpenAPI は余分なユニットなしで導入できる独立したコンポーネントセットを提供します。逆に、mORMot の SOA 契約や ORM も併用している場合、OpenAPI ジェネレーターだけのために切り替えると、それらの部分を再実装する必要がありますが、sgcOpenAPI はそれらを提供していません。

TMS XData と OpenAPI Delphi Generator から移行する場合

現在 XData の組み込みインポーターを使ってサードパーティの Swagger 仕様からクライアントを生成している場合、このインポーターはオープンソースの landgraf-dev/openapi-delphi-generator プロジェクトに分離されていることに注意してください。XData 内のクラスは非推奨としてドキュメント化されています。sgcOpenAPI は別の、商用サポート付きのジェネレーターで、OpenAPI 3.x をネイティブに読み込み、主要クラウドプラットフォーム向けの SDK を同梱し、Delphi 7–13 に加えて C++ Builder をターゲットとします。

手書きの REST クライアント (Indy / THTTPClient) から移行する場合

手書きクライアントは、API の規模が拡大したり、上流サービスが新しいエンドポイントを公開したりすると、急速に陳腐化します。sgcOpenAPI は公開された仕様から同じ DTO とメソッドシグネチャを数秒で生成でき、手書きロジックは本当に必要な部分 (独自のリトライ、テレメトリ、業務ロジックの結合) に集中できます。生成コードは同様の HTTP トランスポートを使うため、開発者のメンタルモデルは大きく変わりません。

すべての記述に出典リンク

上記マトリックスの各セルは、これらの公式ドキュメントページ、リポジトリ、リリースノートのいずれかに対応しています。すべての URL は執筆時点で HEAD チェック済みです。

出典URL
sgcOpenAPI — 製品ページhttps://www.esegece.com/products/openapi/
sgcOpenAPI — 機能https://www.esegece.com/products/openapi/features/
sgcOpenAPI — パーサーhttps://www.esegece.com/products/openapi/parser/
sgcOpenAPI — ビルド済み SDKhttps://www.esegece.com/products/openapi/apis/
OpenAPI Generator — プロジェクトホームhttps://openapi-generator.tech/
OpenAPI Generator — GitHub リポジトリhttps://github.com/OpenAPITools/openapi-generator
OpenAPI Generator — サポートされるジェネレーター一覧https://github.com/OpenAPITools/openapi-generator/blob/master/docs/generators.md
OpenAPI Generator — リリースhttps://github.com/OpenAPITools/openapi-generator/releases
Swagger Codegen — 製品ページ (swagger.io)https://swagger.io/tools/swagger-codegen/
Swagger Codegen — GitHub リポジトリhttps://github.com/swagger-api/swagger-codegen
Swagger Codegen Generators (3.x テンプレート)https://github.com/swagger-api/swagger-codegen-generators
mORMot 2 — GitHub リポジトリ (synopse/mORMot2)https://github.com/synopse/mORMot2
mORMot 2 — README (ネットワーク・OpenAPI への言及)https://github.com/synopse/mORMot2/blob/master/README.md
mORMot 2 — リリースhttps://github.com/synopse/mORMot2/releases
Synopse フォーラム (Object Pascal SOA / ORM / OpenAPI)https://synopse.info/
TMS XData — 製品ページhttps://www.tmssoftware.com/site/xdata.asp
TMS XData — ドキュメントインデックスhttps://doc.tmssoftware.com/biz/xdata/guide/index.html
TMS XData — OpenAPI サポートガイドhttps://doc.tmssoftware.com/biz/xdata/guide/openapi.html
OpenAPI Delphi Generator (旧 XData インポーター)https://github.com/landgraf-dev/openapi-delphi-generator
Indy — プロジェクトホームページhttps://www.indyproject.org/
Indy — GitHub リポジトリ (IndySockets/Indy)https://github.com/IndySockets/Indy
Indy — リリース (最新タグは 10.6.3.14)https://github.com/IndySockets/Indy/releases
Embarcadero ドキュメント — System.Net.HttpClient.THTTPClienthttps://docwiki.embarcadero.com/Libraries/Sydney/en/System.Net.HttpClient.THTTPClient
OpenAPI Initiative — 仕様リポジトリhttps://github.com/OAI/OpenAPI-Specification
OpenAPI Specification — 公式 HTML レンダリングhttps://spec.openapis.org/

sgcOpenAPI を試す

無償の Trial 版をダウンロードし、わずか数分で OpenAPI 3.x 仕様から最初の Pascal SDK を生成できます。