OKO:見えないユーザーのためのデザイン

10 分で読める 158 語
OKO:見えないユーザーのためのデザイン screenshot

「最高のアクセシビリティデザインは目に見えない——ただ、機能するだけだ。」 — AYESチームの哲学

OKOは、視覚障害者および弱視ユーザーのための横断歩道アシスタントであり、2023年のApple Design Awardで社会的インパクト部門を受賞したアプリだ。iPhoneのカメラとオンデバイス機械学習を使用して歩行者信号の状態(歩行可、歩行不可、カウントダウン)を検出し、触覚フィードバックと空間オーディオを通じて結果を伝える。ユーザーが横断歩道の信号に向かってスマートフォンを向けると、OKOが画面を一切見ることなく、いつ渡っても安全かを知らせてくれる。

これは、最も本質的なデザインだ。OKOには従来の意味でのビジュアルインターフェースがほぼ存在しない。グリッドもカードもカラーパレットもタイポグラフィの階層構造もない。その代わり、デザインの課題は完全に非視覚的コミュニケーションにある——騒がしく予測不能な都市環境の中で、振動パターンと音を通じて安全に関わる重要な情報をいかに伝えるか。OKOは、スクリーンがメディアではない場合に「インターフェース」とは何を意味するのかを、デザイナーに再考させる。


OKOが重要な理由

主な成果: - Apple Design Awardの社会的インパクト部門(2023年)を受賞——Appleプラットフォームにおけるインパクトのあるデザインに対する最高の評価 - 最もインパクトのあるデザインワークは視覚的要素がゼロである可能性を証明した - 二値状態(安全/危険)にニュアンス(信頼度、カウントダウン認識)を加えて伝達する触覚言語を創出した - オンデバイスMLがネットワーク依存なしにリアルタイムでアクセシビリティに貢献できることを実証した - 真の市民的アクセシビリティの課題に取り組んだ:世界の交差点の大多数は音響式歩行者用信号(APS)が設置されていない


主要な学び

  1. 最良のインターフェースはインターフェースがないことかもしれない - OKOの主要なインタラクションは触覚と聴覚であり、画面はセットアップや晴眼者の同伴者のために存在し、コアユーザーのためではない
  2. 触覚フィードバックはデザイン言語である - 異なる振動パターンは二値状態だけでなく、信頼度、遷移、緊急度を伝達する
  3. オーディオファーストのUXには空間的思考が必要 - 視覚障害者は3次元環境を移動するため、音は存在だけでなく方向と距離を伝えなければならない
  4. 市民インフラにはデザインのギャップがある - ほとんどの交差点にアクセシブルな信号がない。OKOは公共デザインがいかに視覚を前提としているかを明らかにする
  5. 極限のためのデザインはすべてを改善する - 視覚障害者のためにデザインする制約が、すべてのアプリを改善するインタラクションパターン(触覚確認、音声フィードバック)を生み出す

コアデザイン原則

1. 非視覚的インタラクションデザイン

OKOのコアインタラクションには視覚的要素がない。ユーザーが横断歩道の信号に向かってスマートフォンを持つと、OKOが振動と音で情報を伝える。

インタラクションモデル:

ユーザーアクション:       システム応答:

スマートフォンを          一定のパルス:「信号を認識しています」
横断歩道信号に向ける      ┌──────────────────────────┐
                         │  ∙ ∙ ∙ ∙ ∙ ∙ ∙ ∙ ∙ ∙   │  穏やかな繰り返しタップ
                         └──────────────────────────┘

信号検出:               歩行可信号:
WALK                     ┌──────────────────────────┐
                         │  ━━━━━━━━━━━━━━━━━━━━━━  │  強く持続する振動
                         │  + 上昇トーン             │  + 上昇音
                         └──────────────────────────┘

信号検出:               歩行不可信号:
DON'T WALK               ┌──────────────────────────┐
                         │  ∙   ∙   ∙   ∙   ∙   ∙  │  ゆっくり間隔をあけたタップ
                         │  + 低いトーン             │  + 下降音
                         └──────────────────────────┘

信号検出:               カウントダウン(残り時間減少):
COUNTDOWN                ┌──────────────────────────┐
                         │  ∙∙ ∙∙ ∙∙ ∙∙ ∙∙ ∙∙ ∙∙   │  加速するダブルタップ
                         │  + 緊急トーン             │  テンポが増加
                         └──────────────────────────┘

