競技プログラミング(きょうぎプログラミング、、略称: 競プロ)とは、 解くべきプログラミング課題が与えられ、プログラムを作成し、解くまでにかかった時間や正解数などを競い合う競技。

概要 競技プログラミングでは、参加者全員に同一の課題が出題され、より早く与えられた要求を満たすプログラムを正確に記述することを競う。コンピュータサイエンスや数学の知識を必要とする問題が多く、新卒学生の採用活動などに使われることもある。多くのコンテストでが採用されている。また、競技プログラミングに参加する人を「競技プログラマ」または「競プロer」と呼ぶことがある。

競技プログラミングのコンテストは、プログラミング教育において注目されている競争型学習において演習方法に適しているとする意見もある。

歴史 古いものとしては1970年代にアメリカのテキサスA&M大学で開催されるようになった:en:International Collegiate Programming Contest (ICPC)を挙げることができる。これは2011年大会では88カ国で開催されるまでに成長した。

1990年から1994年にかけて、アメリカの:en:Owen Astrachan、Vivek Kheraらが上述のICPCの影響を受けつつインターネット上でプログラミング競技会を開催した。

日本において 日本では、1980年代から広義のプログラミングコンテストが存在した。主に高校生や高専生を対象とし、審査員が作品や成果を評価する形式が主流であった。以下に代表的な例を挙げる: 1980年:全国高校生プログラミングコンテスト(後にU-22プログラミングコンテストに改名) 1990年:全国高等専門学校プログラミングコンテスト 2002年:日本学生科学賞ソリューション部門(後に情報技術部門に改名)

1994年には、全国高等専門学校プログラミングコンテストで競技部門が設けられた。しかし、これは「準備してきたプログラムで競う」もので、現在一般的に知られる競技プログラミングとは異なっていた。

日本での「なるべく速く正しいコードを書く」趣旨のプログラミングコンテストは、1994年から1997年まで開催された日本情報オリンピック(旧ウェブサイト)が始まりであった。このコンテストは中高生を対象としていた。次いで、1995年には東京工業大学主催のSuperCon(スパコン)が開始した。このコンテストは、「速いコードを書く」「難しい問題に最適解に近い解を出す」ことを目的としている。これらの大会の卒業生を中心に、1998年からは日本も国際大学対抗プログラミングコンテスト(ICPC)に参加し始め、大学生向けのプログラミングコンテストが活発化した。

2003年には、パソコン甲子園が開始され、高校生や高専生を対象とした「なるべく速く正しいコードを書く」部門が設けられた。さらに、2006年には日本情報オリンピックが再び開かれるようになった。2004年には、ICPCのOB/OGによる大学を超えた合同練習会が開催され、ICPC OB/OGの会としての活動が始まった。現在まで続くプログラミングコンテストのコミュニティが出現し、世代を超えた知識の継承や技術向上がされるようになる。また、2004年頃からTopCoderに参加する日本人も現れるようになる。

当時の参加者の証言によると、この時点でまだ「競技プログラミング」という概念はなく、「プロコン」と呼び、参加者を「プロコン勢」と呼んでいた。「競技プログラミング」という言葉は、2007年に、東京大学理学部情報科学科に当時所属していた松本宜丈が作成した「東京大学競技プログラミング同好会 2007年春台湾合宿」と銘打ったパンフレットが初出であるとされる。台湾合宿には大学同期12人が参加し、この合宿のメンバーを総称して、東京大学競技プログラミング同好会の名称が付けられた。松本自身は当時東京大学にいくつか存在した「競技○○部」という名前の体育会やサークルから着想を得たと述べている。後に東京大学競技プログラミングクラブと改名して継続的な勉強会となり、後輩の育成にも励んだため、競技プログラミングという言葉が広く使われるようになった。

OB/OGによる練習会に参加した大学生は、大学でも自主的な練習会を開いていた。その中でも影響の大きかったものが東京大学競技プログラミング同好会である。東京大学競技プログラミングクラブの練習会には、東京大学の学生だけではなく、埼玉大学、早稲田大学、京都大学などの大学生や筑波大学附属駒場高校の高校生も参加しており、多数のプロコン競技者・教育者を輩出した。また、学生主体で「なるべく速く正しいコードを書く」プログラミングコンテスト UTPCを開催し、社会人、大学生、高専生、高校生などさまざまな人々が参加した。そして、出場者らによって、会津大学プログラミングコンテスト UAPC 2009、京都大学プログラミングコンテスト KUPC 2011など様々な大学名を冠したコンテストが開かれるようになった。このため、2010年頃から「競技プログラミング」は練習会の名前としてだけではなく、「なるべく速く正しいコードを書く」コンテストなどを指す用語としても徐々に使われ始めた 。

