📘 hkob-astro-notion-blog

これまではてなブログにて情報発信をしていましたが、令和5年3月22日より、こちらでの情報発信を始めました。2019年以前の古い記事は過去の Middleman 時代のものなので、情報が古いです。記録のためだけに残しています。

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

💡
この記事は Middleman 時代に書いた古いものです。記録のため、astro-notion-blog に移行していますが、あまり参考にしないでください。
はじめに

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

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

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

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

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

stop

@enduml
クラス図
@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

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