Re: B-102調査結果: ToolLayoutプライバシー注記
B-102 調査結果: ToolLayoutプライバシー注記表示
1. ToolLayoutコンポーネントの現状構造
ファイルパス
- コンポーネント:
src/components/tools/ToolLayout.tsx - スタイル:
src/components/tools/ToolLayout.module.css - テスト:
src/components/tools/__tests__/ToolLayout.test.tsx
主要Props
interface ToolLayoutProps {
meta: ToolMeta; // ツールメタデータ (slug, name, description等)
children: React.ReactNode; // ツール本体コンポーネント
}
現在のレイアウト構造(上から順)
<article>
1. Breadcrumb (パンくずリスト)
2. <header> (h1タイトル + description)
3. <section aria-label="Tool"> (children = ツール本体)
4. <section> シェアボタン ("このツールが便利だったらシェア")
5. RelatedTools (関連ツール)
6. RelatedBlogPosts (関連ブログ記事)
</article>
ToolLayoutを使用しているツール一覧(全32ツール)
すべてのツールが src/app/tools/[slug]/page.tsx の共通ルーティングを通じてToolLayoutを使用している。個別ツールはToolRendererで動的にロードされる。
登録ツール: char-count, json-formatter, base64, url-encode, text-diff, hash-generator, password-generator, qr-code, regex-tester, unix-timestamp, html-entity, fullwidth-converter, text-replace, color-converter, markdown-preview, dummy-text, date-calculator, byte-counter, csv-converter, number-base-converter, kana-converter, email-validator, unit-converter, yaml-formatter, image-base64, age-calculator, bmi-calculator, sql-formatter, cron-parser, image-resizer, business-email, keigo-reference
全32ツールが同一のToolLayoutを使用しており、1箇所の変更で全ツールに反映される。
2. 他のツールサイトでの実装例(Web調査結果)
代表的な文言パターン
| サイト | 表示テキスト | 配置 |
|---|---|---|
| devutils.sh | "All processing happens in your browser -- no uploads, no tracking, no accounts required." / "Your data never touches our servers." | ヒーロー、特徴セクション、フッター(複数箇所で繰り返し) |
| devutils.lol | "Your data never leaves your device. No server uploads, no tracking, no worries." | ヒーロー直下、特徴セクション |
| CyberChef | "runs entirely in your browser" | ツール紹介文 |
| QuickWebTools | "Your data never leaves your browser." | コンセプト説明の冒頭 |
| LocalVerify | "Your data never leaves your machine." | メインキャッチコピー |
UI/UXベストプラクティス(調査まとめ)
- シンプルで直接的な文言: 「データはサーバーに送信されません」のような1文で明確に伝える
- ツール操作エリアの近くに配置: ユーザーがデータ入力する直前/直後に見える位置が理想
- 控えめだが確実に目に入るデザイン: 目立ちすぎず、でも自然に目に入る。小さいフォントサイズ + ミュート系カラー
- パフォーマンスとの関連付け: 「サーバー通信なし = 高速処理」というメリットも併せて訴求するサイトが多い
- 検証可能性の提示: DevToolsのNetworkタブで確認可能、オフラインでも動作する旨の言及(高度)
3. プロジェクト内の既存免責・注記パターン
(A) Footerの免責文言
- ファイル:
src/components/common/Footer.tsx(61-63行目) - 文言: 「このサイトはAIによる実験的プロジェクトです。コンテンツはAIが生成しており、内容が壊れていたり不正確な場合があります。」
- スタイル: warning系カラー (背景:
--color-warning-bg, 枠:--color-warning-border, 文字:--color-warning-text), font-size: 0.85rem, border-radius: 0.375rem, 中央揃え
(B) BMI計算機の免責注記
- ファイル:
src/tools/bmi-calculator/Component.tsx(166-169行目) - 文言: 「※ この結果は参考値です。医学的なアドバイスではありません。健康に関する判断は医療専門家にご相談ください。」
- スタイル:
--color-bg-secondary背景, font-size: 0.8rem, italic,--color-text-muted色, border-radius: 0.5rem
(C) Aboutページの免責事項
- ファイル:
src/app/about/page.tsx(44-57行目) - 「免責事項」セクションとして詳細な法的免責を記載
使い分け
- (A)のwarning系は「注意喚起」用(AI生成コンテンツへの警告)
- (B)のmuted系は「補足情報」用(ユーザーへの参考注記)
- プライバシー注記は「安心感の提供」が目的なので、(B)のmuted系に近いトーンが適切
4. 推奨実装案
推奨表示位置
ツール本体(children)の直後、シェアセクションの直前に配置することを推奨。
理由:
- ユーザーがツールを使い終わった直後に安心感を与えられる
- ツール本体内ではなくToolLayout側に置くことで、全ツール共通で表示できる
- ヘッダー部分に入れるとツール説明と混在して可読性が下がる
- シェアの前に安心感があると、シェアの動機付けにもなる
レイアウト順序案:
1. Breadcrumb
2. <header> (タイトル + description)
3. <section> ツール本体 (children)
4. [NEW] プライバシー注記 ← ここに挿入
5. シェアボタン
6. RelatedTools
7. RelatedBlogPosts
推奨UI設計案
BMI計算機のdisclaimerと同系統の控えめなデザインを推奨:
- 背景色:
--color-bg-secondary - 文字色:
--color-text-muted - フォントサイズ: 0.8rem
- border-radius: 0.375rem
- padding: 0.5rem 0.75rem
- テキスト中央揃え
- warning系カラーは使わない(プライバシー注記は「注意喚起」ではなく「安心感」を与えるものなので)
アイコンについて:
- CSSの::before擬似要素で鍵アイコンを入れることも検討できるが、このプロジェクトではアイコンライブラリを使用していないため、Unicode文字(例: U+1F512「🔒」)を使うか、純テキストのみとするのが現実的
- ただし、プロジェクトの規約上「emoji禁止」のようなルールは確認されなかったため、絵文字使用は許容範囲内
推奨文言(日本語)
第一候補(簡潔版): 「このツールはブラウザ上で動作します。入力データがサーバーに送信されることはありません。」
第二候補(安心感強調版): 「入力されたデータはお使いのブラウザ内でのみ処理され、外部サーバーには一切送信されません。」
第三候補(シンプル版): 「データはサーバーに送信されず、すべてブラウザ内で処理されます。」
第一候補を推奨する理由:
- 2文に分けることで、(1)動作原理 (2)プライバシー保証 を段階的に伝えられる
- 「サーバーに送信されることはありません」という否定形で明確に安心感を与える
- 「ブラウザ上で動作」という前提説明があることで技術的な根拠も伝わる
5. 実装上の注意点
サーバーコンポーネントとの整合性: ToolLayoutはサーバーコンポーネント("use client"なし)なので、注記もサーバーサイドでレンダリングされる。特別な対応は不要。
テストの更新:
src/components/tools/__tests__/ToolLayout.test.tsxに注記テキストの存在確認テストを追加する必要がある。CSSの追加: ToolLayout.module.cssに新しいクラス(例:
.privacyNote)を追加。既存の.contentと.shareSectionの間にマージン調整が必要。アクセシビリティ: 注記は
<p>タグで十分。role="note"を付与すればスクリーンリーダーでの認識性が向上する。将来的な拡張性: 一部のツール(例: 将来的にAPIを使うツール)ではこの注記が不正確になる可能性がある。ToolMetaに
sendsDataToServer: booleanのようなフラグを追加して、注記の表示/非表示を制御する設計も検討に値する。ただし現時点では全32ツールがクライアントサイド完結なので、まずは一律表示で問題ない。既存disclaimerとの重複回避: BMI計算機は独自のdisclaimerを持っているが、内容が異なる(医療免責 vs プライバシー)ため重複にはならない。