我々が利用している多くのシステムやアプリは「プログラム」によって作られていますが、そのプログラミング技術を競う「プロコン(プログラミングコンテスト)」の存在をご存知でしょうか。
プログラマが互いのプログラミングスキルを競い合う「プロコン」ですが、どんな大会なのか知りたいという方もおられるかもしれません。
はたして、プログラミングの初心者でもプロコンに参加することはできるのでしょうか。
また、プロコンで良い成績を残すにはどうするべきなのでしょう。
この記事では、プロコン(プログラミングコンテスト)についてその概要や参加方法、高い成績を残すためのコツをご紹介していきます。
プロコンに参加するための手順や参加資格はどういったものなのでしょう。具体的なプロコンの大会内容についても見ていきます。
この記事の目次
プログラミングコンテスト(プロコン)とは?
はじめに、プログラミングコンテストの基本を解説します。
順番に見ていきましょう。
プログラミングの技術を競う大会
「プログラミングコンテスト」とは、プログラミングのスキルを競うコンテストです。略して「プロコン」と言います。
プログラミングコンテストを開催する目的は、優秀な人材を発掘・育成など。プログラミングコンテストで優秀な成績を収めれば、高いプログラミングスキルを持っていることが認められます。
プログラミングコンテストにはいくつか競技形式があるので、それを理解すると自分に合ったプログラミングコンテストが選びやすいです。
プログラミングコンテストの種類はさまざま
一口に「プログラミング」といっても、作り上げるシステムの種類や表現したい分野が異なってくるため、コンテストごとに特徴が違ってきます。
最もスタンダードなプログラミングコンテストは、アルゴリズム系のプログラミングコンテスト。アルゴリズム系のプログラミングコンテストでは、出された問題について、効率的なプログラムを誰よりも素早く開発することで競い合います。
特に、アルゴリズムを考えるところでは、いかに短時間で効率よく動作するものを考えられるかが問われます。プロのプログラマーでも簡単にできることではありませんので、これに挑戦すれば大きなスキルアップが期待できます。
また、最近ではAI開発のブームもあって、AI系のプログラミングコンテストが勢いに乗っています。これは、より有能なAIを開発し、そのAIをゲームで戦わせることでAI開発スキルを問うもの。
ほかにも、開発したアプリケーション、サービスをプレゼンして、その出来栄えを審査するタイプのプログラミングコンテストも存在します。このコンテストでは、プログラミングスキルに加えて、作品自体の創造性、オリジナリティが問われます。
プログラミングコンテストは大会によって、会場で行うタイプもあれば、オンライン上で行うタイプも。特にオンライン上で行うタイプは、家にいながら大会に気軽に参加できるのが良いところです。
後ほど、プログラミングコンテストのそれぞれの種類については詳しく解説します。
幅広い年齢やレベルを対象としたコンテストがある
プログラミングの技術を競う大会であることから、参加者のほとんどがエンジニア、情報系の学生に思われがちです。
しかし、実際には老若男女、職業問わず、誰でも参加できるところがほとんど。
また、各々のレベルに合わせて問題が用意されているコンテストも存在します。プログラミング初心者であっても、簡単な問題から挑戦できるので、気軽に参加できるのが良いところです。
プログラミングコンテスト(プロコン)に参加する7つのメリット
プログラミングコンテストへの参加には様々なメリットがあります。
順番に解説していきます。
プログラミングに対する考え方が広がる
プログラミングコンテストに参加すると、プログラミングの考え方を広げられるというメリットがあります。
プログラミングを学習するときは、書籍、解説記事に掲載されているサンプルのコードを参考することが一般的。ですが、それ以外に人の書いたプログラムを見る機会はあまりありませんよね。
プログラミングコンテストでは、他の出場者が書いたプログラムを確認できます。同じ問題に取り組んでいても、出来上がるプログラムは千差万別。他人のコードを確認することは、自分では考えもつかなかったプログラミングの発想を得られます。
それらを積極的に吸収することで、自身のプログラミングの発想力を広げることにつながります。
同じように頑張るライバルが見つかる
プログラミングコンテストに参加するメリットの1つは、ライバルを見つけるきっかけになること。
同じようにプログラミングをやっている人に出会う方法は、プログラミングスクールに通ったり、勉強会などに参加したりするやり方があります。
加えて、プログラミングコンテストでは多くの出場者が集まるので、同じように頑張るライバルを見つけられる貴重な機会となるでしょう。
自分の現在位置を知ることができモチベーションになる
趣味でプログラミングをしているときに気になるのが、現時点でどの程度スキルが身についているのかということ。
ここでいうスキルとは、単に目的通りに動作するプログラムを開発できることではありません。いかに効率的でエレガントなコードが書けるのか、そしていかに素早くコードを書けるのかが本物のプログラミングのスキルといえます。
プログラミングコンテストでは、他の出場者と競い合う形で自身が現在どの程度のスキルを持っているのかが把握できます。スキルが把握できれば、今後のプログラミングの勉強に対するモチベーションアップにもつながるでしょう。
プログラミングのスキルアップにつながる
プログラミングコンテストに参加することで、プログラミングのスキルアップにつながります。
プログラミングコンテストでは、出された問題に対し、プログラムの仕様、アルゴリズムを考えてコードに落とし込んでいきます。簡単なように思えますが、これができるようになるには相当な訓練が必要。
プログラミングコンテストは、他の出場者と競い合いながらプログラミングの訓練を受けられる場と言えます。
賞金がもらえるプログラミングコンテストもある
プログラミングコンテストのなかには、優勝者、あるいは入賞した人に賞金が贈られるものがあります。
もし、高度なプログラミングスキルを持っているのであれば、プログラミングコンテストでそのスキルをフル活用し、賞金をもらえる可能性も。
賞金獲得を目指して、プログラミングスキルを磨くといったスタンスでプログラミングコンテストに臨むのも良いですね。
大会の結果が実績になる
プログラミングコンテストで良い成績を残せれば、それが自分のプログラマーとしての実績にもなります。
コンテストの結果が良かったということは、それだけプログラミングの正確性であったり、効率の良さの証明にもなるのです。
もしプログラマーとして仕事をしているのであれば、今後新たな仕事を獲得したり、転職したりするときのアピールポイントにも使えます。
もちろん、初めてプログラマーに就職する際にもコンテストの結果は、自分のスキルをアピールできる経歴になるでしょう。
就職・転職につながる場合も
上記でも触れていますが、プログラミングコンテストに参加し優秀な成績を収められれば、就職・転職で有利になる場合も。
最近ではプログラミングコンテストの存在が広く認知されており、プログラミングコンテストの参加履歴を気にする企業も出てきています。
これは、プログラミングコンテストに参加でき、なおかつ優秀な成績を収めているのであれば、それだけ高度なプログラミングスキルを持っていると判断できるからです。
したがって、プログラミングコンテストに参加すれば企業の目に止まりやすく就職・転職を優位に進められると言えるでしょう。
プログラミングコンテスト(プロコン)の5つの種類
プロコンにも様々な形式があり、それぞれで競い合うポイントが異なってきます。
ここからは、プロコンの具体的な種類について見ていきます。
アルゴリズム系プログラミングコンテスト
出題されたプログラムをいち早く組むことが要求されるコンテストです。
課題に対して、それを満たすロジックをいかに素早く導き出すかという能力が問われます。
迅速さを競う様から、競技プログラミングとも呼ばれています。
AI(人工知能)系プログラミングコンテスト
AI(人工知能)を使って競い合うコンテストです。
自作のAI(人工知能)をゲームのような形で戦わせたりする形式が多く、プログラミング言語としてはPythonを使うことが多いです。
プログラムを組む速度というよりも、いかに多彩な状況に対応できるAI(人工知能)を作り上げれるか、ということが試されます。
ソフトウェアやネットワークなどのセキュリティ系プログラミングコンテスト
ハッキングをしたり、コードのバグを探したりといった、ソフトウェア、ネットワークのセキュリティに関するプログラミングスキルを競うコンテストです。
システムの「穴」を探すため、セキュリティに関する高度な知識や技術が必要となってきます。
ショートコーディング系プログラミングコンテスト
少ないコード(ビット数)でプログラムを組むことを競うコンテストです。
プログラムは同じ動作をするものでも、人によってシステムを実現するためのコード数が異なってきます。
より効率的に、短い記述でシステムを作り上げれるかということを競うのです。
作品系プログラミングコンテスト
プログラミングを使って作品を作り、その良し悪しを審査するコンテストです。
アプリやシステムなど、なんらかのテーマに基づいた作品を作り上げ、その出来で競い合います。
テーマが決められている場合と、自由に作品を作る場合とがあります。
プログラミングコンテスト(プロコン)の大会
ここからは、各分野ごとにおすすめのプロコンについて見ていきます。
大会ごとに異なった特徴を持つため、プロコン参加を目指す方はぜひ参考にしていただきたいです。
おすすめのアルゴリズム系プログラミングコンテスト
プログラムを効率的に、素早く組み上げることが要求されるアルゴリズム系コンテストですが、代表的な大会は以下のようなものが挙げられます。
AtCoder Beginner Contest
AtCoderは日本初のプログラミングコンテスト運営会社です。
2012年に設立されて以来、年々活動の幅を広げており、コンテストの運営を定期的に行うだけでなく、優秀な学生を発掘することで各企業のソフトエンジニア採用の支援なども行っています。
そんなAtCoderが運営しているプログラミングコンテストの中でも、AtCoder Beginner Contestは特に初心者向けとして開かれているものです。
競技プログラミングが初めてだったり、アルゴリズムに関する知識を必要としない方にとっても解答可能な問題が半分前後出題されます。
プログラミング初心者にとっても十分挑むことができる内容となっています。
Code Jam
問題を解き、「ソースコード」と「与えられた入力に対する出力結果」を提出し、その出来を競います。
問題にはsmallとlargeの2種類が用意されており、それぞれの解答に対し別の配点がついています。
smallの場合はデータセットのダウンロードから4分以内が提出期限で、間違えた場合でも4分以内ならば再提出が可能です。
また、smallは4分経過後でも別のデータセットを使うことで再チャレンジができます。
一方、largeはデータセット取得から8分以内が提出期限で、こちらも時間内なら再提出は可能ですが提出結果は竸技時間中は分からず、再チャレンジも不可能です。
異なる形式の二問を解くことで、その成果を競い合います。
出典:Code Jam – Google’s Coding Competitions
TopCoder
TopCoder社が主催するプログラミングコンテストです。
「Single Round Match (SRM)」「Marathon Match」「Bug Race」等の種目からなり、現在世界で最も勢いのある競技プログラミングコンテストの一つとなっています。
TopCoderの各種目に参加すると自分のプログラミングの腕前を表すレーティングと呼ばれる数値が付けられ、この数値によって全国を対象としてランキングがつけられます。
正確なコーディングとメモリや処理速度を意識したコーディングを求められることが特徴になります。
全国の参加者のコードを見ることもできるので、解き方や書き方を参考にし、取り入れることでプログラミングの学習にもつながります。
出典:TopCoder
dwango Programming Contest
dwangoが主催するプログラミングコンテストです。
プログラミングの正確さとアルゴリズム力で競う、個人戦の競技プログラミングコンテストになります。
予選・本選の二部構成となっており、本選の成績次第ではその年のdwango新卒採用において、初期の面接をパスできる可能性があります。
プログラミングコンテストに加え、就職のチャンスにもつながるコンテストとなっています。
おすすめのAI(人工知能)系プログラミングコンテスト
AI(人工知能)を用いたプログラミングコンテストも、近年では様々なものが存在しています。
以下が、AI(人工知能)に関する代表的なプログラミングコンテストです。
SamurAI Coding
AIの制御をする二人のプレイヤーが「SamurAI Jockey (サムライジョッキー)」という名のゲームで競いあうという形式のコンテストです。
SamurAI Jockeyとは、AIを制御する二人のプレイヤーがスタート位置から開始し、障害物が設置されたレースコース上でステップごとに位置を変えながらゴールに早く到達することを競うゲームです。
プログラムによって作り上げた自身のAIを相手と対戦させることで勝敗を決めるという、スポーツやゲームの大会に近い形式のコンテストになります。
CodeVS
約1,000名を超える予選挑戦者数からNo1プログラマを決める「ゲーム・AIコンテスト」です。
まずはポイント制の予選があり、その上位8名によって決勝が行われます。
プログラミングするのは戦略ゲームのAIで、優勝賞金も豪華なコンテストになります。
決勝戦はニコニコ生放送で実況されるなど、AI系コンテストの中でも有名です。
出典:CodeVS
codingame
codingameはフランスIT企業「CodinGame」が提供している無料のプログラミング学習サイトで、この参加者同士で定期的にプログラミングコンテストを開催しています。
20種類以上の言語を学ぶことができるのが特徴で、学習サイト内のSNSも非常に充実しています。
国内だけにとどまらず、海外のプログラマーの実力を見ることができるのも、大きな利点でしょう。
世界中のプログラマとつながることができるため、普段は思いつかないような新たな視点やアイデアを得ることもできるのです。
プロコンのライバルとしてだけではなく、共に協力してプログラミングを学ぶこともできます。
サイト内での学習で出される課題と同様の形式でコンテストが行われ、このスコアによってランキングがつけられる仕組みとなっています。
パズルや脱出ものといった「ゲームプログラム」をベースとして学習ができるので、AIの中でも特にゲーム系に興味を抱かれている方にとってはおすすめです。
出典:codinggame
おすすめのセキュリティ系プログラミングコンテスト
セキュリティに関して様々な観点についてのプログラミングを競い合うコンテストになります。
セキュリティ系コンテストには、以下のようなものが挙げられます。
SECCON
情報セキュリティをテーマに多様な競技を開催する、情報セキュリティコンテストイベントです。
もともとは実践的情報セキュリティ人材の発掘や育成、技術の実践の場の提供を目的として設立されました。
SECCONの競技には、攻撃・防御両者の視点を含むセキュリティの総合力を試すハッキングコンテスト「CTF (Capture the Flag)」や、あるテーマにあわせてプログラムを作成して披露するプログラミングコンテスト「ハッカソン」などがあります。
出典:SECCON
おすすめのショートコーディング系プログラミングコンテスト
少ないコードで、いかに効率的なプログラミングを行えるかを競うコンテストです。
ショートコーディング系コンテストには、以下のようなものがあります。
コードダンジョン
こちらは正確には「プログラマ向けのコードパズルサイト」になります。
サイトに掲載されるショートコーディングの問題を解いていく形式で、より少ないコードで書くように競い合うことから「コードゴルフ」とも呼ばれます。
ダンジョンのレベルが上がるごとに「禁止文字」が追加されていくため、限られた条件下でアルゴリズムを駆使して問題を解いていく必要があります。
出典:コードダンジョン
おすすめの作品系プログラミングコンテスト
作品系コンテストでは、作り上げたシステムやアプリの出来によってプログラミング能力を競い合います。
作品系コンテストは以下のようなものが挙げられます。
U-22 プログラミングコンテスト
経済産業省が1980年から主催している、作品系プログラミングコンテストです。
優れた人材の発掘・育成を目的に開催しており、現在では世界で活躍していくような若者を応援するため、多くのIT・ソフトウェア企業もスポンサーとなり協賛しています。
コンテスト入選者にはIPAが行う未踏事業への推薦が可能です。
また、起業したい方へのスタートアップ支援など、プログラミングによってものづくりを行っていこうとする人々の支援も充実しています。
HSPプログラムコンテスト
2003年から始まったプログラミングコンテストです。
作品系コンテストの中でも非常に長い歴史を持つコンテストで、いまもなお多数の参加者が集まります。
作品も小規模なものから大作、ツール系からゲーム系など、さまざまな分野をカバーしています。
ゲーム感覚で楽しめるプログラミングコンテスト
プログラミングコンテストの中には、ゲーム感覚で楽しみながら技術を競い合えるものがあります。
以下は、一般的なプログラミングコンテストとは一風変わったものになります。
ハル研プロコン
ハル研究所が主催するプロコンになります。
元々は1995年に数名のプログラマーの集まりとして発足したのですが、今では会社の公式イベントとなっています。
2003年からは中学生、高校生、大学生といった学生の方々にも参加を呼びかけており、幅広い年代のプログラマーが参加しています。
ステージを攻略したり、特定のキャラに対するアルゴリズムを競ったりと、ゲーム色が強いのが特徴です。
興味のある方は、すでに終了したコンテストの問題にサイトから参加することも可能なので、まずは擬似参加という形で挑戦してみるのも良いでしょう。
出典:ハル研究所
この記事もオススメ
プログラミングコンテスト(プロコン)に応募する方法とポイント
プロコンに参加する際には、まずは応募する必要があります。
この応募方法は大会によって様々ですが、多くの場合は各大会のホームページから応募用紙をダウンロードして郵送する形をとっています。
なかにはネットで応募をすることもできるため、参加したいプロコンのサイトにて確認すると良いでしょう。
プログラミング初心者でも応募は可能
プログラミングコンテストには、初心者向けの大会もあります。
コンテストや大会と聞くと、プログラミング上級者、熟練者ではないと参加できないように思われがちです。しかしそんなことはありません。
プログラミングの基礎を身につけただけ、という人でも参加できる大会もあるので安心です。
初心者向けの大会も数多く存在するため、学んできたプログラミングの基礎を試すという意味でも、一度プロコンに参加してみるのも良いかもしれません。
なぜプログラミングコンテストに出場するのか目的を決める
プロコンに挑む上で、まず最初に肝心となるのは出場する「目的」を決めることです。
プロコンに参加する目的を決めることで、勉強をしたり、新しい大会に挑戦したりする意欲が出てきます。
実際、プロコンに参加される方々は様々な理由から応募し、ライバル達と激戦を繰り広げています。
「自分のプログラミングスキルを高めたい」「大会で好成績を残したい」「ライバルや仲間と出会いたい」「チームを組んで1つの目標を達成する喜びを得たい」など、人によってプロコン参加のきっかけは多種多様です。
目的を定めることはモチベーションの向上にもつながり、結果としてコンテストでも良い結果に結びつきやすいのです。
プログラミングコンテスト(プロコン)に向けてスキルを向上させる方法
プログラミングコンテストに出場するプログラマーたちは、非常に高いレベルを身につけています。
初心者向けのコンテストもありますが、やはりより高度なスキルや実績を求めるならば、レベルの高いコンテストに挑むことになるでしょう。
そうなった場合、参加者のレベルもどんどん上がっていくため、一般的な技術や知識だけでは遅れをとってしまいます。
このため、大会で好成績を残したいのであれば、プログラミングの勉強を重ねてより専門的なノウハウを身につけ、スキルアップを行う必要があります。
独学で勉強する
スキルアップの方法としては、まず参考書や無料のプログラミング学習用Webサービスなどを使って学習する方法が挙げられます。
すでにプログラミングのスキルを持っていたり、プログラミングを仕事としている人ならば、独学でも早いスピードで勉強ができるでしょう。
一方、初心者だと開発環境の設定などに戸惑ってしまい、プログラミングに着手する以前の地点で手こずってしまう可能性は大きいです。
このため、プログラミングを一から独学で身につけるとなると時間がかかってしまうかもしれません。
以下の記事では、プログラミングを独学で身につけるための方法について解説していますので、参考にしてください。
過去問や優秀者の作品を参照する
各大会のサイトでは、過去問や過去の成績優秀者の作品が掲載されていることもあります。
これを参考にすることで、どのような問題が出題されるのか、どのような作品が高く評価されるのか傾向をつかむことができます。
コンテストで良い成績を残すためには、そこで重視されているポイントをあらかじめ押さえた上で、意識しながらプログラミングすることが重要です。
審査において高評価を得やすくするためにも、大会に出場する前にこれらを参照しておくことをおすすめします。
勉強会に参加・開催する
初級者向けから上級者向けまで、勉強会は現在日本のいたるところで開催されているため、自分のスキルにあった勉強会に参加することでよりスキルを磨くことができます。
また、同じようにプログラミングに取り組む人たちと交流することもできるため、情報交換などもでき新たな視点や技術を手に入れるチャンスにもなるでしょう。
身近にプログラミングをやっている人や、プロコンに参加している人がいるならば、自分で勉強会を主催するのも効果的な方法です。
プログラミングスクールを利用する
プログラミングスクールならば、カリキュラムが最短で3ヶ月〜半年で終わります。
このため、初心者がプログラミングの勉強をするのであれば、スクールに通うと非常に効率が良いです。
また、プログラミング経験者であっても、新しい言語を学ぶ時や改めて基礎からスキルを磨くのであれば、スクールを利用するのもおすすめといえます。
はじめての転職、何から始めればいいか分からないなら
「そろそろ転職したいけれど、失敗はしたくない……」そんな方へ、テックキャンプでは読むだけでIT転職が有利になる限定資料を無料プレゼント中!
例えばこのような疑問はありませんか。
・未経験OKの求人へ応募するのは危ない?
・IT業界転職における“35歳限界説”は本当?
・手に職をつけて収入を安定させられる職種は?
資料では、転職でよくある疑問について丁寧に解説します。IT業界だけでなく、転職を考えている全ての方におすすめです。
「自分がIT業界に向いているかどうか」など、IT転職に興味がある方は無料カウンセリングにもお気軽にお申し込みください。