プログラミングコンテストとは?参加メリットと出場方法を受賞歴40件のプロが語る

こんにちは!
テックチャンスブログ運営の北村拓也です。
「プログラミングコンテストって、聞いたことはあるけど難しそう…」
そんな印象を持っている中高生や保護者の方、多いのではないでしょうか?
でもこのプログラミングコンテスト、プログラミングに自信がない人でも、今から十分に目指せる舞台です。
そしてなにより、挑戦するだけでも将来に役立つ経験がたくさん詰まっています。
私自身、これまでにプログラミング技術に関するコンテストなどで40件以上の受賞歴があります。
そんな私だからこそ話せる、プログラミングコンテストの種類から得られるメリット、そして出場までのステップやコツまで、初めての人でも理解できるように、やさしく丁寧に解説していきます。
今この記事を読んでくれているあなたはこんな疑問をお持ちではありませんか?
- 「プログラミングコンテストってどんな大会なの?」
- 「出場するメリットってあるの?」
- 「どうすれば出場できるの?」
この記事では、僕自身の経験を交えて、プログラミングコンテストなどに関する疑問にお答えしていこう思います。
Challenge IoT Award 2017にて、総務大臣賞を受賞した時の写真
この記事のコンテンツ一覧
プログラミングコンテストってどんなもの?
プログラミングの需要が高まるとともに、「プログラミングコンテスト」「プロコン」という言葉を耳にする機会が増えていますが、まだまだ一般的ではありません。
プログラミングコンテストには、「自分で作った作品を発表する」「出題された課題を時間内に解く」「アルゴリズムや発想力を競う」といった様々な形式があり、どれもプログラミングを活用して課題解決することが共通しています。
例えば、アプリを開発してその完成度やアイデアを競ったり、制限時間内に複数のプログラミング問題を解いたり、セキュリティの知識を活かしてCTF形式の課題をクリアしたりと、ジャンルは多岐にわたります。
難しそうに聞こえますが、実際には「初学者向け」「小中学生対象」など初心者歓迎の大会もたくさんあり、自分に合ったレベルや興味に応じて選ぶことができます。
プログラミングコンテストとは、プログラミングの能力や技術、作品を競い合うコンテストです。
ただし、プログラミングコンテストと一口で言っても様々な種類があります。
ここでは、大きく3種類に分けてプログラミングコンテストを紹介します。
1.作品(ソフトウェア)の評価を競うコンテスト
自分でプログラミングを使って作品を作り、応募する形のコンテストです。
プログラミングコンテストの中では、最も一般的な形式です。
国内で一番有名な作品コンテストとして、U-22 プログラミングコンテストがあります。
名前の通り、22歳以下の若手プログラマーの登竜門的コンテストです。
U-22 プログラミングコンテストの場合、応募ジャンルは不問です。
自ら制作したコンピュータプログラミング作品で、AI、IoT、セキュリティ、プログラミング言語、ユーティリティ、学習&教育、コミュニケーション、ゲームなど、実行可能にした作品
U-22 プログラミングコンテスト 公式HP から引用
応募の流れは以下のとおりです。
応募用紙、作品、プログラムの実行動画(2分以内)、ソースコード
僕自身、以前応募してCSAJ(コンピュータ・ソフトウェア協会)会長賞を受賞しました。
公式HPに、僕からのメッセージも掲載されています。

アプリ甲子園
中高生のためのアプリ開発コンテスト アプリ甲子園
アプリ甲子園には、TechChance! も協力しているのでHPに掲載されています。

(アプリ甲子園公式HPより)
全国小中学生プログラミング大会
応募対象:日本国在住の、6歳以上15歳以下
募集内容:PC、スマートフォン、タブレットで動作するプログラムや、アプリ、ゲーム、ムー ビーなどのソフトウェア、ロボット、電子工作などのハードウェア
PCNこどもプログラミングコンテスト
応募対象:小学生・中学生
募集内容:応募時から半年以内に完成した、オリジナルのプログラミング作品
2.アルゴリズムなどに関する問題を解く早さを競うコンテスト
問題に対して、プログラミングで回答する形式のコンテストです。
想像しづらいので、具体例を紹介します。
AIZU Online Judgeから引用します。

