【初心者必見】プログラミングコンテストで効率的にスキルアップする方法

はてブ

コンピュータに命令を記述し、命令を実行させる「プログラミング」という技術ですが、このプログラミングにもコンテストが存在するというのを知っていましたか?

実は、プログラミングにも立派なコンテストが存在し、基本的には毎年開催されています。そこで今回は、初心者の方向けにプログラミングコンテストについてご紹介したいと思います。

具体的には
 ・プログラミングコンテストとは何か?
 ・コンテストに参加するメリットは?
 ・どんなコンテストがあるのか?

について説明したいと思います。

プログラミングコンテストについて興味がある初心者の方は必見です!是非ご覧ください!

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

プログラミングコンテストとは文字通りプログラミングの腕を競う大会の事です。

プログラミングの技術や正確さ、スピードなどを競います。一般的には「プロコン」と略されたりします。

一言にプログラミングコンテストと言っても、そのジャンルは様々な物があります。

例えば、単純にプログラミングの作品の面白さを競う物もあれば、如何にして短くプログラムをまとめるかというコンテストもあります。

このようなコンテストはあまり主流ではなく、最近になって活発的に開催されるようになりました。

対象者もプロのエンジニアから小中学生対象の物まであり、非常に幅広い人を対象にしているのが特徴です。

プログラミングコンテストに参加するメリット

プログラミングコンテストに参加する最大のメリットは、大幅なスキルアップが狙えるという点です。

自分で考えて試行錯誤をし、良いプログラムに近づけていくという姿勢はプログラマにとって必要な能力になります。

他にも、自分以外の参加者のコードを見て、勉強できる点が挙げられます。プログラミングコンテストは日本中、あるいは世界中から様々な実力者が集まってきます。

なかなか他人のコードを見る機会がない中で、その人たちのコードを見て参考にできる唯一の機会です。

また、コンテスト上位入賞という明確な目標もあるので、勉強のモチベーションが維持しやすいといったメリットもあります。

入賞すると、賞品や賞金が出たり、企業からヘッドハンティングされる可能性もあります。

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

プログラム作品コンテスト

プログラム作品コンテストは、与えられたテーマについて作品を自由に開発し、その面白さを競う非常にシンプルなコンテストです。

コンテストの中では最もメジャーです。

このコンテストはプログラミングの技術は勿論ですが、それと同じくらい「アイデア」の部分も評価されます。

「プログラミング初心者だけどアイデアに自信がある!」という人にはおすすめのコンテストです。

人工知能コンテスト

人工知能コンテストとは、人工知能システムを対象としたプログラムのコンテストです。

例えば、将棋やチェスのようなゲームをプレイする「ゲームAI」を設計するコンテストがあります。

人工知能は最近のトレンドなので、とても注目されているコンテストの1つです。

セキュリティコンテスト

セキュリティコンテストとは、プログラムやネットワーク上のセキュリティに関するコンテストです。

最もコンテスト形式にCTF(Capture The Flag)があります。

CTFとは、文字通りFlagを奪い合う形式のコンテストの事です。CTFにはクイズ方式と攻防戦方式の2つがあります。

クイズ方式とは、お互いのチームが隠し持っているFlagを暗号を解いたりデータを解析して見つける方式です。

攻防戦方式とは、お互いのチームがサーバーに所持しているFlagをサーバーの弱点を突いてFlagを盗み取る方式です。

その他のプログラミングコンテストより専門的な知識が必要になります。

コードゴルフコンテスト

 
コードゴルフコンテストとは、与えられた問題に対してどれだけ短いコードで解決できるかを競うコンテストです。

コードゴルフとは、「なるべく低いスコアを出した人が勝ち」という形式です。なので、プログラミングコンテストに置き換えると「なるべき短いコードを書いた人の勝ち」になります。

コードゴルフコンテストではなく、「ショートコーディングコンテスト」と呼称する場合もあります。

こちらのコンテストではコードを書く能力が他のコンテスト以上に問われるため、プログラミング熟練者向けのコンテストになります。

実在するプログラミングコンテスト

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

U-22プログラミングコンテストは、経済産業省が主催となって開催しているコンテストです。

コンテストの区分としては、作品提出型のプログラミングコンテストになります。

こちらのコンテストに提出された作品では、有用性や芸術性を見る「プロダクト」、アルゴリズムや機能性を見る「テクノロジー」、独創性や将来性を見る「アイデア」の3つの観点から評価されます。

3つの観点から総合的に優れた作品と、各観点で優れた作品が別々に選定され、それぞれが入賞するチャンスがあります。

プログラミングの能力以外でも評価されるため、初心者にもおすすめのコンテストになります。

世界コンピュータ将棋選手権

世界コンピュータ将棋選手権は、CSAが主催となって開催しているコンテストです。

コンテストの区分としては、人工知能系のプログラミングコンテストになります。

コンテストの内容は、世界最強の将棋プログラム同士を対戦させ、成績を決定するという物になります。

こちらは将棋のルールは勿論ですが、評価関数や探索アルゴリズムのような人工知能に関する知識も必要になります。

初心者には少し敷居が高いコンテストになります。

PCNこどもプログラミングコンテスト

PCNこどもプログラミングコンテストとは、プログラミング クラブ ネットワーク (PCN) が主催するプログラミングコンテストです。

コンテストの区分としては、作品提出型のプログラミングコンテストになります。

このコンテストは、小中学生限定のプログラミングコンテストになります。プログラミング初心者のお子さんのための講習も充実しています。

PCNは小中学生の子供のICTリテラシーを向上させると共に物作りへの関心を高める事を目的として活動しています。その一環としてこのようなコンテストを開催しています。

まとめ

昔はプログラミングコンテストの数自体が少なかったのですが、

最近は沢山のコンテストがあります。

皆さんもプログラミングの勉強が進んだら腕試しにいかがでしょうか?

関連記事