ゆづき式スイスドロー運営ツール2020年度前期アップデート内容

COVID-19による福ちゃん、ケルディオ杯等のイベント中止により、使われなく半年ほど結果した機能や、イベント自粛中に追加した機能をまとめてみました。 自分がやったことを忘れないようにするためのメモ的な意味もあります。

1. 開発環境の改善

今まではブラウザ上でスプリクトエディターを開いてそこでコードを記述していました。 しかし、スプリクトエディターではインデントが見づらく、補完機能が弱かったりで、とてもコードを記述するのに適した環境ではありませんでした。 この欠点を改善できるのが「clasp」でした。 claspを使うことでGoogle Apps Scriptのコードをローカル環境で記述することができるようになります。 また、使用するエディターも自由に選択することができるので使い慣れた環境でコードを記述することができるようになり、作業の効率が向上できます。

私がclaspを知ったのは4月ごろでしたが、もっと早く知ることができていればと後悔しました。 現在はVS Codeを使用して開発を行っています。

2. Google Apps Scriptのアップデート

2月にV8ランタイムのサポートが発表され、従来まで使用されていたRhinoランタイムの使用が非推奨となりました。 しかし、V8ランタイムに対応したことによりモダンなJavaScriptでコードを記述することができるようになったため、記述量を減らすことができるようになりました。 また、RhinoランタイムからV8ランタイムへ移行する際に一部の互換が切れているためコードの修正に加え、varの使用を控え、constやletを使用する等の可読性を上げる記述へ更新しました。

3. 機能追加

今回のアップデートコンセプトは大会の運営をスムーズにすることです。 大会の時間を短縮するには、試合時間を削ることはできないため、試合の前後の時間を如何にして短縮できるかを考えました。 もっとも使用頻度が高いトレーナーズリーグでの使用データをもとに改善点を考えると、抽選方法の改善と対戦結果の入力を簡易にできるよう改善の必要があると考えました。 また、試合前時間を大幅に短縮できる効果があると考えられるオンラインペアリング機能の導入にも着手しました。

3.1 抽選機能の改善

抽選機能は一番使用回数が多いので抽選がより容易に行えるよう改善を行いました。

(以前)抽選を実行すると勝ち点と乱数をもとに1回される。 重複の判定が出た場合、再度抽選を実行する必要がある。

(改善後)勝ち点と乱数をもとに抽選が実行され、重複が無くなるまで一定回数繰り返す。

抽選実行後にチェック機能を設けてチェックが通らなかった場合は再度抽選を実行するようにしました。 これによって、抽選の際に要する時間が大幅に短縮できることが予想されます。

3.2 オンラインペアリング機能(ベータ版)の追加

マッチングの発表は参加人数が多くなればなるほど時間がかかってしまうネックになるポイントでした。 実際、第4回青森ケルディオ杯ではペアリングをオフラインで1卓ずつ発表したため、予定していたスケジュールから大きくずれてしまったと考えられます。

対して、2018年度と2019年度の学祭イワパレスカップでは対戦一覧を作製し、これを画像に変換しTwitterへ投稿してプレイヤーへ告知するという措置を採用していました。 この方法を採用することによって、予定していたスケジュールの中で大会を終えることができたと考えられます。 このことから、ペアリングをオンラインで発表をすることは一定の効果をあげることができると考えられます。

しかし、画像という媒体での告知は、月末の通信制限下でペアリングを見ることを困難にしてしまいます。 そこで12月の第5回福島チャンピオンズリーグでは、この欠点を改善すべくGoogleドライブの「Webに公開」の機能を用いてペアリングを公開するよう改善をしました。 しかし、この方法はとてもわかりずらく、実際この大会では本来予定していたスケジュールにエラーを出す要因の1つになってしまったと考えられます。

改善案として、対戦表をhtmlで出力しはてなブログGoogleサイトを用いて公開する等の方法も考えましたが、コピー&ペーストの作業は面倒くさいし、ボタンを押すだけでペアリングを公開できるのが理想でした。 そこで、Google Apps Scriptを用いたWebアプリケーションを開発することによってオンラインペアリングを実現するという最終手段を用いることで解決しました。

現在、テーブル番号、ID、プレイヤー名によるソートに加え、プレイヤー名の絞り込みにも対応しています。 オンラインペアリングのデザインや機能については、現在、改良を考えている段階であり、Webアプリケーション開発に使用するhtml、CSSJavaScriptの勉強をしています。

f:id:yuzuki-poke:20200825132708p:plain
図1 第5回福ちゃん及び第5回岩手ケルディオ杯で使用予定だったオンラインペアリング機能

3.3 対戦結果記入用紙作成機能の追加

自分が主催する大会と3月に予定されていたシティーリーグで使用するために作成しました。 モデルは海外のRegional、IC、WCSで使用されているものになります。 難点は印刷プレビューの生成に少し時間がかかることです。

f:id:yuzuki-poke:20200825133929p:plain
図2 対戦結果記入用紙一例

3.4 対戦結果入力アシスト機能の追加

対戦結果の入力は大会の参加人数が多いほど時間を要し、またこの作業が終わらなければ次の試合の抽選へ移ることができないためこの作業の効率化が必要と考えています。 この時間短縮を対戦結果記入用紙を用いた場合と用いない場合の2パターンを考えました。

3.4.1 対戦結果記入用紙を活用する場合

対戦結果記入用紙には、3つのバーコードがあり、左からPlayer1の勝利、引き分け、Player2の勝利の順に並んでいます。 試合結果に応じてこれらバーコードを読み込むことによって、試合結果の入力を自動化できます。 バーコードリーダーがない場合は、結果の下に書いてある5桁の数字を入力することで試合結果を入力できます。

f:id:yuzuki-poke:20200825135536p:plain
図3 対戦結果記入用紙による結果入力アシスト機能の使用例

3.4.2 対戦結果記入用紙を活用しない場合

学祭やトレーナーズリーグ、福島チャンピオンズリーグで運用する場合、先に述べた対戦結果記入用紙は使用しません。(学祭や福島チャンピオンズリーグでは口頭での報告) そこで、試合数とテーブル番号を入力することで対戦しているプレイヤーの情報を取得し、試合結果に応じたボタンを押すことによって、試合結果を入力できるように改善しました。

f:id:yuzuki-poke:20200825141350p:plain
図4 対戦結果記入用紙を使用しない結果入力アシスト機能の使用例

4. 今後の展望

オンラインペアリング機能の改善をさらに進めていきます。 また、参加者リストのCSVインポート機能の実装なども目指します。 加えて、本システムの使用条件や使用規約を2021年シーズンが始まる前に明確にしたいと考えています。