AIでつくったアプリを公開する前の確認リスト
・書いた人 山本 健太
AIでつくったアプリは、何を確かめてから公開すればいい?
「動くアプリ」と「安心して公開できるアプリ」は別のものです。画面が正しく動いていても、APIキーが外から見えていたり、ほかの人のデータを見られたりすることがあります。
公開する前に、秘密の情報・ログインと権限・入力・料金・個人情報・データの復旧・公開の設定の 7 つを確かめてください。どれも、最低限は自分で確かめられます。そのうえで、個人情報・お金・他人のデータが関わるなら、公開する前に第三者の目を入れるのがおすすめです。
小さなアプリでも、公開すれば弱いところを探される
「自分がつくった小さなアプリなんて、わざわざ狙われないだろう」と思うかもしれません。ところが攻撃する側は、インターネットに公開された機器やシステムを探すサービスや自動のプログラム(ボット)を使って、弱いところのある相手を広く探しています。米国のサイバーセキュリティの機関 CISA も、この点に注意を呼びかけています。
相手は、あなたのアプリの存在を前もって知っている必要がありません。隠しておくべき APIキーが見える状態だったり、データベースに誰でも入れる設定だったりすれば、公開した本人が気づかないうちに、情報を抜かれたり、勝手に使われたりすることがあります。
すべてのサイトがいつも攻撃されている、というわけではありません。ただ、インターネットに公開した時点で、誰かに見つかり、弱いところを探される可能性がある、と考えておくのが正確です。
これは AI でつくったアプリに限った話ではありません。ただ、AI のおかげで専門の知識がなくても公開できるようになったぶん、「動いているから大丈夫」と判断しないことが大切になりました。
AIでつくったアプリで、問題になりやすい例
予約の管理アプリで、ほかのお客さんの予約が見えてしまう
小さなお店の予約の管理アプリ。ログインもでき、予約の登録・変更・取り消しも正しく動いています。ところが、予約を取り出す API で「その予約が本人のものか」を確かめていません。すると、URL に入っている予約の番号を書き換えるだけで、ほかの人の予約が見えてしまうことがあります。
ログインの機能があるだけでは、安全にはなりません。「誰がログインしたか」だけでなく、「その人がどの情報を扱ってよいか」を、サーバーやデータベースの側で確かめる必要があります。Web のセキュリティの危険をまとめた OWASP Top 10 の 2025 年版でも、この「アクセスの制御の不備」がいちばん上に挙がっています。
AIチャットのアプリで、利用料が膨らむ
生成AIの API を使ったチャットのアプリを、誰でも使えるように公開した例です。使える回数に上限がなく、しかも APIキーがブラウザの側に埋め込まれている。すると、第三者に API を大量に使われたり、キーを抜き取られて悪用されたりして、思わぬ請求が来ることがあります。
怖いのは、アプリが正しく動いているあいだにも被害が進むことです。キーを守るだけでなく、使う人ごとの回数の制限、サーバーの側での使用量の制御、予算の上限や通知の設定まで確かめます。
お客さんが上げたファイルを、誰でも見られる
お客さんが見積書や写真を上げられるアプリ。画面ではログインした本人にしかファイルが出ません。ところが、ファイルの置き場が「公開」の設定になっていて、ファイルの URL さえ分かれば、ログインしなくても誰でもダウンロードできてしまいます。
画面で隠していても、置き場が公開されていれば意味がありません。たとえば Supabase のストレージでは、公開の設定にした置き場のファイルは、URL を知っている人なら誰でも開けます。人に見せないファイルは、非公開の置き場に入れ、見てよい人を決めておく必要があります。
公開する前に確かめる 7 つのこと
どれも、最低限は自分で確かめられます。ただ、自分で問題を見つけられることと、安全だと言い切れることは別です。それぞれ、専門家に任せたほうがいいところも書きました。優先する順番はアプリによって変わりますが、個人情報やお客さんの情報を扱うなら、1 と 2 は公開前の必須の条件です。
APIキーやパスワードが、外に漏れていないか
- なぜ大事か
- 漏れると、外のサービスを勝手に使われたり、データを操作されたりします。
- 自分で確かめる
- Chrome でアプリを開き、F12(Mac は Option + Command + I)で開発者ツールを出します。「Network」で通信の中身を、「Sources」で読み込まれたプログラムを見て、秘密にすべきキーが入っていないかを調べます。
- 危ないサイン
- OpenAI などの秘密のキーが、画面の側のコードに入っている。
.envなど秘密の情報のファイルを GitHub に公開している。 - 専門家に任せる
- コード全体と Git の履歴まで含めた漏れの調査、キーの交換、キーをサーバーの側へ移す作業。
- 補足
- ブラウザにログイン用のトークンが見えること自体は、異常とは限りません。Supabase の publishable key や、Firebase の Web アプリ用の APIキーのように、公開する前提のキーもあります。大事なのは、キーの種類と、そのキーで何ができる設定になっているかです。
ほかの人の情報を、見たり変えたりできないか
- なぜ大事か
- お客さんの情報が漏れたり、予約や注文を勝手に変えられたりします。
- 自分で確かめる
- テスト用のアカウントを 2 つつくり、A で登録した情報を B から見たり変えたりできないかを試します。ログアウトした状態で、URL を直接開いても確かめます。
- 危ないサイン
- 別のアカウントの情報が出る。ログアウトしたあとも個人情報が見える。一般の利用者が、管理者の機能を使える。
- 専門家に任せる
- サーバーの側の権限の確認、データベースのアクセスの制御(Supabase の RLS など)、管理者の権限の検証。画面の操作だけでは、裏側のすべての経路を確かめられないためです。
思いがけない入力で、壊れないか
- なぜ大事か
- 入力の扱いが甘いと、情報の書き換え、不正な処理、データの破損が起こりえます。
- 自分で確かめる
- テスト用の環境で、空欄、とても長い文、絵文字、記号、想定していない形式のファイルなどを入れてみます。エラーがきちんと出て、おかしな情報が保存されないかを見ます。
- 危ないサイン
- 入力すると画面が崩れる。内部のエラーがそのまま出る。想定していない内容が保存される。
- 専門家に任せる
- SQL インジェクション、XSS、ファイルのアップロード、サーバーの側での入力の検証など。単純な入力の試しだけでは、弱いところがあるかどうかは判断できません。
利用料が、際限なく増えないか
- なぜ大事か
- AI の API やクラウドのサービスを大量に使われると、高い請求や利用の停止につながります。
- 自分で確かめる
- OpenAI や Vercel などの管理画面で、使用量、料金の通知、上限の設定を確かめます。ログインなしで使える AI の機能や、メールを送る機能がないかも調べます。
- 危ないサイン
- ログインしていない人が、お金のかかる処理を何度でも実行できる。回数の制限がない。料金の通知を設定していない。
- 専門家に任せる
- サーバーの側での回数の制限、不正な利用への対策、実際に効く使用量の制御。
- 補足
- 料金の「通知」と「止める」は別のものです。たとえば Google Cloud の予算の設定は通知だけで、それ自体では使用を止めません。
個人情報やファイルを、きちんと扱えているか
- なぜ大事か
- 名前、メールアドレス、住所、アップロードされた書類などが漏れます。
- 自分で確かめる
- 何の情報を受け取り、どこに保存し、誰に見せるのかを書き出します。ログアウトした状態でファイルの URL を開いてみます。プライバシーポリシーと実際の扱いが食い違っていないかも見ます。
- 危ないサイン
- 非公開のはずのファイルを誰でも開ける。受け取った個人情報が、ログや外の AI サービスにうっかり送られている。
- 専門家に任せる
- 保存先、外のサービスへの送信、公開の範囲、消し方などの技術的な確認。法律の面での判断が要るときは、法律の専門家にも相談します。
データを消してしまっても、戻せるか
- なぜ大事か
- 操作のミスや不具合でデータを失うと、お客さんへの対応や仕事が止まります。
- 自分で確かめる
- データベースのサービスの管理画面で、バックアップの設定、残しておく期間、戻し方を確かめます。できれば、別のテスト用の環境で実際に戻せることを試します。
- 危ないサイン
- バックアップがあるのか分からない。戻す手順がない。保存先が 1 か所しかない。
- 専門家に任せる
- バックアップの設計と、戻す手順の検証。仕事のデータは、バックアップが「ある」だけでは足りません。
公開の設定と、公開したあとの体制に穴がないか
- なぜ大事か
- テスト用の環境が公開されていたり、管理画面が外から見えたり、止まっても誰も気づかなかったりします。
- 自分で確かめる
- 公開する URL をシークレットモードで開き、見せてはいけないページが見えないかを調べます。HTTPS でつながるか、エラーの通知先を設定しているかも確かめます。
- 危ないサイン
- テスト用のお客さんの情報が出る。管理画面に誰でも入れる。エラーの通知先がない。公開したあとの担当が決まっていない。
- 専門家に任せる
- 環境の設定、外に出さなくてよい API の公開、使っている部品(ライブラリ)の弱いところ、見張りと更新の仕組みの確認。
「AIに診断させれば大丈夫」ではないの?
AI による診断は、ぜひ使ってください。ただし、AI が「問題ありません」と答えたことを、安全の証明にはしないでください。
AI のコードレビューは、たとえば次のような問題を見つける助けになります。
- コードにそのまま書かれた秘密の情報
- データベースの危ない公開の設定
- 入力のチェックや、権限の確認が足りないところ
- 古い部品(ライブラリ)にある、知られた弱いところ
一方で、実際に悪用できるかの確認、複雑な業務のルール、いくつもの機能を組み合わせた攻撃の検証には限りがあります。たとえば「予約を取り出す API にはログインの確認があるので安全」と AI が判断しても、実際には別の人の予約を取り出せることがあります。つくったときと同じ AI にレビューさせると、つくったときの思い込みを引きずることもあります。
私なら、次のように頼みます。
このアプリを一般に公開する前提で、セキュリティのレビューをしてください。秘密の情報の漏れ、ログインと権限、データベースの公開の範囲、不正な入力、API の利用料、個人情報の扱いを確認し、問題の箇所と確かめ方を示してください。安全だと確認できない項目は「未確認」と明記してください。
AI に指摘されたところを直し、テスト用の環境で実際に確かめる。そのうえで、個人情報やお金を扱うところは、第三者にも見てもらうのがよいと思います。
Lovable の Quick scan・Deep scan や、Bolt の公開前のセキュリティの監査のように、チェックの機能を備えたサービスも増えました。それでも Lovable の公式の資料は、機密の情報や重要な機能を扱うなら、専門家による追加のレビューを検討するよう案内しています。
Claude Code、Cursor、v0、Bolt、Lovable で、気をつけることは違う?
違いはあります。ただ「このツールは危ない、こちらは安全」という単純な比べ方はおすすめしません。使い方と、できあがるアプリの組み立てによって、気をつけるところが変わります。
| ツール | 特に確かめたいこと |
|---|---|
| Claude Code / Cursor | いくつものファイルにまたがる変更、もともとあった権限の確認を壊していないか、部品(ライブラリ)の追加、データベースの変更、環境の設定への影響 |
| v0 | 見た目だけ動いている仮の機能、画面の側への秘密の情報の混入、API とデータベースの権限の確認 |
| Bolt / Lovable | つないだデータベースのアクセスの制御、ファイルの置き場の公開の範囲、ログインの設定、外の API の秘密の情報と使用量 |
Claude Code / Cursor
特に確かめたいこといくつものファイルにまたがる変更、もともとあった権限の確認を壊していないか、部品(ライブラリ)の追加、データベースの変更、環境の設定への影響v0
特に確かめたいこと見た目だけ動いている仮の機能、画面の側への秘密の情報の混入、API とデータベースの権限の確認Bolt / Lovable
特に確かめたいことつないだデータベースのアクセスの制御、ファイルの置き場の公開の範囲、ログインの設定、外の API の秘密の情報と使用量
Claude Code や Cursor のように、エージェントがコードを書き換えていくツールでは、書き換えの副作用にも気をつけます。何が変わったか(差分)とテストの結果を見ることが大切で、Cursor にはエージェントの変更を戻せるチェックポイントがありますが、公式の資料は、それを Git などのバージョン管理の代わりにしないよう案内しています。
v0 は見た目をつくるだけの道具ではなくなり、API やデータベースを使うアプリもつくれます。見た目だけでなく、裏側の処理も確かめる対象です。
いちばん大事なのは「何でつくったか」よりも、「何をつくって、どんな情報を扱うか」です。
Vercel、Cloudflare、Firebase、Supabase の設定の落とし穴
AI でつくったアプリの公開先としてよく使われる 4 つです。公開する前に、次の設定を確かめてください。
| サービス | 公開する前に確かめたい設定 |
|---|---|
| Vercel | 環境変数、プレビュー(試しの公開)を誰が見られるか(設定の Deployment Protection)、本番とテスト用の環境が分かれているか。NEXT_PUBLIC_ で始まる環境変数は、ブラウザに渡る |
| Cloudflare | Workers の秘密の情報は Secret として持つ。R2 の公開用の URL(独自ドメインや r2.dev)を、意図せず有効にしていないか |
| Firebase | Firestore のセキュリティルールが、テスト用の「誰でも読み書きできる」設定のままになっていないか。allow read, write: if true は本番で使わない |
| Supabase | RLS とテーブルの権限。service_role や secret key をブラウザに出さない。ファイルの置き場の公開の設定と、バックアップに何が含まれるか |
Vercel
公開する前に確かめたい設定環境変数、プレビュー(試しの公開)を誰が見られるか(設定の Deployment Protection)、本番とテスト用の環境が分かれているか。NEXT_PUBLIC_で始まる環境変数は、ブラウザに渡るCloudflare
公開する前に確かめたい設定Workers の秘密の情報は Secret として持つ。R2 の公開用の URL(独自ドメインや r2.dev)を、意図せず有効にしていないかFirebase
公開する前に確かめたい設定Firestore のセキュリティルールが、テスト用の「誰でも読み書きできる」設定のままになっていないか。allow read, write: if trueは本番で使わないSupabase
公開する前に確かめたい設定RLS とテーブルの権限。service_role や secret key をブラウザに出さない。ファイルの置き場の公開の設定と、バックアップに何が含まれるか
Supabase は、AI でつくるアプリでよく使われる組み合わせの一つなので、少しくわしく書きます。
RLS(行ごとに、誰が読み書きできるかを決める仕組み)は、有効にしただけでは安心できません。決まりの中身が正しいとは限らないからです。確かめたいのは「自分のデータは見える」と「ほかの人のデータは見えない」の両方です。
また、毎日の自動のバックアップは有料の Pro プラン以上のもので、データベースのバックアップには、ストレージに置いたファイルそのものは含まれません。無料のプランで使っている場合は、Supabase 自身も勧めているとおり、定期的にデータを書き出して、別の場所に控えを持っておいてください。
公開したあとも、続けたいこと
| いつ | やること |
|---|---|
| 公開してから 1 週間 | エラー、利用料、思いがけないアクセスが出ていないかを毎日見る |
| 毎週 | エラーの通知、料金、アクセスの数、バックアップの状態を見る |
| 毎月 | 部品(ライブラリ)の更新、セキュリティの警告、要らない権限や機能がないかを見る |
| 大きく変える前後 | 公開前のチェックをもう一度。問題があれば、元に戻せるようにしておく |
| ときどき | 本番とは別の環境で、バックアップから戻せるかを試す |
公開してから 1 週間
やることエラー、利用料、思いがけないアクセスが出ていないかを毎日見る毎週
やることエラーの通知、料金、アクセスの数、バックアップの状態を見る毎月
やること部品(ライブラリ)の更新、セキュリティの警告、要らない権限や機能がないかを見る大きく変える前後
やること公開前のチェックをもう一度。問題があれば、元に戻せるようにしておくときどき
やること本番とは別の環境で、バックアップから戻せるかを試す
なかでも大事なのは、問題が起きたときに、誰が気づいて、誰が対応するのかを決めておくことです。止まっても、情報が漏れても、通知を見る人がいなければ動けません。
小さなサービスなら、最初から高度な見張りの仕組みは要りません。ただ、少なくともエラーの通知と、料金の通知の送り先は設定しておきたいところです。
ここまでなら、自分で公開しても大丈夫?
アプリの種類で、3 つの段階に分けて考えるのがよいと思います。
自分で公開しやすいもの
- 例
- お知らせだけのホームページ、ポートフォリオ、情報を見せるだけのサイト
- 条件
- ログイン、個人情報の送信、データの保存、決済、お金のかかる API、ファイルのアップロードがなく、外に影響する処理が少ないもの。公開の設定、著作権、基本の動き、外のサービスとのつなぎは確かめます。
公開する前に、軽いレビューを受けたいもの
- 例
- 問い合わせのフォーム、簡単な予約のフォーム、ログインのある小さなアプリ
- 理由
- フォームで名前やメールアドレスを受け取るだけでも、個人情報を扱います。保存先、送り先、迷惑な送信への対策を確かめます。
公開する前に、専門家の確認を強くおすすめするもの
- 例
- 顧客の管理、会員制のサービス、ネットショップ、決済、社内の文書の管理、何人ものあいだでのデータの共有、ファイルのアップロード、AI の API を使った従量課金があるアプリ
- 理由
- 情報の漏れ、お金の被害、仕事の停止が起きたときの影響が大きく、本人だけのチェックで判断しないほうがよいためです。
もちろん、単純なアプリだから絶対に安全、というわけではありません。ただ、「不具合が起きても被害が小さく、利用者の大事な情報やお金を扱わない」という条件がそろうほど、自分で公開しやすくなります。
いきなり誰にでも公開するのが不安なら、最初はテストの利用者だけに絞って試すのも手です。ただし、公開を絞ることは、セキュリティの対策の代わりにはなりません。
まとめ
東山紡では、AI でつくったアプリを公開する前の診断をお受けしています。「何を確かめればいいか分からない」「AI には問題ないと言われたけれど不安」という方は、AIでつくったアプリの公開のページもご覧ください。
参考にした資料
- OWASP Top 10:2025
- CISA: Stuff Off Search
- Supabase: Storage buckets
- Supabase: API keys
- Supabase: Row Level Security
- Supabase: Backups
- Firebase: API キーの使用と管理
- Firebase: 安全でないルールを修正する
- Google Cloud: 予算と予算アラートを作成、編集、削除する
- Next.js: Environment Variables
- Vercel: Deployment Protection
- Cloudflare Workers: Secrets
- Cloudflare R2: Public buckets
- Lovable: Security
- Bolt: Security
- Cursor: Checkpoints
- v0: Full-stack apps
各サービスの機能や料金は変わることがあります。2026年10月26日時点で確かめた内容です。