背景
クラス機能(#442, #443)の基本実装が完了し、先生・生徒の E2E フローが動作する状態になった。4/15 のリリースに向けて、日本の中学校の先生が説明なしでも使える状態にするため、UI/UX をブラッシュアップする。
プログルの生徒管理機能(Google Classroom 連携)を参考に、現在の Smalruby classroom 機能との差分を分析し、改善案をまとめた。
プログルの生徒管理機能の特徴(参考)
プログル情報 のクラス管理機能を分析した結果:
- 役割選択なし — URL でアクセスした時点で先生用の画面。生徒は別の導線
- 全画面レイアウト — クラス管理はモーダルではなく、ナビゲーションバー付きの全画面
- Google アカウント前提 — 先生は Google アカウントでログイン。ソーシャルログインが目立つ位置に配置
- Google Classroom 連携が主導線 — 「Google Classroom のクラスで登録」ボタンが目立つ位置。インポート後にクラス一覧に即反映
- 生徒名簿は取得しない — UI 上は生徒名の欄があるように見えるが、個人情報保護の観点から Google Classroom の生徒氏名・メールアドレスはインポートしない(入力不可)。サーバーに生徒の個人情報は保持しない設計。Smalruby でも同様に、出席番号(席番号)のみで生徒を識別する現在の方針を維持する
- クラス一覧がテーブル形式 — カードではなくテーブル。情報密度が高い
Smalruby の現在の問題点
| 問題 |
説明 |
| 役割選択が不要 |
先生か生徒かをユーザーに毎回選ばせるのは認知負荷が高い。先生はURLパラメータで判別すべき |
| モーダルが狭い |
500px のモーダルでは先生の管理作業(座席グリッド確認、提出レビュー等)が窮屈 |
| 先生/生徒の導線が混在 |
同じモーダル内で先生フローと生徒フローが遷移するのは設計上複雑 |
| Google ログインまでの手順が多い |
役割選択 → ログイン画面 → ボタンクリック と3ステップ必要 |
現在の UI の詳細は docs/classroom/ui-ux.md を参照。
改善提案
1. URL パラメータによるモード切り替え
# 先生モード(全画面クラス管理)
https://smalruby.app?features=classroom&classrole=teacher
# 生徒モード(デフォルト)— 参加コード入力からスタート
https://smalruby.app?features=classroom
https://smalruby.app?features=classroom&classcode=ABC123
classrole=teacher がある → メニューバーに 「クラス管理」と「クラス」の2つ が表示される
- 「クラス管理」→ 全画面管理画面(先生用)
- 「クラス」→ 生徒用モーダル(参加コード入力 or ステータス)— 先生が生徒として試しに操作したいときに使う
classrole なし(デフォルト)→ メニューバーに「クラス」のみが表示される。クリックで生徒用モーダル(参加コード入力 or ステータス)
- 役割選択フェーズ (
role-select) は廃止
2. 先生モード: 全画面クラス管理
拡張機能選択モーダルやスプライト選択モーダルと同じ、全画面オーバーレイで実装。
┌─────────────────────────────────────────────────────────┐
│ [×] クラス管理 │
├──────────┬──────────────────────────────────────────────┤
│ │ │
│ クラス一覧│ ← 選択中のクラスの詳細 │
│ │ │
│ ┌──────┐ │ クラス名: 第3回 チャットアプリを作ろう │
│ │Class1│ │ 参加コード: 3cexm5 [コピー] [拡大表示] │
│ ├──────┤ │ 有効期限: 2026/4/6 │
│ │Class2│ │ │
│ │ (選択)│ │ ┌─座席グリッド──────────────────────┐ │
│ ├──────┤ │ │ 1 2 3 4 [✓5] 6 7 8 9 10 │ │
│ │Class3│ │ │11 12 13 14 15 16 17 18 19 20 │ │
│ └──────┘ │ │... │ │
│ │ └──────────────────────────────────┘ │
│ [+ 作成] │ │
│ [GC取込] │ ← 選択したメンバーの詳細パネル │
│ │ 出席番号05 | 着席中 | ✓提出済み │
│ [ログ │ [サムネイル] │
│ アウト] │ [スモウルビーで開く] [返却する] │
│ │ │
└──────────┴──────────────────────────────────────────────┘
左サイドバー:
- クラス一覧(リスト形式)
- 「クラスを作る」ボタン
- 「Google Classroom からインポート」ボタン
- 「ログアウト」ボタン
メインエリア(右):
- クラス選択時: クラス詳細(参加コード、座席グリッド、メンバー詳細)
- クラス未選択時: 「クラスを選択してください」
メリット:
- 広い画面で座席グリッドとメンバー詳細を同時に表示可能
- プログルと同じ全画面レイアウトで先生が迷わない
- サイドバーでクラス間の切り替えが1クリック
3. 生徒モード: シンプルなモーダル維持
生徒フローは現在のモーダル形式を維持しますが、役割選択フェーズを廃止して直接フローに入ります。
# 未参加の生徒
クラスボタンクリック → 参加コード入力(直接)→ 席番号選択 → 参加完了
# 参加済みの生徒
クラスボタンクリック → ステータス画面(直接)
4. フェーズ変更まとめ
| 現在のフェーズ |
変更後 |
role-select |
廃止 — URL パラメータで判定 |
teacher-login |
先生全画面の初期表示に統合(未ログインなら自動表示) |
teacher-dashboard |
全画面の左サイドバーに統合 |
teacher-create |
全画面内のインラインフォーム or サブパネル |
teacher-detail |
全画面のメインエリア(常時表示) |
student-join |
モーダル初期画面(役割選択なし、直接表示) |
student-seat |
そのまま |
student-joined |
そのまま |
student-status |
そのまま |
submit-confirm |
そのまま |
5. 追加改善案
| 改善 |
説明 |
| 自動 Google ログイン |
classrole=teacher でアクセスし、未ログインの場合は Google ログインボタンを全画面に大きく表示。プログルと同様に迷わない導線 |
| クラス一覧のテーブル表示 |
プログルのようにテーブル形式も検討。ただしクラス数が少ない(〜10件)ならリスト形式で十分 |
| 招待リンクの改善 |
先生用 URL に classrole=teacher が含まれるリンクと、生徒用の classcode=XXXXXX リンクを明確に分離 |
6. 操作チュートリアル(ソフトウェア内ガイド)
マニュアルを読んでもらうことは現実的に難しい。プログルでもマニュアル(PDF 9ページ)を用意しているが、それは先生がつまずいた箇所を説明するもの = つまずきが発生している証拠でもある。
スモウルビーでは、マニュアルの代わりにソフトウェア自体がチュートリアルを表示して解消する。 人の手が足りない分を、ソフトウェアのチュートリアルで補う方針。
設計原則:
- 操作説明画面は実際の操作の直前に表示する(事前にマニュアルを読ませるのではなく)
- 一度表示したチュートリアルは localStorage に記録し、2回目以降は自動的に非表示にする(「スキップ」ボタンや「次回から表示しない」チェックボックスは設けない。ユーザーに余計な判断や操作をさせない)
- もう一度見たい場合は、ブラウザのシークレットモード(プライベートウィンドウ)で操作すれば初回表示に戻る
- チュートリアル画面には実際の画面のスクリーンショットを含め、視覚的に理解させる
チュートリアル① 初回 Google ログイン — 正しいアカウントを選択する
つまずきポイント(PDF p2-3): 先生が Google ログイン画面で、個人の Google アカウントを選んでしまい、学校(Google Workspace for Education)のアカウントでログインできない。
チュートリアル内容:
┌─────────────────────────────────────────────┐
│ │
│ Google でログイン │
│ │
│ このあと Google のログイン画面が │
│ 表示されます。 │
│ │
│ ⚠ 学校の Google アカウントを │
│ 選んでください │
│ │
│ ┌───────────────────────────────────────┐ │
│ │ [実際のアカウント選択画面の │ │
│ │ スクリーンショット] │ │
│ │ │ │
│ │ ✗ 個人アカウント (xxx@gmail.com) │ │
│ │ ✓ 学校アカウント (xxx@ed.jp) ← これ │ │
│ └───────────────────────────────────────┘ │
│ │
│ [ログイン画面に進む →] │
│ │
└─────────────────────────────────────────────┘
チュートリアル② 初回 Google Classroom 認証 — 2つのチェックボックス
つまずきポイント(PDF p6): Google Classroom のクラスを利用するための認証画面で、2つのチェックボックスにチェックを入れる必要があるが、チェックを入れずに「続行」を押してしまう。結果、クラスのインポートに失敗する。
チュートリアル内容:
┌─────────────────────────────────────────────┐
│ │
│ Google Classroom の認証について │
│ │
│ このあと Google の認証画面が表示されます。 │
│ 以下の 2 つに必ずチェックを入れてください: │
│ │
│ ┌───────────────────────────────────────┐ │
│ │ [実際の Google 認証画面の │ │
│ │ スクリーンショット] │ │
│ │ │ │
│ │ ☑ Google Classroom のクラスの │ │
│ │ 閲覧 ← チェックを入れる │ │
│ │ ☑ Google Classroom のクラスの │ │
│ │ 生徒の閲覧 ← チェックを入れる │ │
│ └───────────────────────────────────────┘ │
│ │
│ ⚠ チェックを入れないとクラスの │
│ インポートができません │
│ │
│ [認証画面に進む →] │
│ │
└─────────────────────────────────────────────┘
チュートリアル③ 初回クラス作成 — 課題ごとにクラスを作る運用
つまずきポイント(PDF p5): プログルでは「クラスを登録する」→「Google Classroom のクラスで登録」という手順を説明している。先生は「クラス」という概念が「学級」なのか「授業の回」なのか混乱する。
チュートリアル内容:
┌─────────────────────────────────────────────┐
│ │
│ クラスの作り方 │
│ │
│ スモウルビーでは、課題(授業の回)ごとに │
│ クラスを作ります。 │
│ │
│ 例: │
│ ┌───────────────────────────────────────┐ │
│ │ ✓ 第1回 ネコを歩かせよう │ │
│ │ ✓ 第2回 じゃんけんゲームを作ろう │ │
│ │ ✓ 第3回 チャットアプリを作ろう │ │
│ └───────────────────────────────────────┘ │
│ │
│ 生徒は毎回、参加コードを入力して │
│ クラスに参加します。 │
│ │
│ [わかりました →] │
│ │
└─────────────────────────────────────────────┘
チュートリアル④ Google Classroom からのインポート — コースの選択
つまずきポイント(PDF p7): Google Classroom のコース一覧が表示されたとき、どのコースを選べばよいか分からない。プログルでは「インポートしたいクラスをクリック」と説明しているが、複数コースがあると迷う。
チュートリアル内容:
┌─────────────────────────────────────────────┐
│ │
│ Google Classroom からインポート │
│ │
│ Google Classroom のクラスが表示されます。 │
│ この授業で使いたいクラスを選んでください。 │
│ │
│ ┌───────────────────────────────────────┐ │
│ │ 1年A組 情報Ⅰ (30人) ← 例 │ │
│ │ 1年B組 情報Ⅰ (32人) │ │
│ │ 2年C組 技術 (28人) │ │
│ └───────────────────────────────────────┘ │
│ │
│ 選択すると、クラス名と人数が自動で │
│ 入力されます。 │
│ │
│ [わかりました →] │
│ │
└─────────────────────────────────────────────┘
チュートリアル⑤ 2回目以降のログイン
つまずきポイント(PDF p4): プログルでは「2回目以降のログインの際には」として再ログイン手順を別途説明している。先生が次の授業でアクセスしたとき、ログイン方法を忘れる。
スモウルビーでの対策: classrole=teacher の URL をブックマークさせる。全画面管理画面の初回表示時に「このページをブックマークしてください」とガイドを表示する。
チュートリアル⑥ 生徒データの再インポート(転入・クラス替え対応)
つまずきポイント(PDF p8): プログルでは、新たな生徒が加入した場合に「Google Classroom のクラスで登録」を再度行い、チェックボックス入れ直しとインポートが必要と説明している。
スモウルビーでの対策: スモウルビーは席番号ベースのため、人数変更(増減)はクラス詳細画面から直接行える。転入生は空いている席番号に参加するだけでよい。チュートリアルは不要だが、「人数を変更する」ボタンの存在を先生に気づかせる UI ヒント(ツールチップ等)を検討する。
参考資料
docs/classroom/ui-ux.md — 現在の UI パーツと data-testid の完全な一覧
docs/classroom/architecture.md — システム構成・API ルート
docs/classroom/user-stories.md — ユーザーストーリー
- プログル情報: https://high.proguru.jp/
背景
クラス機能(#442, #443)の基本実装が完了し、先生・生徒の E2E フローが動作する状態になった。4/15 のリリースに向けて、日本の中学校の先生が説明なしでも使える状態にするため、UI/UX をブラッシュアップする。
プログルの生徒管理機能(Google Classroom 連携)を参考に、現在の Smalruby classroom 機能との差分を分析し、改善案をまとめた。
プログルの生徒管理機能の特徴(参考)
プログル情報 のクラス管理機能を分析した結果:
Smalruby の現在の問題点
現在の UI の詳細は
docs/classroom/ui-ux.mdを参照。改善提案
1. URL パラメータによるモード切り替え
classrole=teacherがある → メニューバーに 「クラス管理」と「クラス」の2つ が表示されるclassroleなし(デフォルト)→ メニューバーに「クラス」のみが表示される。クリックで生徒用モーダル(参加コード入力 or ステータス)role-select) は廃止2. 先生モード: 全画面クラス管理
拡張機能選択モーダルやスプライト選択モーダルと同じ、全画面オーバーレイで実装。
左サイドバー:
メインエリア(右):
メリット:
3. 生徒モード: シンプルなモーダル維持
生徒フローは現在のモーダル形式を維持しますが、役割選択フェーズを廃止して直接フローに入ります。
4. フェーズ変更まとめ
role-selectteacher-loginteacher-dashboardteacher-createteacher-detailstudent-joinstudent-seatstudent-joinedstudent-statussubmit-confirm5. 追加改善案
classrole=teacherでアクセスし、未ログインの場合は Google ログインボタンを全画面に大きく表示。プログルと同様に迷わない導線classrole=teacherが含まれるリンクと、生徒用のclasscode=XXXXXXリンクを明確に分離6. 操作チュートリアル(ソフトウェア内ガイド)
マニュアルを読んでもらうことは現実的に難しい。プログルでもマニュアル(PDF 9ページ)を用意しているが、それは先生がつまずいた箇所を説明するもの = つまずきが発生している証拠でもある。
スモウルビーでは、マニュアルの代わりにソフトウェア自体がチュートリアルを表示して解消する。 人の手が足りない分を、ソフトウェアのチュートリアルで補う方針。
設計原則:
チュートリアル① 初回 Google ログイン — 正しいアカウントを選択する
つまずきポイント(PDF p2-3): 先生が Google ログイン画面で、個人の Google アカウントを選んでしまい、学校(Google Workspace for Education)のアカウントでログインできない。
チュートリアル内容:
チュートリアル② 初回 Google Classroom 認証 — 2つのチェックボックス
つまずきポイント(PDF p6): Google Classroom のクラスを利用するための認証画面で、2つのチェックボックスにチェックを入れる必要があるが、チェックを入れずに「続行」を押してしまう。結果、クラスのインポートに失敗する。
チュートリアル内容:
チュートリアル③ 初回クラス作成 — 課題ごとにクラスを作る運用
つまずきポイント(PDF p5): プログルでは「クラスを登録する」→「Google Classroom のクラスで登録」という手順を説明している。先生は「クラス」という概念が「学級」なのか「授業の回」なのか混乱する。
チュートリアル内容:
チュートリアル④ Google Classroom からのインポート — コースの選択
つまずきポイント(PDF p7): Google Classroom のコース一覧が表示されたとき、どのコースを選べばよいか分からない。プログルでは「インポートしたいクラスをクリック」と説明しているが、複数コースがあると迷う。
チュートリアル内容:
チュートリアル⑤ 2回目以降のログイン
つまずきポイント(PDF p4): プログルでは「2回目以降のログインの際には」として再ログイン手順を別途説明している。先生が次の授業でアクセスしたとき、ログイン方法を忘れる。
スモウルビーでの対策:
classrole=teacherの URL をブックマークさせる。全画面管理画面の初回表示時に「このページをブックマークしてください」とガイドを表示する。チュートリアル⑥ 生徒データの再インポート(転入・クラス替え対応)
つまずきポイント(PDF p8): プログルでは、新たな生徒が加入した場合に「Google Classroom のクラスで登録」を再度行い、チェックボックス入れ直しとインポートが必要と説明している。
スモウルビーでの対策: スモウルビーは席番号ベースのため、人数変更(増減)はクラス詳細画面から直接行える。転入生は空いている席番号に参加するだけでよい。チュートリアルは不要だが、「人数を変更する」ボタンの存在を先生に気づかせる UI ヒント(ツールチップ等)を検討する。
参考資料
docs/classroom/ui-ux.md— 現在の UI パーツと data-testid の完全な一覧docs/classroom/architecture.md— システム構成・API ルートdocs/classroom/user-stories.md— ユーザーストーリー