重要なデザイン判断: - 歩行可 = 強く持続する振動。 ポジティブな状態は最も明確でなければならない。視覚障害者の安全は「渡っても安全」を正しく解釈できるかどうかにかかっている。曖昧さの余地はない。 - 歩行不可 = 穏やかな間隔のタップ。 ネガティブな状態は落ち着いていて、警告的ではない。警告的な振動はストレスを引き起こす。ユーザーは単に「まだです」と知るだけでよい。 - カウントダウン = 加速するテンポ。 音響式歩行者用信号のビープ音から着想を得て、速度の増加が数を数えなくても「残り時間が少ない」ことを伝える。 - 信号未検出 = 無音。 OKOが信号状態を確信を持って識別できない場合、推測するのではなく何も伝えない。安全に関わるデザインでは、無音(情報なし)は誤った情報よりも安全である。


2. デザイン言語としての触覚フィードバック

OKOの触覚パターンはランダムな振動ではない。文法と語彙を持つ一貫した言語を形成している。

// 触覚パターンの語彙(概念的)

// WALK:強く、持続的で、自信に満ちた
// CHHapticEventのsustained intensityを使用
let walkPattern: [CHHapticEvent] = [
    CHHapticEvent(
        eventType: .hapticContinuous,
        parameters: [
            CHHapticEventParameter(
                parameterID: .hapticIntensity,
                value: 0.9    // 高い強度 = 確信
            ),
            CHHapticEventParameter(
                parameterID: .hapticSharpness,
                value: 0.5    // 中程度のシャープネス = しっかりだが不快でない
            )
        ],
        relativeTime: 0,
        duration: 2.0
    )
]

// DON'T WALK:穏やかで、間隔があり、忍耐強い
let dontWalkPattern: [CHHapticEvent] = stride(
    from: 0, to: 3.0, by: 0.5
).map { time in
    CHHapticEvent(
        eventType: .hapticTransient,
        parameters: [
            CHHapticEventParameter(
                parameterID: .hapticIntensity,
                value: 0.3    // 低い強度 = 緊急でない
            ),
            CHHapticEventParameter(
                parameterID: .hapticSharpness,
                value: 0.2    // 柔らかいシャープネス = 穏やか
            )
        ],
        relativeTime: time
    )
}

// COUNTDOWN:加速するテンポ
func countdownPattern(secondsRemaining: Int) -> [CHHapticEvent] {
    // 残り時間が減るにつれて間隔が短くなる
    // 10秒:500msごとにタップ
    //  5秒:250msごとにタップ
    //  2秒:125msごとにタップ
    let interval = max(0.125, Double(secondsRemaining) / 20.0)
    // ... 減少する間隔でパターンを生成
}

触覚デザインの原則: - 強度 = 確信度。 強い振動はOKOが確信していることを意味する。弱い振動は信頼度が低いことを意味する。これは現実世界の直感に対応している:しっかりとした握手は確信を伝える。 - テンポ = 緊急度。 速いパターンは「今すぐ行動せよ」を意味する。遅いパターンは「待て」を意味する。これは文化を超えて普遍的であり、学習を必要としない。 - 無音 = 不確実性。 OKOが信号状態を判断できないとき、振動しない。これが最も重要なデザイン判断だ:安全に関わるコンテキストでは、フィードバックなしの方が誤ったフィードバックよりも安全である。 - シャープネス = 注意の要求度。 鋭いタップは注意を引く。柔らかいバズはアンビエントな認識を提供する。歩行可信号は中程度のシャープネスを使用する——気づくのに十分な強さで、疲労なく持続できる柔らかさだ。


3. 空間認識を伴うオーディオファーストUX

OKOのオーディオキューは、交通騒音の中でヘッドフォン(またはスマートフォンのスピーカー)を使用しながら3次元の都市環境を移動するユーザーのために設計されている。

オーディオデザインの要件: - 交通騒音を超えて聞こえる必要があるが、ユーザーが聞く必要のある環境音(接近する車両、他の歩行者)をかき消すほど大きくてはならない - 状態変化を即座に伝えなければならない——信号変化とオーディオキューの間の0.5秒の遅延は危険になり得る - スピーカーとヘッドフォンの両方で機能しなければならない(多くの視覚障害者はナビゲーションアプリのために片方のイヤホンを装着している) - 他の一般的なアプリのサウンド(通知チャイム、VoiceOverプロンプト)と混同されてはならない

オーディオの語彙:

歩行可:
  ┌─ 上昇する二音 ────────────────────────┐
  │  ♪ 低→高(長調の音程)                  │
  │  持続時間:400ms                        │
  │  特徴:明るく、クリアで、肯定的          │
  └────────────────────────────────────────┘

