生成AIで作ったWebアプリを公開する方へ

生成AIで作ったアプリの品質チェック:
公開前に確かめること

公開前に事故になりやすい点を、5つの確認点と3つの確かめ方で整理します。

Qz AI Labs ·

01

結論

生成AIで作ったアプリは、画面が動いていても、見えないところに事故の種が残っていることがあります。公開する前に、少なくとも次の5つを確かめてください。

  1. APIキー(外部サービスを使うための秘密の文字列)が、コードや公開される設定に入っていないか
  2. データベースのアクセス制限(Supabase では RLS:行ごとのアクセス制限)が設定されているか
  3. 使っているパッケージ(ライブラリ。アプリが使う外部のプログラム)に、既知の脆弱性(攻撃に使われるおそれのある不具合)がないか
  4. 秘密の設定ファイル(.env)を、GitHub などに上げていないか
  5. 元のコードがそのまま読める形で公開されていないか(ソースマップ)

確かめ方は、自動の点検ツール → 自分のAIに確かめさせる → 人の診断の順に、手軽なものから使うのがおすすめです。

02

「生成AIで作ったアプリ」と「生成AIを組み込んだアプリ」は別の話

「生成AI アプリ 品質」で調べると、チャットボットの回答の正しさを評価する話(生成AIを組み込んだアプリの品質保証)がよく出てきます。この記事が扱うのは、生成AIがコードを書いて作ったアプリです。違いは「「AIでつくる」と「AIを組み込む」の違い」で説明しています。

03

なぜ、AIで作ったアプリは確かめが要るのか

AIは、頼まれた機能を「動く形」にするのが得意です。一方で、頼まれていないこと(だれに見せてはいけないか、何を秘密にするか)は、こちらが言わないと抜けやすくなります。

  • 試しに動かすために、APIキーをコードに直接書いたまま残る
  • 手元で動かすために、データベースのアクセス制限をゆるくしたまま残る
  • パッケージのバージョンを決めずに入れたため、古いバージョンのまま残る

どれも、画面の見た目では気づけません。そして、公開してから気づくと、APIキーの作り直しやデータの確認など、後始末が大きくなります。

04

公開前に確かめる5つの点

1. APIキーなどのシークレットがコードに入っていないか

決済(Stripe など)やAI(OpenAI など)のAPIキーがコードにあると、公開した瞬間に、だれでも読める状態になります。APIキー以外のシークレット(パスワード・トークン・Webhook 署名シークレット・秘密鍵など)も対象です。とくに、ブラウザーに公開される設定(NEXT_PUBLIC_・VITE_ で始まる名前など)にシークレットを入れると、ブラウザーから読めてしまいます。

  • 確かめ方:コードの中にシークレットの形の文字列がないか、ブラウザーに公開される設定の名前にシークレットが入っていないか。
  • もし入っていたら:見つかったシークレットの種類に応じて無効化・更新し、新しいシークレットはサーバー側の設定に置きます。Webhook 署名シークレットは Webhook の設定から更新します。コードから消すだけでは足りません。

2. データベースのアクセス制限(RLS)

Supabase では、画面から使う anon キー(公開用のキー)はブラウザーに公開される前提です。そのかわり、テーブルごとのアクセス制限(RLS とポリシー)で「だれが、どの行を読み書きできるか」を決めます。公開用のキーからアクセスできるテーブルで RLS が無効だと、許可された読み書きの操作を、行ごとの制限なしに実行できる状態になります。

  • 確かめ方:すべてのテーブルで RLS が有効か、ポリシーが「自分の行だけ」などになっているか。Supabase の管理画面の Security Advisor も手がかりになります。
  • service_role キー(管理用のキー)は RLS を飛び越えるので、クライアント側のコードに入れてはいけません。

3. パッケージの既知の脆弱性

アプリは、たくさんのパッケージの組み合わせでできています。パッケージには、あとから脆弱性が公表されることがあります。とくに、画面やサーバーで実際に動くパッケージの重い脆弱性は、公開前に直しておきたいところです。

  • 確かめ方:使っているパッケージの名前とバージョンを、既知の脆弱性のデータベースと照らし合わせます(npm audit、pip-audit など)。
  • 脆弱性の情報は日々増えるので、一度確かめて終わりではありません。公開のあとも、ときどき確かめます。

