はじめに
プログラミング学習、継続できていますか?
教材でしっかりと基礎を学ぶのはもちろん大切ですが、それだけでは何となくモチベーションが続かない…
そんな方は「競技プログラミング」にチャレンジしてみてはいかがでしょうか。
「でも、競技プログラミングって凄腕エンジニアの人たちが参加するんじゃないの…?初心者レベルが参加したって歯も立たなそう…」と思われるかもしれません。
確かに、少し前まではそのような風潮がありましたが、プログラミングを学ぶ人口が増えるにつれ初心者でも楽しく参加できるような仕組みが整ってきています。
この記事では、競技プログラミングをおすすめする理由と初心者の参加方法について説明します。
競技プログラミングとは
競技プログラミングとはその名の通り、プログラミングの技術を競うコンテストです。
同じ問題を解き、コーディングにかかる時間や完成したプログラムのパフォーマンスを競います。
Googleやドワンゴ等の有名なIT企業が主宰したり、インターネット上の競技プログラミング特化サイトで定期的に開催されることが多いです。
近頃では新卒学生のスキル判定基準として採用に用いられることもあります。
初心者が競技プログラミングをするメリット
上級者だけのものと思われがちな競技プログラミングですが、初心者にこそおすすめの理由があります。
期待できる主なメリットは下記です。
モチベーションの維持
競技プログラミングにはレーティングというものがあり、初心者レベルからスタートして上位に入ることで上がっていきます。
単に課題を解いていくのとは違いゲーム感覚で続けられるので、モチベーションを保つうえで良い刺激になるでしょう。
もし解けなくても、どうすれば解けたのか?の答え合わせをするだけで良い勉強になります。
実行速度やメモリ使用量を意識できるようになる
プログラミング学習を始めたばかりの時はとりあえず動けば良いという考えになりがちですが、競技プログラミングでは実行速度やメモリ使用量のことも意識しつつ、パフォーマンスの高いプログラムを組まなければなりません。
教材で取り扱うような初歩的なプログラミングでは規模が小さいので、多少のコードの違いではパフォーマンスに大きな差は出ませんが、実際のエンジニアが働く現場では大規模なシステムを取り扱います。
この時に少しでも効率の悪いコードを入れてしまうとシステム全体のパフォーマンスに関わるため、早いうちからこれを意識できるようにしておくのは重要なことです。
就職でアピールしやすい
近年は企業の採用活動でも競技プログラミングに注目する動きがあり、有名なコンテストで良い点を納めているというだけで内定が決まる例もあります。
そこまでは目指せないとしても、競技プログラミングサイトに参加してレーティングは○○を持っている、というような話ができればアピールになります。
初心者ならばなおのこと、実務経験でのアピールができない分、こういったものを活用してスキルレベルを提示するのも良いでしょう。
高いスコアである必要はなく、プログラミングに関わりを持とうとする姿勢も評価対象になり得ます。
参加には注意点も…
先述の通り、初心者が競技プログラミングに参加するのは大いにおすすめなのですが、いくつか注意点もあります。
自分なりの目標を決めてチャレンジすること
競技プログラミングでは、頂点に近づけば近づくほどやはり初心者にとって縁遠い世界となっているのが事実です。
世の中には天才エンジニアと呼ばれる人々がいて、初心者に限らず、エンジニアを何年もやっているような人でも敵いません。
競技プログラミングで良い順位を取ることが目的になってしまわないよう、自分なりの目標を立てて参加しましょう。
順位に一喜一憂して振り回されることなく、「エンジニアへ転職すること」等、自分が定めた最終目標に到達するための手段として楽しむことを心がけてください。
あくまで競技用であると意識すること
競技プログラミングで「良い点を取れるコード」が、実際のエンジニア現場にとって「良いコード」とは限りません。
この2者では目的が違っているためです。競技プログラミングではコーディングの速さや実行速度・メモリの使用効率の良さが最優先とされます。
そのため、業務現場で重要とされる再利用性や、誰が読んでも分かりやすい可読性等は一切無視され、何をやっているコードなのか非常に分かりにくいことが多いです。
ハイレベルに近づくほどこの傾向が高くなりますので、初心者レベルでは問題にならないことが多いですが、上級者のコード等を参考にする際は、この点を意識するようにしましょう。
代表的な競技プログラミングサイト
ここで、多くの人が参加する代表的な競技プログラミングサイトを紹介していきます。
AtCoder
AtCoderは、日本初の競技プログラミングサイトです。登録者数は20万人近くに上り、そのうち半分が日本人です。
毎週末にコンテストが開催され、レベルごとに分かれているので初心者でも参加しやすいのが特徴です。
また、日本の名だたるIT企業が主宰するコンテストもAtCoder上で開催されることが多く、優秀なエンジニアと企業の橋渡しの場ともなっています。
Google Code Jam
Google Code Jamは、Googleが主宰するプログラミングコンテストで、2003年から開始されました。
4万人近くが一挙に参加する年に1度の大きな大会です。数ラウンドに分かれており、勝ち進んだ25名により最終決戦となります。
この一歩前のラウンドで残った1,000人には特製Tシャツが贈られ、エンジニアの中では勲章のように扱われるようです。
Topcoder
Topcoderは、60万人が参加する世界最大規模の競技プログラミングサイトです。
このサイトでトップレベルのレーティングを持つユーザーは「レッドコーダー」と呼ばれ一目を置かれる存在となっています。
競技プログラミングに参加するには?
では、初心者が競技プログラミングに参加するにはどうすれば良いのでしょうか。
基本的な言語スキルを身につける
ほとんどの競技プログラミングサイトでは、同じ問題について複数の言語で回答できるようになっています。
例えばAtCoderを例にとればC言語、C++、Python、Java、JavaScript等様々な言語での回答が可能です。
言語の性質の違いから、競技プログラミングで本格的に上位を目指したい場合はC言語やC++が有利ですが、そうでなければ長い目で見て使い道の多いJavaScriptがおすすめです。
まずは言語を決めて一通りの基本スキルを身につけましょう。
まずは登録してビギナー問題を解いてみる
ある程度基本を身につけたら、早速上記で紹介している競技プログラミングサイトや、その他自分がやってみたいコンテストに登録してみましょう。
ビギナーレベルであればかなりシンプルな問題が多いので、最近プログラミングを始めたばかりの方でも練習問題代わりに解くことができるでしょう。
解けない問題が出てきたら学習を深めるチャンスです。そこで投げ出さず、プログラミング学習に使っている教材なり、書籍なりを確認して解き方を確認しましょう。
この往復活動がモチベーションを保ちつつ楽しく学習を進めるコツです。
まとめ
競技プログラミングの魅力と初心者へおすすめする理由を説明しました。
ある程度以上のレベルでは数学的知識が無いと十分に競えない問題もありますが、ここで負けじと数学の学習を始めてスキルを磨くも良し、見切りをつけてまたプログラミング学習に専念するも良しです。
モチベーション継続の場としてうまく活用し、プログラミングのスキルアップにつなげていきましょう。
動画でプログラミング入門をしよう
オンライン学習サービスProglus(プログラス)でプログラミングを学び、創れる人になろう!
プレミアムプランを2週間無料体験しよう
今すぐ詳細を確認する