Skip to content

Latest commit

 

History

History
103 lines (69 loc) · 4.94 KB

File metadata and controls

103 lines (69 loc) · 4.94 KB

CHroS 要件定義

背景

CHaser 大会の進行(対戦順・スコア・配信画面)は、これまでスプレッドシートによる人力運用で行われていた。 スコアの集計ミス、配信スライドのその場作成、進行担当の負荷集中が慢性的な課題となっている。

CHroS はこれを一部または全部自動化し、大会運営の人的負担を減らすことを目的とする。

スコープの分割

一度に全体を作ると設計が破綻するため、以下の2ドメインに分離して設計・実装し、最終的に統合する。

ドメイン 責務
スコア管理 参加者・対戦・得点の登録と集計、順位計算
画面管理 配信に載せる画面の切り替えと、進行状況に同期した表示

両者は「現在の大会進行状態」を共有する。統合時はこの状態モデルが接続点になる。

機能

  • 得点管理
  • 対戦順管理
  • 得点表示
  • 対戦順表示
  • 対戦状況表示

得点管理

スプレッドシートで管理されていたものを、このシステムで管理できるようにする。

  • 参加者の登録・編集
  • 対戦ごとの前半/後半のスコア入力
  • 勝敗判定(得点、PUT、通信切断などの条件を含む)
  • 入力ミスの訂正(履歴が追える形で)

可搬性 — 得点管理における最重要要件

釧路大会は他大会と比べてスコア計算が複雑であり、規則は大会ごとに異なる。 計算式をシステムに固定すると、規則が変わるたびにエンジニアの改修が必要になり、可搬性を失う。

したがって、計算式を外部から与えられるデータとして扱うことを本システムの核とする。

  • 計算式は非エンジニア(大会運営)が編集できること
  • 曖昧な状態のまま大会に適用されないよう、検証の仕組みを持つこと
  • どの規則で算出した結果なのかが、後から辿れること

編集手段は「コードを書かせる」形を採らない。どんな言語であっても非エンジニアには負担が大きいため、 ノードを繋いで組み立てる方式とする。実装方針は 技術要件 §1.2 / §5 を参照。

対戦順管理

スプレッドシートで管理されていたものを、このシステムで管理できるようにする。

  • 総当たり戦 / トーナメントの対戦表生成
  • 現在の対戦、次の対戦の管理
  • 進行状態(未実施 / 進行中 / 完了)の遷移

得点表示

各対戦で、最終的に誰が何点取り、どのような勝ち方をしたかなどを一覧で表示する。 従来はスプレッドシートのデータをもとにその場でスライドを作成していたため、 得点管理から表示までをシステムで一元的に行う。

対戦順表示

総当たり戦やトーナメントなど、一目で見て理解できるリッチな UI を作成する。

対戦状況表示

以下の内容を一目で理解できる UI を作成する。

  • 誰と誰が戦っているか
  • 前半戦ではどちらが何点取ったか
  • どちらの方が有利 / 不利か
  • 最終的な勝者はどちらか

利用者と画面

ロール 画面 用途
運営(進行・記録) Console データ入力、画面切り替え操作
視聴者(配信越し) Display (Viewer) 配信に載る表示専用画面。操作は行わない

Viewer はサーバーの状態に追従して表示を変えるだけであり、Viewer からサーバーへの入力は発生しない。 この非対称性が通信方式の選定根拠になる(技術要件 参照)。

非機能要件

  • 同時接続数: 数十程度(運営端末数台 + 配信用ブラウザ数枚)。大規模スケールは不要。
  • 可用性: 大会当日の数時間、無停止で動けばよい。ただし配信中の再起動は許容できないため、Viewer は再接続で自動復帰すること。
  • ネットワーク: 会場 LAN での運用を前提とする。インターネット接続が不安定でも動作すること。
  • セキュリティ: 認証・権限管理は設けない。会場 LAN 内に閉じた運用を前提とした 意図的な判断であり、前提が変わる場合は再検討する(技術要件 §1.3)。
  • データ: 大会終了後にスコアを永続的に参照できること(後日の記録公開に使う)。
  • 再現性: 過去の対戦結果は、当時適用した計算規則とともに再現できること。

今後の目標(初版スコープ外)

  • 自動抽選システム: 対戦組み合わせの自動生成。データ設計の段階で、 抽選結果を後から流し込める形にしておく。