TOP キャリア 働く競技プログラマー図鑑三菱商事グループのビッグプロジェクトでも生きる競技プログラミングスキル


三菱商事グループのビッグプロジェクトでも生きる競技プログラミングスキル
2020.11.30

熊崎 剛生 Tsuyoki KUMAZAKI

情報理工学系研究科コンピュータ科学専攻/レーティング:黄色/業種:情報処理/職種:ソフトウェアエンジニア/エムシーデジタル株式会社

大学と大学院では計算機科学を専攻。現在は入社1年目にして三菱商事グループの食品流通DXプロジェクトに参加し、主に需要予測システムの開発を担当。目下の課題はコミュニケーション能力に磨きをかけること。散策やテレビゲームで適度に息抜きをしながら、日々スキルアップに努めている。

競技プログラミングと私

競技プログラマーがいる安心感と1dayインターンの印象が入社の決め手に

競技プログラミングとの出会い

 私は中高一貫校でパソコン部に所属していたのですが、中等部の頃に高等部の先輩から情報オリンピックとPOJ(オンラインジャッジサイト)について教えてもらったのを機に競プロの世界にのめりこんでいきました。愚直に取り組んでいても解けなかった問題が、瞬間的なひらめきで解決に向かっていく感覚に、なんとも言えないおもしろさを見出したのを覚えています。また、情報オリンピックで最終的に金メダルを獲得したことや、大会で知り合った他校生とSNSを通して交流を深めたことなども良い経験だったと感じています。
 AtCoderのコンテストに参加するようになったのは、大学に入ってからだったかと思います。シンプルながらもハイレベルなアルゴリズム構築能力や思考力を必要とする問題が多く、気づけばしっかりとはまっていましたね。

仕事観

 計算機科学を専攻していたこともあり、就職に際してはソフトウェアエンジニアになろうと考えていました。そのときの想いとしては「個人では扱えないような大きなデータに触れたい」という漠然としたものでしたが、AtCoderJobsで「三菱商事の扱う幅広い産業のデータに興味があるソフトウェアエンジニア募集中!」というエムシーデジタルの求人にピンときたのがきっかけで、今の仕事にたどり着きました。実をいうと、それ以前に別の会社で長期インターンを経験していたのですが、そこでは思うように成果が出せず、少し自信を失っていたところでした。そのためエムシーデジタルの選考過程にあった1dayインターン(提示された課題を1日間で仕上げ発表する)にも多少の不安を感じていたのですが、実際に参加してみると職場の雰囲気も良く、競プロの先輩がいたこともあって、納得ができる結果を出すことができました。このときの経験が非常に好印象で、ここでなら楽しく自分の能力を発揮できるのではないかと感じ、入社を決意しました。

仕事のリアル

喜びとプレッシャーを感じながら、ビッグプロジェクトにトライ

仕事内容

 現在は三菱商事グループの食品流通DXプロジェクトに参加し、そのなかの需要予測システムの開発に取り組んでいます。データサイエンスチームとエンジニアチームでタッグを組んで進めており、データサイエンスチームが予測処理の精度改善、エンジニアチームがデータ連携基盤・運用基盤の整備や予測処理のプロダクションシステムへの組み込みなどを担当。そのなかで、私はエンジニアとして、データサイエンスチームがつくった予測システムのプロトタイプを、PythonとGoogle Cloud Platformを使って整理・高速化する業務を手掛けています。最初はGoogle Cloud Platformは使った経験がなかったので苦戦しましたが、チームメンバーに教えてもらったり、ドキュメントを読み込んだりすることで、どうにか扱えるようになりました。自身の課題として意識していることは、コミュニケーション能力の向上です。これまでは他の人と協力してシステムをつくることがあまりなかったので、ついつい自分が分かれば良いという感覚でコードを書いてしまっていましたが、最近はコードレビューを踏まえ、読みやすさも重視するように心がけています。また、自分がコードレビューする際には相手の意図をできるだけ汲み取りつつ、自分なりの根拠を明確にするようにしています。

魅力とギャップ

 自分の書いたコードが想定通り高速にデータを処理しているのを確認できたときに達成感を覚えます。また、食品流通DXプロジェクトについてはメディアで取り上げられることもありますし、自分が需要予測システムのデータを扱っている際に有名な企業や商品の名称を見ることも多いので、そのたびに社会的な影響力の大きさを実感して喜びとプレッシャーを同時に感じています。当社の魅力という点では、自分にとっては同僚の存在も非常に大きいです。システムやデータ形式の設計案について議論することも多いのですが、自分でも「微妙だな」と思っている案を出すと、より良い代替案を提示してもらえることが多く、とても勉強になります。それから、競技プログラミングや機械学習コンペティションに取り組んでいる仲間が多く、そういった話題でコミュニケーションがとりやすいのもありがたいですね。

1日のスケジュール

10:30

 出勤、Slack の投稿やGitHubの通知をチェック。

11:00

 デイリーミーティング(その日のタスクなどを1人20~30秒ほどで報告)。

12:00

 昼休憩、同僚とオフィス付近でランチ。

13:00

 プログラミング、コードレビューなどに取り組む。

15:00

 同僚2人とシステムの設計について議論。

16:00

 プログラミング、ドキュメント記述、GitHub Pull Request作成など。

19:00

 退勤。

仕事と競技プログラミング

競技プログラマーの強みを生かしながらフルスタックエンジニアを目指す

活かせる・求められるスキル

 自身の担当範囲に絞ると、Python のスキルと機械学習の知識が求められます。もう少し全般的なスキルにまで話を広げると、利用するライブラリのドキュメントを読み解く力、コードレビューで正確にコミュニケーションをする能力、課題を分解して整理する能力なども必要かと思います。競プロで得た知識については、経路最適化などのアルゴリズムを構築する際に役立っています。また、課題を分解して整理する作業も競プロと通じるところが多く、その経験が生きているように感じています。そして、すべての案件にいえることですが、スピードを求められる場面も多いため競プロで鍛えてきた手を動かす速さと思考力が大いに役立っていると思います。

今後の展望

 以前は興味のあることだけに集中したいと思っていましたが、仕事をするにつれて、幅広いスキルを持っていたほうがおもしろい仕事に出会いやすくなると考えるようになりました。直近ではデータベースや分散処理などの分野の知識を深めてみたいと思っています。友人でどんな仕事でもこなす人がいるのですが、いずれは自分もフルスタックエンジニアと呼ばれるようになりたいですね。これからも競プロで思考力や分析力などをブラッシュアップしつつ、その一方で適度に息抜きをしながら多岐にわたる分野の知見を深めていきたいと思います。

アルゴリズムについて議論を深める様子・書籍費補助など学びを後押しする制度が充実・ 会議室(WeWork KANDA SQUARE 内) 撮影場所: WeWork KANDA SQUARE

熊崎 剛生 Tsuyoki KUMAZAKI

大学と大学院では計算機科学を専攻。現在は入社1年目にして三菱商事グループの食品流通DXプロジェクトに参加し、主に需要予測システムの開発を担当。目下の課題はコミュニケーション能力に磨きをかけること。散策やテレビゲームで適度に息抜きをしながら、日々スキルアップに努めている。