前回のアジアリーグアイスホッケー開発 の記事は予想以上にアクセスがあったので続編として苦労した事を書きました。
ペナルティの相殺
アイスホッケーは「氷上の格闘技」と呼ばれるように体格の良い選手がスケートを履いて高速でぶつかり合う激しいスポーツで、時に危険なプレーになってしまい反則(ペナルティ)となります。 ご存じの方が多いと思いますがアイスホッケーでは反則した選手はペナルティボックスに反則に応じた時間(2,4,5,10分)入れられます。
また、その間はパワープレイと呼ばれ反則したチームのプレーヤーの数は減り逆チームが有利になります。
しかし両チームの選手が反則した場合は、なるべくペナルティ時間が少なくなるように相殺されるルールがあります。
この「ペナルティの相殺」は厳密にルール(アイスホッケー公式国際競技規則の第112条)が決まっていてプログラムに置き換えられるはずですが色々なケースがあり、担当者と仕様を検討した際に、相殺は自動化ではではなくExcelのスコアーシートに特別な欄を追加して人間が判断する事になりました。
担当者の方は理性的でITの理解もある方で無理のない良いシステムが出来た思います。
放棄試合
上でも書いたようにアイスホッケーは激しいスポーツです、極まれに複数の選手同士の乱闘に発展してしい試合が終了になってしまう事があります。このような場合 放棄試合 に成ります。
放棄試合がシステムとして難しいのは記録(スコアー)は残りません、しかし勝敗はある(原因を作ったチームの負け)というシステムとして例外的な状態になります。
最初に放棄試合が起きた時に、システムは一見正しく動作しましたが、その後選手等の集計結果がおかしいバグが発見されました。
放棄試合は滅多に起きないのでシステム開発時のアジアリーグの総合テストには含まれていませんでしたし、ユニットテストも不十分でしたのでバグ対処の際に追加しました。やはりテストは重要ですね。
シーズン中の選手移籍
アジアリーグアイスホッケーのシステムは、海外のチームが参加する前の「日本アイスホッケーリーグ」時代の運用がベースになっていました。選手の移籍はシーズンが終わった後に行われていました。
しかしアジアリーグになってから、ある国でシーズン中に選手が移籍するという事態が発生しました。選手の登録は直ぐに変更出来るので一見問題なく運用されていたのですが、後になってから一般公開してない監督・コーチ用の集計データの一部が正しく無いことが判明しました。
選手の記録がシーズン毎にチーム単位で集計されたデータがあり、シーズン中に選手が移籍するとのデータが正しく集計されなくなります。
システムを変更する事も可能でしたがアジアリーグ担当者と協議の結果、今回のシーズン中に選手が移籍は異常な事態なので今後起きる可能性は無いので間違って集計されたデータは手動で修正する事で決着しました。この判断も担当者のシステムへの理解の高さから出来たことで、とても感謝しています。