その後、出身者によってさらに影響が広がっていった。たとえば、Google Code Jam JapanのスタッフはICPC OB/OG会のスタッフやUTPCのスタッフがほとんどである。

+競技プログラミング同好会の出身者の例北川宜稔、岩田陽一、秋葉拓哉 (HITORI++、(iwi))「プログラミングコンテストチャレンジブック」の著者。岩田はAtCoder AHC Adminでもある。副島真 (rng_58)TopCoder admin、AtCoder コンテスト監査原健太朗 (haraken)Google Japan が提供しているSTEPという教育プログラムを立ち上げ400名以上を教育した。

AtCoder社代表の高橋直大もUTPC 2009からUTPCに参加している。

なお、UTPC 2011は、AtCoder上で開かれた最初のコンテストであり、現在でも提出が可能である。

主要なコンテスト 主にインターネット上、各種ウェブサイトで、定期的に開催されている。

下記のリストは、コンテスト以外にも「」を含む(CodeChef、Project Euler、AizuOnlineJudgeなどが該当)。また、ICFPCは年によって出題のタイプが変わるが「難しい問題に最適解に近い解を出す」「AIを戦わせる」「パズルを解く」などである。Imagine Cupにも複数の部門があるが「なるべく速く正しいコードを書く」部門はない。

日本国内 サイト名 概要 ウェブサイト AtCoder 高橋直大が代表取締役を務めるAtCoder社が提供するプログラミングコンテストサイト。 日本情報オリンピック(Japanese Olympiad in Infomatics(JOI)) 高校生向けプログラミングコンテストの国際情報オリンピック(IOI)の代表選考のためのコンテスト。 AizuOnlineJudge 会津大学が公開している。ICPCの過去問などを出題している。

海外 サイト名 概要 ウェブサイト Topcoder アメリカのAppirio社が提供するプログラミングコンテストサイト。 Codeforces ロシアの大学 (Saratov State University) に所属するMike Mirzayanovらが実施するプログラミングコンテストサイト。 アメリカにあるプログラミングコンテストサイト。 Directi社が運営・提供するプログラミング学習サイト。 Project Euler 数学の問題が出題される。

国際大会 大会名 略称 概要 ウェブサイト Google Code Jam GCJ Googleが実施するプログラミングコンテスト。 https://code.google.com/codejam/ Facebook Hacker Cup FHC Facebookが実施するプログラミングコンテスト。 https://www.facebook.com/hackercup/ ACM-ICPC 国際大学対抗プログラミングコンテスト ACM-ICPC 大学対抗のプログラミングコンテスト。1970年から始まり今に続く歴史あるコンテストである。 https://icpc.baylor.edu/ TopCoder Open TCO TopCoderが実施する祭典コンテスト。 (2016年度)https://tco16.topcoder.com/ ICFPC 関数型プログラミング言語のカンファレンスが実施するコンテスト。 https://www.icfpconference.org/contest.html Microsoft Imagine Cup マイクロソフトが実施する学生向けのプログラミングコンテスト。 https://www.imaginecup.com/ 国際情報オリンピック(International Olympiad in Informatics) IOI 高校生向けのプログラミングコンテスト。日本人が参加する場合、予選となる日本情報オリンピックに参加して代表に選ばれる必要がある。

人材採用での活用 TopCoderやGoogle Code Jamなどの海外の多くの競技プログラミングサイトでは会員登録の際に求人情報の紹介を受けるかどうかを選択できる。日本においてはリクルート (CODE FESTIVAL、CODE VS、CodeIQ) やギノ (paiza) などで学生や転職希望者向けの求人の紹介が行われているほか、競技プログラミングサイトであるAtCoderではAtCoderでのユーザーのレートを利用した人材採用サービスとしてAtCoderJobsを展開している。

国際大会における日本人参加者の成績 岩田陽一、副島真が「2010 TopCoder Open」の異なる部門で優勝し、日本人が2部門を制した。 慶應義塾大学(当時)の高橋直大がMicrosoftが主催するImagine Cup 2008アルゴリズム部門で世界第3位となった。 東京大学(当時)の岩田陽一がGoogleが主催するプログラミングコンテスト「Google Code Jam 2009」で3位に入賞。

出典

参考文献

関連項目

関連人物 高橋直大 ゲンナジー・コロトケビッチ

関連分野 プログラミングコンテスト

キャプチャー・ザ・フラッグ#コンピュータセキュリティ Kaggle