Delphi ユースケース:1 つのタスク、1 つのページ

製品ページはコンポーネントが何をするかを教えてくれます。リファレンスページは各プロパティの名前を教えてくれます。しかしどちらも、目の前の作業をどう終わらせるかは教えてくれません。このページ群がその役割を担います。それぞれが 1 つのタスクを空のフォームから動くコードまで運び、各ステップでユニット名とコンポーネント名を示し、必要な製品、エディション、プラットフォームを冒頭で明示します。最初の 1 行を書く前に、かかるコストが分かります。

1 ページに 1 つのタスク、最初から最後まで
製品ソースから取った Pascal コード
エディションとプラットフォームを冒頭に明示
Delphi 7 から RAD Studio 13 まで

ユースケースページが提供するもの

このリストのすべてのページは同じ構成に従います。問われる 3 つの疑問がいつも同じで、順序も同じだからです。

コンポーネントではなくタスクを軸に

ページは求める結果を軸に構成されているため、コンポーネントはタスクがそこに到達した時点で登場します。1 つのタスクが複数のコンポーネントにまたがる場合は、実際に出会う順序ですべてを取り上げます。2 つの経路がある場合は両方を示し、その間のトレードオフを明記します。

貼り付けて使えるコード

掲載する Pascal コードは擬似コードではなく、製品ソースと同梱のデモプロジェクトから取っています。uses 句にはユニット名をすべて記載し、イベントハンドラーは実際のシグネチャのままで、半日を無駄にしかねない失敗ケースは脚注ではなく発生する場所で指摘します。

着手前に分かるコスト

各ページは、そのタスクに必要な製品、エディション、コンパイラバージョン、プラットフォームを冒頭に記載します。ここで扱う機能の半分は sgcVer.inc{$IFDEF} で制御されているため、解決できないメソッドは構文ではなくライセンスの問題です。それは 1 ページ目で知っておくほうが得です。

取り組んでいるタスクを選んでください

以下の各要約は、それだけで疑問に答えられる分量にしてあります。ページを開く前に、これから 20 分を使う価値があるかどうかを判断できます。

Delphi から LLM を呼び出す

VCL、FMX、コンソールのいずれのアプリケーションからでもプロンプトを送信し、OpenAI や Anthropic Claude のようなホスト型モデル、あるいは Ollama 経由で自分のマシン上で動くモデルから回答を受け取ります。経路は 2 つあります。TsgcAIChat はすべてのプロバイダーを 1 つの API の背後にまとめるため、ベンダーの変更は Provider への代入 1 行で済みます。ベンダー別クライアントの TsgcHTTP_API_OpenAITsgcHTTP_API_AnthropicTsgcHTTP_API_Ollama は各ベンダー API をすべて公開しており、画像入力、バッチ、埋め込み、文字起こしが必要な場合に使えます。

続いてページは、どのプロジェクトでも次にぶつかる 3 つの事柄を扱います。1 つ目はストリーミングで、モデルがまだ生成している間にテキストがメモ欄へ現れるようにします。デコード済みデルタのレベルと生イベントのレベルの両方を示します。2 つ目はツール呼び出しで、Pascal の関数を JSON Schema として記述し、モデルがその実行を依頼してきます。3 つ目はホスト型モデルとローカルモデルの選択で、データ処理契約の対象となるものについては、これは性能ではなくコンプライアンスの判断になります。

必要なもの:sgcWebSockets Enterprise、または単体パッケージの sgcAI です。REST クライアントは Windows、macOS、Linux、iOS、Android でコンパイルできます。TsgcAIChat は Windows 専用のため、ページでは両方の経路を示しています。

ガイドを読む →

OAuth2 と PKCE でユーザーをサインインさせる

PKCE 付き認可コードフローは、今日どのプロバイダーもネイティブデスクトップアプリケーションに求めるフローです。これを非ビジュアルコンポーネント 1 つで実行します。埋め込みブラウザーも、自前の Web サーバーも、REST フレームワークも不要です。TsgcHTTP_OAuth2_Client が verifier を生成し、challenge を導出し、システムブラウザーを開き、ループバックリダイレクトを待ち受け、コードを交換し、トークンとともに OnAfterAccessToken を発火させます。

デスクトップでこのフローが崩れる場所はリダイレクトです。そのためページは相応の紙幅をここに割きます。なぜリダイレクト先が公開 URL ではなくループバックアドレスなのか、プロバイダーに何を登録するのか、そして redirect_uri_mismatch が何を示しているのかを扱います。続いて、ブラウザーを二度と開かせないためのリフレッシュトークン、資格情報を放置せずに保管する方法、すぐに使える Google と Microsoft 向けコンポーネント、さらに Gmail と Microsoft 365 が現在 SMTP と IMAP で要求する XOAUTH2 の受け渡しを説明します。

