1. HOME
  2. ブログ
  3. エンジニアになろう!
  4. プログラミング初心者には「競技プログラミング」がオススメ!

プログラミング初心者には「競技プログラミング」がオススメ!

今、競技プログラミングが熱い!

ミツオカミツオカ
2020年に、小学校でプログラミング教育が始まりましたね!
にゃんこ師匠 にゃんこ師匠
そうじゃな、これからの世の中は、プログラミングスキルが必須の社会になっていくだろうな!
ミツオカミツオカ
む…私も、周りに取り残されないようにがんばらなくっちゃ…!
にゃんこ師匠 にゃんこ師匠
そうじゃな!『競技プログラミング』をやってみたらどうじゃ?
ミツオカミツオカ
競技プログラミング?

こちらの記事もオススメ!

競技プログラミングとは?

競技プログラミングとは、参加者に課題が与えられて、それをプログラミングで解決する大会です。

2~3時間の短時間で終わるものもあれば、1日をかけて行うものもあります。

上級者向けの問題では、アルゴリズムの知識と高度な考察が求められます。

しかし、もちろん、初心者でも解ける問題も出題されます。

「プログラミンングを始めたいけど、何を作れば良いのかわからない」という方にも、スキル向上の場としてオススメといえます。

SamurAI Codingで若いうちから競技プログラミングに取り組もう!

はじめに紹介するのは「SamurAI Coding」という競技プログラミングです。

SamurAI Codingは、情報処理学会と IT 企業が今後の日本を担うプログラマーや IT 研究者を育てる目的のために発足されました。

2012 年スタートし、毎年開催されています。

正式名称は「情報処理学会 国際人工知能プログラミングコンテスト」。

その名の通り、人工知能に関するアルゴリズムの正確さやプログラミングの技術を競うコンテストです。

もともとは若い学生向けのコンテストで25歳以下のみしか参加できませんでした。

しかし、社会人の学び直しや企業内の人材の育成のために、今は全年齢に参加の門戸を開いています。

この競技プログラミングコンテストが他のコンテストより注目されているポイントは、有名IT企業や情報処理学会のスポンサーシップやサポートがあることです。

懇親会もチャンス!

ちなみに、予選に応募しただけで、決勝大会の日に行われる懇親会に参加することが出来ます。

この懇親会では HITACHI や FUJITSU、TEAM Lab などの有名企業が参加し、交流することが可能です。

就職や転職において、大きなチャンスをつかむことが出来るかもしれません。

実際、この SamurAI Coding で結果を残し、転職に成功されたエンジニアの方もいらっしゃいます。

SamurAI Codingではどのような競技が行われるのか?

それでは実際、この SamurAI Coding では、どのような競技が行われるのでしょうか?

見てみることにしましょう!

出典:情報処理学会プログラミングコンテスト委員会公式ホームページより

SamurAI Codingでは、このような正方形のマスが並んだ競技フィールドで大会が行われます。

このフィールドで二つのチームが「侍」と「犬」の二つのユーザを操作して戦います。

このフィールドにはユーザが入ることができない「穴」とフィールド上は見ることが出来ない「埋蔵金」があります。

「穴」を掘って相手を妨害しながら、「埋蔵金」をより多く掘ることで勝利を目指します。

そして、参加するプログラマーはこの侍と犬を操作するプログラムを記述し、技術力を競うことになります。

  1. 侍…穴を埋めたり掘ったりすることができる
  2. 犬…埋蔵金がある位置にくると吠え、埋蔵金の量を両チームの「侍」と「犬」に知らせる

それぞれの特徴を把握し、プログラミングすることが大切になってきます。

ちなみに、大会に使用されるソフトは、ほとんどの主要なプログラミング言語に対応しています。

そのため、自分の得意な言語で参加することが出来ます。

今後必要とされるセキュリティ人材を育てるCTF

次に紹介するのは「Capture The Flag」、通称 CTF です。

セキュリティやネットワークの技術を利用して問題を解きあいます。

主にチーム同士で敵対してそれぞれのサーバを攻撃、防御しあう「Attack&Defence」とクイズ形式でポイントを集める「Jeopardy」という二つの大戦形式があります。

特に、日本にはサイバーセキュリティの人材が少ないと言われており、CTF に注目が集まっています。

各種CTF大会にも先ほどの SamurAI Coding と同じように多くの企業が大会を観戦しています。

そして、新しい人材を探していますので、セキュリティエンジニアとして就職、転職を考えている人にはオススメといえそうです。

SECCON BEGINNERS

CTFに参加する上でおすすめなのは「SECCON BEGINNERS」です。

この大会は、SECCON という日本最大の CTF を運営している NPO 日本ネットワークセキュリティ協会(JNSA)が運営しています。

CTF初心者向けの勉強会です。

他にも、有志によってCTFの勉強会や、ネット上で挑戦することが出来る常設 CTF などが用意されています。

CTFにはどのような問題がでるのか?

それではCTFでは実際にどのような問題が出題されるのでしょうか。

一つ例題を紹介したいと思います。

例題

このQRコードが、「どのような文字列を示しているのか」を解読しましょう!

しかし、条件として、左半分の情報がわかりません。

ここで使うのは「strong-qr-decoder」です。

【strong-qr-decoder】
https://github.com/waidotto/strong-qr-decoder

pythonで書かれていますので、実行していきましょう!

このソースコードは、QRコードの補完部分を読み取ることが出来るので、右半分しかないQRコードも復号することができます。

AtCoderで競技プログラミング

実際、競技プログラミングの大会ではどのような問題が出題されるのでしょうか?

口で説明するよりも実際に手を動かした方が理解できると思います。

