キャリア

AtCoder(アットコーダー)は日本で最初のプログラミングコンテストのサービス

AtCoderホームページのスクリーンショット

AtCoderという名前を聞いたことがある方もいらっしゃるかもしれません。いわゆる“プログラミングコンテスト”というのを行っているサービスです。

プログラミングコンテストとは、制限時間内に与えられたプログラムの問題(例えば、n角形の対角線の本数を出力してください、みたいな)をたくさん解いて得点を競うってやつです。海外でもHackerRankのような同様のサービスなどがありますが、それの日本版です。

HackerRank(ハッカーランク)はプログラミングの問題を解いて企業からのオファーが届く
HackerRank(ハッカーランク)はプログラミングの問題を解いて企業からのオファーが届くサービス実際にプログラムを勉強すると、簡単なゲームみたいなのは作れるようになったけど、それ以降何をすればいいのかわからない……とか実際に何になる...

また、AtCoderJobといってAtCoderの成績によって企業からのオファーが来るサービスもあります。

株式会社AtCoder

株式会社AtCoderは高橋直大さんという方が代表取締役を務めている会社で、プログラミングコンテストの開催を主な業務としています。高橋さん自身がかなりの実力者で、大会にもよく出ていたりします。Twitterもやってらっしゃるので、覗いてみるのもいいかもしれません。(@chokudai)

AtCoderを実際にやってみるときの流れ

AtCoderのサイトにいってまずは登録します。1分もかからず登録は完了して、こんな画面が現れます。

チュートリアルからAtCoder Beginner Selectionというサイトに飛んで問題を見てみると、たくさんあります。「はじめてのあっとこーだー」という問題を解いてみましょう。

ここでは解答例が紹介されているので、それをコピーして(本当は自分で考えるんですけれどね)提出してみましょう。

これを提出すると、

こんな感じ。ACっていうのはAcceptedの略でオッケーですよってことですね。だめだとWA(Wrong Answer)って出ます。これが一連の流れですね。実際のコンテストでは、時間制限の中で、自分でソースコードを書いて、提出して得点を稼ぐって感じです。

AtCoderの特徴

・過去問が大量にあって勉強しやすい
・毎週土曜日の夜にコンテストが開催されている
・コンテストは習熟度に合わせていろんなコースがあって初心者でも楽しめる
・コンテストごとにレートの変動がある
・コンテストが終わった後に1時間ほどの生放送解説がなされている
・AtCoderJobsで就職・転職できる
・Pythonなどの遅い言語は厳しい

過去問が大量にあって勉強しやすい

今までに大量にコンテストが開催されてきていて、いろんな問題があがっているので、自分の苦手なところや勉強したいところに合わせて問題を解くことができます。

AtCoderはコンテストがたくさん開催されています。例えば223日現在では、AtCoder Beginners Contest(ABC)118回。AtCoder Regular Contest(ARC)103回。AtCoder Grand Contest(AGC)30回。ABCARC14問でAGC16問なので、この3つだけでも単純に1064問あるわけです(重複もありますけれど。)。なので、これを解いていくことで、とても勉強になります。

毎週土曜日の夜にコンテストが開催されている

毎週決まった時間にコンテストが開催されているのはありがたいです。慣れてくると毎週参加できてプログラムのスキルの向上にとても役立ちます。

コンテストは習熟度に合わせていろんなコースがあって初心者でも楽しめる

張り切ってやろうとしても、上級者と一緒のコンテストではなかなか上位に行くのは難しいですし、モチベーションも上がりません。しかし、初心者はABCと呼ばれる、AtCoder Beginners Contestというのに参加すれば、同じような実力の人と戦えてモチベーションにもつながります。

コンテストごとにレートの変動がある

コンテストが終わると、その時の自分の成績に応じてレートが変動します。そして、そのレートによってIDの色が変わり、オレンジとか赤というように暖色系のレートが高くなっています。「今水色だわ」「オレンジにあがれた!!」みたいに達成感を味わうことができます。

