全国オンライン対応受付 平日 9:00-18:00
お問い合わせ

開発記録 / junka制作記 / Vol.11 junka制作記 Vol.1

記事 04

iPad対応:3列グリッドとタブレットUIの設計

習い事教室のタブレットUIを作り始めて、すぐに気づいた。スマートフォン向けのUIをそのまま拡大しても、タブレットで使いやすいものにはならない。

2026-06-07 公開

習い事教室のタブレットUIを作り始めて、すぐに気づいた。スマートフォン向けのUIをそのまま拡大しても、タブレットで使いやすいものにはならない。


使われる場所を想像する

このUIが置かれる場所は、習い事教室の入り口だ。iPadが台の上に固定されている。生徒が教室に入るとき、自分のボタンを1回タップして中に入る。退室するとき、もう1回タップして帰る。

保護者のスマートフォンで自宅から見るシステムではない。10歳の子どもが、稽古バッグを持ちながら、後ろに友達が並んでいる状況で操作するシステムだ。

この場面を想像すると、設計の方針は自ずと決まった。画面を見て迷う余地をゼロにする。1タップで終わる。それ以外の要素は全部削る。


テキスト入力は最初から除外した

最初の案として「生徒コードを手打ちする」方式も考えた。シンプルで実装も楽だ。しかしすぐに捨てた。

「J」「0」「0」「1」を正確に打つには集中が必要だ。入力ミスをしたとき、どこが違うか確認しなければならない。後ろに並んでいる子が待っている。

ボタン一覧から自分のコードを選ぶ方式にした。生徒は自分の名前の横についたボタンを1タップするだけで完了する。間違えようがない。


3列か、4列か

ボタンをグリッドで並べるとき、列数を決める必要があった。iPad Airの画面は縦向きで820×1180pxだ。

1列では縦スクロールが長くなる。4列以上ではボタンが小さくなりすぎて、指で押しにくくなる。2列は中途半端で画面の横幅を持て余す。3列が、視認性とボタンサイズのバランスとして自然だった。

.btn-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  padding: 16px;
}

.student-btn {
  padding: 20px 8px;
  font-size: 1.1rem;
  border-radius: 12px;
  min-height: 80px;
  touch-action: manipulation;
}

min-height: 80pxはタップターゲットのサイズを確保するための下限だ。touch-action: manipulationを指定することで、ダブルタップによる拡大を無効化して1回のタップが確実に反応するようにした。

横向きに置いた教室もあるかもしれないと考え、landscapeのときは4列に切り替えるメディアクエリを入れた。画面幅が増える分、より多くの生徒ボタンを一覧できる。


操作後の3秒

ボタンをタップした後、画面にどう反応させるかも悩んだ。

「入室しました」というメッセージをモーダルで表示して、3秒後に自動で閉じる設計にした。メッセージには時刻と名前を含める。「10:30 田中花子さんが入室しました」という表示で、生徒自身も確認できる。

「閉じる」ボタンを置かなかった。後ろで待っている子が、前の子がボタンを閉じるのを待つ必要はない。3秒経てば自動で元の画面に戻る。この3秒は長さを実際に計測しながら決めた。短すぎると確認できない。長すぎると待たされている感が出る。


画面に余計なものを置かない

管理者向けのボタンや、設定への導線は一切表示しない。「ログアウト」も「ヘルプ」もない。タブレットは教室の入り口に固定されていて、生徒が設定を触る理由はない。

表示されているのは、教室名と「自分のボタンをタップしてください」という一行と、ボタンの一覧だけだ。

教室の切り替えはURLパラメータで行う(?school=JNK&classroom=A)。管理者が設置時に正しいURLをブラウザのお気に入りに登録する。それ以降、URLを意識する人間は誰もいない。


UIを「道具」に徹させる

このUIはシステムの主役ではない。生徒が稽古を始める前後の1秒、存在するだけでいい。

タップして、「田中花子さんが入室しました」という字が見えて、バッグを肩にかけて教室に入る。その短い時間の体験として、違和感のない設計ができたと思っている。


*シンプルシステム株式会社 代表 伊藤勝彦*