今回は、AtCoder(アットコーダー)というサイトの、競技プログラミングの問題を解いて行きたいと思います!

【AtCoder】
https://atcoder.jp

ちなみに、AtCoderは、競技プログラミングサイトの1つで、(ほぼ)毎週末の夜に大会を開いています。

参加者は、大会で良い成績を残すと自身のレートが上昇するので、みんな一問でも早く、多く解けるように頑張っています。

にゃんこ師匠 にゃんこ師匠
みんなで競うことで、自分のプログラミングスキルもグングン成長するんじゃな!
ミツオカミツオカ
AtCoderが初めての方は、問題を解く前に「チュートリアル」を参考にして下さいね

AtCoderの大会過去問を解いてみよう

AtCoderでは、大会に参加するだけではありません。

自分の好きな時間に、AtCoderで行われた大会の過去問を解くことができます。

では、今回は、初心者向けの大会『AtCoder Beginner Contest(通称ABC)』のA問題を解いてみたいと思います。

【問題文】

X , A は 0 以上 9 以下の整数です。

X が A 未満の時 0、A 以上の時 10 を出力してください。

引用:AtCoder

この問題では、『入力 X , A が与えられて、X が A より小さければ 0 を、X が A より大きければ 10 を出力する』プログラムが求められます。

このようにABCのA問題は、入力を受けとり、if文などの基本構文のみを用いるだけで解くことのできる「簡単な問題」が出題されています。

コードを提出するにあたって、提出するコードのプログラミング言語を選択する必要があります。

言語は、「C++」「Python」「C#」など様々選ぶことができるのですが、C++を用いて問題を解く人が多いです。

理由としては、他の言語より実行速度が断然速いためです。

にゃんこ師匠 にゃんこ師匠
実行時間が長すぎると正解と認められないので、例えば、Pythonなどの実行速度の遅い言語を選択すると問題が解けない場合があるのじゃ!
ミツオカミツオカ
言語選択の際は注意しなきゃですね…!

提出コード

今回は、他の言語より実行速度が断然速い「C++」のコードを提出したいと思います。

ソースコード欄にプログラムを記述し、提出のボタンを押します。

すると、結果ページに飛びます。

結果

結果の欄に「AC」と表示されれば問題クリアとなりますが…

今回は、結果の欄に「WA」と表示されました。

にゃんこ師匠 にゃんこ師匠
これは、「Wrong Answer」の略であり、残念ながら「このコードは間違っていた」という意味じゃな
ミツオカミツオカ
コードを振り返ってみると、「 x >= a 」とすべきところが「 x > a 」となってました!

訂正したコード

コードを訂正し、再提出したいと思います!

確認

今度は、見事「AC」となりました。

これで無事、問題が解けました!

このように、間違いを訂正して「AC」となると、とにかく嬉しいのです!

にゃんこ師匠 にゃんこ師匠
今回は、過去問を解いてみたが、実際に週末の大会に参加すると、さらに白熱すること請け合いじゃ!!
ミツオカミツオカ
AtCoder以外にも、競技プログラミングを開催している団体・組織は様々存在するので、ぜひ積極的に参加することもオススメですね!

競技プログラミングをするメリット

競技プログラミングでは、プログラミングやアルゴリズムの知識・能力を得ることができます。

また、実は、就職やインターンにもつながる可能性があるのです。

例えば、AtCoderでは、AtCoderJobsというサイトを運営しており、新卒採用やアルバイト、インターンなどの求人情報を掲載しています。

AtCoderでのレートが良ければ、それらの求人に有利になるかもしれません。

競技プログラミングに参加すると、自身の能力向上と仕事の機会も得られて一石二鳥といえそうです。

記事を書いた人

\ 3度のメシより技術が好き /
(株)ライトコードは、WEB・アプリ・ゲーム開発に強い「好きを仕事にするエンジニア集団」です。
システム開発依頼・お見積もりはこちらまでお願いします。
また、WEB・スマホ系エンジニアを積極採用中です!
※現在、多数のお問合せを頂いており、返信に、多少お時間を頂く場合がございます。

こちらの記事もオススメ!

さいごの一言

にゃんこ師匠 にゃんこ師匠
競技プログラミングは、今後ますます注目されるじゃろうな!
ミツオカミツオカ
周りと差をつけるなら、すぐに始めなきゃですね!
にゃんこ師匠 にゃんこ師匠
皆も「競技プログラミング」始めてみるんじゃ~!

ライトコードよりお知らせ

にゃんこ師匠にゃんこ師匠
システム開発のご相談やご依頼はこちら
ミツオカミツオカ
ライトコードの採用募集はこちら
にゃんこ師匠にゃんこ師匠
社長と一杯飲みながらお話してみたい方はこちら
ミツオカミツオカ
フリーランスエンジニア様の募集はこちら
にゃんこ師匠にゃんこ師匠
その他、お問い合わせはこちら
ミツオカミツオカ
   
お気軽にお問い合わせください!せっかくなので、別の記事もぜひ読んでいって下さいね!

一緒に働いてくれる仲間を募集しております!

ライトコードでは、仲間を募集しております!

当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。

また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!

なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。

ライトコードでは一緒に働いていただける方を募集しております!

採用情報はこちら

書いた人はこんな人

ライトコードメディア編集部
ライトコードメディア編集部
「好きなことを仕事にするエンジニア集団」の(株)ライトコードのメディア編集部が書いている記事です。

関連記事

採用情報

\ あの有名サービスに参画!? /

バックエンドエンジニア

\ クリエイティブの最前線 /

フロントエンドエンジニア

\ 世界はお前の手の中に・・・ /

モバイルエンジニア

\ サービスの守り神! /

インフラエンジニア