ICPC 2025 横浜大会に、スタッフとして参加しました。毎年恒例のシステム担当です。以下のようなことを担当しました。

  • コンテストマシンの選択
  • コンテストマシンの計算機環境セットアップ
  • コンテスト中の選手環境の監視
  • 中継へのシステムサポート

今回おこなった特に目立つ変更は以下の2つです。

  • 正解者への風船の復活
  • 選手カメラの導入

正解者への風船の復活

今年は、問題に正解したチームに風船を配りました。ICPCでは、正解したチームに風船を配る風習があります。日本の大会でもやっていましたが、コロナ以降は人手不足や混雑回避のために止めていました。今年からそれを復活させました。

風船の復活にあたって、システム面での大きな課題が一つありました。それは「クラウド化したコンテストサーバーから、いかにして会場のプリンタに印刷指示を出すか」です。正解したチームに風船を配るには、コンテストサーバーとプリンタの連携が必要です。連携なしで、目視で65チームの正解をリアルタイムに追いかけ、正確に風船を届けつづけるのはほとんど不可能です。日本のICPC地区予選で使っているコンテストサーバー DOMjudge にも風船配布サポート機能はあります。コンテストサーバーにプリンタを設定することで、「チームXXが問題Yを解いた」という指示書が印刷されるので、スタッフは適切なチームに適切な風船を配達できます。

2021年以降、コンテストサーバーをクラウド上に設置することにしたため、上記の風船配布サポート機能が使いにくくなりました。 2019年までは、コンテストサーバーをコンテスト会場に設置していたため、そこから見えるところにプリンタを設置することは簡単でした。一方、2021年以降のクラウド上に設置したコンテストサーバーからは、コンテスト会場に置いてあるプリンタに印刷指示を出すのは簡単にはできません。

今回は、ICPC 世界大会が使っているツール群である ICPC Tools から、そこで使っている balloon utility を使うことにしました。このツールはローカルネットワークからクラウド上のコンテストサーバーの状態を監視し、上記の風船配布指示書を印刷してくれます。世界大会をはじめとして幾つかの ICPC オンサイト大会で使っていて使用実績もあります。結果、オンプレミス時代と同等の風船印刷を実現しました。

選手カメラの設置

中継用の素材として、選手の様子を映したカメラを全チームに設置しました。素材は 公式中継チャンネル (たとえば1:26:30頃には2位の Rinshan Solution が写っています)公式チャンネル split screenで見られます。

はじめはあまり考えていなかったのですが、10月中旬に提案を受けて設置することにしました。システムとしてはスクリーンキャストとほぼ同じ経路を使ってできますし、カメラは選手のコンピュータの内蔵カメラを使えば追加コストなしでできるので可能だと判断したからです。

上に書いた通り、選手のコンピュータの内蔵カメラを活用しています。選手のコンピューターはラップトップを使っていて、それに外部ディスプレイやキーボード、マウスを接続して提供しています。例年はラップトップを閉めてクラムシェルモードで設置していました。今年はラップトップを開いて設置し、内蔵カメラが選手を映すように配置しました。カメラの映像はffmpegで取得し、スクリーンキャストと同じ経路で中継に渡しました。

大会1ヶ月半前という急遽の導入ではありましたが、予想以上に安定して動作し、中継に臨場感を加えることができました。配信画面に選手たちの緊張感が伝わってくるのを見て、導入してよかったと感じています。次回はもっと活用したいものです。

まとめ

ICPC 2025 横浜大会のシステムの変更のうち、目立つ2つを紹介しました。これ以外にも目立つ変更、目立たない変更など色々行っていますが、既に分量があるため、次の機会に紹介したいと思います。