この時、Memory Limit (メモリ制限)があることに注意です。
例え出力が同じでも、遅すぎるプログラムは不正解になります。
アルゴリズムコンテストに関して、僕自身が勉強に使った本を紹介します。
プログラミング能力よりも、問題を理解する力が重要になります。
3.ソフトウェアやネットワークのセキュリティ上の問題点を見つけることを競うコンテスト
キャプチャー・ザ・フラッグ(CTF)と呼ばれる形式が一般的で、オンラインハッキング技術コンテストとも呼ばれています。
CTFは大きく、クイズ形式と攻防戦形式に分かれます。
- 攻防戦形式:サーバーを渡されて、自分のサーバーを守ったり、相手のサーバーを攻撃したりする
- クイズ形式:運営のサーバーやファイルなどから隠されたFlag(文字列)を探す
実際に自分が参加した体験談を下記の記事に書いています。
CTFでいちばん有名なコンテストはSECCONです。
プログラミングコンテストとしては、上記三つのカテゴリーが有名です。
他にも、ソースコードの文字数(バイト数)の小ささを競うコンテストや人工知能(AI)を作って競うコンテスト、ロボットコンテストなどがあります。
プログラミングコンテストに参加するメリット
では、プログラミングコンテストに参加するメリットは何でしょうか。
私は大きく3つあると思っています。
1.受賞歴という実績が大学受験など、次のステージに繋がる
プログラミングができます、と言っても、どのくらい出来るのかわかりません。
U-22 プログラミングコンテストに受賞しました、と言うと、自分一人で作品を作れるレベル何だなとわかります。
つまり、受賞歴とは実績であり信頼です。
実績は次のステージに繋がります。
例えば、U-22 プログラミングコンテストで良い成績を取ると、経産省 IPAの未踏事業に推薦されます。
未踏事業は、年240万円という予算をもらい、自分の作りたい作品作りに挑戦できるプログラムです。
私も2017年度に未踏クリエイターに選ばれました。
著名な卒業生として、筑波大学准教授の落合陽一先生が居ます。
落合先生が未踏事業の説明をされている動画が、とてもワクワクするのでオススメです。
中高生であれば、プログラミングの知識や受賞歴はそのまま大学受験にも使えます。
例えば以下の大学は、プログラミングが出来る学生を優遇する制度を発表しています。
未踏ジュニアの成績優秀者が慶應義塾大学SFCのAO入試出願資格に認定
【千葉大学】飛び入学制度「先進科学プログラム」が2020年度よりプログラマー対象入試開始
プログラミングが出来る子供は、大学受験をパスできる時代が、既に来ています。
その際に実力の証明をする手段として、コンテストは最有力候補です。
2.目標として設定しやすい
コンテストには応募締切があります。
自分一人で作品を作っていると、どうしてもダラダラ作ってしまいがちです。
コンテストまでに作品を作ろうと思うと、具体的な目標を決めることができます。
例えば、一ヶ月前には作品が動くようにしようとか、一週間前には応募用紙を書き始めよう、など。
是非、コンテストを目標に、自分の作品を作ってみてください。
3.レベルの高い同世代を知る
コンテストには、全国から同世代のプログラミングが得意な仲間が集います。
刺激を受けることは間違いないし、次に自分が何に挑戦するかも見えてきます。
私自身、U-22プログラミングコンテストの最終発表の日に数人友だちができました。
その友人たちが、次は未踏に挑戦すると言っていて、未踏の存在を知りました。
プログラミングコンテストに出場するためには
プログラミングコンテストに出場するためには、何が必要か。
まずは、応募する意志です。
応募作品などを見ると、自分がこんなものを作れるわけがないと思ってしまうかもしれません。
自分の今の実力は考えずに、受賞してみたいコンテストを選んでみましょう。
私自身、プログラミングを大学に入ってから知って、U-22 プログラミングコンテストの作品を見て驚きました。
自分より年下の子達が、こんなにすごい作品を作っているのか、と。
そして、自分も22歳までにここに載られるレベルになろうと決意しました。
幸運なことに、ちょうど22歳の年に受賞することが出来ました。
最初は皆、何も知らない状態から始まります。
今の自分を基準にせず、なりたい自分を基準にコンテストを選んでみてください。
プログラミングを学ぶなら
プログラミング教室 Tech Chance! では、ビジュアル型プログラミングを用いたScratchコースや、マインクラフトの中で「タートル」というロボットにプログラミングをし動かすマインクラフトプログラミングコース、実際にアプリやゲームを本格的に作れるUnityアプリ・ゲーム開発コースなど、初心者から上級者まで幅広くプログラミングを学べるよう多数のコースを揃えています。
無料体験授業を毎週定期的に行なっているので,まずはその手で体験してみてください!