【プログラミング入門】おすすめプログラミングコンテストを徹底解説



【プログラミング入門】おすすめプログラミングコンテストを徹底解説

皆さんはプログラミングコンテストというものをご存知でしょうか。プログラミングコンテストとはプログラミングの技術を競うコンテストのことです。

専門的な知識を競うコンテストのため現在ではそこまで一般的ではありませんでしたが、プログラミングの重要性が高まる今、コンテストの数も増えており自分の知識を試したいエンジニアがたくさん挑戦しています。

現在では現役のエンジニアだけではなく中高生などの低年齢向けのコンテストなども開催され、参加する年齢層も幅広くなっています。そこで今回は、そんなプログラミングコンテストの種類や内容など挑戦してみたくなるような情報をできるだけ分かりやすくお伝えしたいと思います!

目次
  1. プログラミングコンテストとは一体?
  2. プログラミングコンテストの種類
  3. おすすめプログラミングコンテスト
  4. おすすめプログラミング学習サイト
  5. まとめ

プログラミングコンテストとは一体?

前置きでも少し説明しましたが、プログラミングコンテンストとは一般的にプログラミングの能力、スピード、正確さなどプログラミングに必要な技術を競うコンテストのことです。

ただ、プログラミングのコンテストといってもプログラムを作る技術を競うだけではなく、現在ではセキュリティやAIに関するものなど様々なコンテストがあり、プログラミングというよりコンピューターに関する技術のコンテストと言った方が良いかもしれません。

高度なプログラミングやアルゴリズムに関するコンテストなど、いかにも現役エンジニア向けというコンテストもありますが、22歳以下のみ挑戦できるコンテストや小中学生向けのコンテストなどもあり、幅広い年齢向けに開催されているのも特徴です。人数も1人からチームで行うものまであります。

プログラミングコンテストの種類

様々なカテゴリのプログラミングコンテストがありますが、大きく分けると以下のカテゴリに分類できます。 image

プログラミング作品に関するコンテスト

プログラミング作品に関するコンテストは、現在あるコンテストの中では最もポピュラーなコンテストと言えます。具体的にはプログラミングでソフトウェアを作成し、その内容を競うというものです。

開発するソフトウェアはコンテストによって異なり、テーマに沿ったものや自由に開発するものなど様々です。過去の受賞作品の中にはゲームや電子回路のシミュレータ、学習支援アプリ、中にはオリジナルのプログラミング言語を作るという人もいて、自分の才能を使って自由に開発することができます。

自由に開発できるものはプログラムに関する高度な知識がなくても基本的な知識があれば、あとは他の人が作らないようなオリジナリティのある作品が作れれば入賞の可能性がありますので、プログラミングを始めて日が浅い方にもオススメのコンテストです。

アルゴリズム問題に関するコンテスト

アルゴリズム問題に関するコンテストは「競技プログラミング」とも呼ばれ、出題された問題に対してその要求を満たすプログラムを時間内、またはできるだけ早く提出するというものです。少し前まではプログラミングコンテストと言えばこのコンテストのことを指すことがほとんどでした。

このコンテストでは同じ問題を多数の出場者が解き、点数を競い合います。問題は数学的な問題をプログラミングを使って解くものが多いですが、その中でもメモリの制約や処理時間の制限などコンピューター的な制約が多くみらるため、コンピュータープログラミングの知識のほかに問題を読み解く力なども試されます。

作品を作るコンテストよりも他人と競うという意味合いが強いコンテストとなり、自分のスキルを試してみたいと思っている方やプログラミングやアルゴリズムの知識を高めたいと思っている方にオススメです。

コンピューターやネットワークセキュリティに関するコンテスト

このコンテストは主にハッキングなどの外部からの攻撃にどう備えるかというセキュリティに関するコンテストのことです。競う内容は色々ありますが、最も有名なのはCTF(キャプチャー・ザ・フラッグ)形式と呼ばれるものです。

具体的には2つのチームにサーバーと呼ばれるコンピューターを渡され、自分のサーバを守りつつ相手のサーバーを攻撃する「攻防戦形式」と、コンピューターやコンピューターの中に存在するファイルやWEBページから隠されたFlag(キーワード)を探す「クイズ形式」の2種類があります。

自由に作品を作ったりするよりもセキュリティに関する専門知識が問われるため、初心者には少し敷居が高いコンテストと言えます。

AIに関するコンテスト

AIに関するコンテストは人工知能に関するプログラミングコンテストで、テーマに沿って作成したAIで競われます。この分野は昨今のビッグデータ活用など最先端のIT技術と密接に関係しており注目度も高いコンテストです。

コンテストの内容は作成したAI同士を戦わせたり、日々の生活や社会をもっと便利に楽しくできるAIを作成したりと様々です。このコンテストはAI開発技術を競うという点と、AIをどう活用するかという点の2点がより重要となってきます。

これからのIT社会を支えるAIの技術に興味がある方はぜひ挑戦してみてください。

