language
注意事項
当サイトの中国語、韓国語ページは、機械的な自動翻訳サービスを使用しています。
翻訳結果は自動翻訳を行う翻訳システムに依存します。場合によっては、不正確または意図しない翻訳となる可能性があります。
翻訳サービスを利用した結果について、一切を保証することはできません。
翻訳サービスを利用される場合は、自動翻訳が100%正確ではないことを理解の上で利用してください。

競技プログラミング:プログラミングで「何かをしたい」人へ

Pic:野原 大靖さん

情報科学専攻情報理工学コース 知能ソフトウェア研究室
博士後期課程1年

野原 大靖(富山県砺波市出身、2023年度入学)

 昨今DX(デジタルトランスフォーメーション)という用語がニュース等で盛んに用いられるように、データやデジタル技術の活用は大きなトレンドとなっています。こうした情勢の中でプログラミングの知識・技術は重要な役割を担っており、北大でも必修科目の情報学IでPythonを用いたプログラミングが実施されています。

 しかし、プログラミングを使って何かをしたいと考えているけれども、何をしたらよいのか分からないという人もいるのではないでしょうか。そのような人にこそ、自分は競技プログラミングをおすすめしたいと考えています。競技プログラミングは与えられた問題に対していち早く適切なコードを書いて提出する競技です(参考動画[1])。競技プログラミングでは基本的に自分の書いたコードに対するフィードバック(正誤判定)がすぐに返ってくるため短時間で取り組みやすく、解くべき問題が明示的に示されるため途中で挫折しにくいという利点があります。特にAtCoder[2]は日本語の競技プログラミングコンテストサイトであり、初心者向けの教材も多くそろえられておりおすすめです。一人ではモチベーションが続かないと考えている人は、北大の競技プログラミングサークル[3]に一度足を運んでみるのも良いと思います。

 自分の場合、研究においても競技プログラミングの経験が活きていると考えています。自分の研究ではモデルの性能評価のために数値計算やシミュレーションを実行する機会が多くありますが、多くの数値実験を効率的に進めるにはその実行時間の見積もりが重要になってきます。競技プログラミングの経験は、実行する際にコードのどの部分が計算量のボトルネックになるか、コードを実行すると何時間後に結果が返ってくるかの見積もりに大いに役立ったと感じています。

 また、先述のAtCoderではコンテスト結果に基づくレーティングを用いた就職活動のサービス[4]も提供しており、自分もこのサービスを利用してインターンシップに参加しました。インターンシップでは深層学習モデルの軽量化に関する調査に取り組みましたが、メンターの方を中心に社員の方々から丁寧に指導を頂いたおかげで、インターン期間で無事成果をまとめ上げることができました。

 競技プログラミングに限らず、機械学習[5]ゲームAI[6]の分野においても数多くのコンテストやコンペティションが開催されています。こうしたコンテストやコンペティションにはリアルタイムに順位が変動する競技性があり、またX(Twitter)などで他の参加者と交流する機会も多くあるため、ゲーム感覚で楽しく参加できることも大きな魅力だと思います。本稿が、誰かの一助となれれば幸いです。

出典(いずれも最終参照日2024/2/19)
[1] 未経験者のアナタもハマる?競技プログラミング「AtCoder」って何だ?【橋本幸治の理系通信】(2021年3月19日) - YouTube
https://www.youtube.com/watch?v=WGNQrH0AV2k

[2] AtCoder:競技プログラミングコンテストを開催する国内最大のサイト
https://atcoder.jp/?lang=ja

[3] HCPC 北海道大学競技プログラミングサークル
https://hcpc-hokudai.github.io/

[4] AtCoderJobs
https://jobs.atcoder.jp/

[5] Kaggle: Your Machine Learning and Data Science Community
https://www.kaggle.com/

[6] Coding Games and Programming Challenges to Code Better
https://www.codingame.com/start/

[7] Aizu Online Judge
https://onlinejudge.u-aizu.ac.jp/challenges/sources/VPC/HUPC/3241