ハコヅミを作る #34:公開までの道のりを引き直す(ベータ版、テスタ、お問い合わせの窓口)

前回(#33)までで、使い勝手の改善が一通り済みました。今回は、コードを書かない回です。

一般に公開するまでに、あと何が要るか。それを全部洗い出して、Issue にしました。途中で、公開のしかたそのものも、考え直しています。


公開までに要るもの

#27で、ステップ2 を「一般に公開するための準備」と決めました。ログイン、管理者、上限、アカウントの画面、エクスポート、退会は、もう本番に出ています。残りを、順に Issue にしていきました。

Issue 中身
セキュリティの見直し 外から悪用されうるところを点検して、直す
利用規約・プライバシーポリシー 何を預かり、どう扱うかを、書いて示す
ログインしていない人向けのトップページ 何ができるサービスかを、伝える
初めての人への案内 データが空のときに、何から始めるかを出す
公開 守りを外して、誰でも使えるようにする

どれも、「自分1人で使っているうちは、要らなかったもの」です。


セキュリティの見直しで、気づいたこと

Issue の下書きを作るとき、Claude Code は、今のコードを読んで、気になる点を挙げてくれます。今回、いちばん驚いたのは、これでした。

今は、セキュリティのためのヘッダーを1つも付けていません。

ほかのサイトの枠の中に表示させない、読み込めるものを自分のサイトに絞る、といった指定です。今は、Cloudflare Access(ログインした人だけが開ける仕組み)の後ろにあるので、問題になっていません。公開の前には、必ず要ります。

ほかにも、次のような点が挙がりました。

  • URL から画像を取り込む機能(#12):サーバーが、利用者の貼った URL を読みに行く。回数の制限がないので、踏み台にされうる
  • 送信の回数の制限:上限(#29)で件数は止まるが、「登録して消す」をくり返すことはできる
  • 他人のデータを読めないことの、総点検:どの入口でも、ほかの人の id を指定して読めないことを、もう一度確かめる

作ったときは、それぞれ守りを入れています。ただ、「自分と、招いた人しか使わない」前提での守りです。前提が変わるので、見直します。


お問い合わせの窓口は、自分のサイトのフォームを使う

利用規約とプライバシーポリシーには、連絡先が要ります。ハコヅミの中に、お問い合わせのフォームを作るつもりでいました。

下書きを見ながら、ふと思いました。このブログ(じるラボのサイト)には、もうお問い合わせのフォームがあります。そこに、サービスの選択欄を足して、使えばよいのでは。

Claude Code に相談すると、フォームの作りを確かめたうえで、勧めてくれました。よい点が、思っていたより多くありました。

  • 窓口が1つで済む。2つ目のサービスを作っても、選択欄に1つ足すだけ
  • ハコヅミに、メールを送る仕組みを作らなくて済む
  • 利用を止められた人も、使える。#29で作った「凍結」は、ハコヅミのどの画面も開けなくなります。問い合わせ先がハコヅミの外にあるのは、むしろ都合がよい
  • 個人のメールアドレスを、規約に書かなくて済む

気をつける点も、挙げてもらいました。

  • フォームは別のサイトなので、誰がログインしているかは分からない。「ログインに使っている Google アカウントのメールアドレスを入れてください」と、案内を出す
  • リンクから開いたときに、ハコヅミが選ばれた状態にする。メールアドレスなどは、URL には付けない
  • フォームで預かる情報は、じるラボのサイトのプライバシーポリシーの範囲になる。ハコヅミのポリシーから、そちらへリンクする

「サービスの中に、全部そろえる」と考えがちですが、サービスの外に置いたほうがよいものもあります。


公開は、10 人のベータ版から

公開の Issue を作ったあとで、前に考えていた案を思い出しました。最初は 10 人ほどのテスタに使ってもらい、直してから、一般に公開する、という案です。

実は、#27のとき、「招待した人だけのベータは、挟まない」と決めていました。当時の理由は、Cloudflare Access で招待しても、利用者ごとにデータを分けられないことでした。今は、ログインの仕組みがあります。理由が、なくなっています。

Claude Code の答えは、「やる価値がある。しかも、ほとんど手間を足さずにできる」でした。

1人では、確かめられないところがある

勧める理由の1つ目が、これです。

「初めての人が、何から始めればよいか分かるか」は、自分では確かめられません。自分は、もう使い方を知っています。紹介の文が伝わるかどうかも、同じです。10 人に触ってもらえば、つまずく場所がはっきりします。

Google の「テスト中」を、そのまま招待制に使う

今の本番は、2つの関門で守られています。

  1. Cloudflare Access:自分と、招いた人しか、URL を開けない
  2. Google のログイン:設定が「テスト中」で、登録したメールアドレスの人しか、ログインできない

ベータでは、1だけを外します。2 の「テスト中」が、そのまま招待制の関門になります。

今 ベータ 一般公開
Cloudflare Access あり 外す 外したまま
Google のログイン テスト中 テスト中のまま 本番にする

アプリの中に、招待の仕組みを作る必要がありません。公開の Issue を、「ベータを始める」と「一般に公開する」の2つに分けました。

テスタを募る順番

もう1つ、相談して気づいたことがあります。テスタに声をかけるとき、「どんなサービスか」を見せる必要があります。紹介のトップページを、そのまま見せればよい、と考えていました。

ところが、紹介のページは、Access を外すまで、ほかの人には見えません。順番が逆でした。

  1. Access を外す(紹介のページは誰でも開ける。ログインは、まだ自分しかできない)
  2. 紹介のページを見せて、テスタを募る
  3. 応募してきた人を、登録する

紹介のページには、画面の絵を入れること、「今はベータ版で、テスタを募っています」と書くことも、決めました。作り手の話(なぜ作ったか)は、紹介のページには書かず、このブログに書きます。


テスタの人数と、お礼

人数は、10 人ほどを目安にしました。ただし、声をかけるのは 15 人ほどです。応募しても、ギアを登録して、プランを作って、キャンプに行く、までたどり着かない人が、半分くらいは出る見込みだからです。

人数より、顔ぶれが大事だ、という話もありました。ソロの人とファミリーの人、iPhone の人と Android の人、今は別の道具でリストを作っている人。そして、冬もキャンプに行く人。持ち物チェックは、実際にキャンプに行かないと試せません。

お礼は、次の2つにしました。

  • 有料プランを始めるとき、テスタは1年間無料にする
  • 意見を、優先して取り入れる

ギフト券などは、渡しません。お礼を目当てに、キャンプをしない人が応募するのを、避けるためです。「有料プランが無料」は、使い続けたい人にとってだけ、価値があります。

約束のしかたにも、気をつけます。

  • 「ずっと無料」とは、約束しない。長く続けるサービスなので、あとで重荷になる。期間を、はっきり書く
  • 有料プランを始めない場合もある。「始めるときは」という約束にする
  • 誰に約束したかを、控えておく

引き直した道のり

公開までの順番は、こうなりました。

  1. セキュリティの見直し
  2. 利用規約・プライバシーポリシー(お問い合わせは、じるラボのサイトのフォームへ)
  3. ログインしていない人向けのトップページ(テスタ募集の紹介にもなる)
  4. 初めての人への案内
  5. ベータ版を始める(Access を外して、テスタを募る)
  6. ベータで届いた意見を直す
  7. 一般に公開する

相手が 10 人でも、人のデータを預かります。1 と 2 は、ベータの前に済ませます。3 と 4 は、まさに試してもらいたいものなので、これも先です。


おわりに

  • 「自分しか使わない」前提で作った守りは、公開の前に見直す
  • サービスの外に置いたほうがよいものもある。お問い合わせの窓口は、その1つだった
  • 一度「やらない」と決めたことも、理由がなくなれば、やってよい
  • 招待制は、今ある仕組み(Google の「テスト中」)で足りないかを、先に考える
  • 1人では確かめられないことは、人に頼む。初めての人の目は、自分にはもう無い
  • お礼は、「使い続けたい人」にだけ価値があるものにする

次回からは、公開に向けた実装に戻ります。まずは、セキュリティの見直しです。

← トップページに戻る