Tomoru〈灯〉 受講生向け教材
受講生向け教材 / 限定公開のしくみ

「限定した人だけ使える」仕組みの作り方
― 合言葉つきURL ―

CABU225・CABU-R でも使っている「鍵つき公開」を、いちばんやさしく解説します。登録してくれた人だけにアプリやページを使ってもらう——その正体は、じつはとてもシンプルです。

テーマ合言葉つきURL(限定公開) 対象コード未経験〜 目安約15分

このレッスンで分かること

  • 「限定公開」の正体(URLに合言葉を付けて照合するだけ)
  • 合言葉を「人ごとに分ける」理由(誰の分か分かる・1人だけ止められる)
  • HTML1枚でできる、いちばん簡単な作り方
  • お手軽版の限界と、お金・秘密を守る「本格版」への進み方
1

まず「何をしているか」を一言で

ふつうのURLの後ろに、その人だけの「合言葉」をくっつけて配ります。

https://cabu-r.aigo-tech.jp/?c=cabur-s01-3ed2a9

この ?c=cabur-s01-3ed2a9 の部分が合言葉です。アプリは「この合言葉、リストに載っている正しい人かな?」とチェックし、合っていれば中を見せる/違えば鍵の画面を出す。これだけです。

ここだけ覚える

限定公開の正体は「URLに合言葉を付けて、正しいか照合するだけ」。難しそうに見えて、やっていることは会員制のお店の入口と同じです。

2

身近なたとえ ― 会員制のお店の「合言葉」

🏠 たとえで理解する

入口に立つスタッフに合言葉を言うと中に入れる、会員制のお店を想像してください。

・スタッフ=アプリ(サーバー)/ 合言葉=URLの ?c=…
・一度入れてもらったら、腕にスタンプ(=Cookie)を押してもらうので、次からは合言葉なしでも入れる
・スタッフは「今日の有効な合言葉リスト」を持っていて、リストから消された合言葉はもう通れない

この「合言葉リスト」を人ごとに1つずつ用意しておくのがポイントです(後述)。

3

仕組みの流れ(4ステップ)

  1. 合言葉を配る:生徒さんに …/?c=あなたの合言葉 のURLをLINEやメールで案内する。
  2. 合言葉をチェック:その人がURLを開くと、アプリが合言葉をリストと照合する。
  3. 合っていたら通す+覚える:ブラウザに「入室スタンプ(Cookie)」を渡して、中身を表示する。
  4. 違っていたら鍵の画面:「合言葉が違います」と出して、中身は見せない。
4

その場で体験 ― かんたん合言葉ゲート

下の欄に合言葉を入れて「入る」を押してみてください。正解は haru2026 です(わざと画面に書いてあります)。

🔒 まだ入室していません

※ これは「考え方」を体験するためのミニ版です。実際のCABU-Rはこの後で説明するもっと頑丈なサーバー版で作っています。

5

いちばん簡単な作り方(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つ割り当てて配ります。合言葉を変えるだけで「誰の分か」を分けられます。

6

なぜ「人ごとに合言葉を分ける」のか

みさわがCABU-Rで使っている合言葉は、こういう形になっています。

生徒その人の合言葉配るURL
生徒1cabur-s01-3ed2a9…/?c=cabur-s01-3ed2a9
生徒2cabur-s02-8f1b0c…/?c=cabur-s02-8f1b0c

合言葉は「商品名(cabur)+生徒番号(s01)+でたらめな文字(3ed2a9)」の組み合わせ。人ごとに分けておくと、こんな良いことがあります。

  • 誰の分か分かる:s01 なら生徒1、と番号で判別できる。
  • 1人だけ止められる:ある人の利用を止めたいとき、その人の合言葉だけリストから消せばOK。ほかの生徒さんはそのまま使えます。
  • あてずっぽうで当てられない:後ろに「でたらめな文字」を付けるので、他人が推測して入ることはほぼできません。
7

実際のCABU-Rはどう作っているか(本格版)

⑤のHTML1枚版はお手軽ですが、弱点があります(次章)。そこでCABU-Rは、アプリの入口(サーバー)で合言葉をチェックする「本格版」で作っています。仕組みは同じ4ステップですが、頑丈さが違います。

本格版でやっていること

  • 合言葉リストはサーバーの中(.env という設定ファイル)に置き、画面には出さない
  • 入室OKのときに渡すスタンプ(Cookie)にサーバーだけが作れる「署名」を付ける → 他人がスタンプを偽造できない。
  • スタンプには有効期限(例:10日)1日の利用回数の上限を持たせられる。
  • 生徒1人の合言葉を消すと、その人のスタンプだけ無効になり、他の生徒さんのスタンプは壊れない。

※ ここは「Claude Codeでアプリを作る」レッスンが進んでから触れる、少し先の内容です。まずは⑤のHTML1枚版で「合言葉で入れる・入れない」の感覚をつかめば十分です。

8

いちばん大事な注意(ここは必ず)

⚠ お手軽版は「本物の鍵」ではありません

ブラウザで「ソースを見る」と、合言葉リストが見えてしまいます。ですのでお手軽版(⑤)が向いているのは 「なんとなく限定にしておきたい・URLを知っている人だけに配りたい」 くらいの用途までです。

お金を扱う/本当に秘密にしたい情報を守りたいときは、⑦のサーバー版(本格版)が必要です。CABU-R・CABU225 が本格版で作られているのは、このためです。

お手軽版と本格版の使い分け

お手軽版(HTML1枚)本格版(サーバー)
作りやすさ◎ とても簡単△ サーバーが必要
合言葉を隠せる× 見えてしまう◎ 見えない
1人だけ止める△ できるが手作業◎ リストから消すだけ
向いている用途お知らせ・限定ページアプリ・有料サービス

今日の学び

  • 1「限定公開」の正体は、URLに合言葉(?c=…)を付けて、正しいか照合するだけ
  • 2合言葉を人ごとに分けると、「誰の分か」が分かり、「1人だけ止める」もできる。
  • 3まずはHTML1枚のお手軽版で感覚をつかむ。ただしそれは完全な鍵ではない。
  • 4お金や本当の秘密を守るなら、サーバーでチェックする本格版(=CABU-Rの作り方)へ進む。
講師から一言

「限定公開」と聞くと難しそうですが、正体は"合言葉の照合"だけ。まずはHTML1枚版で「入れる・入れない」を自分の手で動かしてみてください。その感覚が、後のサーバー版の理解にそのままつながります。