歩行不可:
  ┌─ 単一の低い音 ────────────────────────┐
  │  ♪ 持続する低音(短調の音)              │
  │  持続時間:300ms                        │
  │  特徴:落ち着いていて、警告的でない       │
  └────────────────────────────────────────┘

カウントダウン:
  ┌─ リズミカルなクリック音 ──────────────┐
  │  ♪ tick...tick..tick.tick.tickticktick │
  │  持続時間:残り時間に連動               │
  │  特徴:加速し、切迫感がある             │
  └────────────────────────────────────────┘

信号ロスト:
  ┌─ 下降する音 ──────────────────────────┐
  │  ♪ 高→低(穏やかなフェード)            │
  │  持続時間:500ms                       │
  │  特徴:「見失いました、向け直してください」│
  └────────────────────────────────────────┘

重要なデザインの選択: 歩行可信号は上昇音程(楽観的で肯定的)であり、歩行不可信号は低い持続音(落ち着いて待機)である。これらは恣意的ではない。上昇音程は文化を超えてポジティブな結果と結びついている。低い持続音は待つことと結びついている。OKOはこれらの普遍的な連想を活用することで、初めてのユーザーがトレーニングなしに直感的に意味を理解できるようにしている。


取り入れたいデザインパターン

ゼロビジュアルインタラクションのためのデザイン

OKOの非視覚デザインへのアプローチは、アクセシビリティをはるかに超えた応用可能なパターンを生み出す:

触覚による確認:

// あらゆるアプリが触覚による確認を活用できる
// 緑のチェックマークを表示するだけでなく:

// 成功:1回の強いタップ
let successFeedback = UIImpactFeedbackGenerator(style: .heavy)
successFeedback.impactOccurred()

// エラー:3回の素早い軽いタップ
let errorFeedback = UIImpactFeedbackGenerator(style: .light)
for delay in [0, 0.1, 0.2] {
    DispatchQueue.main.asyncAfter(deadline: .now() + delay) {
        errorFeedback.impactOccurred()
    }
}

// 警告:2回の中程度のタップ
let warningFeedback = UIImpactFeedbackGenerator(style: .medium)
for delay in [0, 0.15] {
    DispatchQueue.main.asyncAfter(deadline: .now() + delay) {
        warningFeedback.impactOccurred()
    }
}

より広い教訓: ほとんどのアプリは触覚フィードバックを後回しにしている——あらゆる通知に対して1回のバズだけだ。OKOは、触覚がセマンティックな意味を持てることを実証する:異なる状態に異なるパターン。これにより、視覚障害者だけでなくすべてのユーザーにとってアプリがより使いやすくなる。「支払い完了」の強いタップは「メッセージ受信」の穏やかなタップとは異なる感触であり、ユーザーはこれらのパターンを無意識のうちに学習する。

安全に関わるデザインの原則

OKOは、デザインの誤りが身体的な危害を引き起こしうる環境で動作する。その原則は、安全に隣接するあらゆるインターフェース(医療、自動車、産業用)に適用できる:

  1. 不確実なときは沈黙し、騒がない。 不確実な場合、OKOは誤ったフィードバックではなくフィードバックを提供しないことを選ぶ。安全に関わるコンテキストでは、偽りの確信は認められた不確実性よりも危険である。

  2. ニュアンスより先に二値判断。 一次的なコミュニケーションは二値だ:安全か安全でないか。ニュアンス(カウントダウン、信頼度)はその上に重ねられる。ユーザーの最初の問い(「渡れるか?」)は、追加の詳細の前に明確なはい/いいえで答えられる。

  3. 冗長なチャネル。 OKOは触覚とオーディオの両方を同時に使ってコミュニケーションする。ユーザーが一方のチャネルを逃しても(騒がしい環境がオーディオをかき消す、厚い手袋が触覚を弱める)、もう一方のチャネルがメッセージを届ける。

  4. 学習は不要。 触覚とオーディオのパターンは普遍的な連想(上昇 = ポジティブ、速い = 緊急)を活用するため、初めてのユーザーがチュートリアルなしに理解できる。安全に関わるインターフェースはトレーニングを前提にできない。

安全に関わるデザインの階層構造:

1. 安全か?              → 二値の回答(はい/いいえ)
2. どれくらい確信がある? → フィードバックの強度
3. 残り時間は?           → フィードバックのテンポ
4. 何をすべきか?         → 方向性(渡る/待つ)
5. 何が変わった?         → 遷移キュー

各レイヤーは前のレイヤーの上に構築される。
レイヤー1を確立せずにレイヤー3に飛ぶことはしない。

