LINE株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。 LINEヤフー Tech Blog

LINEアプリのクライアントサイドの開発者体験を向上させる。Developer Experience Dev Teamが抱く野望

LINEの開発組織のそれぞれの部門やプロジェクトについて、その役割や体制、技術スタック、今後の課題やロードマップなどを具体的に紹介していく「Team & Project」シリーズ。今回は LINEアプリのクライアントサイドの開発者体験の向上を目指すDeveloper Experience Dev Teamをご紹介します。チームメンバーである三木康暉 (giginet)と秋勇紀 (freddi)、鄭基旭 (jung)の3名に、チームが担う役割や担当するプロジェクト、今後の目標などを聞きました。 

 規模の大きいサービスだからこそ、基盤の改善には意義がある 

――Developer Experience Dev Teamの概要について教えてください。 

giginetDeveloper Experience Dev TeamはLINEアプリのクライアントサイドを担当する開発者の体験を向上させることがミッションで、開発者向けのツールの提供やビルド環境の改善など、幅広い領域を責務としています。エンジニアや組織が抱える開発・運用の課題を見つけて、より良い状態へ改善するための舵取りをするチームです。  

他に、社内のエンジニアコミュニティの活性化も担っています。たとえば、社内勉強会の主催や外部カンファレンスへの登壇の促進、LINEの親会社であるZホールディングスの企業内大学「Zアカデミア」での講義などを行うこともあります。 デベロッパーリレーションや講演活動、記事執筆などに興味のあるメンバーが多く所属しているのもDeveloper Experience Dev Teamの特徴です。

 freddi :さらに補足すると、私たちのチームには『読みやすいコードのガイドライン』を執筆した石川宗寿さんというエンジニアが所属しています。その石川さんを中心として、社内のソースコードの品質改善やレビュープロセスの改善なども担っています。 

――みなさんがどのような経緯でLINEへ入社したのかをお話しください。 

freddi :私は大学4年生だった2018年頃にLINE Fukuokaでインターンをしていました。働いているエンジニアのスキルも高いし、エンジニアのことを積極的に支援する体制があるので、すごく良い会社だと思ってそのまま2019年4月にLINE Fukuokaへと新卒入社しました。 

しばらくLINEスタンプメーカーの開発に携わりましたが、自分自身の活動の幅をより広げたくなり、2022年1月からLINEのDeveloper Experience Dev Teamに転籍してしています。これまでの活動については、過去に受けたインタビューでも詳しく話しています。 

jung私はLINEへ入社する前に、現在の株式会社MIXIでゲーム開発に携わっていました。その職場でDevOpsの仕事をする機会があったんです。取り組んでみると面白くて、今後のキャリアでもDevOps系の業務に携わりたいと思うようになりました。転職を考えて調べてみると、LINEが開発環境の改善を担うエンジニアを募集していることがわかりました。 

iOS・Android両方のアプリの改善に携われることや、LINEは日本のなかでもトップレベルに規模の大きいサービスのためやりがいのある課題が数多くあることに期待を抱き、入社を決めました。 

giginet 私は新卒でクックパッド株式会社に入社してトータルで7年間ほど働きましたが、そのうち6年間はモバイル基盤部という、CI環境の改善やアプリのビルド速度改善といった技術基盤の整備を担うチームにいました。すごく面白い仕事でしたが、6年もいると自分のできることをある程度やり尽くしてしまった感覚がありました。 

もっと規模の大きなアプリを扱っている会社で挑戦したい気持ちが強くなり、そのなかでLINEは有力な選択肢でした。LINEの技術基盤を改善するのは、絶対に自分のキャリアにプラスになると思えました。 

それに加えて、freddiさんが働いているのが大きかったです。freddiさんとはプライベートでも以前から仲が良くて、一緒に仕事をしたら楽しいだろうなと思っていました。入社前に「LINEの雰囲気ってどう?」と聞いてみると、エンジニアとして挑戦ができそうなことや、メンバー同士の仲が良いことがわかったんです。昼休みにみんなでポケモンカードをやっているとか(笑)。カジュアル面談では jung さんが話をしてくれて、Developer Experience Dev Teamはすごく良さそうだと感じ、入社を決めました。 

 

メンバーが取り組んできたプロジェクトの事例 

――これまで、どのようなプロジェクトに取り組んできたか事例を挙げてご説明ください。 

freddiこれはオンライン技術カンファレンス「Tech-Verse 2022」でもお話ししたのですが、Xcode14への対応を通じてLINE社内だけではなく世界中の開発者の方々に貢献できた事例があります。 

Appleが提供している統合開発環境のXcodeは、毎年新しいバージョンがリリースされます。そして、 LINEは複雑なビルドシステムや多くのコンテキストを持ったコードが有るので、なかには最新バージョンのXcodeでうまくビルドできないケースがあります。そこで私たちのチームでは、新しいXcodeのベータ版がリリースされるたびに、LINE社内の各種アプリがビルドできるかを検証しています。 

その業務の過程で、LINE社内のアプリだけではなく各種OSSがうまく動かなくなる課題を見つけました。その課題を解決しないと世界中の開発者が困ってしまうので、Developer Experience Dev Teamが主体的にOSSへのコントリビュートを進めました。これは、LINEの開発者体験ではなく、世界中の方々の開発者体験を向上させられた例ですね。 

giginet 他の事例として、LINEのiOSアプリは200万行を超えるソースコードと大量のモジュールで構成されているので、ビルド時間がかなり長いという課題がありました。その改善のためにビルドツールのBazelを取り入れたら、確かにビルド速度は速くなったんですが、メンテナンスコストが増大するという別のデメリットが生まれてしまいました。  

そこで現在は、ビルドシステムの標準化に取り組んでいます。具体的には、Swift Package Manager(SwiftPM)というAppleが公式に出しているパッケージ管理ツールへの移行を進めています。ただし、SwiftPMはLINEのように巨大なアプリの開発プロジェクトで使われることを想定していない箇所があり、何もカスタマイズせずに使うとやはりビルド時間が長くなってしまいます。 

そこで、Swift Packageをキャッシュしやすい形に変換して利用する、Scipioというツールを私が開発しました。実際に Scipioを社内の各チームに導入してもらうための移行作業を、主に jung さんが担当してくれています。 

<参考情報> 

iOSDC Japan 2022: LINE iOSのビルド環境の変遷 

Standardizing build system using modern Swift Packages in LINE 

jungこうした、新しいビルドシステムの機構そのものを構築するプロジェクトというのは、LINEくらいの規模の会社でなければ取り組めないはずです。本当に貴重な経験ができています。 

giginet それと並行して進めているのは、全社的なアウトプットの均質化です。LINEでは開発者のスキルレベルもさまざまですし、開発文化もチームによって異なります。そのため、機能ごとにコードの書き方の癖が違うので、サービス開発者が迷わないように、それを統一するプロジェクトが動いています。最近、一部のメンバーが中心となり、階層化されたアーキテクチャを考案し、各チームへの布教活動を行っています。 
この新しいアーキテクチャは、社内ではThe Layered Architecture(TLA)と呼ばれています。 

――そうした開発者体験の改善プロジェクトを進めるうえで、前職までの経験が活きている部分はありますか? 

giginet 前職くらいの規模だと、開発組織のすべてに目が届いたんです。そのため全社的なリアーキテクチャなどを実行した際に、実際に新アーキテクチャを導入して効果を出すところまで見届けることができました。その成功体験があったからこそ、LINEに移ってからもその経験を今の仕事に活かせているように思います。

―― jung さんから他の事例はありますか? 

 jung私が入社したばかりの頃は、LINE社内の開発チーム間のコミュニケーションがうまくとれていなくて、ビルドツールや開発ツールも各チームがバラバラで管理・運用しているような状況だったんです。そこでまず取り組んだのが、全社的に適用できるCI/CDの仕組みを構築することでした。その取り組みがうまくいったからこそ、Developer Experience Dev Teamはいまビルド環境の改善に集中できるようになったという歴史的な経緯があります。 

難しい課題に挑むチームだからこそ、ゆるく、楽しく 

――Developer Experience Dev Teamにはどのような組織文化がありますか? 

jung giginetさんとfreddiさんが加わってから、チーム内のコミュニケーションがとても良くなったと感じています。そして、技術的に難しいテーマを和気あいあいとレビューするとか、前向きに議論するという文化がDeveloper Experience Dev Teamにはあります。 

