eSeGeCe — Delphi & .NET 向けエンタープライズ通信コンポーネント
注目 · sgcOpenAPI

REST クライアントは、もう手書きしない

sgcOpenAPI に OpenAPI 3.x ドキュメントを渡すだけです。パーサーがそれを読み取り、ジェネレーターがネイティブな Object Pascal SDK を出力し、OpenAPI サーバーコンポーネントが自分のエンドポイントをライブの仕様として公開します。ジェネレーターを使わずに始めることもできます。AWS、Azure、Google Cloud、Microsoft Graph 向けの 1,195 以上の SDK が、すでに生成済みで同梱されているからです。

  • OpenAPI 3.0 と 3.1
  • JSON と YAML
  • Swagger 2.0 を自動変換
  • Delphi 7 から RAD Studio 13 まで

必要な SDK は、たいてい生成済みです

sgcOpenAPI の Single、Team、Site のどのティアにも、パーサー、コードジェネレーター、OpenAPI サーバーコンポーネント、そしてビルド済み SDK ライブラリ全体が含まれます。個別販売はありません。

1,195+ ビルド済みクラウド SDK 公式の OpenAPI 仕様から生成され、定期的に更新されます。
280+ Amazon AWS サービス S3、EC2、Lambda、DynamoDB、SQS、SNS、CloudFormation などを網羅する REST サービス SDK。
650+ Microsoft Azure サービス Azure VM、Blob Storage、Functions、Cosmos DB、Key Vault など。
250+ Google Cloud サービス Compute Engine、Cloud Storage、BigQuery、Pub/Sub、Cloud Functions など。
15+ Microsoft Graph SDK Office 365、Microsoft Teams、OneDrive、Outlook、Active Directory。
sgcOpenAPI

Delphi と C++ Builder のための 1 つのバンドル製品。OpenAPI 3.x パーサー、ネイティブ Pascal SDK ジェネレーター、OpenAPI サーバーコンポーネント、そして 1,195 以上のビルド済みクラウド SDK。完全なソース、ロイヤリティフリーの配布。

4 つのクラウドが、すでに Pascal で

始めるために何かを生成する必要はありません。4 大クラウドプラットフォームは、公式仕様から生成され最新に保たれた、すぐに使える Pascal SDK として sgcOpenAPI に同梱されています。

280 以上のサービス

Amazon AWS

S3、EC2、Lambda、DynamoDB、SQS、SNS、CloudFormation などを網羅する REST サービス SDK。ユニットをプロジェクトに追加し、型付きのリクエスト / レスポンスクラスでサービスを呼び出すだけです。

AWS の SDK を見る →
650 以上のサービス

Microsoft Azure

ライブラリ内で最大のセットです。Azure VM、Blob Storage、Functions、Cosmos DB、Key Vault をはじめとする Azure コントロールプレーンが、それぞれ生成済みの Pascal クライアントとして揃っています。

Azure の SDK を見る →
250 以上のサービス

Google Cloud

Compute Engine、Cloud Storage、BigQuery、Pub/Sub、Cloud Functions など。

Google の SDK を見る →
15 以上の SDK

Microsoft Graph

Graph API を通じて、Office 365、Microsoft Teams、OneDrive、Outlook、Active Directory を利用できます。

Microsoft の SDK を見る →
その他すべて

あらゆる仕様に対応

API が OpenAPI または Swagger のドキュメントを公開していれば、ジェネレーターは同じように型付きの Pascal ユニットへ変換します。許可リストはありません。

ジェネレーターの機能 →

公開されている仕様から、コンパイルできる Delphi クライアントまでを解説した実践ガイド:

仕様を入力、コンパイルできるコードを出力

