AtCoderとは
AtCoderとは、競技プログラミングコンテストを開催している国内サイトのことを言います。競技プログラミングは、与えられた条件下の中で課題を解き、その正確さやスピードを競い合う競技です。AtCoderでは定期的にリアルタイムでコンテストが行われており、毎回1,000人を超えるユーザーが世界中から参加しています。
AtCoderは単なるコンテスト会場に留まらず、参加者はその実績に応じて色(ランク)付けされ、自身のプログラミング技術を世界にアピールする場にもなっています。この記事では、競技プログラミングを知らないエンジニアのためにAtCoderの仕組みや初心者向けの始め方を説明していきます。
【参考】:Atcoder
コンテストのルール
AtCoderで行われるコンテストの基本的なルールを説明していきます。コンテストでは、複数の課題が出題され、それらの課題それぞれで求められている処理を行うプログラムを設計することになります。制限時間は120分前後でコンテストによって変わりますが、時間以内により多くの課題を解いた参加者が勝ちとなります。なお、同点の場合は早く解いた方が順位が上になるようです。
定期的に開催されるAtCoder Beginner Contest (ABC)やAtCoder Regular Contest(ARC)などのほかに、企業や大学が主催するコンテストも開催されており、賞金が出ることもあるようです。使用する言語は後述しますが多岐にわたり、アルゴリズムに自信があれば、どのような分野のエンジニアでも参加することができます。
ランクを表す色
AtCoderでは参加したコンテストの成績によって、ランクが決まり、このランクは色で表されています。ランクの高さは低い順に下のようになっています。
- 灰色・・・一番下のランクでスタート地点です
- 茶色・・・情報系学部できちんと勉強している学生という印象で一般的には十分高いレベル
- 緑色・・・競技プログラミングで熱心に取り組んでいる人であり、エンジニアとしてある程度の安心感がある
- 水色・・・通常の企業ではとても実力のあるプログラマと言われるレベル、数学に対する素養もあると言える
- 青色・・・学生時代を競技プログラミングに打ち込んだとしてもほとんどがたどり着けないレベル
- 黄色・・・研究開発職など高度なアルゴリズムを要求される現場で重宝される貴重な人材
- 橙色・・・アルゴリズムを専門的に必要とする企業でなければ活かすことのできないスキルを持っている
- 赤色・・・上位0.3%で数えるほどしかいないずば抜けてレベルの高いエンジニア
『マイナビIT AGENT』で転職相談を受けてみる
参加に料金は必要?
AtCoderのコンテストに参加するためには料金が必要なのでしょうか。コンテストは誰でも無料で参加することができ、料金は一切かかりません。AtCoderがコンテスト以外で行っている「アルゴリズム実技検定」は一般企業などを対象にしているため、こちらは受験費用を設定しているようです。
競技プログラミングは就職に意味がない?
AtCoderなどで行われている競技プログラミングは、同サイトでもそうですが、エンジニアのスキル判定としても使用されており、就職に有利に働く、と考える人も多いはずです。一方、競技プログラミングは就職に役に立たないと考える人もいることは事実です。
その理由は、競技プログラミングがアルゴリズム設計という分野に特化しすぎているためと考えられます。大多数のIT企業では、幅広い分野のプログラミング技術が求められており、アルゴリズムを必要としない企業もあります。したがって、競技プログラミングで高ランクになれば、必ず就職に有利になる、とは考えない方がよいでしょう。
AtCoderの始め方
AtCoderの概要が分かったところで、実際にどのように始めればよいか、どのようなコンテストがあるかを説明していきます。
登録方法
AtCoderのコンテストに参加するためには公式サイトでアカウントを作る必要があります。ユーザ名、メールアドレス、国や地域が登録に必須となりますが、住所や氏名などの個人情報は登録する必要がありません。まずは気軽にアカウントを作ってみましょう。
参加できるコンテストの種類
登録が完了すればコンテストに参加することができるようになります。前述しましたがコンテストは大きく2種類に分かれています。
・定期開催コンテスト
定期的に開催され、順位を競ったり、自身のランクを上げるためにチャレンジすることができます。難易度別に以下のコンテストがあります
- AtCoder Beginner Contest (ABC)・・・初心者向けで毎週土曜日か日曜日に開催
- AtCoder Regular Contest (ARC)・・・中級者から上級者向けでこちらも毎週土曜日か日曜日に開催
- AtCoder Grand Contest (AGC)・・・上級者向けであり、月に1回かそうでない月もあり、開催頻度は低い
初心者であっても全てのコンテストに参加できますが、それぞれ「レーティング更新対象」が定められており、対象範囲のレート(ランク)に入っていないと、成績を上げてもランクに影響を与えられない仕組みとなっています。
・企業・大学主催のコンテスト
もう1つが企業や大学が主催するコンテストであり、これらは不定期で開催されています。パナソニック、キーエンス、京セラなど名のある大企業が主催しているものもあり、高順位者に商品が用意されています。それぞれ独自のルールが定めてあったり、ただ解くのではなく最適解を出すものもあるので、参加する前によく概要を読んだ方がよいでしょう。
使用可能な言語
競技プログラミングにチャレンジしたいエンジニアにとって最も気になる点が使用可能な言語でしょう。AtCoderでは幅広い言語をサポートしており、C言語、C++、JavaやPythonをはじめ、COBOLやJuliaなどの言語でも問題を解くことができます。ただし、一部のコンテストでは使用可能な言語が変更されている可能性もありますので、コンテストページの下部からルールを見るのを忘れないようにしましょう。
【参考】:ABCの使用可能な言語
初心者のためのガイド
競技プログラミングは多くのエンジニアにとっては敷居が高いように思えるかもしれません。しかしながら、ある程度のプログラミング知識があればチャレンジできる初心者向けのコンテストも用意されています。ここでは始めたばかりの方がまずはどのように進めていけばよいかを解説していきます。
まずは提出の仕方を学ぶ
AtCoderに登録し始めた方がまずするべきことは、プログラムの提出方法を学ぶことです。チュートリアルページに「問題を解いてプログラムの提出する方法」という説明とリンクがあるので、ここから練習ページにアクセスすることができます。練習ページでは実際のコンテストを模した問題を解くことができ、提出するまでのプロセスを練習することができます。
【参考】:練習ページ
初心者向け問題集を解く
提出方法を学んだらいきなりコンテストに参加するのではなく、初心者向けの問題集にチャレンジしましょう。公式ページでは「AtCoder Beginners Selection」という名称で常設コンテストとなっており、いつでも参加でき、問題を解いて判定をしてもらうこともできます。ここで出題される問題は外部の有志の方が過去に出題された問題から精選した10問となっているようです。
【参考】:AtCoder Beginners Selection
AtCoder Problemsで過去問に挑戦
初心者向けの問題を全て解き終えたあとはすぐにコンテストに参加するのもよいですが、さらに過去問を解いてみるのもよいでしょう。「AtCoder Problems」は過去問を解いて実力を付けたい方に非常におすすめできる非公式サイトです。今までに行われたABCやARCを含めた全コンテストの問題リンクが掲載されており、自分の解きたい問題にすぐに取り組むことができます。
加えて、ページ上部に自分のIDを入れれば、過去に解いた問題の回答状況もリンクして分かるようになっています。さらに問題ごとに色付けがされており、問題の難易度が一目瞭然にもなっています。この難易度の色を参考にすれば、自分の実力に応じた過去問にチャレンジすることができます。
【参考】:AtCoder Problems
ビギナー向けのABCにチャレンジ
十分に過去問を解いて、実力が付いてきたと感じたらいよいよコンテスト本番に挑戦しましょう。まずはビギナー向けのABCコンテストから始めていくことがおすすめです。ABCコンテストには、競技プログラミングが本当に初めての方やアルゴリズムに関する知識がなくても解ける問題が出題されるからです。ABCコンテストは通常、週1回土曜日か日曜日に開催されるため、参加しやすいというメリットもあります。
初心者がARCに挑戦するタイミングは?
ABCコンテストはビギナー向けという位置付けのため、次に難しいARCに参加するタイミングはどの程度のレベルになるのか、気になる方もいらっしゃるかもしれません。しかし実際のところ、ABCの問題を全て解くだけでもかなりの実力が必要であるため、ARCは本当に熟練してから挑戦するものと考えたほうがよいでしょう。ARCでは知識面でもかなりのレベルを求められるため、多少ABCに慣れた程度では全く歯が立たないということもあります。
AtCoderで自分のエンジニアとしてのスキルを磨こう
競技プログラミングは自分自身のプログラミングスキルの腕試しができるというだけでなく、就職に有利な経歴を付けるという側面も持っています。AtCoderは数少ない日本語にも対応した競技プログラミングサイトであり、ドキュメントも充実しているので初心者でも非常に参加しやすいと言えます。この機会にエンジニアとしてのスキル磨きのため、参加してみてはいかがでしょうか。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから