Interview/

Osawa Kazuhiro

ーー自己紹介をお願いします。
2011年にライブドアに入社して、位置情報サービスやLINE公式アカウントのパートナー向けの管理画面の開発、台湾向けのサービス開発を担当してきました。その後組織や担当サービスは変わりましたが、基本的にサーバーサイドのエンジニアとして働いています。2015年にサービスを開始したライブ配信サービスの「LINE LIVE」に立ち上げからずっと関わっていて、今はLINE LIVEやLINEチケットなどのエンタメサービスを開発する組織の室長をしています。
ーーサーバーサイドエンジニアの組織や役割を教えて下さい。
LINEの開発組織はざっくり言うと、各開発担当役員の下にセンターという単位で大きな部門があり、フロントエンドやセキュリティやインフラなどの開発領域ごとの部門と、LINEのメッセンジャー、社外のエンジニアに提供するプラットフォーム、広告事業とか金融領域や、僕らがファミリーサービスと呼んでいるLINE○○のようなその他のサービスといった担当するサービス領域で分かれている部門があります。サーバーサイドエンジニアの多くは、後者のサービス領域で区分されたセンターにそれぞれの役割を持った室やその配下のチームに開発担当者として所属しているかたちです。

例えば、LINEのメッセンジャーの部分だとストレージの運用開発を行っている人やLINEアプリ向けのサーバーAPIを開発している人、僕の所属しているファミリーサービスの担当部門だと、各サービスごとにサーバーサイドエンジニアが数人ずついるイメージです。サービス担当の場合、そのサービス規模や開発フェーズなどに応じて必要な人数がアサインされるので、少なくて3人多くて15人くらいで開発を進める感じですかね。

担当するサービスや領域は、中途採用の方はエントリーのときから分かれていますし、新卒でも基本的に希望を聞いた上で決めてます。必ずしも希望通りにできるわけではないですが、本人が興味や意欲のある領域じゃないとパフォーマンスが出ないと考えて配属しています。もちろん入った後も希望を聞く機会はありますし、働く人の志向と適正や、社内のリソースや開発優先度などで担当が変わることもありますね。
ーー具体的な業務内容を教えてください。
新規サービスの場合は、事業の方向性がある程度決まった段階で現場のエンジニアをアサインすることが多いです。アサイン後は企画担当からサービス概要などのオリエンを受けて、全体のサーバ構成の設計や具体的に利用する技術的に何を使ってどう作っていくのかを決めていきます。Server side Kotlinを使うかgRPC使うかや、ストレージをどうするかなどですね。もちろんマネージャーやTech Leadというポジションが中心になって決めていくのですが、実際に作る人の意見や希望も聞く、試してみたいことやこうやったらもっと上手くいくみたいな意見は歓迎です。

事業側から仕様や技術的な部分が決定された状態で下りてきて、それをそのまま作るという環境ではありません。エンジニアは技術的な部分を責任持って主導する必要があります。言われたこと何でもやりますという人よりも、あれをやりたいこれを試してみたいという人の方が良いですね。もちろん、やりたいことをやりっぱなしというのはNGで、何かしら問題が発生したときに最後まで責任を持って問題解決に当たってほしいと思っています。

開発が始まると設計 -> 実装 -> pull request -> code review -> merge -> deploy -> QA -> releaseという流れでプロジェクトが進みます。あと、LINEはコードレビューがしっかりしているのが特徴です。全てのコードは必ず他の誰かによってレビューされ、レビュアー全員のOKが出ない限り取り入れられることはないです。新卒の人であっても社歴が10年超えてる人であっても関係なく、間違ってるものや改善できるものは遠慮なく意見がされるようになっています。レビューで指摘される内容はもちろん、他人のコードレビューをするときにも勉強になるところはあります。遠慮する必要はないので、誰のコードであってもガシガシ指摘、意見してほしいです。
ーー今そして今後の課題ははなんでしょう?
これはLINE LIVEの話になりますが、最初のローンチ時にどうしてもスケジュールが決まっていてそれに合わせて作り上げたこともあって。ログの定義が割といい加減というか、安全重視の作りになっているのでエラーのアラートが多めにきてしまう状態だったりするので、そこをより最適なログ定義に改善したいと考えています。

LINEにはサービスとしての歴史が長いサービスが多いので、当時は良くても今はちょっと変えたほうが良いといった部分も増えてきています。何か新しい部分を作り続けるためにも、そういったところのメンテナンスは必要ですし、新しく作るときもサービスが育った後やその先も見越せているのがベターですね。使用しているフレームワークのバージョンアップデートやサポート切れの対応、リファクタリングなど、サービスの表側に影響しない改修であれば、エンジニアがQAと相談したうえで実施を決定して、企画には進める前に共有して対応することもあります。