5 つのステップは、すべて IDE の中で完結します。Node.js も、Java 製のコードジェネレーターも、覚えるべきテンプレートエンジンもありません。

  1. 1 仕様を指定する

    OpenAPI 3.x ドキュメントを、ファイル、URL、文字列のいずれかから、JSON でも YAML でも読み込めます。Swagger 1.x と 2.x のファイルは自動的に検出され、OpenAPI 3.x のモデルへ変換されます。

  2. 2 解析する

    TsgcOpenAPIParser が、外部ファイルや循環参照を含む $ref ポインターを解決し、allOfoneOfanyOf をフラット化し、構造上のエラーを行単位で報告します。

  3. 3 生成する

    TsgcOpenAPIGenerator が、タグごとに 1 クラスへまとめた、強く型付けされた Pascal のクラス、レコード、列挙型を出力し、コードと合わせて PDF と CHM のドキュメントも生成します。

  4. 4 コンパイルする

    生成されたユニットをプロジェクトに追加します。sgcOpenAPI のランタイム以外に外部依存はなく、Delphi 7 から RAD Studio 13、C++ Builder 2007 から 13 まで対応します。

  5. 5 呼び出す

    BaseURL と資格情報を設定して、操作を呼び出すだけです。型安全なメソッド、型付きの結果、そして IDE での完全な IntelliSense を利用できます。

uses
  sgcOpenAPI_Parser, sgcOpenAPI_Generator;
var
  vParser: TsgcOpenAPIParser;
  vGen: TsgcOpenAPIGenerator;
begin
  vParser := TsgcOpenAPIParser.Create(nil);
  try
    vParser.LoadFromFile('C:\specs\github\api.github.com.json');
    Memo1.Lines.Add(Format('GitHub spec: %d paths, %d schemas',
      [vParser.Paths.Count, vParser.Schemas.Count]));

    vGen := TsgcOpenAPIGenerator.Create(nil);
    try
      vGen.Parser := vParser;
      vGen.OutputUnit := 'sgcOpenAPI_GitHub';
      vGen.OutputFolder := 'C:\Generated\GitHub';
      vGen.GroupBy := gbTag;        // one class per tag
      vGen.Generate;
    finally
      vGen.Free;
    end;
  finally
    vParser.Free;
  end;
end;
uses
  sgcOpenAPI_PetStore;  // Generated from petstore.yaml

procedure TForm1.btnGetPetClick(Sender: TObject);
var
  Client: TsgcOpenAPI_PetStoreClient;
  Pet: TsgcOpenAPI_Pet;
begin
  Client := TsgcOpenAPI_PetStoreClient.Create(nil);
  try
    Client.BaseURL := 'https://petstore.swagger.io/v2';
    Client.ApiKey  := 'your-api-key';

    // Type-safe API call with IntelliSense
    Pet := Client.GetPetById(42);
    try
      Memo1.Lines.Add('Name: '     + Pet.Name);
      Memo1.Lines.Add('Status: '   + Pet.Status);
      Memo1.Lines.Add('Category: ' + Pet.Category.Name);
    finally
      Pet.Free;
    end;
  finally
    Client.Free;
  end;
end;

パーサーとジェネレーターは別々のコンポーネントなので、解析済みのモデルを自分でたどり、その上に独自のツールを構築することもできます。パーサーコンポーネント →

仕様は、使うだけでなく提供もできます

TsgcOpenAPIServer は、ライブの OpenAPI 3.x ドキュメントを公開し、受信したリクエストを仕様に照らしてルーティングし、双方向でペイロードを検証し、Swagger UI と Redoc を組み込みで提供します。すべては sgcWebSockets の HTTP/2 サーバー上で動作する 1 つの Delphi コンポーネントから行えます。

OpenAPIServer.pas
uses
  sgcOpenAPI_Server, sgcOpenAPI_Types, sgcHTTP_Server;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FServer := TsgcOpenAPIServer.Create(nil);
  FServer.HTTPServer := sgcHTTPServer1;
  FServer.Spec.LoadFromFile('petstore.yaml');
  FServer.PublishSpecPath := '/openapi.json';
  FServer.SwaggerUIPath   := '/docs';
  FServer.RedocPath       := '/redoc';

  // Bind an operation declared in the spec
  FServer.OnOperation_getPetById :=
    procedure(const Ctx: TsgcOpenAPIContext)
    var
      oPet: TJSONObject;
    begin
      oPet := TJSONObject.Create;
      oPet.AddPair('id',     Ctx.PathParams['petId']);
      oPet.AddPair('name',   'Rex');
      oPet.AddPair('status', 'available');
      Ctx.RespondJSON(200, oPet);
    end;

  sgcHTTPServer1.Port   := 8080;
  sgcHTTPServer1.Active := True;
end;

これで得られるもの

