Skip to content

ducis28/ducis-class-assignment

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🎓 クラス配属システム

必修科目のクラス配属を自動化するローカル動作の Web アプリです。
Microsoft Forms の希望調査データを読み込み、抽選アルゴリズムに従ってクラスを割り当てます。

特徴

  • 完全ローカル動作 — 入力データは外部に送信されません
  • xlsx 入出力 — Forms の出力ファイルをそのまま使用可能
  • バリデーション — 対象外学生・重複回答を自動検出
  • 未回答学生の自動補完 — 希望調査に回答しなかった学生もランダムに配属
  • 再現性のある抽選 — シード値を固定することで同じ結果を再現可能
  • インストール不要 — ブラウザで HTML ファイルを開くだけで動作

操作の流れ

① 対象学生リストをアップロード

配属対象者の名簿(学籍番号・メールアドレス・氏名)を xlsx でアップロードします。
「📄 リストのテンプレDL」でサンプルファイルを取得できます。

DUET出席簿(xlsx形式)をそのまま利用できます。

列名 内容
学生ID 学生ID XXXXYYZ001
メールアドレス メールアドレス(一意の識別子) xxxx0001@example.ac.jp
氏名 氏名 山田 太郎

アップロードすると、配属対象人数とクラス定員が自動更新されます。

② 希望調査データをアップロード

Microsoft Forms のエクスポートファイル、または手動作成の xlsx をアップロードします。
「📄 希望調査テンプレDL」でサンプルファイルを取得できます。

対応している列名の形式:

項目 通常形式 Microsoft Forms 形式
識別子 学籍番号 メール
氏名 氏名 名前
第1希望 第1希望 第1希望のクラスを選んでください。
第2希望 第2希望 第2希望のクラスを選んでください。
第3希望 第3希望 第3希望のクラスを選んでください。

クラス名は クラス2:英語講読 のようなコロン付き形式にも対応しています(コロン以降は無視)。

アップロード時に以下のバリデーションが自動で実行されます。

チェック内容 表示
対象学生リストに存在しないメールアドレス 🔴 赤パネル「対象外の学生」+行番号
同一メールアドレスの複数回提出 🟡 黄パネル「重複提出」+初出行番号
問題なし 🟢 緑パネル「バリデーション通過」

③ 設定を確認

  • クラス数各クラスの定員をサイドバーで調整
  • シード値を固定すると抽選結果を後から再現できます(空欄の場合は実行のたびにランダム)

④ 配属を実行

「▶ 配属を実行」を押すと即座に結果が表示されます。

⑤ 結果をダウンロード

「⬇ 結果をxlsxでDL」で以下のシートを含む xlsx ファイルを取得できます。

シート名 内容
配属結果一覧 全学生の学籍番号・メール・氏名・配属クラス・配属方法
クラス別集計 クラスごとの人数・希望別内訳
クラス1〜N クラスごとの名簿

配属アルゴリズム

1. 回答済み学生を第1希望のクラスに仮配属する

2. 定員内であれば確定し、定員を超過したクラスでは抽選を実施
   → 当選:第1希望に確定
   → 落選:次のステップへ

3. 落選した学生を第2希望のクラスに仮配属する

4. 定員内であれば確定し、定員を超過したクラスでは抽選を実施(抽選対象は仮配属のみ)
   → 当選:第2希望に確定
   → 落選:次のステップへ

5. 第3希望についても同様に仮配属と抽選をおこなう

4. 第3希望まで決まらなかった学生と、希望調査に未回答だった学生を
   空きのあるクラスにランダムで配属

配属方法は結果ファイルの「配属方法」列に記録されます。

配属方法 意味
第1希望 第1希望のクラスに配属(定員内)
第1希望(抽選) 定員超過クラスの抽選に当選
第2希望 第1希望に落選、第2希望に配属(定員内)
第2希望(抽選) 第1希望に落選、第2希望で定員超過、抽選に当選
第3希望 第1~2希望に落選、第3希望に配属(定員内)
第3希望(抽選) 第1~2希望に落選、第3希望で定員超過、抽選に当選
ランダム 第3希望まで決まらなかったためランダムに配属
未回答 希望調査に回答しなかったためランダムに配属

動作環境

モダンブラウザ(Chrome / Firefox / Edge / Safari)で動作します。
インターネット接続は Google Fonts の読み込みにのみ使用されます(オフライン時はフォントが変わりますが機能します)。

使用ライブラリ

ライブラリ バージョン ライセンス 用途
SheetJS 0.18.5 Apache 2.0 xlsx の読み書き
Google Fonts (Noto Sans JP, DM Mono) SIL OFL 1.1 フォント

ライセンス

MIT License

Releases

No releases published

Packages

 
 
 

Contributors