あとは、単なるサービスとしてだけではなく、サービス同士を連携させた機能や、社会インフラのようなな使われ方を目指すサービスもどんどん増えてきている。これまでもしっかりやってきましたが、より安定性を担保し続けるということは常に課題です。
ーーサーバーサイドエンジニアに必要な素養やスキル、志向性などはありますか?
当たり前かもしれませんが、企画する人や事業側の人って、どうしてもサービスの表側で見える部分しかわからないことが多い。理想とするサービス像は伝えてくれるけど、そのサービスや機能を安定的に、数百万人規模で使ってもらうために必要なことは分からない。サーバーの構造をどういう風に書いて、データの構造はどういう風に持っていないといけないかはサーバサイドのエンジニアが考えていかないといけない。

裏側に触れられていない企画書からもそのサービスがどういう使われ方をするかを読み取って、落ちないサービスとして実装しなきゃいけない。エスパー力というか先読み力というか、そういう要素があると強いですね。基本的なコンピュータサイエンスの知識やスキルは必須なのですが、色んな立場の人と連携しながら働くのが仕事なので、読み取る力・伝える力は大事です。これから作る新しい部分によって障害を起こさないためにどうしたらいいか、そういった観点でも現在のリソースの状況などを加味して緻密に考えていく必要があります。

と言いつつ緻密になり過ぎるのも良くなくて(笑)。会社としても変化の激しい環境でやっているので、新しいサービスや機能を出すなら1日でも早い方が良いですし、せっかくの良い機能も2番手3番手になるよりは1番の方が良い。時には大胆な判断が必要ですし、ここまでやっておけば大丈夫という見極めにもスピード感がほしいです。緻密と大胆を柔軟に使える人の方が、会社にもサーバーサイドの仕事にもフィットするかなと思います。

LINE LIVEだと、インパクトがありそうな配信がタレントさんの都合で3日前に決まることもあります。そういう日に限って他にも大きめの案件が控えていたり。そのときに今の環境で耐えられるかを考え、怪しいなら超特急でサーバーを増やしてもらって、データベース側のエンジニアにも新規サーバのアクセスコントロールを設定してもらって、増やしたサーバーにアプリケーションをデプロイして運用にすぐ入れるみたいなことを、どんどんエンジニアが判断して手を動かさないといけない。覚えているものだと、大規模配信の2日前くらいに突貫でサーバーを数十台足した案件もあります、とにかくサービス全滅は避けようと。緊張感のある機会は結構あるので、トラブルを事前にきちんと見つけて適切に回避するという点は、楽しめとは言いませんが、ある程度やりがいに感じられると良いです。
ーーLINEでサーバーサイドエンジニアとして働くやりがいは何でしょうか。
想像が難しいかもしれませんが、新しいサービスを出したその日に数十万、百万単位でユーザーテーブルのレコードが増えたりするので、サーバーサイドエンジニアとしては張り合いがありますよ。一瞬でトラフィックがすごいあって、データベースにユーザーテーブルがすごい勢いで増えていくみたいな。

2017年末から2018年年始にかけての年賀スタンプを担当していたのですが、テレビでプロモーションもやっていて視聴率的には多くなると2,000万人くらい見ているはずと言われて、1秒あたりどのくらいアクセスを捌く準備をすれば耐えられるか逆算して準備をしたこともありました。これも急な案件で準備期間は2ヶ月くらいでした。これは極端な例ですが短期決戦の案件も多くて、こういう案件を走り切った経験はサーバーサイドの人間としては糧になるものかと思います。実際に2018年末〜2019年始にかけての年賀スタンプには新卒1年目のエンジニアがアサインされて、若干千尋の谷に突き落とした感はあったけど、良い経験になったんじゃないかなと(笑)。
こういう派手な案件もそうですが、普段プロジェクトをメンテナンスすることも、コードレビューし合うことも、システムを設計することも、とにかく経験できる開発業務が多いです。

マイクロサービス化も進んでいるので、隣の組織のエンジニアが書いているAPIを使わないと新機能を作れないということもあります。そういうときは先輩などを辿って、このAPIをこの要件で使っていいか相談をして、APIのスペックを見ながら自分で実装して、といった組織を超えた開発もあります。案件によってはその隣の組織が海外のチームだったりと、国を跨いだ開発経験も積めます。

特殊だけど応用の効く経験ができる会社だと思います。本やサイトにも情報はありますが、色んな部署と関わりながら、小さな失敗を繰り返しながら得ていく知識はどこでも使える力になると思います。
ーー最後に学生の皆さんにメッセージを。
LINEは日本でも数少ない身の回りの家族や友達の多くが利用しているサービスであり、そしてこれから我々社員でも想像もしなかったような領域でのサービスを次々とリリースしていく会社だとも思っています。この環境では、働いているだけでもエンジニアとしての能力は自然と高まっていきますし、エンジニアリング以外の各種事業の運営に必要な知識も自然と養われていきます。今後も長いエンジニア人生を送っていく中でもLINEで働いた経験はとても意義のあるものになると信じていますので、ぜひぜひ皆さん我々と一緒に働いてみませんか?