🖼️

AIで生成した画像を管理できるサービス『AI Storages』を作ったお話

2024/01/26に公開
  • 今回作成したサイト
    https://ai-storages.com/

  • 開発に至ったきっかけ

    • 自分はStable Diffusion Web UIで画像を生成しているが「あのプロンプト使ったのいつ生成した画像だっけ?」「あの画像を生成するのに使用したプロンプトなんだっけ?」と生成した画像を探すのが大変だった
    • 画像に使用したプロンプトはStable Diffusion Web UIで確認できるがそもそも画像を探すのが大変だった
    • なのでAIで生成した画像をプロンプトで検索できるサービスがあったらいいんじゃないかと思って開発してみました
  • 機能

    • Stable Diffusion Web UIやNovel AIで生成した画像をアップロードすると使用したプロンプトなどの情報を解析してデータベース化
    • プロンプトで検索すると該当する画像を一覧で表示
    • 無料でサイトを使用できます
      • 有料の月額サブスクリプションで広告非表示にできたり画像をアップロードできる上限を引き上げることができます
  • 技術構成

    • 使用言語, フレームワーク
      • C# & .NET 8 & Blazor
    • 認証
      • Supabase Authentication
    • データベース
      • Supabase Database
    • ストレージ
      • Cloudflare R2
    • コンテナサービス
      • Google Kubernetes Engine (GKE)
    • サブスクリプション管理
      • Stripe
  • 技術選定理由

    • 本サービスはGoogleアカウントによるログインだけを考えていたため開発当初はFirebaseを中心に選択していましたが開発していくとFirebaseの使用金額が予算より高額になりそうになったためFirebaseから移行していった経緯があります
    • C#, .NET 8, Blazor
      • 自分が最も使い慣れている言語がC#なので好みだけでBlazorを選択
      • あくまで趣味で開発するから好みで言語選定しているが仕事だと好みだけで選定するのは良くない兆候なのでご注意
    • Supabase Authentication
      • 開発当初はFirebase Authenticationを選択して開発していたがSupabase Databaseを使用するために移行
    • Supabase Database
      • 開発当初はFirebase Cloud Firestoreを選択して開発していたが使用量を計算すると予算をオーバーしそうになったためSupabase Databaseに移行
    • Cloudflare R2
      • 開発当初はFirebase Storageを選択して開発していたがデータ転送量を考慮してCloudflare R2に移行
    • Google Kubernetes Engine
      • 当初はサーバーにRailway appを使用していたのですがログイン処理を行うだけのトップページで処理が完了するのに5~6秒ほどかかっていたのでサーバーをGoogle Kubernetes Engineに移行
      • 結果的にトップページの処理が完了するまで1秒程度に改善できました
      • おそらくサーバーのリージョンやサーバーそのものの性能差などが要因だと思います
        • Railway appがダメなわけじゃなくて費用の差とか自分の設定が影響していたためだと思います
      • ただ日に150円程度の維持費がかかってしまうのがネックなので設定などを見直して費用を削れるところがあれば改良していきたい
    • 使用サービスをいくつも移行しているのでその度にコードを捨てて開発し直したのは反省点の一つ
      • 趣味の開発だから自分が苦労するだけで済んだが仕事の開発でこれだけ移行したらクソプロジェクト間違い無しなので刺されてもおかしくないと思う
  • 感想

    • 開発者1人でもこの程度の規模のサービスは開発できるということを証明できたと思う
    • オンラインストレージみたいなサービスを自力で開発できたのはけっこう嬉しい
      • セキュリティには気をつけて開発したつもりですがもしセキュリティに穴があったらTwitterアカウントなどにこっそり教えていただけると助かります……
    • BlazorやC#とSupabaseの開発資料はかなり数が少なかったので今回の開発による知見を何らかの形にしたい
    • サイトのデザインセンスが無いのでこれからも改良を続けていきたい

Discussion