GET /pets/{petId} は上のハンドラーを実行します。GET /openapi.json はライブのドキュメントを返します。GET /docs は Swagger UI を、GET /redoc は Redoc を開きます。HTTP サーバー側で設定してあれば、HTTP/2 と TLS もそのまま有効です。

仕様ファーストでも、コードファーストでも

YAML または JSON の契約を読み込んでオペレーション ID にハンドラーをバインドすることも、Pascal でハンドラーを登録して、コンポーネントに実行時に OpenAPI ドキュメントを組み立てさせることもできます。

双方向の検証

必須フィールド、型変換、列挙値、フォーマット検証、長さと範囲の制限、パターン、スキーマ合成は、すべてハンドラーが動作する前に適用されます。失敗は、フィールド単位の診断情報を含む RFC 7807 の problem details として返されます。

認証は仕様から自動で組み込み

ドキュメント内のすべての securityScheme が自動的に適用されます。資格情報の照会だけを書けば、解析、チャレンジヘッダー、401 と 403 のレスポンスはコンポーネントが処理します。

API Key HTTP Basic Bearer JWT OAuth2 OpenID Connect mTLS Swagger UI + Redoc

OpenAPI サーバーコンポーネント →

このサーバーは、WebSocket エンドポイントや静的ファイルをホストしているのと同じ sgcWebSockets の HTTP サーバー上で動作します。ポートも TLS 証明書もログのストリームも 1 つで済みます。

6 つのライブラリ、1 つのツールボックス

sgcOpenAPI は、Delphi、C++ Builder、.NET 向けの eSeGeCe コンポーネントライブラリ 6 製品のひとつです。共通の設計思想を持ち、完全なソースが付属し、ロイヤリティフリーで配布できます。

sgcOpenAPI

OpenAPI 3.x パーサー、ネイティブ Pascal SDK ジェネレーター、OpenAPI サーバーコンポーネント、そして AWS、Azure、Google Cloud、Microsoft Graph 向けの 1,195 以上のビルド済み SDK。

詳しく見る →

sgcWebSockets

WebSocket、HTTP/2、HTTP/3、MQTT、AMQP、WebRTC、AI、そして 30 を超える API 統合。OpenAPI サーバーコンポーネントが動作する HTTP サーバーを提供します。

詳しく見る →

sgcHTML

Bootstrap 5 と htmx を基盤とする、サーバーサイド HTML / UI コンポーネント。生成した REST クライアント向けの管理画面やダッシュボードを、JavaScript のフロントエンドなしで構築できます。

詳しく見る →

sgcSign

ドキュメントには XAdES、PAdES、CAdES、ASiC、コードには Authenticode、ClickOnce、NuGet、VSIX。API がやり取りするリクエストとレスポンスのボディにも署名できます。

詳しく見る →

sgcBiometrics

Delphi と C++ Builder 向けの Windows Hello、指紋センサー、Windows Biometric Framework。API へのアクセスを指紋で保護できます。

詳しく見る →

sgcIndy

モダンな TLS、IPv6、HTTP/2 に対応した更新版 Indy TCP/IP コンポーネント。Delphi 7 から 13 まで対応し、生成されたクライアントの下でトランスポート層を担います。

詳しく見る →

価格とエディションを見る 体験版をダウンロード

開発者の声

世界中の Delphi、C++ Builder、Lazarus、.NET 開発者から信頼されています。

sgcWebSockets ライブラリはとても便利でセットアップも簡単です。これからも頑張ってください!

Simone Moretti Delphi Developer

sgcWebSockets は素晴らしく、サポートも最高です!

Christian Meyer Founder & CTO

ご支援とサポートに本当に感謝しています。コンポーネントが大好きです。

Mark Steinfeld CTO

現在は eSeGeCe の OpenAPI ビューを表示しています。

別の切り口を見る →
30日間返金保証ご満足いただけない場合は、ご購入から30日以内に全額返金をリクエストできます。 返金ポリシーを見る

今日、最初の Pascal SDK を生成しましょう

パーサー、コードジェネレーター、OpenAPI サーバーコンポーネント、そして 1,195 以上のビルド済みクラウド SDK のすべてが 1 つのライセンスに含まれます。完全なソース、ロイヤリティフリーの配布、Delphi 7 から RAD Studio 13 まで対応します。