sol設計(実コード確認済)+Fable UIUX調査照合追補つき・敏モックレビュー待ち。推奨=案A「マイページ内・筆記試験対策βセクション」(ヘッダー非改変・プロト枠撤去・WP-3.5を先取りしない)。2026-07-22
R1βでは、ヘッダー5項目を変更せず、マイページのヒーロー「今日の次の準備」の直後に「筆記試験対策 β」セクションを常設する。
ここに以下を配置する。
/training — 「AI問題演習」を主役として大きく表示/webtext — 「WEBテキスト」を並列表示/ronbun — R1では完全非表示、R2でβ解放/ai-sensei — R1本番では非表示。stagingでのみ静的な器を確認できる状態を維持現在の「検証中の新機能(プロトタイプ)」枠は撤去する。プロトタイプ一覧をβ公開後も残すと、本体UIと新機能が別サービスに見えるためである。
ヘッダー追加、オンボーディングの4項目化、ヒーローのパーソナライズ化は行わない。これらはWP-3.5で作り直す領域である。
| 機能 | 現在地 | R1での扱い |
|---|---|---|
/training |
10問演習、誤答体験、見直し、AI講師まで実装済み | βの主役として常設導線を出す |
/webtext |
83単元索引、単元リーダー、training相互導線あり | trainingと並ぶ学習導線として出す |
| 診断ライト | WP-1.7が未実装 | 「近日公開」で予定を伝え、完成後に有効化 |
/ronbun |
問題集・添削経路は存在 | R1非表示。R2で初めて入口を出す |
/ai-sensei |
4入口、5項目フォーム、送信無効の静的器 | staging確認専用。R1本番非表示 |
| WP-3.5 | 未着手 | 今回は先取りしない |
リリース順の正本も、R1=学習コンテンツ+診断ライト、R2=AI論文、R3=AI先生+統合UIとしている。WBS_PAID_PRODUCTS_20260722.md
現在のヘッダー/モバイル下部ナビは次の5項目で固定されている。
デスクトップとモバイルが同じ配列を参照しているため、項目追加は両方へ影響する。AppShell.tsx
モバイルは5項目を均等配置しており、6項目化するとラベル幅とタップ領域が厳しくなる。AppShell.tsx
したがってR1ではヘッダーを変更しない。
現在の新機能入口は、カウントダウンの後、ヒーローより前にある破線枠「検証中の新機能(プロトタイプ)」である。MyPage.tsx
本体ヒーローには以下がある。
オンボーディングは意図的に3項目へ制限されている。
実装コメントにも「機能が増えても3項目に留める」とあるため、R1新機能をオンボへ追加しない。OnboardingCard.tsx
現在は以下の構造である。
/training: VITE_TRAINING_PROTO/ai-sensei: VITE_TRAINING_PROTO/webtext: VITE_TRAINING_PROTO && VITE_WEBTEXT_READER/ronbun: VITE_RONBUN_PROTO問題は2点ある。
trainingとai-senseiが同じflagに束ねられている
trainingをR1公開すると、ai-senseiも同時に公開される。
webtextの入口とルートで条件が違う
マイページ入口はVITE_WEBTEXT_READERだけを見る一方、ルートはtrainingとの二重条件である。そのため、設定次第では入口が表示されるのに遷移先が404になる。
現在のmembers UIは以下で統一されている。
#2563eb#06b6d41.25rem1.5rem新設置面でも新色・新フォント・新しいカード体系は追加しない。
この案を採用する。
┌──────────────────────┐
│ 公務員すきま予備校 ○ │
└──────────────────────┘
[ 試験日カウントダウン ]
┌──────────────────────┐
│ ○○さん、おかえりなさい │
│ 今日の次の準備 │
│ [受験計画を確認する] │
└──────────────────────┘
筆記試験対策 [β]
┌──────────────────────┐
│ まずはここから │
│ AI問題演習 │
│ 10問ずつ、解いて・間違えて │
│ 見直す │
│ [10問の演習を始める →] │
└──────────────────────┘
┌──────────────────────┐
│ WEBテキスト │
│ 数的処理83単元を例題から学ぶ │
│ [83単元から選ぶ →] │
└──────────────────────┘
┌──────────────────────┐
│ 実力診断 [近日公開] │
│ 20問で今の得意・苦手を確認 │
└──────────────────────┘
[利用状況]
[オンボーディング3項目]
[お知らせ]
[AI選考対策]
[無料模試CTA]
┌──────────────────────┐
│ホーム│計画│模試│履歴│AI対策│
└──────────────────────┘
┌──────────────────────────────────────────────┐
│ Logo ホーム 受験計画 無料模試 履歴 AI選考対策 ○ │
└──────────────────────────────────────────────┘
[カウントダウン]
┌──────────────────────────────────────────────┐
│ ○○さん、おかえりなさい │
│ 今日の次の準備 [受験計画を確認する] │
└──────────────────────────────────────────────┘
筆記試験対策 [β]
┌────────────────────────────┬─────────────────┐
│ まずはここから │ WEBテキスト │
│ AI問題演習 │ 数的処理83単元 │
│ 誤答から見直しまで10問単位 │ │
│ [10問の演習を始める →] │ [単元を選ぶ →] │
└────────────────────────────┴─────────────────┘
┌──────────────────────────────────────────────┐
│ 実力診断 20問で得意・苦手を確認 [近日公開] │
└──────────────────────────────────────────────┘
| 対象 | 表示名 | 説明 | アクション |
|---|---|---|---|
| training | AI問題演習 | 10問ずつ、解いて・間違えて・見直します。迷った問題はAI講師に質問できます。 | 10問の演習を始める |
| webtext | WEBテキスト | 数的処理83単元を、具体例題と解法の順番から学べます。 | 83単元から選ぶ |
| diagnosis | 実力診断 | 20問で今の得意・苦手を確認し、次に取り組む分野を整理します。 | 未公開時「近日公開」/公開後「20問で診断する」 |
本番βでは「プロト」「検証中」の文言をユーザー向けUIから外し、「β」に統一する。
border-blue-100。Link全体をクリック可能にし、内部に別buttonを入れない。articleとし、クリックできそうな見た目にしない。line-height: 1.7以上。prefers-reduced-motionを尊重する。LearningBetaSection.tsx新設: 約120〜180行MyPage.tsx: 約30〜60行変更┌──────────────────────┐
│ ○○さん、おかえりなさい │
│ │
│ 今日の次の準備 │
│ 受験計画を確認しましょう│
│ [受験計画を確認する] │
│ ──────────────────── │
│ 学習も進める │
│ [AI問題演習] [WEBテキスト]│
└──────────────────────┘
MyPage.tsx: 約70〜120行変更| リリース | training | webtext | 診断ライト | ronbun | ai-sensei |
|---|---|---|---|---|---|
| R1公開前 | 表示 | 表示 | 近日公開 | 非表示 | 非表示 |
| R1完成後 | 表示 | 表示 | 表示 | 非表示 | 非表示 |
| R2 | 表示 | 表示 | 表示 | β表示 | 非表示 |
| R3 | 表示 | 表示 | 表示 | 表示 | 本実装後に表示 |
| WP-3.5完了後 | placement v1を廃止し、統合UIへ移行 |
R1のronbunは「coming soon」ではなく非表示を推奨する。診断ライトだけで既に一つの予告枠があり、さらにR2機能まで並べるとβ公開面が未完成品一覧に見えるためである。
永続利用する名前に変更し、PROTOを外す。
VITE_FEATURE_TRAINING
VITE_FEATURE_WEBTEXT
VITE_FEATURE_DIAG_LITE
VITE_FEATURE_RONBUN
VITE_FEATURE_AI_SENSEI
すべて未定義・falseをOFFとし、明示的なtrueだけをONとする。
一つのfeature registryを作り、以下が同じ値を見るようにする。
VITE_*はブラウザへ組み込まれる表示flagであり、APIの停止装置ではない。現在のtraining/webtext/ronbun APIはmembersのルート非表示とは別に存在するため、本番運用ではWorker側にも対応するflagを設ける。
FEATURE_TRAINING_ENABLED
FEATURE_WEBTEXT_ENABLED
FEATURE_DIAG_LITE_ENABLED
FEATURE_RONBUN_ENABLED
FEATURE_AI_SENSEI_ENABLED
OFF時は認証済みユーザーからの直アクセスでも、対象APIをfail-closedで拒否する。
VITE_*だけを切って「機能停止済み」と判断してはいけない。
VITE_FEATURE_DIAG_LITE=falseの間はルートを登録しない。
ただしtrainingまたはwebtextがONなら、設置セクション内にリンクなしの「実力診断・近日公開」を表示する。診断flagがONになった時点で同じカードをリンクへ切り替える。
legacy対応は次のように分割する。
| 現行 | 新flag |
|---|---|
VITE_TRAINING_PROTO |
VITE_FEATURE_TRAINING |
VITE_WEBTEXT_READER |
VITE_FEATURE_WEBTEXT |
VITE_RONBUN_PROTO |
VITE_FEATURE_RONBUN |
| training flagに同居中のai-sensei | VITE_FEATURE_AI_SENSEIへ分離 |
| なし | VITE_FEATURE_DIAG_LITEを新設 |
ai-senseiはtrainingのlegacy fallbackを継承させない。これを継承するとR1で相談室が意図せず公開される。
| 環境 | training | webtext | diag | ronbun | ai-sensei |
|---|---|---|---|---|---|
| staging・全機能レビュー | ON | ON | 開発状態に従う | ON | ON・静的器のみ |
| production R1開始 | ON | ON | OFF | OFF | OFF |
| production R1診断完成後 | ON | ON | ON | OFF | OFF |
| production R2 | ON | ON | ON | ON | OFF |
| production R3 | ON | ON | ON | ON | ON |
Vite flagはビルド時に確定するため、切替には再build・deployが必要である。即時kill switchではない。
R1設置v1では、次の二層で扱う。
利用者へ見せるか
└─ VITE_FEATURE_*(members build)
APIを実行可能にするか
└─ FEATURE_*_ENABLED(Worker runtime)
R1本番では入口もルートもOFFにする。
stagingでVITE_FEATURE_AI_SENSEI=trueの場合のみ、現在の静的器を確認できる。
維持すべき境界は以下である。
現在の静的境界はテストでも固定されている。ai-sensei-route.test.tsx
以下はR1設置v1で変更禁止とする。
特に無料模試をtrainingへ置き換えない。無料模試は現在の受験機能、trainingは反復学習機能であり、利用目的が異なる。
Linkやbuttonを置かない。focus:ring-blue-100系に統一する。h1を増やさず、設置セクションはh2とする。aria-labelledbyでセクションに関連付ける。目的: 表示工事より先に、機能ごとのON/OFFを成立させる。
変更対象:
apps/members/src/lib/feature-flags.tsapps/members/src/App.tsx実装内容:
完了条件:
規模: 0.5〜1セッション
目的: 仮設プロトリンクを、R1βとして自然な常設UIへ置き換える。
変更対象:
apps/members/src/pages/MyPage.tsxapps/members/src/components/LearningBetaSection.tsx新設実装内容:
protoLinksと破線枠を撤去完了条件:
規模: 0.5〜1セッション
目的: R1の本番表示状態を固定し、敏レビュー可能な形にする。
実施内容:
完了条件:
規模: 0.5セッション
最初にTerraへWO-FP1 — feature flag分離・route境界を渡す。
理由は、現在のままMyPageだけを実UI化すると、training公開時にai-senseiも同時公開される境界事故と、webtext入口から404へ進む不整合が残るためである。
WO-FP1が緑になった後、案AをWO-FP2として実装し、WO-FP3のモバイルモックを敏レビューへ出す。
敏の指摘を受けた明示照合。sol設計は実コード・リリース順ベースで起草されており、調査知見との突合は本追補で行った。