AtCoder社の2019年最後のABCに私は、1191からあと9ポイント上げればよいという意気込みで参加していた。 1300も出せば、水色に昇格し、気持ちよく年末を過ごすことが出来る。 Dがそれなりに難しければ4完でも届く可能性がある。
しかし、実際にはコンテスト中にTwitter上で 「ジャッジシステムのエラーが起こっているため今回のシステムはunratedにする」 という告知が行われ、コンテストは突然unratedになった。
確かに、Cを提出したあたりからジャッジシステムがおかしいという兆候はあった。 ジャッジが進まないからだ。特に私のCはテストの最後でずっと止まったままだった。 進みも、いつもより遅かったように思う。 しかし、ジャッジシステムが重いことは今までにもあったから、 そのうちの一つだろうと思い、問題を解いていった。 もし、仮にジャッジシステムが壊れていたとしても、解答の提出自体はデータベースに残るはずだし、 ジャッジをあとで実行することも可能であるはずだと思った。 (そもそも今回こうならなかったのがわけわからない)
Dを提出したのが8:31の段階なので、告知はそれ以降にされた。 Dが終わった時点で特に早解きということはなく650位程度だったので、 たぶん今回のDはそれなりに難しかったのだろうとは思う。 Eもいつもどおりの難しさだったので、これなら4完でも1300くらいはワンチャン出るんじゃないか? と思っていた。800位くらいでいいからだ。
ずいぶんと遅くなってしまったが、今回のコンテストでなんとかして水色に昇格する気だったのだ。 このプレッシャーからなんとか解放されんがために、心臓がバクバクなり、手が震えながらも、最後のパットを決めにいった。 AtCoderから解放されて、他のコンテストに集中出来るようにするためだ。 これがどういう心理状況か、人生に何の不安もないみなさんにはわからないと思う。 今回上がって、AtCoderはしばらく出ないつもりだった。
心が壊れたのでAtCoderの目標を水色に下方修正することにした私は、コンテストが終わったあとにこのふざけた告知を知り、愕然とした。
AtCoder社、特に社長の高橋氏はこの件についてどう釈明したか?
なんと、コンテスト本番があるというのにジャッジシステムの負荷を確認もしておらず、 そのままコンテストを開始したというのだ。 当然、コンテスト中にunratedにするよりは、コンテスト前にunratedにする方が被害は少ない。 もちろん、コンテスト前にunratedだとわかっていたら参加しなかった。
しかも悪びれることなく、
だとか、ふざけた発言をする。コンテスト前に中止するくらいは明らかに出来たことなのに。 フラグ?ただの人災だ。
この事件から何が言えるか?
AtCoder社のシステムは競技プログラマによって構築されている。 少なくとも社長の高橋氏や、その側近は、特化型競技プログラマと言っても良いと思う。 彼らが作ったシステムというのを私は知らない。 せいぜい、ふざけたゲームやアプリケーション止まりであろう。 おそらく、システムを統括しているのも初期からいたメンバーであり、 具体的に誰かは知らないが、特化型の誰かであろう。
私のブログには 「競技プログラミング 意味ない」 で飛んでくる人が少なからずいる。 こう思う人が多いからだと私は考えている。
ただ私は、競技プログラミングが無意味とまでは思わないのだ。 ある程度の素養を判断するツールとしては機能すると思う。 だから私は、ある程度まではやりたいと思っている。 ある程度というのは黄色くらいだ。 黄色パフォが出る問題は、解けても良いと思うことが多い。
しかし、競技に特化している人間となるとどうか。 私は、「競技プログラミング 意味ない」 という検索は、こういった人間を見ている人間によって行われていると思っている。
今回のAtCoderの事故、さらに高橋氏へのシステムエラーの意識の低さなどを考えると あまりにプアであり、到底、システム開発に関わってはならない人間に類する。 ここまで偏った才能のある人間でなくとも、それに類する人間は 競技プログラミングの成績が良いというだけでシステム開発に関わったりしているのだろう。 そういう人間を見た人間が、「競技プログラミング 意味ない」という検索を生んでいるのだ。 ある部分に才能があれば、他の部分が欠けることがある。その結果であろう。
もちろん、競技プログラミングの才能があるということは私の目から見ると尊敬に値する。 しかし同時に、それに特化している人間であり、他のことは平凡かそれ以下であることもありうる ということを知る必要があるのだ。
もう1つ問題なのは、 コンテスタントの時間と気力をいただいていることへの感謝のなさだ。 私が、PAST廃止の文脈で訴えているのはすなわちこのことである。 彼らには、競技プログラミングを検定レベルまで高めていく気概がない。
AtCoder社の提供するプログラミング検定PASTは単なる情弱ホイホイである彼らにとって競技プログラミングは、 ただの遊びであり、ゲームなのである。 ネットゲームなら、サーバが落ちることはある。 pingが異常に高くなって、プレイ不能になることもある。 例えば、オーバーウォッチというゲームは理不尽で、サーバのエラーで試合放棄をしてしまった場合にも 意図的に途中抜けしたペナルティが与えられる。 これは決して少なくない頻度で起こるが、まぁまた上げればいいよねくらいに 多くのプレイヤーは思っている。
難易度が多少ブレることは、ゲームと見るならば、良いかも知れないが、 もし競技プログラミングを検定として見たいのであれば、そこは一切目指すべきではないし、 社長である人間ならば口が裂けても言ってよいことではない。 あなた方はゲームを作っているつもりだろうけど、参加者はシステムを求めているからだ。
これは、AtCoderのコンテストが週に1度程度しか行われないことにも依る。 もし、時間の許す限りいくらでもコンテストが出来るのであれば、一回のコンテストが 突然unratedになってもそこまで腹は立たない。 しかし週1しかないチャンスがこういう形で棒に振られてはたまったものではない。
例えば、早くこの色になってAtCoder Jobsのこの企業に申し込みたい! という人もいるだろう。 彼にとってはもうAtCoderはゲームではない。 安定したシステムの上に、難易度のブレがなく納得出来るコンテストが毎回開催されることを望むはずだ。
もし、ゲームだと言い張るのであれば、AtCoder JobsはやめるべきだしPASTもやめるべきだ。 このうちAtCoder Jobsには実害がある。コンテストが行われないというのは、一週間無駄にするようなものだからだ。 もちろん、契約上保証してもいないだろうし、トラブルによってunratedになってしまった場合は、一週間延長するなど そういう契約にもなっているだろうが、少なくとも時間は失われる。当然、信用問題にはなる。
もしAtCoderがプログラミングを学べるネットゲームであり、教育サイトですならば、何の違和感もない ので、そういうのであれば私は何も言わない。 しかしそうでないのであれば、ゲームではなくシステムを構築してほしい。
今回の事件、せめてもの救いは、私が炸裂しなかったことだ。 もし間違って全完でもしてしまっていたら、「大変なこと」になっていた。 少なくとも、5完していたら私はブチ切れていただろう。 しかし結局、こうやって記事のネタにもなったのだから、まぁ不幸中の幸いだ。
追記
AtCoderは今年5月にも、今回同様ジャッジシステムの遅延によってコンテストを unratedとしていたようだ。つまり、今回が初犯ではない。 おそらく調べれば、過去の罪も見つかるだろう。しかし大事なことは、今回が初犯でないという点である。
彼らは、何千人もの参加者の時間を無駄にしたことの重さがわかっていないのである。 もしわかっているならば、そこから7ヶ月もあったのだから、ジャッジシステム一つ完全にスケールするようにすることはそう難しくなかったはずだ。 いや、スケールの問題ですらない可能性がある。なぜならば、AtCoderへの参加者はこの半年で伸びてないからだ。 特に、ABC149は年末ということもあり、帰省している人もいたためか、いつもより2割か3割程度参加者が少なかった。
これが何を意味するかというと、 AtCoder社は今後もジャッジシステムの障害を起こし続けるということだ。 彼らのシステムは何の進歩もしていないのである。 というかおそらく根本的に欠陥があるのだろう。
競技プログラミングなんていうファンタジーの世界でしか生きてこなかった人間に、システムの構築は無理ということなのだ。 彼らは与えられた数学の問題を解くことにしか才能がないのだ。
そもそも、システムのことをないがしろにしているという可能性すらある。 彼らにとってのプライオリティは楽しい楽しい作問にあり、コンテストを支えるシステムなどは 「おれたち天才競技プログラマのすることではない」と見下している可能性がある。 あるいは「興味のあることにしか集中出来ない」という気質のせいかもしれない。
実際に彼らは、今年の夏に予定していた言語処理系のアップデートも未だに実行していない。 これにより、Rustは現在1.40が出たが、1.15という古代の処理系を使わされるはめになり、 そのためのワークアラウンドを要求されることがある。
処理系のアップデートは、それほど難しい作業ではない。 他のコンテストサイトでは、何を言われずとも定期的にアップデートされているくらいである。 実際、1.15というバージョンのRust処理系を使っているコンテストサイトはAtCoderのみである。
つまり、彼らにとってシステムは二の次なのだ。 誰でも出来るようなジャッジシステムの構築、処理系のアップデートには興味がなく、 自分たちは作問をすることに集中したい。 その上で、片手間としてシステムに時間を割いているというのが現実なのだろう。
そしてこれからも、何度も障害を起こし続け、 競技プログラミングの価値を失墜させるのだ。
ARCとAGCの作問なんかどうでもいいから、 まずはABCの週2開催とシステムの安定化を目指してほしい。