評価

OKOは、ほとんどのデザイナーが検討しようとも思わない、最も重要なデザインケーススタディだ。なぜなら、デザインは視覚的なものであるというこの分野の根本的な前提に挑戦するからだ。OKOのコアユーザーはアプリアイコンを目にすることも、カラーパレットに感心することも、タイポグラフィを読むこともない。デザインの課題は完全に触覚的、聴覚的、時間的なものだ。それにもかかわらず、要求されるデザインの厳密さはあらゆるビジュアルインターフェースと少なくとも同等である。なぜなら、その賭けは交差点における人の身体的安全だからだ。

OKOが教えてくれる教訓は、最も制約の厳しいユーザーのためにデザインすることが最も普遍的な知見を生むということだ。触覚による確認パターン、オーディオによる状態伝達、ニュアンスより先の二値判断という情報階層、冗長なフィードバックチャネル、そしてフェイルサイレントのエラー処理——これらはアクセシビリティアプリだけでなく、すべてのアプリを改善する原則だ。画面を見ることができない人のためにデザインすると、インターフェースが実際に伝えていることと、単に表示しているだけのことの違いが見えてくる。

学びに最適: ビジュアルデザインと同じ厳密さで非視覚的インタラクションをデザインする方法、そして安全に関わる制約がいかにすべてのソフトウェアを向上させるデザイン原則(フェイルサイレント、冗長チャネル、二値判断優先)を生み出すか。


よくある質問

OKOはインターネット接続なしでどのように横断歩道の信号を検出するのか?

OKOはAppleのCore MLフレームワークを通じたオンデバイス機械学習を使用し、iPhoneのカメラフィードをリアルタイムで分析する。モデルは標準的な歩行者信号の状態(止まれの手、歩行者マーク、カウントダウンタイマー)を認識するようトレーニングされており、デバイスのNeural Engine上で完全に動作する。ネットワーク接続は不要であり、これは携帯電話の電波が弱い地域でも動作しなければならない安全ツールにとって極めて重要だ。

OKOが信号を検出できないときに無音を選ぶのはなぜか?

安全に関わるデザインでは、偽りの確信は認められた不確実性よりも危険だ。OKOが実際には不確かなのに「歩行可」と振動すれば、ユーザーが車道に踏み出す可能性がある。不確実な状態に対して無音を選ぶことで、OKOは「わかりません」を明確に伝え、ユーザーがスマートフォンの位置を調整したり、他の手がかり(近くの歩行者に尋ねる、交通パターンを聴く)を使うよう促す。誤った情報を信頼するのではなく。

OKOの触覚パターンは触覚感度が低下したユーザーにどのように機能するのか?

OKOは触覚フィードバックとオーディオキューを冗長的に組み合わせているため、ユーザーが振動を感じられない場合(神経障害、厚い手袋、スマートフォンケースのため)でも、オーディオチャネルが完全なメッセージを届ける。また、触覚の強度とオーディオの音量を個別に調整することもできる。このデュアルチャネルアプローチにより、一方のフィードバック手段を失っても安全性が損なわれないことが保証される。

アクセシビリティ以外のアプリはOKOのデザインから何を学べるか?

OKOは、触覚フィードバックが「何かが起きた」を超えたセマンティックな意味を持てることを実証している。異なる状態に対する異なる振動パターン(成功、エラー、警告、進行中)は、あらゆるアプリをより使いやすくする無意識の語彙を生み出す。さらに、OKOのフェイルサイレント原則(フィードバックなしの方が誤ったフィードバックよりも良い)、二値判断優先の情報階層、冗長なフィードバックチャネルは、ユーザーの信頼が重要なあらゆるインターフェースに適用できる。

OKOがApple Design Awardのインクルーシビティ部門を受賞したのはなぜか?

OKOは真の市民インフラのギャップに取り組んだ:世界の交差点の大多数にはアクセシブルな歩行者用信号が設置されていない。インフラの変更を提唱する(数十年かかるプロセス)のではなく、OKOはiPhoneの既存のカメラと触覚ハードウェアを使用して即座のソリューションを創出した。この賞は、技術的な成果と、デザイン業界にとって通常は「見えない」ユーザーに貢献するテクノロジーを構築するというデザイン哲学の両方を評価したものだ。


リソース

  • App Store: OKO - Crosswalk
  • 開発者: AYES(アクセシビリティに特化した開発スタジオ)
  • Apple Design Awards 2024: インクルーシビティ部門受賞
  • Core ML: リアルタイムの信号検出を可能にするAppleのオンデバイス機械学習フレームワーク