アプリの設計 - 不定期刊 Rails App を作る(1)

RailsApp PlantUML 2018年 11月 5日

はじめに

学生が卒業研究で Rails のアプリを作成している. 私自身も Rails でかなりプログラムは書いているが,この世界はかなり移り変わりが激しいので,既存の知識では対応できないものがある. そこで,現在の最新の Rails 環境で一つアプリを作り,その過程を記録しようと思う.

作成するアプリだが,実際に自分が欲しいものを作りたい. 現在,担任をやっていて面倒なのは,いろんなイベントにおける出席管理である. 現状では,Numbers のフォーム機能を使っているが,未確認の学生だけを探すのが面倒である. そこで,この部分を楽に管理できる Web アプリを作ろうと思う. 出席・欠席・遅刻は同時に入力することはないのでモード選択とする. モードを選択した段階で,表示された未確認学生だけが一覧として表示され,クリック動作だけで割り当てられるようにする.

(12/14修正) Event の接続先を Kurasu に変更した.

設計

ユースケース図

usecase
@startuml
left to right direction
skinparam packageStyle rectangle
actor teacher
rectangle attendance  {
  teacher -- (クラスを作成)
  teacher -- (クラスに学生を追加)
  teacher -- (イベントを作成)
  teacher -- (モードを選択)
  teacher -- (出席・欠席・遅刻を設定)
}
@enduml

アクティビティ図

activity
@startuml
start

fork
  :ログイン;
fork again
  :学生を一括登録;
fork again
  :クラスを作成;
  :学生を登録;
fork again
  :イベントを作成;
fork again
  :モードを選択;
  :出席・欠席・遅刻を登録;
endfork

stop

@enduml

クラス図

class
@startuml
class Teacher {
  name : String
}

class Kurasu {
  name : String
  obsolete: Boolean
  teacher_id: Integer
}

class Gakusei {
  number : Integer
  name : String
  kurasu_id: Integer
}

class Event {
  name: String
  date: Date
  sort_order: Integer
  kurasu_id: Integer
}

class EventGakusei {
  event_id: Integer
  gakusei_id: Integer
  shusseki: Integer
}

Teacher "1" --"*" Kurasu : < teacher
Kurasu "1" -- "*" Gakusei : < kurasu
Kurasu "1" -- "*" Event : < kurasu
Event "1" -- "*" EventGakusei : < event
Gakusei "1" -- "*" EventGakusei : < gakusei

@enduml

とりあえず今日はここまで