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

「Kotlinを効率的に習得できたのはLINEの環境があったからこそ」新卒入社1年目のエンジニアが挑んだLINEキャンパス開発

サービス・機能やそれにまつわる開発の裏話や取り組みを聞く「Product Story」シリーズ。今回は2022年3月にオープンしした、 LINE公式アカウントやLINE広告のアカウント運用に必要な知識やスキルを習得できるオンラインの総合学習プラットフォーム「LINEキャンパス」のサーバーサイド開発について紹介します。

LINEキャンパスには、学習コースと認定資格コースが用意されており、すべて無料で受講可能。初心者から運用経験豊富な方まで、スキルレベルや目的に応じて全27コース、90を超えるレッスンを受講して学ぶことができます。

このプラットフォームのサーバーサイド開発を担ったのは、LINEに2021年4月に新卒入社して現在開発4センター OA Dev 2チームに所属する米田昌弘と佐藤佑飛。プロジェクトにアサインされた当時の2人は、LINEキャンパスのサーバーサイドで用いられているプログラミング言語のKotlinに触れたことがなかったといいます。

どうやって米田と佐藤はKotlinを習得し、プロジェクトを推進したのでしょうか。2人の成長を見守ってきた開発リーダーの長谷部良輔と米田、佐藤にインタビューしました。

LINE公式アカウントやLINE広告の知識を、ユーザーがなるべく簡単に学べるように

――LINEキャンパスの開発プロジェクトが発足した経緯を教えてください。

長谷部:私たちLINEは、LINE公式アカウントやLINE広告などのサービスを提供しています。それぞれ非常に便利なプラットフォームなのですが、多機能であるがゆえに、慣れていない人にとっては「どうやって活用したらいいのかがわかりにくい」という課題がありました。そこで、初学者の学習を支えるプラットフォームが必要だと考えました。

また、もともと認定資格であるLINE Green Badge*という制度があったものの、このサービスは他社が提供するシステムを利用して運用していることから、LINE社内でのオペレーションコストが高くなっていました。

*…認定資格「LINE Green Badge」は「LINE公式アカウント」や「LINE広告」などLINEの法人向けサービスに関する知識や運用スキルをオンラインプログラムで学習し、認定試験に合格することでLINE社から知識レベルの証明を受けられる資格制度。

こうした課題を解決するために、LINEキャンパスの開発プロジェクトが発足しました。開発の依頼が私のもとに来たのが2021年5月です。ちょうど良い開発難易度のプロジェクトだと考え、米田さんと佐藤さんに担当してもらうことにしました。

――米田さんと佐藤さんは、そのときKotlinに初めて触れたそうですね。

米田:私は学生時代にアルバイトとしてソフトウェアエンジニアをしていたのですが、その頃に使っていたサーバーサイドの言語はGoで、入社したときはKotlinやJavaは未経験でした。

シンプルさが特徴であるGoの言語仕様と比較すると、Kotlinは非常に多機能であり、かつエンジニアにとって覚えることが多い言語です。そのためGoと比べると学習コストが高いように感じ、初期は若干の抵抗がありました。
ですが、使い込んでいくうちに「かゆい所に手が届く機能が標準で提供されている、利便性の高い言語」だと実感するようになりました。今では、Kotlinの大ファンになっています。

佐藤:私は学生時代に、Androidアプリ開発やインターンシップで、Javaに少し触れたことがある程度でした。LINEの業務でKotlinに初めて触れましたが、とても書き味の良い言語だという印象を受けました。

――どのようにしてKotlinを学習しましたか?

米田:言語仕様や文法に関しては、公式ドキュメントやチュートリアルを通じて学びました。Kotlinの開発元であるJetBrains社は、充実したドキュメントや教材を提供しています。それらの情報を一通り参照することで、Kotlinの基礎知識を習得できました。Kotlinを用いてWebアプリケーション開発をするノウハウは、LINE社内の既存プロジェクトのコードを参考にしつつ習得しました。

佐藤:私も社内の既存プロジェクトのコードをかなり参考にしました。LINEにはスキルの高いサーバーサイドエンジニアが多いため、様々な既存プロジェクトのリポジトリを参照し、わからない部分を適宜調べながら開発のベストプラクティスを学びました。

米田:それから、チームメンバーのコードレビューを受けたことも学習の助けになりました。自分一人だけでは思いつかないコードの書き方や各種のTipsを先輩に教えてもらったことで、Kotlinを効率的に習得できたと思います。

エンジニアの裁量の大きさに驚いた

――プロジェクトにアサインされたときの感想についてもお話しください。

米田:予想していたよりも、エンジニアの裁量が大きいことに驚きました。LINEに入社する際には「規模の大きな会社なので分業が進んでおり、個々のエンジニアが担当する業務領域が明確に決まっているのだろう」と想像していました。
 ですが、私たちのような新卒のエンジニアが新規サービス開発の主担当としてアサインされ、かつ自分たちがプロジェクトの方針を決めるシーンも多かったです。良い意味で、入社前に抱いていたイメージとのギャップを感じました。

佐藤:私は採用面接の際、面接官に「新規のサービス開発に携わるチャンスはありますか?」と質問したことがあります。その際には「新規サービスは経験の多いエンジニアたちが少人数で立ち上げるケースが多いです」と回答をもらっていたので、まさか新卒1年目で新規サービスの立ち上げに携われるとは思っていませんでした。驚くとともに、嬉しくもありました。また、各種ライブラリやインフラの技術選定にも携われたので、裁量が大きくやりがいを感じましたね。

