プログラミングコンテストで優勝すればお金がもらえるうえ、GoogleやAmazonといった世界的なIT企業から採用のオファーがもらえるのをご存じでしょうか。とはいえ、プログラミングの初心者が簡単に優勝できる訳ではありません。コンテストそのものを知らない方も多いでしょう。
たとえ優勝できなくても、プログラミングコンテストに挑戦することにはプログラミングのスキルアップを考える機会として最適です。そこで今回は、スキルアップに対する意識の高いプログラマーに、ぜひ、挑戦してほしいプログラミングコンテストについてご紹介します。
- プログラミングコンテストとはプログラミングを作る技術を競うコンテスト
- プログラミングコンテストはスキルアップの機会としても使える
- プログラミングコンテストには学生を対象にしたものや、正確さと時間を競う競技がある
- プログラミングコンテストのメリットはスキルアップの機会と実力を比較できる点
目次
プログラミングコンテストとは
今回解説するプログラミングコンテストとは、その名称のとおり、コンピュータ向けのプログラミングを作る技術を競うコンテストのことです。日本をはじめ、世界中でいろいろなコンテストが開催されており、現役のエンジニアが参加するコンテストはもちろん、小学生や中学生を対象としたコンテストもあります。
個別のプログラミングコンテストを解説する前に、まずは、こういったコンテストに参加するとはどういったことかについて解説します。
プログラミングのスキルの差は大きい
一口にプログラマーと言ってもそのスキルの差は大きく、短時間で完璧なプログラムを作れる人がいる一方で、簡単な処理にもかかわらず時間がかかる方もいます。しかし、プログラマーのスキルを測るのは容易ではありません。さらに、プログラミングのスキルアップの方法には定番がある訳ではなく、それぞれが独自の方法で学んでいるのが実情です。
しかし、「こんなことをプログラムで書くとしたら、どうすればよいだろうか」という疑問から仕様を考え、実際に動くプログラムを書く経験がスキルアップには効果的です。そして、そういった経験を、競技として体験できるのがプログラミングコンテストです。
プログラミングをコンテストするとはどんなことか
プログラミングコンテストでは、プログラミングの能力、スピード、正確さなどを技術で競います。例えば問題に最適なアルゴリズムを選択し、それを使って出題された処理を正確に実現するプログラムを作成し、その実行結果が正確でなければなりません。さらには完成までにかかった時間も測定されて順位が決められます。
なお、プログラミングコンテストの中には、中高生を対象としたコンテストから、賞金が出るプロのエンジニア向けのコンテストなどもあります。また、セキュリティや人工知能など今注目されている技術を扱ったコンテストなど、その分野の専門家がスキルを競うコンテストなども開催されています。
プログラミングをコンテストでスキルアップ
プログラミングを学んだからといって、すぐに具体的なシステムを組める訳ではありません。こんなことを実現したいと考えたことをプログラムで実現するには、アルゴリズムを考えながて、それをプログラミングで組めなければなりません。そして、そのためには訓練する必要があります。
プログラミングコンテストに出るために過去の問題などから、プログラムを組む練習をしたり、コンテストに参加して自分の実力を知ることは、プログラミングのスキルアップに効果的です。また、より上の順位を目指して練習することで、スキルアップのモチベーションも維持できます。
- 課題に合ったアルゴリズムを考える「能力」
- プログラムを作り終えるまでの「スピード」
- 作成したプログラムの「正確さ」
プログラミングコンテストの種類
先ほど解説したようにプログラミングコンテストへの参加は、プログラミングを学ぶ方にとってはメリットがあります。では、どのようなプログラミングコンテストが開催されているのでしょうか。次から、プログラミングコンテストの種類について解説します。
学生など若い人を対象としたプログラミングコンテスト
2020年から小学生からプログラミング教育が必修となり、小中学生向けのプログラミングスクールも注目されています。そして、そのようなプログラミングを学ぶ小学生や中学生の対象としてコンテストも増えてきました。また、工業高校や高等専門学校では、かなり前から情報処理の授業の中でプログラミングを教えており、そういった学生を対象としたプログラミングコンテストも開催されてきました。
なお以前は、学生のプログラミング技術を競うことを目的としたコンテストでしたが、最近はプログラム作品のビジネス性も審査されており、中には奨学金の出るコンテストも開催されています。
アルゴリズム問題に関するコンテスト
アルゴリズム問題に関するコンテストは、「競技プログラミング」とも呼ばれており、出題された問題の要求を満たしているかと、また、どれだけの時間でプログラムが書けたかで順位を競います。外国では、優勝者に賞金が出るコンテストも多く、プロの競技プログラマーも活躍しています。
なお、問題を読んでアルゴリズムを考え、それをプログラムで実現する手順は、プログラマーなら誰でも経験されていることでしょう。しかし、要求どおりの仕様を短時間で考えて、完璧に動作するプログラムを作ることは、ベテランのプログラマーでも簡単にはできません。そのため、プログラミングのスキルアップの手段として、こういったコンテストにチャレンジしているプログラマーもいます。
AIに関するコンテスト
ここ数年、AIの活用がブームになっており、AIを扱えるエンジニアの人手不足が深刻化しています。また、今のAIは、クラウドと相性が良いことから、クラウド上の仕組みを活用することで比較的簡単にAIを活用したシステムを作れるようになりました。
そうしたAIの開発環境を利用して開催されているのがAIに関するプログラミングコンテストです。このコンテストでは、プログラミング技術を競うコンテストですが、AIをどのように活用するかが競うコンテストとしても注目されています。
Rubyを学びたい方におすすめのスクールはこちら
社会人向けのプログラミングコンテストの特徴
先ほど紹介したように、プログラミングコンテストには学生向けの競技会もありますが、スキルアップを目指して挑戦するなら、賞金が出る社会人向けのコンテストです。次から、プロのエンジニアがスキルアップのために挑戦できるプログラミングコンテストの特徴についてご紹介します。
競技プログラミングサイト
プログラミングコンテストの中で、スキルの高いプログラマーがよく参加しているのが競技プログラミングです。なお、インターネット上には定期的に競技プログラミングを開催してWebサイトがあり、そういったサイトには、世界中のプログラマーが参加しています。
そして、競技プログラミングサイトの中でも最大なのがTopCoderであり、ここは世界中の約60万人ものプログラマーが参加するサイトです。なお、TopCoderで開催する競技に参加すると、プログラミングスキルを表すレーティングが付きます。そしてこれを、自分のスキルレベル知る指標とし、スキルアップに役立てているプログラマーもいます。
なお、TopCoderのサイトは全て英語ですが、AtCoderのような日本語でプログラミングコンテストを開催しているサイトもあるので、英語が苦手という方は、こちらで実力を試してみてください。
AtCoder:競技プログラミングコンテストを開催する国内最大のサイト
プログラマーの人材を発掘の場
先ほど紹介したTopCoderで優勝すると賞金がもらえます。そのため、その賞金を目当てにコンテストに参加する優秀なプログラマーがたくさんいます。そのため、優秀なプログラマーを採用したいGoogleやMicrosoftといった大企業では、TopCoderに参加するプログラマーに注目しており、ここはそういった世界的なIT企業が人材を発掘する場ともなっています。
世界的なIT企業で活躍するプログラマーと競えて、いつかは自分にそういった企業からオファーがあるかもしれない、という点もプログラミングコンテストに参加する魅力と言えるでしょう。
Rubyを学びたい方におすすめのスクールはこちら
プログラミングコンテストに参加するメリット
先ほどプログラミングコンテストの魅力を紹介しましたが、入賞して賞金がもらえたり、世界的なIT企業にスカウトされるプログラマーは参加者の中のほんの一部です。しかし、世界中の多くのプログラマーがコンテストに挑戦しています。それは、挑戦するメリットがあるからにほかなりません。次から、プログラミングコンテストに参加するメリットについてご紹介します。
スキルアップの効果的
こういったことをやりたい、という漠然とした要望を聞いて、そのための処理フローを考え、それを実現する仕様を作り、実際に動作するプログラムを書けるのが、ほんとうのプログラマーです。しかし、経験の少ない方は、一人でこれらのことをこなせません。できるようになるためには訓練が必要です。
なお、プログラミングコンテストでは、文章に書かれた課題から、アルゴリズムや仕様を考えて、課題を解決するためプログラムを作ります。そして、この過程は、プログラマーに求められるスキルの訓練に最適です。そのため、多くのプログラマーがプログラミングコンテストに挑戦し、自分のスキルを磨いています。
自分の実力を比較できる
プログラマーとして仕事をしていると言っても、ネットのコードをコピペして済ませられる仕事もあれば、細かい仕様を定義しつつ、誰も書いたことが無いようなプログラムを書く仕事もあります。しかし、今の仕事がどの程度のレベルかは、他の仕事を体験しなければ解りません。
しかし、プログラミングコンテストに参加すれば、世界中のプログラマーと比較できます。例えば、職場の中ではプログラムが得意な方だと思っていたのに、世界に比べると全然大したことがないと解れば、ものの見方が変わるかもしれません。そして、そういった体験をしたプログラマーが、自分を磨くために、プログラミングコンテストに挑戦しています。
- プログラミングのスキルアップのため
- 自分のプログラミングの実力を確認するため
プログラミングのスキルアップを目指すなら、コンテストにも出てみよう
スキルアップに興味がある方でも、仕事以外に本気で考えながらプログラムを作る経験は、なかなかできません。しかし、プログラミングコンテストに挑戦すれば、課題を解決するための仕様を考えて、それを基にプログラムを作り、仕様どおりにできているかチェックする、といったソフト開発の基本を手軽に体験できます。さらに、ベテランプログラマーがその課題に対して、どんなプログラムを書いているか見ることで、多くのことを学べる点もメリットです。
Rubyを学びたい方におすすめのスクールはこちら
まとめ
これまでプログラミングコンテストについて紹介したきましたが、社会人を対象にしたコンテストは誰でも参加できます。とはいえこのようなコンテストには、天才と呼ばれるプログラマーも多く参加しているので、優勝は難しいかもしれません。
とはいえ、自分のプログラミングのレベルを知るこができ、スキルアップのきっかけとしても活用できます。たとえ優勝できなくても、自分へのメリットになるプログラミングコンテストに、ぜひ、挑戦してみてください。
Rubyを学びたい方におすすめのスクールはこちら
2019年の8月に、ヤマト運輸が主催するプログラミングコンテストがAtCorderで開催されました。このコンテストでは、ヤマト運輸の輸配送オペレーションの問題が出題され、優勝者には賞金30万円を手にしています。
ヤマト運輸プログラミングコンテスト2019 – AtCoder