AI画像生成アプリの作り方:API、保存、費用と安全対策
AI画像生成アプリを作るには、モデルプロバイダーの画像生成APIを選び、自分のキーを使ってサーバーから呼び出し、生成結果を1枚ずつファイルストレージに保存します。そして、商品写真、SNS投稿、アバター、統一されたスタイルのイラストなど、特定の用途に絞ったワークフローで包みます。テキストアプリでは大きく気にしなくてよい3つの点に備える必要があります。生成には時間がかかり、1回ごとの費用が高く、何を作ってよいかのルールが必要です。インターフェースの作成は簡単な部分です。
「画像生成ツール」ではなく用途を決める
汎用の画像生成機能は、すでにチャットアシスタントやデザインツールに組み込まれています。新しいアプリが役立つのは、特定の仕事をより良くこなす場合です。
- 一貫したスタイル: 利用者が長いプロンプトを書かなくても、すべての画像がブランドの色味や雰囲気に合います。
- 構造化された入力: 商品写真ツールは、商品画像と背景のシーンを尋ねます。書籍の表紙ツールは、タイトル、ジャンル、雰囲気を尋ねます。
- 適切な出力: マーケットプレイスの出品や広告のフォーマットに合ったサイズで、テキストの重ね書きはモデルではなくアプリ側で行います。
- ワークフロー: 複数の候補を生成し、1つを選び、編集し、ダウンロードして、ライブラリとして保存します。
アプリの構成要素
| 要素 | 役割 |
|---|---|
| 入力フォーム | プロンプト、スタイルのプリセット、サイズ、任意の参照画像のアップロード |
| プロンプト構築 | 利用者の入力に、自分で用意した非公開のスタイル指示をサーバー側で加える |
| 画像APIの呼び出し | サーバーが自分のキーを付けてリクエストを送り、結果を待つ |
| 進行状態 | 生成には数秒以上かかることがあるため、処理中であることを表示する |
| ファイルストレージ | 完成した画像が消えないように保存する |
| データベース | 誰が、どのプロンプトと設定で生成したか、ファイルの保存場所を記録する |
| ギャラリー | 利用者の過去の画像を、ダウンロードや削除付きで表示する |
| 制限と課金 | 利用者ごとの上限、課金する場合はプランやクレジット |
構築前に決めること
画像モデルのプロバイダー
大手のAIラボから、1つのAPIで多くのオープンモデルを提供するプラットフォームまで、複数のプロバイダーが画像生成APIを提供しています。自分のテスト用プロンプトで、次の点を比較してください。
- 用途に対する品質: 写真のような商品画像、イラスト、画像内の文字、人物の顔。
- 速度: 数秒で返るモデルもあれば、より時間がかかるものもあります。
- 必要なサイズでの1枚あたりの料金。 プロバイダーの料金ページで確認してください。料金は変わります。
- 編集機能: アップロードした画像の編集や、一部の塗りつぶしに対応しているものがあり、多くの用途で必要になります。
- 規約: 商用利用、コンテンツのルール、送信したプロンプトや画像がどう扱われるか。
あとでモデルを変更できるよう、プロバイダーの呼び出しは1つのサーバー関数の中にまとめてください。キーや従量課金の仕組みについては LLM APIの使い方 で説明しています。画像モデルでも同じ考え方が使えます。
結果を待つ方法
テキストの返信は1語ずつストリーミングできますが、画像は通常まとめて届きます。高速なモデルなら、ブラウザはサーバーの応答を待つだけで済みます。低速なモデルでは、より良い方法があります。ステータスが「保留中」の「生成」レコードを作成し、すぐに応答を返します。プロバイダーの処理が終わったら、サーバーが画像のアドレスを付けてステータスを「完了」に更新し、ページは数秒ごとにステータスを確認します。プロバイダーによっては、ジョブ完了時にサーバーへ通知を送るWebhookに対応しています。Webhookとは を参照してください。
保存
プロバイダーの応答には、一時的なリンクや生の画像データが含まれることがよくあります。すぐに画像を自分のファイルストレージにコピーし、そのアドレスをデータベースに保存してください。無料利用者の画像をどれくらいの期間保管するかも決めてください。ストレージには継続的な費用がかかります。ファイルの基本的な扱いについては アプリにファイルアップロードを追加する方法 を参照してください。
費用と制限
AI画像生成は、提供するAI機能の中でも特に費用がかかるものの1つです。公開前に次の点を行ってください。
- プロバイダーのダッシュボードで月間の利用上限を設定する。
- 利用者ごとの1日の生成枚数を、サーバー側で強制する。
- 標準のサイズと品質を既定にし、高解像度の出力は、料金を上乗せするか、クレジット制にする。
- 利用者の枠に数えるのは、成功した生成だけにする。
コンテンツの安全性と権利
- プロバイダーのルール。 ほとんどのプロバイダーは一部のコンテンツをブロックし、ルールに何度も違反したアカウントを停止します。利用者の行動は自分の責任になるため、プロバイダーの規約に合わせた利用規約を作成してください。
- モデレーション。 プロバイダーの安全設定を使い、必要に応じてプロンプトを送信前にチェックしてください。画像が公開で共有される場合は、通報の仕組みも用意してください。
- 実在の人物。 特定できる実在の人物の画像を生成すると、特に性的、暴力的、または誤解を招く文脈では現実の害が生じ、多くの国で違法です。明確にブロックしてください。
- アップロードされた参照画像。 利用者が写真をアップロードする場合は、利用する権利のある画像に限定し、必要以上に保管しないでください。
- 所有権と表示。 AI生成画像の所有権や、AIによる生成であることの表示義務は、国によって異なり、変わることもあります。プロバイダーの規約を読み、ビジネス上重要な場合は専門家に相談してください。
AIビルダーへの最初のプロンプト
ShelfShotという、小規模なオンラインショップ向けにライフスタイル写真を作るウェブアプリを作ってください。ログイン後、利用者は商品写真をアップロードし、シーンのプリセット(キッチンのカウンター、屋外のピクニック、ミニマルなスタジオ、くつろげるリビングルーム)とサイズ(正方形または4:5)を選び、「生成」をクリックします。サーバーはプリセットの非公開のスタイル指示と商品の詳細を組み合わせ、秘密の環境変数IMAGE_API_KEYを使って画像生成プロバイダーを呼び出してください。完成した画像はファイルストレージに保存し、利用者、プロンプト、プリセット、サイズ、ファイルのアドレスをデータベースに記録してください。待機中は進行状態を表示し、結果画面にはダウンロードボタンと削除ボタンを付けてください。ギャラリーページには利用者の過去の画像を表示し、各利用者は自分の画像だけが見えるようにしてください。サーバー側で、利用者1人あたり1日20枚に制限してください。キーをブラウザに渡してはいけません。
段階的な構築手順
- プロバイダーを単独でテストする。 実際の入力10件で試し、モデルを選ぶ。
- 基本の流れを作る。 フォーム、サーバーの呼び出し、進行状態、画面に表示される結果。
- ストレージに保存し、各生成をデータベースに記録する。 翌日も画像が表示されるか確認する。
- アカウントとギャラリーを追加する。 2つのアカウントで、URLを推測して他人の画像を開けないことを確認する。
- 制限とエラー処理を追加する。 タイムアウト、ブロックされたプロンプト、プロバイダーのエラーには、分かりやすいメッセージを表示し、利用枠を消費しないようにする。
- 安全対策を追加する。 プロバイダーの安全設定、ブロックする語句、利用規約、画像が共有される場合の通報ボタン。
- 課金する場合は追加する。 アプリに決済を追加する方法 を参照してください。
- 公開前にセキュリティ確認を行う。 AIで作ったアプリのセキュリティチェックリスト が良い指針になります。
よくある失敗
- ブラウザから画像APIを呼び出す。 キーが露出します。
- プロバイダーの一時リンクだけを保存する。 数日後にギャラリーが壊れます。
- 利用者ごとの上限がない。 1人のユーザーやボットに、費用を使い切られます。
- モデルに文字を描かせる。 多くのモデルは、画像内の単語のつづりを誤ります。タイトルや価格は、アプリ側で重ねて表示してください。
- コンテンツのルールを無視する。 プロバイダーがアカウントを停止するまで放置する。
- モデレーションなしの公開ギャラリー。
既製の製品がより良い選択になる場合
画像が必要なだけなら、既存のデザインツールやAIアシスタントの画像機能を使ってください。自分の画像を作るためだけにアプリを作ることは、ほとんど割に合いません。アプリを作る価値があるのは、特定のグループに繰り返し使われる仕事を提供する場合、すべての画像に統一されたスタイルを適用する必要がある場合、または、テキストの作成と画像の作成を一緒に行う出品ツールのように、より大きな製品の一部として画像生成を組み込みたい場合です。
Mythexで作る
MythexはAIアプリビルダーです。チャットで画像アプリを説明すると、フォーム、サーバー側のAPI呼び出し、ギャラリー、制限をライブプレビューで作成し、公開URLに公開します。アプリの画像生成は自分のプロバイダーキーを使い、プロジェクトのシークレットとして保存され、料金はプロバイダーのアカウントに請求されます。Mythexは、アプリの利用者による画像生成の利用量を含みません。
これはMythex自体の画像生成機能 とは別のものです。Mythexの画像生成機能は、構築しているサイト用の画像(たとえばヒーロー画像やアイコン)を作るもので、Mythexのクレジットを消費します。アプリで画像を保存する必要がある場合は、Mythexがプロジェクトにファイルストレージ を有効にし、生成記録用のPostgresデータベースを用意します。より小さく始めるなら、アプリにAI機能を追加する方法 で、既存の製品にAIの操作を1つだけ追加する方法を説明しています。
よくある質問
AI画像生成ツールを作るにはGPUが必要ですか?
画像生成APIを使うなら必要ありません。プロバイダーが自社のハードウェアでモデルを動かし、アプリはプロンプトを送って画像を受け取ります。自前でモデルを動かすにはGPUサーバーが必要で、はるかに大きなプロジェクトになります。
AI画像アプリは、テキストアプリより運用費がかかるのはなぜですか?
1枚の画像は通常、短いテキストの返信よりもかなり高くつきます。解像度や品質の設定を上げるとさらに費用が増えます。プロバイダーの現在の1枚あたりの料金を確認し、利用者ごとに生成できる枚数に上限を設けてください。
生成された画像はどこに保存すべきですか?
ファイルストレージ(オブジェクトストレージのバケット)に保存し、ファイルのアドレスやプロンプトなどの詳細はデータベースに記録してください。プロバイダーが発行する一時的な画像リンクは期限切れになるため、頼らないでください。
AI画像生成ツールで作られた画像の所有者は誰ですか?
プロバイダーの規約と、自分や利用者が所在する地域の法律によって異なります。プロバイダーの規約を読み、関連するルールを自社の利用規約で利用者に伝えてください。所有権がビジネスにとって重要な場合は、専門家に相談してください。