必要なもの:sgcWebSockets Standard 以上、または単体パッケージの sgcAuth です。Windows、macOS、Linux、iOS、Android に対応します。Enterprise 限定なのは認可サーバー側の機能だけです。

ガイドを読む →

2 つの Delphi アプリケーションを WebRTC で接続する

異なるネットワーク上にある 2 つのアプリケーションが、チャットチャネル、マイクのストリーム、カメラのストリームを互いに直接やり取りします。間にメディアサーバーはなく、プロセスにブラウザーを埋め込むこともありません。ページは WebRTC を実際に構成する 4 つの問題に分解します。セッションを SDP のオファーとアンサーとして記述すること、その記述を相手側へ届けること、NAT を越える経路を見つけること、そして実際にバイトを流すことです。

シグナリングは自分で書く部分なので、TsgcWebSocketServer 上で 3 種類のメッセージを中継するだけの単純なリレーとして、完全な形で掲載しています。続いてピア接続とそのイベント、ICE 候補、そして host、server reflexive、relay の各候補にかかるコスト、忘れられがちな TURN のスイッチ、チャネル単位で信頼性を設定できる SCTP データチャネル、そして音声トラックと映像トラックを扱います。トラックはデータチャネルとは異なるトランスポートであり、失敗の仕方も異なります。締めくくりは、エラーをまったく出さない失敗についてです。ピアツーピアのデバッグが難しいのはこれが理由です。

必要なもの:ピア接続、ICE クライアント、TURN クライアントは sgcWebSockets Enterprise に含まれます。オファーとアンサーのメソッド、データチャネル、メディアトラックには、Enterprise に加えて sgcWebRTC パックが必要です。どちらも All-Access に含まれています。STUN クライアントは Standard から利用できます。

ガイドを読む →

さらに多くのタスクを執筆中です。取り組んでいる内容がまだここにない場合、ブログが同じ領域の多くを記事単位で扱っています。それまでの間はサポートが適切なデモプロジェクトを案内します。

製品、エディション、プラットフォームの一覧

各ページが冒頭のセクションで示している情報をまとめました。タブを 3 つ開かなくても、3 つのタスクのコストを比較できます。

ガイド 主なコンポーネント 製品とエディション プラットフォーム
Delphi から LLM を呼び出す TsgcAIChat, TsgcHTTP_API_OpenAI, TsgcHTTP_API_Anthropic, TsgcHTTP_API_Ollama sgcWebSockets Enterprise、または単体パッケージの sgcAI REST クライアントは Windows、macOS、Linux、iOS、Android。TsgcAIChat は Windows。
PKCE を使った OAuth2 ログイン TsgcHTTP_OAuth2_Client、および Google と Microsoft のラッパー sgcWebSockets Standard 以上、または単体パッケージの sgcAuth Windows、macOS、Linux、iOS、Android
2 つのアプリケーション間の WebRTC TsgcRTCPeerConnection, TsgcICEClient, TsgcTURNClient, TsgcWebSocketServer ピア接続には sgcWebSockets Enterprise、オファーとアンサー、データチャネル、メディアにはさらに sgcWebRTC パックが必要です。どちらも All-Access に含まれます。 キャプチャとレンダリングには Windows が必要です。トランスポート自体はクロスプラットフォームです。

上記のエディションに関する記述は、いずれも製品版の sgcVer.inc が実際に適用している内容です。完全な内訳は Delphi 機能マトリクスにあります。どのエディションが必要かのページは、同じ判断を逆方向からたどります。

タスクガイドが目的と違う場合

以下のページは隣接する疑問に答えます。コンポーネントが何をするのか、名前は何か、他と比べてどうか、そして価格はいくらかです。

sgcWebSockets このページのすべてのガイドの土台となるライブラリです。WebSocket と HTTP/2 から MQTT、AMQP、WebRTC、AI クライアントまでを収録しています。
ライブラリ比較 コードを書く前に、まだライブラリを選んでいる段階ですか。比較ハブでは sgcWebSockets を Indy、ICS、TMS、mORMot 2、IPWorks、Chilkat と並べて示します。
コンポーネントリファレンス ライブラリのすべてのコンポーネントを、それぞれが公開するプロパティ、メソッド、イベント、および背後の技術文書とともに掲載しています。
用語集 これらのガイドで使うプロトコル、暗号、認証の用語を、それぞれを定義する RFC へのリンク付きで掲載しています。
ブログ 実践記事が数百本あり、各ガイドが参照しているリリース記事も含まれます。
エディションと価格 Standard、Professional、Enterprise、All-Access にそれぞれ何が含まれるか、そして単体パックがどこに位置づけられるかを説明します。

どのガイドも同じダウンロードから始まります

体験版はすべてのコンポーネントを有効にしたライブラリ一式で、各ガイドが参照するデモプロジェクトも同梱されています。