おすすめプログラミングコンテスト

以下のコンテストは2018年9月3日時点で開催されているコンテストとなります。

U-22 プログラミングコンテスト

image

U-22 プログラミングコンテストは22歳以下であれば誰でも参加できるプログラミングコンテストです。作品に関しては未発表のオリジナル作品なら何でもよく、プログラミング言語や作品の形態もWEBアプリやモバイルアプリなど特に制限は設けられていませんので自由な発想で挑戦できます。

審査のポイントはビジネスの可能性も期待できるプロダクトかどうか、技術的に優れているか、独創的でアイデアに優れているかの3点となります。最もすぐれた作品には経済産業大臣賞が与えられ副賞として奨学金などもあります。

若い世代をターゲットにしており、より自由な発想が求められるコンテストです。年齢さえ合えば最も敷居の低いコンテストだと思いますので、気軽にチャレンジしてみてはいかがでしょうか。

AtCoder

image

AtCoderは毎週1、2回、2時間程度のプログラミングコンテストをオンラインで行っているインターネットサービスです。コンテストの参加者は1万人超え、中国やインド、ロシアなど様々な国の人が参加しているコンテストです。

内容はアルゴリズムに関する問題をインターネット上で問いて提出するという形式になります。初心者でも問題なく参加できるようにチュートリアルや初級者向けのコンテストなどが用意されています。

定期的にコンテストが開催されるため、ちょっとした腕試し気分で参加できるのもオススメです。もちろん高度なコンテストもありますので腕に自信のあるエンジニアの方も挑戦してみてください。

SECCON

image

SECCONは情報セキュリティをテーマに多様な競技を開催する情報セキュリティコンテストです。コンテスト内容としてはCTFの他に、テーマに合わせてプログラムを作成する「ハッカソン」と呼ばれるものがあります。

SECCONは上記のコンテストのほかにCTF未経験向けの勉強会「SECCON Beginners」や情報セキュリティに興味のある女性を対象にした「CTF for GIRLS」というユニークなワークショップも開催しています。

情報セキュリティも今後IT業界で重要になる分野の1つだと思いますので、興味のある方はワークショップからでも参加してみてはいかがでしょうか。

全国小中学生プログラミング大会

image

全国小中学生プログラミング大会は小学生から中学生で行われるプログラミングコンテストでPC、スマートフォン、タブレットで動作するソフトウェアからロボットや電子工作など幅広い分野のIT作品が応募できます。

2018年度のテーマは「こんなせかいあったらいいな」とされており、小中学生らしいのびのびとした発想に基づく作品が求められています。過去の受賞作品には迷路の最短距離を解く大人顔負けのAIプログラムや計算に正解するとお菓子がもらえる子供らしい電子工作などがあります。

自由研究気分で子供の発想力を生かして取り組めるため、これからのIT教育の一環として参加してみるのもいいかもしれません。

おすすめプログラミング学習サイト

AtCoder Problems

image

AtCoderは上記で説明したアルゴリズムに関するコンテストのサイトですが、同時に初心者向けのチュートリアルやAtCoder Problemsと呼ばれる約2000問の過去問題に挑戦できます。

過去問題には解説もあるため、なぜそうなるかという疑問も解消できます。アルゴリズムに関する問題はここで学習することができ、同時にAtCoderのコンテスト方で学習した内容について腕試しができます。

ワイワイプログラミング

image

ワイワイプログラミングはNHKが運営するプログラム学習サイトです、Scratch(スクラッチ)というプログラミングソフトを使って子どもでも分かりやすくプログラムができるよう説明してくれています。プログラム学習以外のコンテンツもあるため楽しんで学習できそうです。

Scratchのインストールなどは子どもだけは難しいかもしれませんが、丁寧に説明してくれているため、PCに不慣れな親御さんでも問題なくできそうです。

Scratchは多くの電子工作のプログラミングとして使用されているため、ロボット系のコンテストに参加したい小中学生に特にオススメです。また、Scratchは初心者にも分かりやすいビジュアルプログラミングのためコンテストに参加しなくても勉強になります。

まとめ

プログラミングコンテストはあくまで自由参加で強制されるものではありません。しかし、自分自身の知識を高め、他の人と技術を競い合うことで他には代えがたい経験となるでしょう。さらにコンテストには順位や賞という明確な目標があるため、より良い順位を目標とすることで自分のモチベーションを上げることができます。

昔では種類の少なかったコンテストも現在では様々なコンテストがあり、ITに興味にある人なら必ず自分に合ったコンテストが見つかるはずです。腕に覚えのある方も、経験の浅い方も、社会人や学生の皆さんもプログラミングコンテストで自分の実力を試してみてはいかがでしょうか。

関連記事

ふろっく
この記事を書いた人
ふろっく
\ 無料体験開催中!/自分のペースで確実に習得!
オンライン・プログラミングレッスンNo.1のCodeCamp