――開発で直面した課題や、それを乗り越えたエピソードを伺いたいです。

米田:LINEは規模の大きな会社だからこそ、社内独自の仕組みが多く、それらの知識をキャッチアップすることが難しかったです。たとえば、プライベートクラウドの「Verda」を適切に活用する方法などを学ぶ必要がありました。

社内のエンジニアが書き残してくれたドキュメントを読んだり、サンプルとなるコードをGitHub Enterpriseから見つけたりしながら、LINE固有の仕組みを学習していきました。どうしてもわからない場合には、社内の特定技術の専門チームに質問して解決できました。

佐藤:直面した課題としては、LINEキャンパスのリリース直前に実施した負荷試験が印象深いです。試験の結果、私たちの予想していた以上に、パフォーマンスが悪いことが判明しました。あのときは、「リリースできるだろうか」と相当に焦りましたね。プロファイリングしたり、長谷部さんに相談したりしながら、ボトルネックの特定作業を進めました。

その結果、Redisに格納されているLINEキャンパスのコース情報(キャッシュ)をデシリアライズする処理が、パフォーマンス悪化の原因になっていることがわかりました。Redisではなくオンメモリにキャッシュを持つ設計に変えることでパフォーマンスを改善し、無事にリリースできました。

プロジェクトを通じてエンジニアとして成長

――LINEキャンパスの開発を経験して、エンジニアとして成長できたことを教えてください。

米田:ゼロからサービスを立ち上げて、要件定義からリリースまでの一連の流れを経験したことで、LINEのプロダクト開発の思想に一通り触れられたのが良かったです。より使いやすく品質の高いシステムにするために、LINEがどのような体制や仕組みを構築しているのかを知ることができ、勉強になりました。

また、他のステークホルダーの方々とディスカッションしながらプロジェクトを進めたことも、エンジニアとしての成長につながったように思います。たとえば、開発職のメンバーとそうでないメンバーとではどのような点に知識の違いがあるのか、各ステークホルダーが何を重視してプロジェクトを進めているのかなどが、わかるようになってきました。

佐藤:私は学生時代からプログラミングをしていたものの、個人開発がメインであり長期に渡ってチームで開発する経験がありませんでした。複数のメンバーと一緒に仕様や設計を検討しつつLINEキャンパスを作り上げたことは、率直に言って楽しかったですし、エンジニアとしての学びがありました。LINEのサービスを世に出すうえで、どれくらいの品質水準を求められるのかを理解できたことも大きかったです。

長谷部:2人とも、開発スキルが上がっただけではなく、意見をうまく伝え周囲と協力してプロジェクトを進めることがとても上手になりました。プロジェクト初期の頃は、私がコミュニケーションのハブになろうと思っていました。ですが、2人ともだんだんと自主的に各メンバーとコミュニケーションするようになり、私が仲介しなくてもプロジェクトを推進できるようになったので、安心して任せていられま

Take Ownershipの精神がある人と一緒に働きたい

――今後、開発4センター OA Dev 2チームのエンジニアはさらに増えると思います。どのような方に、チームに参加してほしいですか?

長谷部:LINEの技術組織で掲げてられているワードのひとつなのですが、Take Ownership(自分自身がオーナーシップを持って動く)の精神があるエンジニアに参画してもらいたいです。「自分はエンジニアだから、企画やデザインには口を出さない」というスタンスはあまり良くないと思っています。エンジニア業務の垣根を越えて動ける人が、私たちのチームで働くのには向いています。

佐藤:確かにLINEキャンパスの開発プロジェクトでも、エンジニアが自発的に考えて動くことの重要性をすごく感じました。たとえばLINEキャンパスでは、LINE社員が利用するCMSを作成した際に、API設計だけではなく画面設計もサーバーサイドエンジニアが主導して決めていきました。サービスをより良くするためならば、必要なことを全部やるというスタンスが重要ですね。

米田:長谷部さんや佐藤さんがお話しされたことに通じますが、誰かが決めた方針やアイデアを鵜呑みにせずに「より良い方法があるのではないか」と考える目線を持っていること、そして批判するだけではなく自発的に提案できることが、私たちのチームで働くうえで重要なことだと思います。

――最後に、開発4センター OA Dev 2チームで働きたいと考えている方にメッセージをお願いします。

米田:技術への興味はもちろんのこと、より良いサービスを生み出したい、サービスを成長させていきたいというマインドを持った人が、活躍できるチームだと思います。

佐藤:業務内容もチャレンジングで、チームのメンバーも優秀でいつも刺激を受けています。ぜひ、一緒に働きましょう。

長谷部:開発4センター OA Devチームは、BtoBのサービスを扱っておりLINEの売上に直結しています。また、エンジニアの活躍がLINEのサービスを利用する企業の成長にもつながります。事業の価値に直結する仕事が好きなエンジニアにとって、非常に楽しめる環境です。 

採用情報

LINE株式会社では一緒に働くエンジニアを募集しています!
今回のインタビューと関連する募集ポジションはこちらです。

サーバーサイドエンジニア / LINE(大規模配信管理システム / Large enterprise OA message delivery system)等