Interview/
Yuki Taguchi
- 自己紹介をお願いします
- Verda室のネットワーク開発チームに所属している田口雄規です。大学と大学院では、ソフトウェアベースのパケット処理の研究を行なっていて、2019年に新卒として入社したインフラエンジニアです。
就職活動では、大学院で行っていたソフトウェアパケット処理を活かせる仕事であること。また、外部クラウドをメインに使っている会社ではなく、自社でインフラ設備を持っている企業に狙いを絞っていました。情報収集する中で、LINEの過去のカンファレンス資料や採用サイトから、自社プライベートクラウドを開発・運用していること、LINEのインフラ領域が技術的に面白い取り組みを積極的に取り入れていることを知りました。
最終的に、入社の決め手になったのは、コーディングテストと技術面接の内容だったと思います。ちょうど私が大学院で研究対象としていたような最新のソフトウェア技術に関する問題や質問があり、LINEに入れば「これまで研究で扱ってきたものを、実際のインフラ基盤として開発・運用できるんだ」と、直感的に感じました。
- 業務内容や具体的な流れを教えて下さい
- LINEでは、「Verda」という社内サービス向けの大規模なプライベートクラウドの開発・運用を自前で行っています。このVerdaの業務の中でも、私の所属するチームではネットワークコンポーネントの開発やネットワーク自動化のためのソフトウェア開発を担当しています。
これまで私が経験した2つのプロジェクトを例に、具体的な業務内容をお話ししたいと思います。
入社して最初に担当した業務は、自社で開発しているロードバランサのベンチマーク自動化です。それまでロードバランサの性能テストは、開発者が任意のタイミングで行っているような状態で、以前からCIと連携して自動的にベンチマークが回せたら便利だというアイデアはあったようなのですが、着手できていない状況でした。そこで私は、ベンチマークが自動実行され、その結果が開発者に継続的にフィードバックされるようなシステムを設計・構築することにしました。
まず初めに、専用のテストベッド環境を整備しました。その中で、データセンターに足を運び、物理機器のセットアップを行うこともありました。その後、構築したテストベッド上にトラフィックジェネレータやロードバランサのデプロイ・コンフィグを自動で行えるように、自動化スクリプトを作成。そして最後に、CIツールからスクリプトをkickすることで自動ベンチマークを実現しました。このシステムの開発によって、ロードバランサの開発者は、開発途中のバージョンに関しても客観的な性能を知ることが可能になりました。
もう一つ例を挙げます。Verdaではマルチテナント化を実現するためにSRv6という最新のルーティングプロトコルを利用しているのですが、特定の条件下でパケット転送性能が極端に低下してしまうという問題があり、私はその調査と改善のプロジェクトを任せられていました。
調査ではまず、Verdaのマルチテナント環境を再現する事から始め、その後はNICのオフロード設定など、様々にパラメータを変えながらベンチマークを行うことで、問題が再現する条件を絞りました。そして、ベンチマークから得られた結果を分析する事で、問題の原因がTCPセグメンテーションに関連している可能性に目をつけました。調査はそこで終わらず、さらにカーネル内部の調査まで行うことで、性能が低くなる原因を特定することができました。原因だったLinuxカーネルのバグは修正することができ、パッチをコミュニティに送って、OSSコントリビューションの経験もできました。この調査は私一人で行ったわけではなく、同世代のチームメンバーと互いにアイデアを出し合って進めました。
これらの話は、LINEが定期的に行っているMeetupで詳しくお話ししています。資料やアーカイブ動画、書き起こし記事も公開されていますので、興味のある方は是非見てみてください。
- 仕事を進める上で、意識していることはありますか
- 業務を行う上で特に意識しているのは、「真の目的を理解する」「誰に尋ねればいいかを考える」「なるべく自動化する」の3つかなと思います。
まず、一つ目の「真の目的を理解する」ですが、実際にシステムを作る段階において、当初想定していた方法では無理が生じる場合があると思います。そういった際に方法にとらわれずに「真の目的」に立ち返って、別の方法でも元々やりたかったことは達成できるのではないか、と考えることは重要なポイントだと思います。
次は、「誰に尋ねればいいかを考える」こと。LINEほどの規模になると、インフラエンジニアだけでも業務に関わっている人の数がとても多いです。自分では分からないことや判断できない事が出てきた際に、誰に尋ねるべきかを考えておかないと、業務進行のスムーズさが全然違ってきます。これは入社してからしばらくはかなり難しかった点ではあるのですが、一発で最適な人に質問できる能力は大事ですね。
最後に、「なるべく自動化する」ことです。ネットワーク処理の問題検証を行う際にも、検証作業をコード化しておくことで、パラメータを様々に変更して動作の変化を見るのも簡単になりますし、自分以外が検証に参加する事も容易になったという経験をしました。自分はもちろん周囲の人の助けにもなりますし、全体の工数削減にも寄与できます。工数が減ればまた新しい何かに挑戦することも出来ます。何か自動化できる部分はないかという意識は、常に頭の中に入れて業務に取り組むようにしています。
- おもしろいことや難しいことなど、働く中でこれまでに得た感触を教えて下さい
- Verda室は、新卒であっても業務の進め方に関しては自由度が高く、若手エンジニアにとって良い環境になっていると思います。例えば、ベンチマーク用のテストベッド環境を構築した際に、メンバーでテストベッドを共有しやすいようなUIを作りましたが、アイデア出しから実装まですべて任せてもらえました。もともと学部時代まではインフラではなくWebサービスやスマホアプリ開発を行っていたので、楽しかったですね。
難しいこととしては、良い部分でもあると思うのですが言語環境です。Verdaの開発拠点は東京・福岡・京都・韓国と複数に分散していて、メンバーも非常に多国籍、チームによっては会話がほとんど英語の場合もあります。私も、技術資料の作成やGitHubでのコミュニケーションはなるべく英語で行っていますし、ロードバランサを担当するチームの会議はほとんど英語です。英語でのコミュニケーションは難しいと感じることは多いですが、良い機会に恵まれていると前向きに考えて、会議中はなるべく英語で発言しようと心がけています。
また、入社時には先輩や同僚の話している内容が理解できない事も多々ありました。LINEは社内で独自に開発されたツールも多く、聞いたことの無い単語に戸惑う事も多かったと記憶しています。今でもそういうことはありますが、頻度は減ってきていて、一般的な部分も社内独特な部分も知識がある程度備わってきているのではと思います。知識が増えたこともそうなのですが、分からないことはなるべく早めに調査する癖がついたのが成長と感じることですね。当たり前のことですが、大事な癖だと思います。
個人的に、必須のスキルはあまり多くはないと思います。Pythonなどのスクリプト言語が書けるスキルがあるだけでも、できることは沢山ありますし、スキル的に不足している部分は、業務や外部研修などを通してフォローしてもらえます。私は入社した年にルーターやスイッチ機器の設定方法に関しての外部研修を受講しました。逆に、失敗を恐れず、他のチームメンバーと臆せずに関わっていけるようなメンタリティーを持っている人はLINEには向いていて、素早く成長していけるのではないでしょうか。
- LINEに入社して良かったと感じることはなんですか
-
まず第一に、エンジニアとしての仕事のやりがいの大きさが挙げられると思います。LINEのプライベートクラウドは規模が大きいので、何か一つの問題解決を行なった際に、それによって恩恵を受けるサービスが沢山あります。例えば、ロードバランサは良い例ですね。LINEではLINEアプリを始め、幅広いサービスがこのロードバランサを利用しています。そのため、ロードバランサの品質を向上することは、結果的にLINEのサービス全体の品質を上げることにも繋がります。単純に、我々の生活の基盤にもなっているLINEのトラフィックを捌く基盤を扱いますので、その意味でもやりがいは大きいです。
もう一つ良かったと思うことは、同期など若手エンジニアと交流を持てることです。チーム内の5人くらいでよく一緒にランチをして、お互いの仕事の状況、困っていることや面白いと思ったことなど、ざっくばらんに情報共有をしています。最近はコロナで機会は減ってしまいましたが、意識的にリモートで雑談するようにしています。私の場合、それまで全然知らなかった事が沢山知れるので、この時間はとても重宝しています。もちろん、先輩たちから学ぶことも多々あります。エンジニアとして、十分な刺激がある環境だと思います。
- 最後にメッセージを
-
LINEには、新しい技術を積極的に取り入れる良い雰囲気があります。挑戦的な環境で自分の能力を発揮したいと思っている方はもちろん、刺激の多い環境で、自分のスキルをもっと幅広く、深く伸ばしたいという人には最適な選択肢だと思います。
最後に、Verda室では、技術的なトピックを様々なカンファレンスで発信しています。ぜひ、Webで検索してみてください。LINEのインフラにきっと興味を持ってもらえると思います。
インタビュー
-
- 大前提は基礎的な技術力、そしてチームとして成果を目指せる人であること
LINEが求める人物像
- 大前提は基礎的な技術力、そしてチームとして成果を目指せる人であること
-
- ユーザーと開発者のバランス、大規模サービスならではの課題と経験
サーバーサイド
- ユーザーと開発者のバランス、大規模サービスならではの課題と経験
-
- 純粋にWebサービス開発が好きな人、技術を楽しく追求できる人に適した環境
フロントエンド
- 純粋にWebサービス開発が好きな人、技術を楽しく追求できる人に適した環境
-
- 立場や役割に関係なく発言できる、優秀なエンジニアがお互いに刺激を与え合う会社
クライアント
- 立場や役割に関係なく発言できる、優秀なエンジニアがお互いに刺激を与え合う会社
-
- 自分が成長できること、その成長と成果がちゃんと評価されることを求めて
セキュリティ
- 自分が成長できること、その成長と成果がちゃんと評価されることを求めて
-
- 多種多様なデータ、そして周囲から得られる学びの多さがLINEの魅力
機械学習
- 多種多様なデータ、そして周囲から得られる学びの多さがLINEの魅力
-
- 最先端のプレイヤーに囲まれる刺激と個人がしっかりと尊重されること
AI
- 最先端のプレイヤーに囲まれる刺激と個人がしっかりと尊重されること
-
- 事業や周囲に貢献する、人を動かす分析をするという意識を持つことの大切さ
データサイエンス
- 事業や周囲に貢献する、人を動かす分析をするという意識を持つことの大切さ