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

機能の横並び比較

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

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

12 行
機能 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 仕様からサーバー側のスケルトンを生成
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)
ドキュメント化されたネイティブサポート ネイティブには提供されない ~ 部分的 / アドオン経由 / 未検証

各選択肢に正直な適性評価

ここに挙げた選択肢にはそれぞれ実際の利用者がいます。クライアントに加えてサーバースタブが必要か、どの Pascal ツールチェーンをサポートするか、ライセンスの好み、ベンダー同梱の SDK で時間が節約できるかによって、最適な選択は異なります。

sgcOpenAPI を選ぶ場合

任意の OpenAPI 3.x または Swagger 2.x 仕様から Delphi 7–13 と C++ Builder のクライアントコードを生成する商用ツールを 1 つで揃えたい場合、AWS、Azure、Google Cloud、Microsoft Graph のビルド済み Pascal SDK が同梱されていることを望む場合、VCL に加えて macOS / Linux / iOS / Android 向けの FireMonkey をターゲットとする場合、sgcOpenAPI ユニット以外に外部ランタイム依存が一切ないことが必要な場合に、sgcOpenAPI をお選びください。

OpenAPI Generator を選ぶ場合

チームが同じ OpenAPI 仕様から、Delphi 以外の言語 (C#、Java、Go、TypeScript、Rust、Python) でクライアントやサーバースタブを構築している場合、1 つのツールでクライアントとサーバースタブの両方が必要な場合、または Apache 2.0 ライセンスと大規模なテンプレート貢献者コミュニティが重要な場合に、OpenAPI Generator をお選びください。

Swagger Codegen を選ぶ場合

すでに SmartBear / Swagger エコシステム (SwaggerHub、Swagger Editor) をエンドツーエンドで利用している場合、歴史的な Swagger 2.0 コードジェネレーターに最も近い公式メンテナンスの後継を求める場合、ターゲットが Delphi ではなく主流の JVM / .NET / スクリプト言語である場合に、Swagger Codegen をお選びください。

mORMot 2 OpenAPI クライアントジェネレーターを選ぶ場合

プロジェクトですでに mORMot を ORM、SOA、ホスティングに使っている場合、MPL / GPL / LGPL のオープンソースで Pascal ネイティブなコードジェネレーターが欲しい場合、または Linux / BSD / macOS 上の FPC を、クライアントジェネレーターと生成コードの双方でターゲットとする場合に、mORMot 2 OpenAPI ジェネレーターをお選びください。

TMS XData と OpenAPI Delphi Generator を選ぶ場合

サーバーも Delphi で構築し、サーバー + クライアント + ORM リモーティングを 1 つのベンダーで揃えたい場合、自社のサービス契約を SwaggerUI / Redoc でブラウズすることが要件の場合、すでに TMS Business / All-Access のライセンスをお持ちの場合に、TMS XData をお選びください。クライアント側のコード生成だけが必要で、Apache 2.0 + Commons Clause ライセンスを好む場合は、スタンドアロンの OpenAPI Delphi Generator をお選びください。

手書きの REST クライアント (Indy / THTTPClient) を選ぶ場合

API の規模が小さい (エンドポイントがわずか) 場合、ライセンスやコンプライアンス上の理由でサードパーティコンポーネントを配布できない場合、または API に公開された OpenAPI 仕様がなくジェネレーターを使ってもメリットがない場合に、手書きの REST クライアントをお選びください。Indy と THTTPClient はどちらも RAD Studio に同梱されているため、追加の依存はありません。

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 を生成できます。