競技プログラミング

競技プログラミング(きょうぎ - 、: Competitive programming、略称: 競プロ)とは、プログラミングコンテストで行われる競技の一種である[1][2][3][4]

概要

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

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

語源

2007年に、東京大学理学部情報科学科に当時所属していた松本宜丈が「東京大学競技プログラミング同好会 2007年春台湾合宿」と銘打ったパンフレットを作成したときが初出である[12]。台湾合宿には大学同期12人が参加し、この合宿のメンバーを総称して、東京大学競技プログラミング同好会の名称が付けられた。また、松本は競技ダンスからの類推でつけたと述べている[13]。後に東京大学競技プログラミングクラブと改名して継続的な勉強会となり、後輩の育成にも励んだため、競技プログラミングという言葉が広く使われるようになった[12]

主要なコンテスト

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

日本国内

サイト名 概要 ウェブサイト
AtCoder 高橋直大が代表取締役を務めるAtCoder社が提供するプログラミングコンテストサイト。 atcoder.jp
日本情報オリンピック(Japanese Olympiad in Infomatics(JOI)) 高校生向けプログラミングコンテストの国際情報オリンピック(IOI)の代表選考のためのコンテスト。 www.ioi-jp.org

海外

サイト名 概要 ウェブサイト
Topcoder アメリカのAppirio社が提供するプログラミングコンテストサイト。 www.topcoder.com
Codeforces(英語版) ロシアの大学 (Saratov State University) に所属するMike Mirzayanovらが実施するプログラミングコンテストサイト。 codeforces.com
HackerRank(英語版) アメリカにあるプログラミングコンテストサイト。 www.hackerrank.com
CodeChef(英語版) Directi社が運営・提供するプログラミング学習サイト。 www.codechef.com
Project Euler 数学の問題が出題される。 projecteuler.net

国際大会

大会名 略称 概要 ウェブサイト
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/
ICFP Programming Contest(英語版) ICFPC 関数型プログラミング言語のカンファレンスが実施するコンテスト。 https://www.icfpconference.org/contest.html
Microsoft Imagine Cup マイクロソフトが実施する学生向けのプログラミングコンテスト。 https://www.imaginecup.com/
国際情報オリンピック(International Olympiad in Informatics) IOI 高校生向けのプログラミングコンテスト。参加するには日本情報オリンピックで代表に選ばれる必要がある。 ioinformatics.org

国際大会における日本人参加者の成績

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

競技プログラミングでの雇用

TopCoderGoogle Code Jam(英語版)などの海外の多くの競技プログラミングサイトでは会員登録の際に求人情報の紹介を受けるかどうかを選択できる。日本においてはリクルート (CODE FESTIVAL、CODE VS、CodeIQ) やギノ (paiza) などで学生や転職希望者向けの求人の紹介が行われている。

教育機関における競技プログラミング

会津大学AizuOnlineJudgeというオンラインジャッジを公開しておりICPCの過去問などを出題している[15]

出典

[脚注の使い方]
  1. ^ a b 高橋直大、AtCoder (2016年7月27日). “競技プログラミングを知ろう! [第1回]”. Tech Book Zone Manatee. マイナビ出版. 2016年8月3日閲覧。
  2. ^ 周藤瞳美「「競技プログラミング」で世界に挑戦してみよう! - TCO15 in Tokyo」『マイナビニュース TECH+』、2015年7月22日。2016年8月3日閲覧。
  3. ^ 小松智希(インタビュアー:西村岳史)「競技プログラミングに参戦、発想力での難問解決を楽しむ」『日経クロステック』、2013年5月15日。https://xtech.nikkei.com/it/pc/article/interview/20130408/1086111/2016年8月3日閲覧 
  4. ^ 土屋亘「イマドキの“学生プログラマー”は何を考えているの?:求めているのは、楽しさと環境」『ITmedia』、2014年11月26日。2016年8月3日閲覧。
  5. ^ ガチ鈴木「いきなり最終面接も 採用直結の競技プログラミングコンテスト“ドワンゴからの挑戦状”開催」『週刊アスキー』、2014年12月26日。2016年8月3日閲覧。
  6. ^ 森川, 潤「次代の教養プログラミング リクルート、ドワンゴが囲い込む、隠れた「天才プログラマー」たち」『NewsPicks』、2016年7月30日。2016年8月1日閲覧。
  7. ^ 薬, 文江「トヨタも注目の「競技プログラミング」、最先端のIT人材発掘の場」『日経ビジネス』、2022年8月22日。2023年7月7日閲覧。
  8. ^ フォルサ「中高生の競技プログラマー日本一が決定! 「第21回日本情報オリンピック」」『マイナビニュース』、2022年2月16日。2023年7月7日閲覧。
  9. ^ MOLOKHEIYA「特別企画@プログラミング+ 日本のITは"部活"が支えている!! パソコン甲子園2016レポート(前篇)」『ASCII.jp』、2016年12月12日。2023年7月7日閲覧。
  10. ^ “その2「競プロer増加中!AtCoderの高橋直大さんに会ってみた」(Vol.60 No.10)”. 情報処理学会. 連載漫画「IT紀行」. 2023年7月7日閲覧。
  11. ^ 富永 et al. 2008, p. 50
  12. ^ a b “競技プログラミングという言葉の誕生”. MAYAH.JP (2019年7月25日). 2020年6月13日閲覧。
  13. ^ {白,黒}のカピバラの左随伴右随伴 [@ainsophyao] (2019年7月28日). "午後2時14分投稿のツイート". X(旧Twitter)より2020年6月13日閲覧
  14. ^ a b c 西尾泰三「コーダーの聖地「TopCoder Open」で日本人が2部門制覇」『ITmedia』、2010年10月19日。2016年8月1日閲覧。
  15. ^ “AIZU ONLINE JUDGE”. 会津大学. 2016年8月1日閲覧。

参考文献

  • 富永, 浩之、倉田, 英和、林, 敏浩、安藤, 一秋、垂水, 浩幸「コンテスト形式による初級Cプログラミングの演習支援」『情報処理学会研究報告 コンピュータと教育(CE)』第42号、情報処理学会、2008年、49-56頁。 

関連項目

  • オンラインジャッジ
  • プログラミングコンテスト一覧(英語版)
  • コンピュータサイエンスコンテスト一覧(英語版)

関連人物

関連分野

  • 表示
  • 編集
スタブアイコン

この項目は、インターネットウェブに関連した書きかけの項目です。この項目を加筆・訂正などしてくださる協力者を求めています(PJ:コンピュータ/P:コンピュータ)。

  • 表示
  • 編集