更新: 2026年7月26日 / 個人運営のAI技術ブログ
NexaLink AI Blog
AI Field Notes
NexaLinkプロダクト

【開発記③・最終回】2週間で作ったAIツールを公開!「動く」と「使ってもらえる」の間にあった壁と総括

※この記事は、AIツール「ClearScale」開発記の第3回(全3回・最終回)です。第1回で画像の高画質化、第2回で背景除去に取り組み、機能としては形になってきました。今回は、その「動くツール」を、実際に人へ使ってもらえる「プロダクト」として公開するまでと、約2週間の開発の総括をお届けします。

「動く」と「人に使ってもらえる」は別物だった

高画質化と背景除去が手元で動くようになり、私はすっかり完成した気になっていました。しかし、いざ「友人に試してもらおう」と思った瞬間、これがまだ全然「人に渡せる形」ではないことに気づきます。

たとえば、処理はクラウドのGPU(Modal)で動いています。そのURLをそのまま友人に渡すと、誰でも無制限にアクセスできてしまい、GPUの利用料がどこまで膨らむか分かりません。ログイン(アクセス制限)もなければ、使いすぎを止める仕組みもない。「動く」ことと「安心して人に渡せる」ことの間には、思った以上に大きな溝がありました。

Cloudflareで公開——入口は「LPは全公開・アプリは招待制」

そこで、公開まわりはCloudflareに任せることにしました。構成はざっくりこうです。

  • 紹介ページ(LP)は、誰でも見られるように全公開
  • 実際に画像を処理するアプリ本体は、Googleログイン(Cloudflare Access)で保護し、招待した人だけが入れる招待制
  • アプリとGPUの間にはCloudflare Workerを1枚挟み、アクセス制限・利用上限・ログ・GPUへの中継を担当させる

なぜアプリを招待制にしたかというと、いちばんの理由はコストです。画像処理に使うクラウドGPUは、無料枠を超えると使った分だけ料金がかかります。もし誰でも無制限に使える状態で公開すると、利用が伸びるほど(嬉しい悲鳴ではありますが)GPU代が青天井になりかねません。

そこで、入口をGoogleログインで絞る「招待制」にしつつ、お試し回数の上限(トライアル制限)も設けて、コストが読める範囲で公開する形に落ち着きました。個人が身銭を切って運用する以上、ここは現実的な割り切りが必要でした。

個人開発でも「安全」と「正直さ」は外せない

公開にあたって、非エンジニアなりにいちばん神経を使ったのがセキュリティです。というのも、AIにコードを書いてもらう「バイブコーディング」で、セキュリティの甘さからトラブルになってしまった体験談(末尾の参考記事)を読んでいて、他人事ではないと感じていたからです。

今回はデータベースを持たない構成(画像は保存せず、処理して返すだけ)なので、データベースまわりの対策は不要でしたが、サイトを公開するうえで特に気をつけたのは次の点です。

  • 秘密のカギ(APIキー)をブラウザ側に置かない。GPUを呼び出すためのキーは、フロントに置くと誰でも見えてしまうため、Cloudflare Worker側に隠して持たせ、GPUへ中継するときだけ付与する
  • カギをコードに直書きせず、Gitに含めない。うっかりGitHubへ push しないよう、秘密情報は環境変数で管理し .gitignore で除外する
  • 万一カギの設定を忘れたら「全部拒否」。中途半端に動くのではなく、無防備なまま公開されない安全側(fail-closed)の設計にする
  • アクセスできる相手を絞り(前述のCloudflare Accessによる招待制)、使いすぎを止める(トライアル制限)
  • 通信はHTTPSのみにし、アクセス元(CORS)も許可した相手だけに限定する
  • エラー画面に内部の詳細を出しすぎない。原因はサーバー側のログに残し、利用者へは最小限だけ返す

面白かったのは、AIコーディングツール自体の進化です。1年ほど前のClaude CodeやCodexは、正直なところ平気でAPIキーをコードに直書きしていた記憶があります。ところが最近のモデルは、試しにテストで「これがAPIキーです」とランダムな文字列を渡してみると、『チャット内にAPIキーが入力されました。すぐに削除して、新しいキーを生成してください』と注意してくれるようになっていました。もちろん、注意してくれるからといって100%安全なわけではなく、最後は自分の目で確認する必要はありますが、頼れる相棒が一段賢くなっているのは心強い変化です。

もう1つこだわったのが、利用者への正直な説明です。手元版(ClearScale Local)は「画像はPCの外に出ません」と言えましたが、クラウド版は処理のために画像をアップロードします。ここを曖昧にせず、「画像は処理のためにアップロードされ、完了後に削除します。学習や二次利用には使いません」と、実態どおりに説明することにしました。もちろん画像を永続保存もしていません。

約2週間の開発を振り返って

友人の何気ない一言から始まったこのプロジェクトは、2026年6月末から7月半ばまでの約2週間で、次のような道のりを辿りました。

  • 手元のPCで高画質化に挑戦するも、非力なPCの壁にぶつかる(第1回)
  • 無料枠のあるクラウドGPU「Modal」に出会い、高画質化ツールを完成させる(第1回)
  • 背景除去にも挑戦し、複数モデルを「レイヤーで重ねる」方式にたどり着く(第2回)
  • Cloudflareで、LP公開+招待制アプリとして世に出す(今回)

一方で、正直に言えば、第2回で触れた格子状の被写体(ペットサークルやフェンス)の切り抜きは、まだ満足のいく品質に届いていません。ここは引き続きの宿題です。

それでも、高価な機材も専門のチームもない個人が、無料枠と従量課金をうまく使い分け、コストと安全に気を配りながら、約2週間で「人に使ってもらえるAIツール」を公開できた——この体験そのものが、大きな手応えでした。個人開発者や小さなお店でも、AIを味方につければ「あったらいいな」を形にできる時代になったのだと、NexaLink Labsとしても改めて実感しています。

おわりに

全3回にわたってお届けした「ClearScale開発記」、いかがでしたか。うまくいったことも、まだ越えられていない壁も、できるだけ正直にお伝えしたつもりです。

これからも、残った宿題に取り組みながら、実際に手を動かして得た気づきを発信していきます。最後までお読みいただき、ありがとうございました。

参考情報