皆さまこんにちは。
Marketing Solution Division, Partnering Solution Unitに所属している伊藤と申します。
今回は私も運営メンバの一員である、社内競技プログラミング大会について紹介します。
ARISE analyticsでは今年1月から社内で競技プログラミング大会が開催されています。ARISE analyticsは数多くのデータサイエンティストが所属する会社であり、分析業務が活発な会社です。また、分析業務のほかにも、その知見を活かしたソリューション開発が盛んにおこなわれております。こうした分析業務や開発業務で役立つ経験が得られる他、普段お互いあまり関りがない分析業務が中心の人や開発業務が中心の人が所属組織をまたいで交流をすることで、参加者が楽しみながらスキルアップができるような環境づくりを目標に競技プログラミング大会を運営しております。
この取り組みはPartnering Solution UnitというKDDIパートナー企業へのソリューション提供を中心に行うグループのリーダーである鴨居が、チーム全体のコーディング力を向上させたいという思いを元に始めたものでしたが、参加者がどんどん増えていき全社的に大会を実施するようになりました。その結果、今では研修中の新卒3期生も含めた幅広いメンバが参加するようになりました。今回は参加メンバのうち4人になぜ社内競技プログラミングに参加しているのか、参加して得られたことはあるかなどを聞くインタビューを実施したので、このインタビューを通してARISE analyticsのメンバがどのように競技プログラミングに取り組んでいるのかをお伝えできればと思います。
競技プログラミングとは
競技プログラミングとは、与えられた問題に対して適切な答えを出力するプログラムをいち早く完成させることが目標となっている競技です。出題される問題はアルゴリズムの知識が問われるものが多く、例えば、目的位置、さらに移動経路ごとのコストが入力として与えられ、初期位置から目的位置に移動するために最小のコストを出力するプログラムを作成せよといったものがあります。このような問題は時間計算量を意識し適切なアルゴリズムを選択することが重要であるため、アルゴリズム知識だけに論点が集まりがちですが、それ以外にもプログラムを素早く実装し、バグを取り除く力が求められます。
ARISE analyticsの業務では直接競技プログラミングで使うようなアルゴリズムの知識を求められることは少ないですが、素早く実装する力や、バグを取り除く力は業務にも繋がるスキルではないかと私は考えています。
参加者インタビュー
さて、ここからは社内競技プログラミング大会の参加者である、Marketing Solution Divisionの梅津、現在研修中の新卒3期生の岩野と江澤、Marketing Solution Divisionの鴨居の4人にインタビューした内容を紹介していきます。インタビューを通してARISE analytics内で競技プログラミングがどのように捉えられているかをお伝えできればと思います。
プロフィール
梅津 2020年にARISE analyticsに入社。Marketing Solution Divisionに所属し、ECサイトへのレコメンド提供と精度評価業務に携わっている。ポケモンユナイトに興味津々。 |
|
岩野 2021年に新卒3期生としてARISE analyticsに入社。学生時代はRNAを用いた医薬品の開発を情報学的な立場で研究。競技プログラミングは学部卒業後の空き時間に始めた。ロードバイクが趣味。 |
|
江澤 2021年に新卒3期生としてARISE analyticsに入社。学生時代はブロックチェーンを用いた認証・認可システムについて研究。競技プログラミングは研究室の友人と一緒に始めた。美味しいものを食べるのが趣味。 |
|
鴨居 2018年にARISE analyticsに参画。Marketing Solution Division内のPartnering Solution UnitのリーダーとしてKDDIパートナー会社との協業案件に関わる分析や開発業務のリーダーを担当。機械学習を活用したソリューションのデータETLやバックエンド開発などを2年ほど担当したのちに、現在は位置情報データを活用マーケティング分析や海外クライアント向けのコンサルティングなどに従事。登山・フットサルが趣味。 |
|
インタビュアー:伊藤 2020年にARISE analyticsに入社。Marketing Solution Divisionに所属し、位置情報を活用したマーケティング分析やKDDI提携企業のデータ活用にむけた分析などに携わる。最近は対戦格闘ゲームに入れ込んでいる。 |
Q1. 競技プログラミングに興味を持ったきっかけは
梅津: 普段はSQL集計がメインの業務でありPythonコーディングするタイミングが無いので、コーディング習慣をつけたいという理由で競技プログラミングを始めました。
―――SQLはデータ分析の基本ですよね。ちなみに梅津さんの所属するチームではどんな分析業務を行っているんですか?
梅津: 私の所属するチームでは、グループ会社が運営するECサイトのレコメンドを担当しています。ECサイトによくある ”この商品を買った人はこの商品も買っています” みたいなやつですね。チームではレコメンドする商品を選定するシステムを運用しており、私は主にレコメンドに出した商品が実際にクリックされているかどうかを調査する業務を行っています。
江澤: 私はもともと大学院時代から競技プログラミングをやっていました。コンペティションで競うのが好きで、やっていくうちにアルゴリズムが身についていくのが楽しかったです。
―――競争心に駆り立てられているうちにアルゴリズムや実装力が身についているというのが競技プログラミングの良いところですよね。競技プログラミングを通じて初めて学んだアルゴリズムで興味深いものなどありますか?
江澤: 累積和ですかね。シンプルに頭いいなと感じました。競技プログラミングでは大量のデータが与えられることが多く、様々なアルゴリズムを駆使して計算量を減らす工夫をしなくてはいけないのですが、累積和はそのアルゴリズムの一つです。この累積和のスマートさに魅力を感じて、少しずつ競技プログラミングにハマっていきました。
岩野: 以前はプログラミングスキルを評価できるサービスで自分のスキルを測っていましたが、バイトの同期が競技プログラミングをやっていたので興味を持って始めました。数学力には自信があったのもあり、最初のうちはスコアがどんどん伸びていき、成長が見れて面白かったです。伸び悩んだ時期もあり少し離れていましたが、社内競技プログラミング大会の取り組みを通じ、同期と一緒にまた始めました。
―――身近に競争相手がいるとモチベーションが湧きますよね(笑)江澤さんと岩野さんは2021年4月に新卒入社された新卒3期生同士ですが、互いにライバルですか?
江澤: 岩野さんはライバルではなく先生みたいな感じですね(笑)私は新しい物事を理解するのが遅めなので、わからないことがあるたびに岩野さんに手助けしてもらっています。そのおかげで少しずつコーディング力が上達しているのでとても感謝しています。
岩野: 私もライバルとは考えていなくて、友達みたいな感じですかね。何かを継続して続ける時に同期や仲間がいるのは良い事であると感じています。最近は『競プロ典型90問』を研修開始前に毎日取り組んでいるのですが、この取り組みを続けられているのは江澤さんのような同期や仲間がいるおかげだと思います!
※競プロ典型90問(競プロ典型 90 問 – AtCoder )
―――同期で一緒に切磋琢磨できる相手がいるのはいいですね!鴨居さんはいかがでしょうか?
鴨居: 私は就職活動時のホワイトボードコーディング面接対策でアルゴリズムの勉強をしており、その一環で競技プログラミング初めて触れました。ARISEに参画後、一人でバックエンド開発をまるっと任されることがあり、自分の実装スピードがプロジェクト推進のボトルネックなっていることに気づいたことがきっかけで休日は競技プログラミングの大会に出場するようになりました。
―――いきなり一人でバックエンド開発を任されちゃうって裁量が大きいですね。うまく開発できたのでしょうか?
鴨居: これまでに書いたことがないScalaという言語での開発であり納期も短いという正直キツい状況でしたが、上司のサポートをもらいつつ頑張ってキャッチアップし、なんとか納品することができました。
江澤: 鴨居さんでもキツいと感じる業務があるんですね、私もそういった忙しい状況でさえスマートに対応できる人間になりたいと思います。
岩野: Scalaを書いたことは無いのですが、競技プログラミングで培った実装力とかって言語を問わず活用できるのではないかと思っています。もし短い納期で新たな言語を使用することが必要になったとしても、落ち着いてキャッチアップしたいなと思います。
鴨居: お二人とも頼もしいですね。来るべき状況へ向けて準備くださっているみたいで非常に頼りになります(笑)
―――梅津さんも2020年に入社されたばかりですし、岩野さんや江澤さんは2021年に入社されてからまだ研修を受けている最中ですよね。これから先にARISEで取り組みたい領域などはありますか?
梅津: 現在担当しているレコメンドがおもしろいなと感じているので当分は継続していきたいですね。あと個人的に興味のある領域は生体情報ですね。扱えるようになるのは先の未来だと思いますが(笑)
岩野: ARISEはKDDIのグループ会社ですし、スマートフォンや基地局などの位置情報データなど、他社では得ることが出来ないデータの分析がしたいですね。あとはヘルスケア領域などにも興味があります。
江澤: 私はまだ明確に何かあるわけではないですが、データサイエンスの活用によって何か深い洞察を得ることが出来たらいいなと思っています。それこそ、簡単な集計では発見することができないような真実を見つけ出すみたいな……
Q2. 競技プログラミングをしていて業務で役にたったこと、または自分の成長が感じられたことは?
梅津: 業務でコーディングしないのでアルゴリズム知識はあまり役立たないです(笑)SQLの計算量は意識するようになったのでそこは成長した部分だと思います。今後は開発業務に携わるので、そのタイミングでアルゴリズム知識を役立てたいです。もちろん、ロジックを考える過程とバグを取り除く過程は現在でも役立っていると思います。
―――競技プログラミングでは計算量の意識だけでなく、テストケースを作成してバグを取り除く意識も大切ですよね。
梅津: そうですね。AtCoderでは与えられたテストをクリアするだけじゃ仕様を満たさない場合が多いので、必然的に自分でテストケースを考えることが多くなりますね。社内勉強会でテスト駆動開発を学んだ時にまんまこれじゃん!と思いました。
―――江澤さんや岩野さんはいかがでしょうか?業務でなくとも、これまでに役立った経験などはありますか?
江澤: まだ研修で分析アルゴリズムを習っている段階だからなんとも言えない(笑)楽しくプログラミングできているので競技プログラミングの取り組みがあって良かったと思っています。
岩野: 大学では高いスペックのコンピュータを使っていたので特に意識していなかったのですが、研修では計算機の性能を十分に引き出すために工夫してプログラムを書く必要があり、競技プログラミングで培った計算量の見積もりやプロファイリングなどが生きている気がします。また、この取り組みのおかげで楽しくプログラミング出来ていること自体も良かったと感じています。
―――鴨居さんはいかがでしょうか?
鴨居: 要件や仕様をみてからコードを書く手が動き始めるまでのスピードが格段に上がりました。実務では自分がコードを書くことはほとんど無くなりましたが、たまに書くときに一瞬でサンプルコードを書けるようになっていたり、パフォーマンス上起きうるリスクみたいなものが事前に検知できるようになっていたりなど、開発の推進に活用出来ていると感じています。
―――開発や技術に詳しい方が率いているチームって魅力的ですね!
鴨居: クライアントへ提案を行う際、細かい技術的な知識が意外と役立つんですよね。クライアントからの期待に正しく応えるには必要になるというか。ですので、自分自身でも技術的なスキルアップは怠らないように意識しています。私自身はあまり開発メインな働き方ではなくなってしまったのですが、チームメンバの分析や開発とか技術的な取り組みに対して、メンバ視点で相談に乗ってあげられるようなリーダーを目指しています。
Q3. ARISEでは勉強会やクラブ活動が盛んですよね。他にも何かの活動に参加されたりしていますか?
梅津: 伊藤君を含め同期とチームを組んでkaggleコンペに参加しています。機械学習モデルの構築や、データの基礎分析などARISEでの業務と共通する部分が多いですし、自分の実業務以外の分野に気軽に関わることが出来るのがいいですね。
※Kaggle部の活動
江澤: 私もKaggle部の活動に参加しています。週に1回ほどのミーティングでKaggle上のディスカッションを読み込んだり、岩野君と一緒に好きなことをやっています。
岩野: 私も同じくKaggle部に参加しています。他の勉強会なども興味はあるのですが、まだ研修中ということもあり参加出来ていません。業務と全く関係ありませんがモンハン部というのにも所属しているので、夜な夜な狩りを続けています(笑)
鴨居: 勉強会ではないのですが、私はアウトドア部やボードゲーム部などにも参加しています。クラブ活動に参加することはメンバ外の知り合いを増やすというだけでなく、メンバ間の仲を深め仕事の成果も上げることにも繋がると感じていますので、私は社内交流を大切にしています。
おわりに
ARISE analyticsで競技プログラミングの取り組みを始めてからもうすぐ半年となりますが今回のインタビューでは、担当業務で出来ない経験をしたり、業務貢献に繋がるスキルを獲得するなど、参加者それぞれでメリットを感じていることがわかりました。ARISE analyticsでは競技プログラミングの他にも有志による社内勉強会やKaggleなどのデータ分析コンペティションも盛んに行われています。もし機会があれば他の活動についても紹介出来れば幸いです。