このレッスンで分かること
- ✓「限定公開」の正体(URLに合言葉を付けて照合するだけ)
- ✓合言葉を「人ごとに分ける」理由(誰の分か分かる・1人だけ止められる)
- ✓HTML1枚でできる、いちばん簡単な作り方
- ✓お手軽版の限界と、お金・秘密を守る「本格版」への進み方
まず「何をしているか」を一言で
ふつうのURLの後ろに、その人だけの「合言葉」をくっつけて配ります。
https://cabu-r.aigo-tech.jp/?c=cabur-s01-3ed2a9この ?c=cabur-s01-3ed2a9 の部分が合言葉です。アプリは「この合言葉、リストに載っている正しい人かな?」とチェックし、合っていれば中を見せる/違えば鍵の画面を出す。これだけです。
限定公開の正体は「URLに合言葉を付けて、正しいか照合するだけ」。難しそうに見えて、やっていることは会員制のお店の入口と同じです。
身近なたとえ ― 会員制のお店の「合言葉」
入口に立つスタッフに合言葉を言うと中に入れる、会員制のお店を想像してください。
・スタッフ=アプリ(サーバー)/ 合言葉=URLの ?c=…
・一度入れてもらったら、腕にスタンプ(=Cookie)を押してもらうので、次からは合言葉なしでも入れる
・スタッフは「今日の有効な合言葉リスト」を持っていて、リストから消された合言葉はもう通れない
この「合言葉リスト」を人ごとに1つずつ用意しておくのがポイントです(後述)。
仕組みの流れ(4ステップ)
- 合言葉を配る:生徒さんに
…/?c=あなたの合言葉のURLをLINEやメールで案内する。 - 合言葉をチェック:その人がURLを開くと、アプリが合言葉をリストと照合する。
- 合っていたら通す+覚える:ブラウザに「入室スタンプ(Cookie)」を渡して、中身を表示する。
- 違っていたら鍵の画面:「合言葉が違います」と出して、中身は見せない。
その場で体験 ― かんたん合言葉ゲート
下の欄に合言葉を入れて「入る」を押してみてください。正解は haru2026 です(わざと画面に書いてあります)。
※ これは「考え方」を体験するためのミニ版です。実際のCABU-Rはこの後で説明するもっと頑丈なサーバー版で作っています。
いちばん簡単な作り方(HTML 1枚でできる版)
「まず動くものを作ってみたい」なら、HTMLファイル1枚だけで合言葉ゲートが作れます。下をそのままコピーして index.html に貼るだけです。
<!-- 合言葉ゲート・かんたん版(HTML1枚) --> <script> // ① 通してよい合言葉のリスト(人ごとに1つ) const OK = ["haru2026", "natsu2026", "aki2026"]; // ② URLの ?c= を読み取る const code = new URLSearchParams(location.search).get("c"); // ③ 前に入室していれば覚えておく(スタンプ=localStorage) const stamped = localStorage.getItem("entered") === "1"; // ④ 合言葉が正しい、または前に入室済みなら中を見せる if (OK.includes(code) || stamped) { localStorage.setItem("entered", "1"); // スタンプを押す // ここでアプリ本体を表示する } else { document.body.innerHTML = "🔒 合言葉が違います。ご案内したURLからアクセスしてください。"; } </script>
生徒さんには https://あなたのサイト/?c=haru2026 のように、リストにある合言葉を1人1つ割り当てて配ります。合言葉を変えるだけで「誰の分か」を分けられます。
なぜ「人ごとに合言葉を分ける」のか
みさわがCABU-Rで使っている合言葉は、こういう形になっています。
| 生徒 | その人の合言葉 | 配るURL |
|---|---|---|
| 生徒1 | cabur-s01-3ed2a9 | …/?c=cabur-s01-3ed2a9 |
| 生徒2 | cabur-s02-8f1b0c | …/?c=cabur-s02-8f1b0c |
合言葉は「商品名(cabur)+生徒番号(s01)+でたらめな文字(3ed2a9)」の組み合わせ。人ごとに分けておくと、こんな良いことがあります。
- 誰の分か分かる:s01 なら生徒1、と番号で判別できる。
- 1人だけ止められる:ある人の利用を止めたいとき、その人の合言葉だけリストから消せばOK。ほかの生徒さんはそのまま使えます。
- あてずっぽうで当てられない:後ろに「でたらめな文字」を付けるので、他人が推測して入ることはほぼできません。
実際のCABU-Rはどう作っているか(本格版)
⑤のHTML1枚版はお手軽ですが、弱点があります(次章)。そこでCABU-Rは、アプリの入口(サーバー)で合言葉をチェックする「本格版」で作っています。仕組みは同じ4ステップですが、頑丈さが違います。
本格版でやっていること
- 合言葉リストはサーバーの中(
.envという設定ファイル)に置き、画面には出さない。 - 入室OKのときに渡すスタンプ(Cookie)にサーバーだけが作れる「署名」を付ける → 他人がスタンプを偽造できない。
- スタンプには有効期限(例:10日)と1日の利用回数の上限を持たせられる。
- 生徒1人の合言葉を消すと、その人のスタンプだけ無効になり、他の生徒さんのスタンプは壊れない。
※ ここは「Claude Codeでアプリを作る」レッスンが進んでから触れる、少し先の内容です。まずは⑤のHTML1枚版で「合言葉で入れる・入れない」の感覚をつかめば十分です。
いちばん大事な注意(ここは必ず)
ブラウザで「ソースを見る」と、合言葉リストが見えてしまいます。ですのでお手軽版(⑤)が向いているのは 「なんとなく限定にしておきたい・URLを知っている人だけに配りたい」 くらいの用途までです。
お金を扱う/本当に秘密にしたい情報を守りたいときは、⑦のサーバー版(本格版)が必要です。CABU-R・CABU225 が本格版で作られているのは、このためです。
お手軽版と本格版の使い分け
| お手軽版(HTML1枚) | 本格版(サーバー) | |
|---|---|---|
| 作りやすさ | ◎ とても簡単 | △ サーバーが必要 |
| 合言葉を隠せる | × 見えてしまう | ◎ 見えない |
| 1人だけ止める | △ できるが手作業 | ◎ リストから消すだけ |
| 向いている用途 | お知らせ・限定ページ | アプリ・有料サービス |
今日の学び
- 1「限定公開」の正体は、URLに合言葉(
?c=…)を付けて、正しいか照合するだけ。 - 2合言葉を人ごとに分けると、「誰の分か」が分かり、「1人だけ止める」もできる。
- 3まずはHTML1枚のお手軽版で感覚をつかむ。ただしそれは完全な鍵ではない。
- 4お金や本当の秘密を守るなら、サーバーでチェックする本格版(=CABU-Rの作り方)へ進む。
「限定公開」と聞くと難しそうですが、正体は"合言葉の照合"だけ。まずはHTML1枚版で「入れる・入れない」を自分の手で動かしてみてください。その感覚が、後のサーバー版の理解にそのままつながります。