4. .env を GitHub に上げていないか

.env は、シークレット(APIキー・パスワード・トークン・Webhook 署名シークレット・秘密鍵など)やデータベースの接続 URL を書く設定ファイルです。.gitignore に入れ忘れると、GitHub に上がってしまいます。いったん上げると、あとで消しても履歴に残ります。

  • もし上げていたら:中のシークレットを種類に応じてすべて無効化・更新し、.env を Git の管理から外して、.gitignore に足します(.gitignore に足すだけでは、上げたファイルは残ります)。

5. 元のコードを読める形で公開していないか(ソースマップ)

ソースマップは、開発のときに便利な「元のコードの地図」です。本番でも公開し、元のコードを含める設定だと、元のコードがそのまま読めます。コードに秘密がなければ大きな事故にはなりにくいものの、本番では出さない設定にしておくのが基本です。

05

確かめ方の3つの種類と、使い分け

確かめ方の3つの種類
種類向いていること苦手なこと
自動の点検ツールAPIキーの形・設定・パッケージのバージョンなど、形で分かることを、決まった規則で、すばやく確かめるログインの確かめ方や決済の処理など、コードの意味を読まないと分からないこと
自分のAI(Claude Code・Codex など)に確かめさせるコードの意味を読んで、ログイン・決済・入力の扱いなどを確かめる。そのまま直せる頼み方しだいで見落とす。直すたびに別のところを壊すことがある
人の診断症状の再現、原因の切り分け、直す順番と範囲を決める。AIの直しが堂々巡りになったとき費用と日数がかかる

表は横にスクロールできます。

おすすめの順番は、次のとおりです。

  1. 自動の点検で、形で分かる点をつぶす
  2. 自分のAIに、意味を読む点を確かめさせる(直す前に、Git でいまの状態を残しておく)
  3. 直せない・直すと壊れる、ときは人に相談する

どの方法でも、「指摘がない=問題がない」ではありません。確かめた範囲を知ったうえで使ってください。

06

Qz AI Labs のツールとサービス

  • 点検日和(無料・登録不要):アプリのフォルダか ZIP を選ぶか、GitHub の公開リポジトリの URL を入れると、上の1〜5のうちコードの形で分かる点をブラウザーの中で点検し(管理画面の設定は見ません。細かい範囲は点検日和の「確かめること・確かめないこと」)、見つけた点を、あなたのAI(Claude Code・Codex など)に直させるプロンプトを出します。あなたのアプリのソースコードは預かりません。意味を読む点は、あなたの Claude Code・Codex に貼る「確かめるプロンプト」を出します。→ 点検日和で点検する
  • AI製コードの診断と修復(有料):自分で直せないとき、症状を再現して原因・直す順番・確定した見積もりをまとめた診断の報告から始めます。修復の料金は、直ってからのお支払いです。診断は29,800円(税込)から。相談は無料です。→ AI製コードの診断と修復
07

よくある質問

生成AIで作ったアプリの品質をチェックするサービスはありますか?

形で分かる点(APIキー・データベースのアクセス制限・パッケージの脆弱性など)は、自動の点検ツールで確かめられます。Qz AI Labs の点検日和は、無料・登録不要で、アプリのソースコードを預からずに点検します。コードの意味を読む点は、ご自分の Claude Code・Codex に確かめさせるか、人の診断を使ってください。

バイブコーディングで作ったアプリは、そのまま公開して大丈夫ですか?

画面が動いていても、APIキーの漏れやデータベースのアクセス制限の抜けが残っていることがあります。公開する前に、この記事の5つの点を確かめてください。

AIを組み込んだアプリの品質保証とは違いますか?

違います。この記事は、AIがコードを書いて作ったアプリの確かめ方です。AIの回答の正しさの評価は扱っていません。

点検で何も見つからなければ、安全ですか?

いいえ。点検は、確かめた範囲で気づいた点を示すもので、安全を保証するものではありません。点検日和は、確かめること・確かめないことをページに書いています。

自分で直せないときは?

直し方が分からない、直すと別のところが壊れる、というときは、AI製コードの診断と修復にご相談ください。相談は無料です。