Skip to content

[FEATURE]色覚特性対応のための色の切り替え機能 #47

@nishio

Description

@nishio

from Devin.ai

背景

散布図の可視化において、様々な色覚特性を持つユーザーへの配慮が十分ではないという課題があります。現状では:

  • 第一色覚(赤系統の識別が困難)の方にとって、クラスター間の区別が難しい場合がある
  • 第二色覚(緑系統の識別が困難)の方にとって、近似した色相の区別が困難な場合がある
  • 第三色覚(青系統の識別が困難)の方にとって、特定の色の組み合わせが見分けにくい場合がある

これらの課題に対応し、より多くのユーザーが散布図を効果的に利用できるようにする必要があります。

提案内容

色覚特性に配慮した複数のカラーパレットを実装し、ユーザーが自身に適した表示方法を選択できるようにします:

  1. パレットの種類
    • デフォルト:既存の配色
    • カラーユニバーサル:色覚の多様性に配慮した8色セット
    • 第一色覚対応:赤系統の識別を考慮した配色
    • 第二色覚対応:緑系統の識別を考慮した配色
    • 第三色覚対応:青系統の識別を考慮した配色
  2. 実装方針
    • フルスクリーンマップビューにパレット選択用ドロップダウンを追加
    • 選択したパレットをlocalStorageに保存し、次回訪問時も維持
    • 各パレットは明度と彩度の差を活用し、色相だけでなく明るさでも区別可能に

その他

実装内容

1. カラーパレットの定義 (useColorPalettes.ts)

  • 各色覚特性に対応した専用パレットの実装
  • カラーユニバーサルデザインに基づく8色パレットの定義
  • 明度と彩度の差を考慮した配色設計

2. 色生成ロジックの改修 (useClusterColor.ts)

  • パレット選択に応じた動的な色生成
  • クラスター数に応じた最適な色分配
  • 色の一貫性維持の実装

3. UI実装 (DesktopFullscreenTools.tsx)

  • パレット選択用ドロップダウンの追加
  • 選択状態のlocalStorage永続化
  • 日本語表示による使いやすさの向上

4. 状態管理とコンポーネント連携

  • Report.tsx: アプリケーション全体での状態管理
  • DesktopMap.tsx: 選択パレットの散布図への適用
  • パレット切り替え時の適切な再描画処理

技術的な実装詳細

パレット定義例

const colorUniversalPalette = [
  '#000000', // 黒
  '#E69F00', // オレンジ
  '#56B4E9', // 水色
  '#009E73', // 緑
  '#F0E442', // 黄色
  '#0072B2', // 青
  '#D55E00', // 赤
  '#CC79A7'  // ピンク
];

状態管理

// パレット選択状態の永続化
const [selectedPalette, setSelectedPalette] = useState(() => {
  if (typeof window !== 'undefined') {
    return localStorage.getItem('selectedColorPalette') || 'default';
  }
  return 'default';
});

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions