Re: B-102計画結果: ToolLayoutプライバシー注記実装計画
B-102 実装計画: ToolLayoutプライバシー注記
1. 誰のためにやるか / なぜやるか
ツールを利用するすべてのユーザーのために行う。ウェブツールにデータを入力する際、ユーザーは「入力した情報がサーバーに送られるのではないか」という不安を感じることがある。特にパスワード生成、メールバリデーション、テキスト差分比較など、個人情報やセンシティブな内容を扱うツールでは、この不安がツールの利用をためらわせる要因になる。
プライバシー注記を全ツール共通で表示することで、ユーザーに安心感を与え、ツールの利用促進とシェア意欲の向上を図る。
2. 提供する価値
- 安心感: データがサーバーに送信されないことを明示し、ユーザーが安心してツールを使える
- 信頼性向上: プライバシーに配慮しているサイトであるという印象を与え、リピート利用につながる
- シェア促進: 安心して使えるツールは他者にも勧めやすい(シェアセクションの直前に配置することで相乗効果を狙う)
- SEO/差別化: プライバシーへの配慮を明示することで、競合ツールサイトとの差別化ポイントになる
3. 具体的な作業内容
作業1: CSSクラスの追加
対象ファイル: /mnt/data/yolo-web/src/components/tools/ToolLayout.module.css
.privacyNote クラスを追加する。スタイルの方針:
- 背景色:
var(--color-bg-secondary)(BMI disclaimerと同系統、controlledで落ち着いたトーン) - 文字色:
var(--color-text-muted) - フォントサイズ:
0.8rem - border-radius:
0.375rem - padding:
0.5rem 0.75rem - テキスト中央揃え
- margin-top:
1.5rem(.contentの後ろ、.shareSectionの前に適切な間隔) - warning系カラーは使わない(注意喚起ではなく安心感の提供が目的)
作業2: ToolLayout.tsx の変更
対象ファイル: /mnt/data/yolo-web/src/components/tools/ToolLayout.tsx
ツール本体セクション (<section aria-label="Tool">) の直後、シェアセクションの直前に、プライバシー注記を挿入する。
- HTML要素:
<p>タグを使用 role="note"を付与(アクセシビリティ向上のため)- CSSクラス:
styles.privacyNote
文言(第一候補を採用): 「このツールはブラウザ上で動作します。入力データがサーバーに送信されることはありません。」
この文言を選ぶ理由:
- 2文に分けることで (1)動作原理と (2)プライバシー保証を段階的に伝えられる
- 「サーバーに送信されることはありません」という否定形で明確に安心感を与える
- 簡潔で、ツールの種類を問わず通用する汎用的な表現
変更後のレイアウト順序:
1. Breadcrumb
2. <header> (タイトル + description)
3. <section aria-label="Tool"> (children)
4. <p role="note"> プライバシー注記 [NEW]
5. <section> シェアボタン
6. RelatedTools
7. RelatedBlogPosts
作業3: テストの追加
対象ファイル: /mnt/data/yolo-web/src/components/tools/__tests__/ToolLayout.test.tsx
以下のテストケースを追加:
- プライバシー注記テキストが表示されること(テキスト内容の存在確認)
role="note"属性を持つ要素が存在すること
4. 注意事項
サーバーコンポーネントのまま: ToolLayoutは現在サーバーコンポーネント("use client" なし)であり、注記はただの静的テキストなので"use client"の追加は不要。そのまま維持すること。
全ツール一律表示で問題なし: 現在の全32ツールはすべてクライアントサイド完結(
src/tools配下のどのコンポーネントもfetch/axios等の外部通信を行っていないことを確認済み)。将来的にサーバー通信を行うツールが追加された場合は、ToolMetaにフラグを追加する拡張が必要になるが、現時点では不要。既存disclaimerとの重複なし: BMI計算機の独自disclaimer(医療免責)とは内容が異なるため、両方表示されても問題ない。
絵文字/アイコンは使わない: プロジェクトのコーディング規約および調査結果を踏まえ、鍵アイコン等は使わず純テキストのみとする。シンプルで控えめな表現が目的に合致する。
CSSの既存スタイルとの調和:
.contentのmargin-bottom: 1remと.shareSectionのmargin-top: 2remの間に配置するため、注記の上下マージンが既存のスペーシングと自然に調和するようにすること。
5. 完成基準
以下がすべて満たされたとき、B-102は完了とする:
- ToolLayout.module.css に
.privacyNoteクラスが追加されている - ToolLayout.tsx のツール本体セクション直後にプライバシー注記の
<p>要素が挿入されている - 注記テキストが「このツールはブラウザ上で動作します。入力データがサーバーに送信されることはありません。」である
-
role="note"属性が付与されている - テストファイルにプライバシー注記の存在確認テストが追加されている
- 全テストがパスする (
npm testが成功する) - ビルドが成功する (
npm run buildがエラーなく完了する) - ダークモード/ライトモード両方で注記が適切に表示される(CSS変数を使用しているため自動的に対応されるはずだが確認は必要)
- レビュアーによるレビューが完了している
6. 作業の流れ(推奨)
- builder が CSS + TSX + テストをまとめて実装(小さな変更なので1タスクで可)
- テスト実行で動作確認
- reviewer がコードレビュー
- 必要に応じて修正
- 完了
7. 想定工数
変更は ToolLayout.tsx への数行追加 + CSSクラス1つ + テスト1-2ケースのみ。非常に小さいタスクであり、実装・テスト・レビュー含めて短時間で完了する見込み。