EY-Office ブログ

20年目にして驚きの仕様変更

アジアリーグアイスホッケーの集計システムは約20年前に私が作り、それからずっとメンテナンスしています。

今期のプレイオフが4月4日に始まったのですが、夜に「ゲームシートが登録できません!」というメールと電話がありました。よくある事ですが担当者から電話が来たのは久しぶりです。
担当者もいろいろ試してくれ「試合時間が100分を超えたのが原因ですかね?」というメールが来ました。

え〜 😲❗

sports_icehockey_man いらすとやのイラスト

アイスホッケーの試合

アイスホッケーに馴染みのない方も多いと思います。アイスホッケーは、

  • アイスリンク上でスケートを履いて行われる
  • スティックという棒でパックというゴム製の円盤を打ち合い、相手ゴールに入れ合う競技
  • 『氷上の格闘技』とも呼ばれる激しさがある

大枠ではサッカーに似てると思います。詳しくは、Wikipediaの「アイスホッケー」を見て下さい。

試合時間は、以前のアジアリーグでは

  • 第1ピリオド: 20分間の試合
  • 第2ピリオド: 20分間の試合
  • 第3ピリオド: 20分間の試合
  • オーバータイム: 第1〜3ピリオドの合計点が同じだった場合、5分間の延長戦

ピリオドの間に休憩はありまが、その時間はゲームシートでは無視されるので、ゲームシート上は試合時間は60分か65分でした。

その後、引き分けを避けようということで、オーバータイム後でも同点だった場合は、PK戦(アイスホッケー用語ではペナルティ・ショット・シュートアウト)が行われるようになりました、PK戦の時間も試合時間には入りません。

今回の試合ルールとシステム

2023-2024シーズンのプレイオフでは、試合ルールを変え、オーバータイムはどちらかがゴールするまで、時間制限なしにしたそうです!

ちなみに、このルール変更がある事の事前連絡がありませんでした。 そして、オーバータイムが103分35秒まで実施されました! 今回のゲームシート

集計システムは、試合時間は99分59秒までという仕様で作られていたので、100分以上は入力出来ないようになっていました。
今までは試合時間は最大65分だったので全く問題ありませんでした。😃

対応

とりあえず、100分以上を受け付けるように変更しました。すると集計が正しく動作しませんでした、103分35秒のゴールが第1ピリオドに集計されてしまいました。

システム内部では、時間は MM:SS という5文字の文字列で時間を管理していました。MMSSの部分はゼロサプレスされないので、時間の大小は文字列の大小比較で上手く行っていました。

しかし、103分35秒のゴールは、 文字列の比較なので 103:35 < 20:00 となってしまいます。😅

ということで、その日は暫定的な対応を行い、翌日に正式な対応を行いました。

まとめ

アイスホッケーの運営を行っている方々も、まさかシステムが100分以上を受け付けないとは知らなったでしょうし、オーバータイムの試合を43分も行うとは思ってなかったでしょうね。

ソフトウェアの変更箇所は、それほど多くなくすみまました。またテストコードがあるので、今回の修正によるデグレードは発生してないようです。

- about -

EY-Office代表取締役
・プログラマー
吉田裕美の
開発者向けブログ