スポーツイベントの結果速報システム

OVERVIEW

マスターズ水泳の大会で計測されたタイムをGoogleスプレッドシートに入力することで、WEBから結果速報が見られるシステムを作成しました。

YEAR 2020


システム概要

結果公開画面

参加者が自分のスマホで確認する前提なので、スマホレイアウトです。

結果入力画面

スプレッドシートに計測機器から出力されたタイムを入力することで、WEB公開されたページに種目・組・選手ごとのタイムが表示されます。

従来この「速報」と呼ばれる仕組みは、大会スタッフのデータの入力担当者がExcelファイルにタイムを入力し、数式によって整形したシートを印刷し会場に貼り出す方法を取っていました。しかし、
・公開までのタイムラグが大きいこと
・貼り出しに行くにも手間がかかること
・自分のタイムが公開されたかどうか見に行くまでわからないこと
・速報を貼り出した場所がとても混雑すること(時節柄ですね)
などの理由でオンライン化を選択しました。

技術要素

DB:Googleスプレッドシート

入力用シートは自動計測機器から出力されるレシートの書式に合わせて列を構成しています。見たまま入力すればOKとすることで、誰でも入力を担当できるようにしました。

なお、Googleスプレッドシートにおける時間の取り扱いに苦戦した記録をQiitaに残しています。

よくある記法のスプリットタイムをラップタイムにする

やっぱり[m:]s.00でタイム入れたいよね(Googleスプレッドシート)

データ整形:Google App Script

スプレッドシートに入力されたタイムを数式によってある程度整形した後、GASを用いてJSONとして出力しています。

サイト構成:Vue.js

GASから受け取ったJSONをVue.jsで整形して表示しています。

サイト公開:Github Pages

手っ取り早く公開できるということで選択しました。修正の適用を確認するのにタイムラグがあったので、開発初期はローカルにしておけばよかったです。

追加機能

当該イベントは「大会」であるため得点計算などの処理もありましたが、初回はまず速報のWEB公開に重点を絞って実装しました。

今後は得点計算・得点速報や参加申し込みの簡略化、レース組分けサポート機能などの実装も検討しています。さらに、自動計測機器のレシートをOCRで半自動的に取り込むことも将来的にできればと考えています。(試してみた限り、読み取り精度を高めるための機材の準備が最もハードルが高そうだと感じています)