動作確認
すべての実装が完了したら、動作を確認してみましょう。
エンドポイントの動作確認
まず、APIエンドポイントが正しく動作するか確認します。今回は、Visual Studioに備わるHTTPクライアント機能を利用してみます。ImageGenerator.Webプロジェクトに、「HTTPファイル」テンプレートを使って、ImageGenerator.Web.httpという名前のファイルを新規作成します。そのファイルに次の画像生成エンドポイント用のリクエストを記述します。
POST https://localhost:7299/api/generate-image
Content-Type: application/json
{
"prompt": "レンガの壁の前に停められた赤い自転車",
"quality": 0,
"size": 0
}
.httpファイルは、Visual StudioのHTTPクライアント機能で使用するファイル形式で、HTTPリクエストを記述してそのまま送信できます。Postmanなどの外部ツールを使わずに、ソリューション内でAPIの動作確認ができます。
執筆時点のVisual Studio 2026では、このファイルを開くと、POSTリクエストのすぐ上に「要求の送信」と「デバッグ」というリンクが表示されます。「デバッグ」をクリックすれば、デバッグ実行された後にリクエストが送信され、エディタ横のペインにレスポンスが表示されます。プロジェクトが起動済みの場合は「要求の送信」でPOSTリクエストができます。
このPOSTリクエストが成功した場合は、ステータスコード200とともに、次のJSONが返されます。
{
"imageUrl": "https://oaidalleapiprodscus.blob.core.windows.net/..."
}
promptを空文字列にして送信すると、ステータスコード400とProblemDetails形式のエラー応答が返ります。
{
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "Bad Request",
"status": 400,
"detail": "プロンプトを入力してください"
}
MAUIアプリでの確認
前回と同様に、ターミナルから、ImageGenerator.Webプロジェクトのフォルダに移動し、「dotnet run --launch-profile https」で起動しておきます。そして、Visual StudioでImageGeneratorプロジェクトをAndroidエミュレータで起動します。
画面の見た目や操作手順は前回までと変わらず、同じように画像が生成・表示されれば成功です。IImageGenerationServiceというインターフェイスを介して実装を抽象化しているため、内部処理をサーバー経由方式に差し替えても、UI側のコードはまったく変更する必要がありません。
トラブルシューティング
接続エラーやHTTPS証明書のエラーについては、前回の対処方法を参照してください。
セキュリティに関する注意
今回の実装で、サーバーのみでAPIキーを使用する形になりました。しかし、現状では/api/generate-imageエンドポイントに認証がないため、URLを知っている人は誰でも画像生成を実行できてしまいます。本番環境へ進むうえでは、次の対策が必要です。
- 認証・認可の追加(JWT認証、デバイス認証など)
- レート制限の実装(1ユーザーあたりの呼び出し回数制限)
- 入力値の検証強化
いずれも、ASP.NET CoreやAzureが標準機能として提供しているしくみで実装できます。必要に応じて、Microsoftの公式ドキュメントなどを参照して試してみてはいかがでしょうか。
GPT Imageモデルへの差し替えについて
第3回で触れたとおり、本連載では画像生成APIに「DALL-E 3」を使用してきました。現在のGPT Imageモデルに差し替える場合は、戻り値が画像URLではなく、base64エンコードされた画像データ(b64_json)になる点に注意してください。
本連載のようにURL文字列をそのままimg要素のsrcに渡す設計では動作しないため、エンドポイントの戻り値とクライアント側の表示処理を、base64またはバイナリデータに対応させる必要があります。なお、サーバー経由でAPIキーを保護する考え方は、そのまま利用できます。
