UIXHERO

Radio Button(ラジオボタン)

複数の選択肢から「必ず1つだけ」を選ぶ排他選択UI。CheckboxやSelectとの使い分けと、安全な初期状態の設計。

2026年2月26日
更新: 2026年8月28日
17
by Dengen Yosho(DGYS)

「どちらか1つを選ぶ」ことの視覚的な強制力を保ち、ユーザーが全ての選択肢を一目で比較できる排他選択

この記事を読むと、CheckboxやSelectとの使い分け・初期値設計・グループのA11y要件の判断が自分でできるようになります。


1. UI例(Preview / Live)

実装で見る(GunjoUI)

この部品を、デザインシステム GUNJO の実装で確かめられます。

2. 定義(Definition)

Radio Button(ラジオボタン)とは、複数の選択肢の中からユーザーに「必ず1つだけ(排他的)」を選ばせる入力部品。

近いUIとの違い:Checkboxは「複数選択可」、Selectは「選択肢が多い・省スペース重視」、Toggle Switchは「即時反映の2択オン/オフ」。


3. 使い分け(When to use / When NOT to use)

3.1 When to use

  • 選択肢が 2〜5個程度で、全てを並べて比較させたい場合
  • 選択肢が 相互に排他的(同時に成り立たない)場合
  • 必ずどれかを選択しなければならない(必須回答)場合
  • ユーザーが選択肢の内容を一覧して判断する必要がある場合

3.2 When NOT to use

  • 複数選択を認める場合 → Checkboxを使う
  • 選択肢が6つ以上、または動的に増減する場合 → Selectを使う
  • 即時反映の設定オン/オフ → Toggle Switchを使う
  • 選択を必須にできない場合(未選択を許容したい場合)

3.3 代替UI(Alternatives)


4. 設計判断の核(Decision Principles)

「丸(○)は1グループにつき1つしか埋まらない」というアフォーダンスを死守する。

  • 全選択肢を露出させる: Radioの強みは「比較しながら1つに絞る意思決定アシスト」。隠してはならない
  • 初期値を必ず設ける: 未選択状態はRadioの設計バグ。最も安全・一般的な選択肢をあらかじめCheckedにする
  • 選択肢数で判断: 2〜5個 → Radio、6個以上 → Select、複数可 → Checkbox
  • 未選択に戻す必要があるなら使わない: 仕様で「未選択に戻す」ができないため、その要件にはSelectや独自UIを選ぶ

5. 状態設計(States)

5.1 必須状態

  • Unchecked(未選択): 空の円形。選択肢が存在することを示す
  • Checked(選択済): 円形の中に塗りつぶされた小さな円(ドット)。唯一の選択であることを示す
  • Focus(フォーカス): キーボード選択中。円の周囲に明確なアウトラインを表示する(必須)
  • Disabled(無効): 操作不可。チェックの有無にかかわらずグレーアウトする

5.2 条件付き状態

  • Error(エラー): 必須項目で未選択のまま送信しようとした状態。グループ全体を赤くハイライトし、エラーメッセージを表示する
状態見た目意図
Unchecked空の円選択可能
Checked円+中央ドット選択済・排他確定
Focus円+アウトラインキーボード操作中
Disabledグレーアウト操作不可
Error赤ハイライト+メッセージ必須未選択

6. バリエーション設計(Variants)

  • 縦並び(基本): 各選択肢を1行ずつ縦に並べる。ラベルとの対応が明確で最も読みやすい
  • 横並び(2〜3択のみ): 選択肢が2〜3個かつ短いラベルの場合のみ許容。間に十分な(gap-6以上)が必須
  • カード型Radio: 選択肢全体をカードで囲み、選択状態をborderやbackgroundで表現する(説明文付きの選択に有効)

禁止パターン:横並びで5択以上・ラベルが長い・複数行にわたる横並び


7. パターン集(Good / Bad / How to fix)

7.0 よく崩れる設計パターン

  • Checkboxとの混同: 排他選択にCheckbox(四角)を使う → ユーザーが複数選ぼうとしてエラーになる
  • 未選択放置: 初期値なしで送信ボタンを表示 → フォームバリデーションエラーが直前まで検知できない
  • 隠れた選択肢: 選択肢が多くてスクロールしないと見えない → ユーザーが全選択肢を知らずに決定する

7.1 Bad

  • 「〇 男性 〇 女性 〇 その他」を隙間なく横並び → ラベルがどの丸のペアか一瞬迷う(ゲシュタルト崩壊)
  • 必須項目なのに未選択のまま送信ボタンが押せる

7.2 Good

  • 縦並びでグループ化。最も一般的な選択肢に初期チェックあり。ラベルの文字を押しても反応する。<fieldset> / <legend> でグループが説明されている

7.3 How to fix

  1. 横並びにするなら選択肢間に gap-6 以上の余白を入れる
  2. 最も標準的な選択肢を1つ決め checked 属性を初期付与する
  3. 「未選択に戻す」が必要な要件ならSelectまたは「指定なし」をRadioの1択として追加する

7.4 GUNJO 実装で見る(Bad / Good)

同じ GUNJO の RadioGroup を、グループ/ラベルの崩れた使い方と正しい使い方で


8. ルール(Must / Better)

Must(守らないと壊れる)

Better(品質が跳ねる)


9. アクセシビリティ要件(必須)

Keyboard

  • Tab でグループ内に入り、矢印キー(↑↓←→)で選択肢を移動・同時に値が切り替わる(標準挙動)
  • グループから抜けるには Tab を使用する

Focus

  • アクティブなRadioボタンにフォーカスリングを視認しやすく表示する

Screen Reader

  • Radioボタン群全体を <fieldset> で囲み、<legend> で「何を聞かれているか」を定義する
  • 個々の role="radio" に対して aria-checked とグループサイズが正しく読み上げられる(ネイティブ <input type="radio"> を使えば自動)

Touch / Pointer

  • ボタンとラベルを含む領域全体で最低 44×44px 相当のを確保する

Contrast / Readability

  • 選択済ドットと円のコントラスト比は 3:1以上を確保する

10. 実装メモ(Implementation Notes)

  • React では name 属性で同一グループを束ねる。valuecheckeduseState で管理する
  • <fieldset> + <legend> はスクリーンリーダーでグループ名を読み上げるために必須。省略するとどの質問への回答か不明になる
  • カード型Radioを実装する場合、<label> でカード全体を囲むことでタップ領域を最大化できる
  • Indeterminate 状態はRadioに存在しない(Checkboxと異なる)。グループ選択の概念がない

11. 関連リンク


まとめ

Radio Buttonの設計は「排他選択かどうか」と「選択肢は何個か」で9割決まります。迷ったら 4. 設計判断の核 に戻り、初期値の有無とグループのA11y要件(fieldset / legend)を確認してください。「比較しながら1つに絞る」という体験を守ることがRadioの本質です。

更新のお知らせ

サイトに載せていない実例や、新しい記事のお知らせはこちらで出しています。

読んだ内容を、自分の画面に当てるとき

UIXHEROは、記事を書くほかに、画面の検品・判定、デザインシステムの構築、実装と改善の伴走を受けています。何を頼めばいいか決まっていない段階の相談も、同じ窓口で受けます。

UIXHEROに頼めることを見る

※ 記事の内容についての質問や、書いてほしいテーマの要望も同じ窓口で受けています

記事をシェア

メールでお知らせを受け取る

最終更新: 2026年8月28日

この記事を書いた人

Dengen Yosho(DGYS)

Dengen Yosho(DGYS)

UI/UXデザイナー兼デザインエンジニア デザイン歴25年以上 情報設計〜UIデザイン〜React/TypeScriptによる実装までを一気通貫で担当 大手企業のDXプロジェクトや決済アプリ領域で、デザインリードとして改善と構築を経験 現在はフリーランスとして、プロダクトのUI/UX改善とデザインシステム構築を支援 長年の実務の中で感じてきたのは、 「良いUI」はセンスではなく、再現可能な判断の積み重ねであるということ UIXHEROは、 心理学や行動科学の知見を、現場で使える設計言語に翻訳するための場所 関心領域は「ユーザーの行動が変わるUI」 人の認知・注意・意思決定の構造を理解し、 “なぜそのUIが機能するのか”を言語化することを目指している

あわせて読みたい

この記事に関連する記事をご紹介します

Bar Chart(棒グラフ)

カテゴリごとの量を棒の長さで比べるチャート。ゼロ基線の扱い、並び順、縦横の選び方、しきい値の見せ方という設計判断と、色だけに頼らないアクセシビリティ要件を解説する。

2026年8月27日
18

Donut Chart(ドーナツチャート)

中央をくり抜いた円で構成比を示すチャート。中央に置く値の選び方、円グラフとの使い分け、リングの太さ、凡例の作りという設計判断と、色だけに頼らないアクセシビリティ要件を解説する。

2026年8月27日
17

Gauge Chart(ゲージチャート)

1つの値を範囲の中に置いて示す半円のチャート。範囲の両端に意味があるかという条件、しきい値の帯の設計、色だけで良否を伝えない書き方という設計判断とアクセシビリティ要件を解説する。

2026年8月27日
16

もっと深く知りたいですか?

ここに掲載されていないトピックについても、リクエストがあれば解説記事を追加します。 わかりにくい点や、具体的な事例について知りたいことがあれば教えてください。

リクエストを送る