2026-08-25 呼び名はInitiationの冒頭で任意として聞く(Issue #72)
背景
members.display_name は、保存する経路がないのに表示する経路だけがある状態だった(Issue #72)。DBの列・Repository契約・Supabase実装・/admin の表示まで揃っているのに updateDisplayName の呼び出し元が0件で、値は常に null。結果として AdminApplicationRow.tsx の名前表示は一度も描画されておらず、運営は申請一覧をウォレットアドレスだけで見ている。
#72 は「A. 名前を受け取る場所を作る」か「B. 使わないと決めて契約・実装・表示から外す」かを決める Issue で、A の場合の置き場所として Initiation の最初 / /setup のサインイン直後 / /apply の申請フォームの3つを挙げていた。
置き場所は Issue #46(Initiationの質問・クエスト内容とゲーム体験)の判断待ちだった。#46 で出た体験案のうち、A案(NIGHT PASSAGE)は「ここでは なんと よばれたい?」を最初のステップに置き、B案(COMMUNITY FIELD / 8画面)も 00 ARRIVAL で「まず、あなたを何とお呼びしたらいいですか?」を聞いている。どちらも冒頭で、どちらも空欄のまま進める形で一致した。#46 のコメントで置き場所と任意性についてラフコンセンサスが取れたと判断し、結論を記録する。
決定
1. #72 の選択肢A(名前を受け取る場所を作る)を採る
members.display_name、MemberRepository.updateDisplayName、/admin の名前表示は残す。契約・実装・表示から外す案(B)は採らない。
2. 聞く場所は Initiation の冒頭にする
/setup のサインイン直後や /apply の申請フォームではなく、Initiation の最初の画面で聞く。
3. 任意にする。空欄のまま先へ進める
呼び名を入力しなくても Initiation は進み、完走にも申請にも影響しない。
呼び名は members.display_name に保存し、initiation_progress には行を残さない。isInitiationComplete() は initiationSteps に定義されたステップの行が揃っているかだけを見るため、この保存先の選択によって「任意」は実装上そのまま成立する。完走判定に特別扱いを足す必要はない。
理由
- 冒頭に置くのは、最初に受け取るものが名前であること自体を迎える合図にするため。 #46 で挙がった「着いたときに迎えられること」を、入口の側にも置く。
/setupや/applyに置かない。/setupはウォレット接続・署名・チェーン切り替えの画面で、技術セットアップの列に呼び名を混ぜると、名前を聞く行為が手続きの一部に見える。/applyは申請の直前で、そこで初めて名前を聞くと審査のための情報に見える。#46 では運営が回答を読む目的を「歓迎のために読む」と置いており、置き場所もその読み方に揃える。- 任意にするのは、通過儀礼としての重さと、答える/答えないの自由を分けるため。 #46 で合意した「通ることは必須、答えることは任意」を、最初の項目にも適用する。本名を出したくない人、まだ呼ばれ方を決めていない人が、入口の1問目で止まらないようにする。
- 運営にとっての価値は、名前が入った申請だけでも上がる。 全員分が埋まらなくても、
/adminがアドレス以外の手がかりを持てる状態に変わる。任意にしたことで得られる情報が減る度合いより、入口で止まる人を作らない価値を採る。
影響
- 保存経路は実装済み。
app/members/actions.tsのsaveDisplayName()(#86、単体5件・統合2件のテストつき)が main にある。この決定で追加が必要なのは、Initiation 冒頭の画面から呼ぶことだけ。 - 画面の実装は別Issueへ分ける。 Initiation を1画面ずつ進む形にするかどうかは #46 でまだ決まっていないため、この決定は「冒頭・任意」までを確定し、画面そのものは #46 の体験設計が決まってから実装する。
- 既存メンバーは
display_nameがnullのまま残る。後から名乗り直す導線を用意するかは、この決定に含めない。 - Issue #72 は、画面の実装Issueを切り出した時点でcloseできる。
含めないもの
- 呼び名とウォレットアドレスの紐付けを、本人以外に見せるかどうか(#36 プライバシー方針)。この決定は、現状どおり運営(
ADMIN_ADDRESSES)が/adminで見られる範囲を変えない。他のメンバーへ見せるかは #36 で決める。 - 呼び名の文字数上限、使える文字、重複を許すかどうか。画面の実装Issueで扱う。
- Initiation を1画面ずつ進む形にするか、質問の文面をどうするか(#46)。
- Discord名の受け取り(#46 で議論中。呼び名とは別の項目)。