コンテストが終わった後に1時間ほどの生放送解説がなされている

コンテストが終わった後、スライドを使って1時間の生放送解説があります。これは自分の解けなかった問題を復習するのにとても役立ちますし、何よりとても分かりやすいです。

AtCoderJobsで就職・転職できる

割と最近できたサービスなのですが、とても好評です。例えばこんなツイート。「就活生として思うけどJobs Sランクはほんとに強い、それ以外何のスキルもなくても「Sランクだしとりあえず採用しとくか」で倍率9倍のインターン抜けれたり、Twitterで金くれってツイートしたらほんとにバイトさせてくれたり、突然インターン来ませんか(選考受けませんか)って連絡が飛んできたりする」Jobs SランクとはAtCoderで黄色のレートだともらえるランクだそうです。(かなりすごいです)実力がある人にとってはうってつけのものです。

AtCoderJobs公式
https://jobs.atcoder.jp/

AtcoderJobsのサイトにいってみると、プロフィール登録していなくても求人をみることができて、例えばインターンとかで調べてみるとこんな求人がありました。

これはAtCoderで青色のレート以上の方のみの求人ですが、アルバイトで最低時給5000円はすごいですね。AtCoderで青色のレート(1600以上)というのはそれだけの技術の証明になるということでしょう。でもむしろこういう求人よりも要求ランクは低いけど、時給が2000円ぐらい、みたいなものや新卒採用の求人などいろいろあるので、見るだけなら簡単ですし覗いてみても良いかな、と思います。

Pythonなどの遅い言語は厳しい

難易度の高い問題になると問題の実行時間がかなり厳しく制限されているので、Pythonなどの遅い言語では解けなくなります。やりこむって決めるなら最初からC++などの言語で解くがよいと思います。

プログラミング言語の速度について:Java、Python、C++

競技プログラミングではPythonよりもJavaC++が使われることが多いのですが、それは前に書いた通り、実行速度が違うからです。AtCoderの問題では、実行制限2secみたいな縛りがついています。すると、同じアルゴリズムでもc++javaならACできるけど、PythonだとTLE(時間切れ)になってしまう、という状況が発生してしまうことがあります。

そもそもPythonがなぜ遅いかというのは難しい問題なのですが、Pythonは「スクリプト言語」と呼ばれるくくりに位置しています。このスクリプト言語というのは、簡単に言ってしまえば人間が理解しやすくした言語、というわけで難しい動作を勝手にやってくれます。その分だけ遅くなるというわけです。PythonC++10100倍ほど遅くなることもあるようです。

AtCoderの勉強法の例:AtCoder Problems

有志で作ってくださっているサイトにAtCoder Probremsというのがあって、自分の解いた問題を集計して出してくれる他、問題がコンテスト順に並んでいてとても役に立ちます。 

緑色の部分がACした問題です。WAしていると黄色に表示されます。例えばこれを利用して、ABCC問題だけ埋めるぞ!みたいな勉強ができてとても便利です。また、こういった集計も見ることができます。

AtCoder Problemsの集計

AtCoderの評判・口コミ

AtCoderjobsに関するツイート。「AtCoderJobsいいね。「就活に役立つネトゲ」は本当だった」本当にこういう感じがします。ネトゲのような感覚でやってたものが就活に生きるなんてすごいですね。中途採用の応募もよくありますし、インターンで時給3000円なんてのもあります。(それなりの実力を求められますが) プログラミングを仕事にしたいなんて人は絶対にやっておいて損はないでしょう。

まとめ

よい問題がたくさんありますので、プログラミングを勉強したいという人にももちろんお勧めできますし、なによりプログラミングを仕事にしたい人にとってはかなり素晴らしいサービスであることは間違いありません。最初は楽しみながらプログラミングの勉強しているつもりが仕事になっていた、みたいなサービスです。

AtCoder公式
https://atcoder.jp/