Delphiチームがビジネスアプリケーションをブラウザで公開しようとする際、最初に出てくる疑問はいつも同じです。どのウェブフレームワークを使うべきか、ということです。2026年現在、Delphi ネイティブの選択肢は5つあります: IntraWeb、UniGUI、TMS WEB Core、TMS XData、そして sgcHTML です。それぞれが異なるアプローチで問題を解決しており、それぞれが異なる状況で強みを発揮します。この記事では各フレームワークを率直に評価した上で、sgcHTML が明確な優位性を持つ場面について説明します。
IntraWeb — Delphi 初のウェブフレームワーク
IntraWeb は 2001 年から存在しています。そのモデルはシンプルです。VCL フォームをサーバーサイドで HTML としてレンダリングします。Delphi フォームを知っていれば、IntraWeb のページを構築できます。状態はサーバーに保持され、ブラウザは基本的に表示用の薄いレイヤーとして機能します。同時接続ユーザー数が少ない社内ツールであれば、このアプローチは今でも有効です。
IntraWeb が苦手とするのはテーマ設定とモダンなレイアウトです。生成される HTML と CSS は Bootstrap や flexbox 以前のものです。レスポンシブでモバイル対応のページを実現するには、相当量の CSS オーバーライド作業が必要です。生成されるマークアップは冗長で、モダンなデザインシステムとの統合が難しいです。IntraWeb は完全にステートフルであり、各ユーザーがアクセス中はサーバーサイドのセッションオブジェクトを保持するため、水平スケーリングには限界があります。
UniGUI — 成熟した機能豊富なステートフルフレームワーク
UniGUI は Delphi ウェブフレームワークの中で最も機能が充実しています。コンポーネントのパレットは非常に豊富で(グリッド、チャート、ツリー、マップ、ファイルアップロード、リッチテキストエディタ、タッチサポートなど)、テーマシステムも成熟しています。内部では Sencha ExtJS という強力な JavaScript コンポーネントライブラリを使用しており、ネイティブデスクトップに近い洗練されたインターフェースを生成します。
トレードオフは複雑さとステートフルなアーキテクチャです。UniGUI のセッションはサーバー上にフルコンポーネントの状態を保持します。同時接続ユーザーが多い場合、相当なメモリと慎重なセッション管理が必要です。ExtJS レイヤーは強力ですが Bootstrap ではないため、Bootstrap を知っている新入社員はそれぞれの語彙を学び直す必要があります。ライセンスは開発者単位とサーバー単位で課金され、クラウドデプロイではサーバー単位のライセンスコストが重要になります。
TMS WEB Core — JavaScript にコンパイルされるクライアントサイド Pascal
TMS WEB Core はまったく逆のアプローチを取ります。Object Pascal アプリケーションを WebAssembly 対応のコンパイラを使って JavaScript にコンパイルします。その結果はブラウザ上で完全に動作し、Delphi フォームのイベントが JavaScript イベントとして発火します。UI には Bootstrap または Material Design を使用し、TMS WEB Core には成長中のビジュアルコンポーネントセットが付属しています。
これは genuinely 巧みな技術であり、特定のユースケース、とりわけオフライン機能や非常に低いサーバー負荷を必要とするスタンドアロンのブラウザアプリケーションには有効です。制限はデプロイモデルにあります。コンパイルされた出力は静的な JavaScript ファイルとアセットのセットであり、ビルド、バージョン管理、配信が必要です。機能を追加するには、クライアントバンドルを再ビルドして再デプロイする必要があります。以前はサーバー上で安全に動作していたビジネスロジックがブラウザ上で実行されるため、機密性の高い計算についてはセキュリティ上の懸念が生じます。既存の Delphi サーバーサイドコンポーネント(TsgcWebSocketClient や FireDAC 接続など)との統合にはアーキテクチャ上の作業が必要です。コンパイルされた JavaScript はネイティブの Delphi ユニットを直接呼び出すことができないためです。
TMS XData — REST バックエンドであり、ウェブ UI フレームワークではない
TMS XData はウェブ UI フレームワークと比較されることが多いため言及する価値がありますが、実際には違います。XData は OpenAPI 3.0 と JSON を使用して Delphi サービスクラスから REST API を生成します。フロントエンドは別途構築する必要があります。TMS WEB Core、React、Angular、または HTTP を話す任意のものです。XData はその機能において優れています。ただし、ブラウザインターフェースが必要な場合、別のフロントエンド技術の必要性をなくすものではありません。
sgcHTML — 標準 Bootstrap 5 上のサーバーサイドコンポーネント
sgcHTML は上記すべてとは異なるポジションを取っています。出力が標準 Bootstrap 5 HTMLであるサーバーサイドコンポーネントライブラリです。コンポーネント自体は Delphi クラスです(TsgcHTMLComponent_Chart、TsgcHTMLComponent_DataTable など)。プロパティで設定し、HTML 文字列を読み取ります。その文字列は HTTP レスポンスに組み込まれます。ブラウザは Bootstrap を使用してレンダリングします。htmx(14 KB のライブラリ、ビルドステップなし)がインタラクティビティを処理します。クリックやフォームの送信は Delphi ハンドラーに返され、ハンドラーは HTML フラグメントで応答し、htmx がページの該当セクションを入れ替えます。
アーキテクチャはステートレスです。各リクエストは必要なものを構築し、HTML を返して終了します。サーバー上に維持すべきセッションごとのコンポーネントツリーはありません。水平スケーリングは簡単です。同じ .exe の 2 つのインスタンスの前にロードバランサーを置くだけです。
並べて比較
| 機能 | IntraWeb | UniGUI | TMS WEB Core | sgcHTML |
|---|---|---|---|---|
| アーキテクチャ | ステートフルなサーバーサイドフォーム | ステートフルな ExtJS セッション | クライアントサイド Pascal→JS | ステートレスなサーバーサイド HTML |
| 出力マークアップ | 独自 HTML + CSS | ExtJS JSON/HTML | 標準 Bootstrap | 標準 Bootstrap 5 |
| インタラクティビティ | フルページリロードまたは AJAX | ExtJS AJAX | ブラウザ上で動作 | htmx フラグメント + WebSocket |
| リアルタイム WebSocket プッシュ | なし(アドオン) | 限定的 | JS WebSocket API 経由 | あり — ファーストクラス(sgcWebSockets) |
| スケーラビリティ | セッション状態による制限 | セッション状態による制限 | ステートレス(静的ファイル) | ステートレス、水平スケール |
| 記述する JavaScript | なし | 最小限 | なし(Pascal からコンパイル) | なし |
| npm / Node.js 必須 | 不要 | 不要 | 必要(ビルドステップ) | 不要 |
| シングルバイナリデプロイ | 可 | 可 | 不可(JS バンドル + アセット) | 可 |
| DataSet バインディング | あり | あり | JS ブリッジ経由 | あり(直接 TDataSet/TDataSource) |
| UI コンポーネント数 | ~40 | 80+ | 50+ | 60+ |
| モバイル/レスポンシブ | 部分的 | あり(ExtJS Touch) | あり(Bootstrap) | あり(Bootstrap 5) |
| .NET エディション | なし | なし | なし | あり(.NET 6+) |
sgcHTML が明確な優位性を持つ場面
リアルタイムダッシュボード。sgcHTML は sgcWebSockets 上に構築されているため、HTML ページを配信する同じサーバーが WebSocket 接続も処理します。株価の更新、新しいセンサー読み取り値、または完了した生産ランを、単一の Broadcast 呼び出しで接続されているすべてのブラウザタブに HTML フラグメントとしてプッシュできます。ポーリングなし、別途のプッシュインフラなし、追加ライセンスなしです。IntraWeb と UniGUI はどちらも WebSocket サポートが限られており、追加の統合作業が必要です。TMS WEB Core はブラウザのネイティブ WebSocket API を使用できますが、受信メッセージを処理するためのクライアントサイド JavaScript ロジックが必要です。
カスタマイズオーバーヘッドのない標準マークアップ。出力が Bootstrap 5 HTML であるため、Bootstrap を知っているデザイナーであれば誰でもスタイルを適用できます。テーマは標準 Bootstrap テーマです。無料・有料を含む何百ものテーマが存在し、即座に適用できます。IntraWeb と UniGUI はフレームワーク固有のマークアップを生成するため、別途スタイリングシステムの習得が必要です。
ステートレスで水平スケール可能。各 sgcHTML リクエストは独立しています。サーバー上にユーザーごとのセッションオブジェクトはありません。同じ実行ファイルの 2 つのロードバランシングされたインスタンスがリクエストを相互に処理できます。IntraWeb と UniGUI はセッションを保持する特定のサーバーインスタンスにリクエストをルーティングする必要があるため、クラウドデプロイが複雑になります。
シングル実行ファイルによるデプロイ。Bootstrap CSS、Chart.js および htmx は Delphi バイナリ内の埋め込みリソースです。sgcHTML のデプロイは 1 つの .exe をコピーするだけです。TMS WEB Core は JavaScript バンドルとアセットのセットを生成するため、バージョン管理と別途の配信が必要です。
ビルドチェーン不要。npm も、webpack も、Babel も、Node.js も必要ありません。Delphi プロジェクトをコンパイルして配布するだけです。Node.js ツールチェーンのインストールに IT の承認が必要な規制環境やオンプレミスデプロイでは、これは非常に重要です。
実際のコード比較: データグリッド
違いを具体的に示すために、FireDAC クエリから検索可能なページング付きデータグリッドを sgcHTML でレンダリングする方法を紹介します。
uses
sgcHTML_Component_DataTable;
var
oTable: TsgcHTMLComponent_DataTable;
begin
oTable := TsgcHTMLComponent_DataTable.Create(nil);
oTable.PageBuilder := oPage.PageBuilder;
oTable.Section := 'data';
oTable.Title := 'Customers';
oTable.ShowSearch := True;
oTable.ShowExport := True;
oTable.LoadFromDataSet(fdqCustomers, 25); // 25 rows per page
// Read oTable.HTML and include it in your response
end;
結果は、ソートインジケーター、検索ボックス、エクスポートボタンを備えたレスポンシブで検索可能なページング付き Bootstrap テーブルです。ブラウザは最初のページ表示で追加のサーバーラウンドトリップなしにレンダリングします。フィルタリングとページネーションは htmx を使用してページ全体ではなくテーブルフラグメントのみを入れ替えます。
代替手段を選ぶべき場面
sgcHTML が常に正しい選択というわけではありません。数百のフォームと確立されたテーマシステムを持つ大規模な IntraWeb または UniGUI アプリケーションがすでにある場合、移行することはあまり意味がありません。UniGUI は、Excel に匹敵するまたはそれを超える高度なグリッド機能(固定列、セルエディタ、行グループ化、ピボット)が必要な場合や、パワーユーザー向けバックオフィスツールに ExtJS の洗練さを求める場合に最適な選択です。TMS WEB Core は、サーバーなしでブラウザ上でオフライン動作するアプリケーションが必要な場合や、CDN 経由で静的ファイルとしてシングルページアプリケーションを配布したい場合に適しています。
sgcHTML が最も強い選択肢となるのは以下の場合です。
- 既存の Delphi バックエンドと並行して新しいウェブインターフェースを構築しており、別途 JavaScript プロジェクトを管理したくない場合。
- サーバーからライブデータをプッシュする必要があるアプリケーション(取引画面、物流ダッシュボード、モニタリング、チャット)の場合。
- チームのデザイナーが標準 Bootstrap ツールを使用してテーマ設定できる、レスポンシブでモバイル対応の Bootstrap 5 インターフェースが必要な場合。
- 外部依存関係なしのシングル実行ファイルでのデプロイが必要な場合。
- Delphi と並行して .NET(C#)をターゲットにしており、両プラットフォームで同じコンポーネント API を使いたい場合。
sgcHTML を試す
60 以上のコンポーネントすべてを含み機能制限のない無料トライアルは esegece.com/products/sgchtml/download からご利用いただけます。ダウンロードには、現実的なシナリオでコンポーネントパレットを実演する 4 つの動作デモアプリケーション(ERP、Admin Console、Live Monitor、Customer Portal)が含まれています。
ご質問や特定の既存プロジェクトとの比較については、お問い合わせください。コードを書いた担当者からご返答いたします。