freddiDeveloper Experience Dev Teamは基本的に難しい技術課題に取り組んでいますが、その仕事に「楽しい」と思って向き合えるメンバーが揃っている感じはします。だから、良い意味でゆるい空気感が生まれているのかなと。 

giginet 少し補足すると、意図的にゆるい雰囲気を出しているのはあります。技術基盤を構築するチームは、社内のさまざまなエンジニアから相談してもらえるような立ち位置であるべきです。だからこそ、他の人から積極的にコミュニケーションをとってもらえるように、敷居を下げることを意識していますね。 

そうすると、他の人たちから「開発の○○で困っているんです」とか「○○の効率が悪くて」といった情報を共有してもらえるようになります。もちろん、ゆるくしすぎて「あの人、真面目に仕事しているのかな?」と思われないようにバランスをとるのは必要ですけど(笑)。 

――エンジニアがこのチームに加わることでどんなスキルを身につけられるでしょうか? 

giginet 各々のエンジニアの業務が専業化されており、特定の領域に対して深く研究・開発できるのは良い点です。先ほど話題にのぼったSwiftPMなどはその典型的な例ですね。コンパイラの仕様を読んだり、SwiftPMそのものに手を加えたりという作業に時間を割くことができています。 

それから、基盤開発はアプリケーション開発とは全く違うスキルセットが求められるため、キャリアとしての独自性を出せるのは良いところです。 

freddi何かの技術課題に対する解決策というのは多くの場合、他の会社でもそのノウハウを転用できるんですよ。だからこそ、どんな会社でも通用するようなスキルを身につけることができます。

自分のやった仕事が、多くの人々にプラスの影響を与える 

――Developer Experience Dev Teamの業務でこれから改善したい点はありますか? 

giginet“Developer Experience”と言いつつも、正直なところ私たちはまだ開発者体験全体の改善に踏み込めておらず、ビルド環境の改善にしか手をつけられていません。アプリケーションレイヤーの改善をあまりできていないんですよね。今後は、より幅広い領域に着実に取り組んでいきたいです。  

それから、いわゆるLINEアプリだけではなくLINE社内外にもスケールするような仕事をやりたいです。LINE社内ではLINEアプリ以外にも各種関連サービスのアプリ開発を実施していますが、それぞれの開発組織が各々で開発基盤を整備しており、全社的な共通基盤として一元管理できていないんです。その基盤を私たちが構築して、将来的にはLINE社内だけではなくグループ全体に展開していきたいという野望があります。 

jung私の入社理由にも通じますが、iOSとAndroidの両方を含む、モバイルアプリ全体の開発体制を統合するという目標を遂行できればと思っています。 

freddi現在はまだ全社的にiOSアプリ開発者とAndroid アプリ開発者が分かれて行動している部分はありますが、将来的にそれらの活動を統合できるのは、エンジニアとして本当に面白いところですよね。 

giginet いろんなチームと協力し合って、技術やノウハウを広い領域にブロードキャストしていけるといいですね。そのためにも、先ほど述べたようにコミュニケーションしやすい空気感を醸成していきたいですし、自分たちの活動を他のチームに伝えていきたいです。 

あと、これは余談ですがLINEのクライアント開発組織には日本のチームだけではなく韓国のチームもあるので、日本語も韓国語もできる jung さんがいてくれるのがコミュニケーションをとるうえで非常に助かっています。 

――では最後に、Developer Experience Dev Teamに興味のある方へのメッセージをお願いします。 

giginet このチームで働く方には、成長の機会を与えることをお約束できます。それくらい、難易度が高いけれど価値のある仕事がたくさんあるチームです。OSSにコミットするとか開発支援ツールを作るといった取り組みを、チームメンバーが全力でサポートするので、ぜひやる気のある方に入っていただけると嬉しいです。 

freddi好奇心のある人と一緒に働けると私たちも楽しくなるので、そういった人に来てほしいです。それから、技術領域の広報活動に携わることが多いので、目立ちたがり屋の人にも向いています。私自身も目立つことが好きです(笑)。メンバーが増えることでチームとしてもできることが広がるので、よかったら転職先の選択肢に入れてください。 

jung Developer Experience Dev Teamは仕事で良い成果を出すと、社内外の広い範囲にその影響が波及します。他のエンジニアから「良い仕事をありがとう」と感謝してもらえるようなチームです。そういった仕事をしたい方は、ぜひ私たちと一緒に働きましょう。