バイブコーディング(AIと一緒にコードを書く開発スタイル)の普及で、今まで個人では難しかった高度な業務アプリが、エンジニア一人でも作れる時代になりつつあります。
請求書管理ツール、在庫管理システム、顧客管理アプリ……。以前なら開発会社に数百万円を払って発注していたものが、AIと一緒なら個人でも形にできるようになってきました。
でも、いざアプリが動くようになったとき、必ずぶつかる壁があります。
「お客さんに試してもらいたい。でも、誰でも見られる状態で公開するのはまずい」
今回はその壁を、AWSの設定変更なし・追加費用ゼロ・JavaScriptだけで乗り越えた話をお伝えします。
📌 AI時事ネタ:個人開発SaaSが急増、「限定公開問題」も急増中
2026年に入り、バイブコーディングの普及で個人開発のアプリ・SaaSが急増しています。一方で「デモ環境を誰でも見られる状態にしてしまい、APIコストが月数万円になった」「開発中のサービスを競合に丸見えにしてしまった」という事故もX上で散見されます。作る力がついた分、公開の管理も重要になってきています。
バイブコーディング時代に起きる「限定公開の壁」
個人でアプリを作ったとき、こんな場面が来ます。
- 取引先に「試しに使ってみてください」とデモを見せたい
- 知り合いの会社に「外部検証をお願いしたい」と頼みたい
- 営業先に「サンプルとして触ってもらいたい」
- 開発チームの仲間だけにテスト版を配りたい
こういうとき、URLをそのまま渡すと誰でもアクセスできる状態になってしまいます。開発途中の画面、テスト用のデータ、まだ見せたくない機能——全部丸見えです。
「じゃあ認証をかけよう」となるのですが、ここで多くの個人開発者が詰まります。
よくある選択肢とその問題点
案① BASIC認証
BASIC認証とは、ページを開いたときにブラウザがIDとパスワードの入力ダイアログを表示する、昔ながらの認証方式です。素人目には「パスワードがかかっている=安全」に見えますが、実はセキュリティ的に問題があります。
BASIC認証はIDとパスワードをBase64という方式でエンコードして送信しますが、これは暗号化ではなく単なる変換です。「鍵をかけた」つもりでも、知識のある人が解析すればすぐ見えてしまいます。また、AWSのS3+CloudFront構成では標準では使えず、別途設定が必要です。
案② AWS Cognito
AWS Cognito(コグニート)とは、AWSが提供するユーザー認証サービスです(「アプリのログイン機能をAWSに丸投げできる仕組み」とイメージしてください)。GoogleアカウントやAppleアカウントでのログインも実装でき、本格的なSaaSには最適です。
ただし、設定が非常に複雑です。ユーザープールの作成・アプリクライアントの設定・コールバックURLの登録・JWTトークン(認証済みであることを証明するデジタルチケットのようなもの)の検証……。このブログでも「Cognito + Google OAuthで詰まる3つの罠」という記事を書いたくらい、ハマりどころが多いサービスです。
マンチーの正直な感想:「お試し公開にCognitoは重すぎる。設定している途中でイライラが頂点に達して、高確率で途中で折れる」。
本番サービスで100人・1000人のユーザーを管理するならCognitoが正解です。でも「特定の10社に試してもらいたいだけ」のケースには完全にオーバースペックです。
マンチーの解決策:JSパスコード+Cookieで1時間実装
そこでたどり着いたのが、JavaScriptとCookieだけで実装する簡易パスコード認証です。
仕組みはシンプルです。
- ページを開いたとき、Cookieにパスコードが保存されているか確認する
- 保存されていなければパスコード入力フォームを表示する
- 正しいパスコードが入力されたらCookieに保存してページを表示する
- 次回アクセス時はCookieを確認してそのまま表示する
Cookieとは、ブラウザにちょっとしたデータを保存しておく仕組みです。「一度パスコードを入力したら、しばらくはまた聞かれない」状態を作れます。
実際のコードはこのようなものです。
// パスコードの設定(この値を知っている人だけアクセスできる)
const PASSCODE = 'your-passcode-here';
const COOKIE_NAME = 'site_access';
const COOKIE_DAYS = 7; // 7日間有効
function getCookie(name) {
const value = `; ${document.cookie}`;
const parts = value.split(`; ${name}=`);
if (parts.length === 2) return parts.pop().split(';').shift();
}
function setCookie(name, value, days) {
const expires = new Date(Date.now() + days * 864e5).toUTCString();
document.cookie = `${name}=${value}; expires=${expires}; path=/`;
}
window.addEventListener('DOMContentLoaded', () => {
if (getCookie(COOKIE_NAME) !== PASSCODE) {
const input = prompt('パスコードを入力してください');
if (input === PASSCODE) {
setCookie(COOKIE_NAME, PASSCODE, COOKIE_DAYS);
} else {
document.body.innerHTML = 'アクセスが拒否されました。
';
}
}
});
HTMLファイルの<script>タグ内にこのコードを貼り付けるだけです。AWSの設定変更は不要、サーバー側の設定変更も不要、追加費用もゼロです。お客様に渡すパスコードを変えたいときは1行書き換えてデプロイするだけです。
なお、Cookie の有効期限(上記コードではCOOKIE_DAYS = 7)も自由に変えられます。1日だけ試してほしいなら1、1ヶ月なら30と数字を変えるだけです。営業デモなら「当日限り」、外部検証なら「2週間」など、用途に合わせて設定できます。
この方法のメリット・デメリット
メリット
- 実装が簡単:HTMLにJavaScriptを追加するだけ。1時間以内に完成します。
- 追加費用ゼロ:AWSの設定変更なし。Cognitoの利用料なし。
- S3+CloudFront構成でも使える:サーバー設定不要なので構成を選びません。
- パスコード変更が簡単:コードの1行を書き換えてデプロイするだけです。
デメリット・限界
- セキュリティは高くない:JavaScriptのソースコードを見るとパスコードが見えてしまいます。悪意を持って解析しようとする人には無力です。
- 個人ごとの管理ができない:「A社はアクセス可、B社は不可」という細かい制御はできません。全員同じパスコードになります。
- Cookieを削除されると再入力が必要:ブラウザのCookieをクリアすると、次回またパスコードを聞かれます。
つまり、この方法が向いているのは「悪意のある第三者ではなく、たまたまURLを知った人を弾く」レベルの用途です。お試し・検証・営業サンプルの段階なら、これで十分です。
バイブコーディング時代、こういう場面は必ず来る
これからAIを使った個人開発はさらに加速します。今まで「個人では無理」と思われていた高度な業務アプリが、AIとの協業でどんどん生まれてくるでしょう。
そのとき、「動くものができた → 誰かに試してもらいたい」という場面は必ず来ます。その「誰かに」が取引先・営業先・外部の検証者であれば、誰でもアクセスできる状態での公開は避けたいはずです。
かといって、お試し段階でCognitoを設定する時間と労力は勿体ない。そういうとき、このJSパスコード認証が役に立ちます。
まとめ:開発フェーズに合わせた認証を選ぶ
- お試し・検証・営業サンプル段階 → JSパスコード+Cookie(今回の方法)
- 社内ツール・中規模サービス → BASIC認証(HTTPS必須)
- 本番SaaS・ユーザー管理が必要 → AWS Cognito
「セキュリティは強ければ強いほどいい」と思いがちですが、強すぎる認証は実装コストと運用コストが跳ね上がります。開発フェーズに合った最小構成を選ぶことが、個人開発を前に進める鉄則です。
マンチーはこの方法でアプリのデモ環境や外部検証を乗り切っています。「とりあえず動かして試してもらいたい」段階では、これで十分です。
関連記事もどうぞ:

コメント