TOP キャリア 働く競技プログラマー図鑑OSSコミュニティへの貢献を見据え、エンジニアとして着実に成長


OSSコミュニティへの貢献を見据え、エンジニアとして着実に成長
2020.11.30

中村 泰大 Yasuhiro NAKAMURA

システム情報工学研究科コンピュータサイエンス専攻/レーティング:水色/業種:インターネット関連/職種:ソフトウェアエンジニア、IaaSエンジニア/ヤフー株式会社

学生時代からOSS活動を行い、プルリクエストによる貢献におもしろみや手応えを感じていた。現在では、当時と比べものにならないほど多種多様なコンポーネントやOSSに触れながら、社内エンジニア向けソフトウェアの開発と運営に携わっている。趣味はTRPG。コロナ渦の今は、オンラインで友人とのセッションを楽しんでいる。

競技プログラミングと私

「プロから認められる仕事がしたい」という原動力

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

 私の人生初の競技プログラミング体験は、高専1年生の時の部活における、「パソコン甲子園」への参加です。当時は周りに競プロをやっている人がいなかったため、ハマり方や学び方が分からず続きませんでした。その後、本格的に競プロを始めたのは大学4年生の時です。きっかけは、編入同期に勧められたことです。ちょうど「競プロの問題を通してデータ構造を学ぶ」という講義がありその世界に惹きつけられ、さらに「CodeFestival」という学生向けコンテストに出場した経験を通して、アルゴリズムや方法論を駆使して問題を効率的に解くことのおもしろさを体感しました。

仕事観

 学生時代からOSSコミュニティへの貢献に関心を抱いていた私は、就活に際しても「その道のプロフェッショナルから認められる仕事がしたい」「役立ちたい」という考えを軸に企業を見て回りました。なかでもヤフーはオブジェクトストレージなど、さまざまなツールを内製しており、自分も同社で数多くのエンジニアの仕事の効率化や高度化のためにそうしたツールを開発・運用してみたいと考え、入社を決めました。

仕事のリアル

エンジニアやプロジェクトへの貢献を日々、実感

仕事内容

 社内向けIaaS環境の構築と運用、より具体的にいえばVM(仮想マシン)を必要とする社内のエンジニアやチームのリクエストに応えて、要求されるスペックのクラスタ構築、運用を手掛けています。OpenStackに社内向けの独自改修を加えて構築したIaaSを開発・運用するところから、WebUIの整備やネットワーク環境の検証まで、幅広い業務に約20人のチームであたっています。また、隔週で日中アラート当番の日があり、その日は開発を行わずIaaSの親機から飛んでくるハードウェア・ソフトウェアの不良や故障に対処します。

魅力とギャップ

 入社当初は、登場するコンポーネント数が多いことにとにかく驚きました。全容が把握しづらく、不良や故障が起きた時に問題となる箇所がなかなか見つからず苦戦することも多々あります。しかし、だからこそ放置されていたバグの解消に役立ったり、自分の作ったモジュールが導入されたりと、エンジニアやプロジェクトに貢献できた時にはやりがいを感じます。たとえば以前、社内で新しく展開するサービスの中核を担うOSSに致命的なバグが見つかったことがありました。バグ解消に向けたチーム有志のコードリーディング会で大まかな原因箇所の推定が行われた後、私は自主的にそれをさらに細かく検証し、修正パッチを書きました。そして翌日には、先輩にテストしてもらい、問題が解決したことを検証できました。その後、OSSの開発チームにパッチを送ってやりとりをおこない、パッチの作成から数週間後にはOSS本体に修正が取り込まれたのです。比較的大きい貢献ができ、非常に良い体験でした。

1日のスケジュール

10:00

 リモート出勤。メールチェック、担当の問い合わせチケットにコメントがないか確認。問い合わせに対する追加調査。

11:30

 早めの昼食。

12:30

 今度予定している社内IaaSのWeb UIのメンテナンスの手順を先輩と相談したり、コードを読んだりしてドキュメントツールにまとめる。

15:30

 定例ミーティング。クラスタ構築案件の進み具合をチーム内で共有。加えて、カンファレンスの参加レポートやチーム内の周知事項を聞く。

17:00

 社内向け証明書ツールに手を加えたものをデプロイするために、社内PaaSと格闘。テスト環境を使って、本番にどうデプロイするかを試す。

19:00

 PaaSとの格闘に無理やり区切りをつけ、退勤。

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

エンジニアとして欠かせない「聞き出す力」を高める

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

 エンジニアは日々、さまざまなエラーやバグと格闘し、より良いシステムの構築を目指す仕事なので、当然、競技プログラミングで鍛え上げたノウハウは問題解決の武器になります。ただ、ソースコードを読み解く能力は大前提として、その上で求められるのが「周囲に自分の考えを伝えたり、周囲から自分の知りたいことを聞き出す力」です。各コンポーネントの挙動を把握するにはコードを読み解くのが一番ですが、そのソフトウェアを使った運用や構成などについては先輩など詳しい人に教えてもらう必要があり、答えを得るためには「どこが不明なのか」「何を知りたいのか」を明確に伝えねばならないからです。こうしたコミュニケーションスキルについては、自分はまだまだ成長の途上。これからも積極的に声を上げ、周囲から多くの知見を吸収していきたいと思います。

今後の展望

 日々の仕事を通じて、OSSコミュニティへの貢献、特にKubernetesやOpenStackに関連したプロジェクトやシステムソフトウェアへの貢献をより頻繁に行えるようになることが目標です。学生時代からそういった想いはありましたが、当時の何倍も多種多様なコンポーネントやOSSに触れているので、可能性が大きく広がっています。もちろん、まだまだ仕事の進め方をつかみ切れていない部分もあるので、まずは扱っているシステムの全体像を把握し、自立して業務にあたれるよう着実に成長していきたいと考えています。

(左から)活発に意見を交わす中村/関連書籍が並ぶ/多様なコミュニケーションを意識した来客スペース

中村 泰大 Yasuhiro NAKAMURA

学生時代からOSS活動を行い、プルリクエストによる貢献におもしろみや手応えを感じていた。現在では、当時と比べものにならないほど多種多様なコンポーネントやOSSに触れながら、社内エンジニア向けソフトウェアの開発と運営に携わっている。趣味はTRPG。コロナ渦の今は、オンラインで友人とのセッションを楽しんでいる。