はまやんはまやんはまやん

hamayanhamayan's blog

競プロのエコシステムについて

この記事は競技プログラミングを始めたばかりの人に伝えたいことのカレンダー | Advent Calendar 2021の10日目の記事です。

カレンダーを見るとネタ被りをしていたのでテーマを変更しました。
競技プログラミングには色々な要素があり、初めて競プロを始めた方にとっては、どこにどういったものがあって、どういった選択肢があってというのが分かりにくいかもしれません。
明文化されてないものも含めてつらつら書いていけたらなと思います。

エコシステム?

エコシステムと呼ぶのが正しいか分からないが、競技プログラミングというジャンルの元に色々なシステムやコミュニティなどが構築されている。
日本人であれば大体AtCoderから入ると思うのだが、周りにも色々あるのでそのあたりを紹介していくことにする。

エコシステムを構成するグループを紹介して行くことにしよう。

  • コンテストサイト、問題公開サイト
    • やはりコンテストサイトが中心に来ますね
    • 会社がコンテストをやれているというのが既にすごい
  • 就活/転職サイト/検定
    • 昨今はこのあたりにも触れておくべきだろう
  • 年次コンテスト
    • 良いグループ名が思いつかなかったが、毎年開催される有名なコンテストも多く存在する。コンテストサイトでのレーティング同様に、著名なコンテストでの上位入賞も同じくらいの誉がある
  • コミュニティ
    • 競技プログラミングはほぼほぼオンラインで完結するものなので、コミュニティの形成も基本はオンラインである
    • どのような場所にコミュニティが存在しているかを紹介していく
  • 有志による補助的な(もしくは、少し方針の違う目的の)サービス・アプリ
    • 競プロという所から始まって、色々なサービスやアプリケーションが開発されている
    • この辺りの活発さも珍しさの1つ
  • 有志による解説ブログ・サイト
    • 最近はどのコンテストサイトもとりあえず解説はあるので見過ごしてしまいがちだが、アルゴリズム自体の解説や、問題の解説を有志が行っている
    • 最近は少し飽和気味かもしれないが、同じことを書いていても説明によっては分かったり分からなかったりするので、選択肢は多いことだと思っている
  • 書籍
    • 競技プログラミングは要求知識も多く、かつ、それを前提とした問題も多いので書籍を使ってショートカットするのも良いと思う

AtCoderの場合はほとんどがAtCoder Clansに載っているので、そこに載ってなさそうなもの(確認してないけど)やAtCoder以外の部分について書いていくことにしよう。

コンテストサイト、問題公開サイト

AtCoder以外だと、yukicoderやAOJがある。
日本語の問題が充実しすぎて、日本語の問題だけでレッドコーダーになれる気がする。
だが、世界的に見ると競技プログラミングユーザーを最も抱えているのはCodeForcesというサービスである。

はじめての Codeforces 前編 (参加登録〜コンテスト本番) - NoiminのNoise

CodeForcesに出る場合はHackという新しいシステムが追加される。
これはTopCoderという著名なコンテストサイトにも存在するシステムであり、他人のソースコードをよんで、そのソースコードに含まれる間違いを指摘するというのがざっくりとした説明。
ソースコードを書くだけでなく、読んで理解して間違いを探すという更にアドバンスドな能力が要求される。
AtCoderだと見かけないが、とても面白く勉強になるシステムなので、CodeForcesで試してみてほしい。

コンテストサイト、問題公開サイトについて有名どころを以下に並べておく。他にももろもろあるが、思いついた所を羅列しておく。

就活/転職サイト/検定

採用試験でコーディングテストというのが行われたりする。
その延長線上というか、プレテストというか、そういった感覚で就活/転職サイトで使われたりする。
興味があるなら、見てみるのもいいかもしれない。
以下以外にも色々ありそうだが、正直あまり知らない

あと、アルゴリズム実技検定 | AtCoderというのもある。
有用性についてはこれからなのでどうなるかは分からないが、競技プログラミングの延長線上の検定としてはこれが初めてで、かつ、これ以上のものが今後出てくるとは思えない。

年次コンテスト

年次でコンテストを開催している所はいくつかある。
その中には歴史が古く競技プログラミング界で権威のあるコンテストも多い。
知らないと目指しようもないと思うので、羅列しておく。
開催時期もものによっては年齢制限もあるので、詳しく調べてみよう。

以下がなんか企業がやってる感じがない大会。特に上2つに権威を感じる。

これからが企業がやってる権威がある大会。Tシャツももらえたりするので、気軽にチャレンジしよう。

コミュニティ

競技プログラミングのコミュニティはインターネット上にあるのでとてもオープンである。
チラ見して楽しむも良し、積極的に参加するも良し。

  • (2) AtCoder TLさん (@atcoder_tl) / Twitter Twitterで強い人や仲間を探したいときはここのリストが役に立つだろう
  • AtCoder Clans このサイトにQ&AサービスやDiscordチャンネルが詳解されている
  • Top - Codeforces CodeForcesには記事投稿の機能があり、色々な告知や議論がなされている。例えば、TopCoder Openの解法の議論がここでされたりもしているので、覗いてみるといい。
  • TopCoderにもフォーラムがあったはず。(日本ではフォーラムって文化が廃れちゃったよね…)

有志による補助的な(もしくは、少し方針の違う目的の)サービス・アプリ

沢山あるので、紹介しきれないよね…

AtCoder Clans

ここでとりあえず探せばいいと思う。
どのようなコンテストサイトにも問題埋めの補助サイト、AtCoderで言う所のAtCoder Problemsがあったりするので探してみると合致するサービスがあるかも。
コンテスト探しは、CLISTをとりあえず見ておけば大丈夫だと思う。

有志による解説ブログ・サイト

全部紹介はしきれないので、探し方を説明するに留めることにする。
大体の有志解説サイトは問題名を題名にしているので「AtCoder 問題名」とか「問題名 解説」とかでググると公式解説以外の有志の解説を見つけることができるかもしれない。
公式解説で納得できない場合は野良サイトの解説を探してみよう。
あとは、Twitterでコンテスト終了後に解法を短文でつぶやいている人もいるので、コンテスト終了時間を狙ってTwitterを巡回することでも解説をかき集めることができるだろう。

アルゴリズムが分からない場合は「アルゴリズム競技プログラミング」みたいに検索すると色々出てくるかも。
最近は「アルゴリズムAtCoder」でもいい感じに出てくるかも。
かなりたくさんあるので適当にググっても出てくると思う。

書籍

競技プログラミング 本 - Google 検索

本当にたくさん本があってすごいですね…
全部読んだ訳ではないし、どの本も良いのだが、このAdvent Calendarのホストの書籍を紹介しておく。

問題解決力を鍛える!アルゴリズムとデータ構造 (KS情報科学専門書) | 大槻 兼資, 秋葉 拓哉 |本 | 通販 | Amazon

けんちょんさんが主で、秋葉さんが監修という最強の布陣で書かれている。
(今の人は知らないと思うが、秋葉さんは競技プログラミング界のレジェンドの一人)
とても網羅的に書かれており、効率的に知識を身に着けることができるだろう。

終わりに

これで終わりです。

競技プログラミングはいろんな人はいろんなことをやって楽しんでいるんだなということがよく分かりますね。
層が厚いというか、面白い界隈だなと感じます。

あと、参加層が若いという所がまた良い所ですね。
今後もどのように発展していくのか、とても楽しみにしています。