Interview/

Megumi Hattori

自己紹介をお願いします
2019年4月に新卒入社しました服部恵美です。開発1センターのLINE開発2室のApp Dev 6チームで、LINEのiOSアプリ開発をしています。入社前にも内定者アルバイトとしてLINEのiOSアプリ開発に携わっていました。最近は主にホームタブと設定画面まわりなどを担当しています。

大学は数学系の学科だったので、当初はソフトウェアエンジニアとしての就職は考えていませんでした。大学3年に進級した頃にアプリ開発に興味を持ち始め、夏に他社でAndroidアプリ開発のインターンをして、クライアントサイドエンジニアとしての就職を意識するようになりました。実はその夏に、LINEのインターンにも応募していましたが、コーディングテストで落ちてしまっていました。その反省をもとに半年ほど勉強をしたり経験を積んだりして、新卒採用に応募して内定を得ることができました。

就職活動ではいくつかの会社を検討したのですが、その中でもLINEは人々の生活に欠かせないインフラ的サービスを作っていたので、社会への貢献度やインパクトの大きい仕事に挑戦できそうだと思ったこと、自分の仕事に誇りを持って取り組めそうだと感じられたことが魅力でした。あと、新卒採用の選考プロセスがシンプルかつスピーディーで、面接では技術的な話がほとんどだった。きっと合理性を重視している会社なのだろうという良い印象も受けました。選考を通して接した方はみんな明るく生き生きとしていて、この人たちと一緒に働きたいという気持ちにさせてくれたのも、入社を決めた大きな要因でした。
業務内容や具体的な流れを教えて下さい
LINEは膨大なユーザーを抱えているアプリなので、使いやすさやパフォーマンスを改善し続けるために、常に複数のプロジェクトが同時並行で走っています。先ほども少し触れましたが、私の所属するチームでは主にホームタブや設定画面の新規機能開発やUI/UXの改善を担当しています。ちょうど現在取り組んでいる業務についてはまだお話しできない内容なので、少し前にリリースしたものを中心に説明します。

2020年にリリースした大きめのプロジェクトとして、ホームタブのリニューアルがあります。以前はホームタブに「友だち」「公式アカウント」「サービス」「スタンプ」「着せかえ」という5つのサブタブがあって、これをもっと使いやすくするためにどうしたらいいのかはずっと議論していました。まずは新しいホームタブの原型になるものを開発し、2019年の9月から11月までA/Bテストを実施、その結果を踏まえて少し調整を行い、2020年の2月にリリース。その後もさらにユーザビリティを上げるために、ホームタブの改善は続いています。

たとえば私はホームタブのサービスという部分、一番下のバナーの部分、お知らせ画面ーーホームタブの上にあるベルのボタンから遷移できる画面ーーの開発にも関わりました。またプッシュ遷移やモーダル遷移といった画面遷移の方法の変更や、アクセシビリティのVoiceOverの改善にも取り組みました。コードベースの内部構造にも改善できる点が多々あり、最近はモジュール化を中心にリファクタリングも積極的に行っています。LINEアプリは2011年にリリースされていて歴史も長いので、どうしても技術的負債が積み重なってしまっていますし、ソースコードの品質向上だけでも取り組むべき課題がたくさんありますね。

業務の流れを簡単に説明します。新規機能開発のプロジェクトは、企画チームの提案で始まることが多いですが、開発チームからの提案で始まることもあります。

まずは、企画担当とともに、技術的な可能性やコストについて検討し、スケジュールや具体的な仕様を決めていきます。ある1つの機能について開発をするときでも、他の機能に影響や関連があるケースもあるので、そういったときには他の機能を担当している開発チームにも相談をします。開発とQAは2週間単位のサイクルで動いていて、開発期間の次のQA期間には、QAチームが報告してくれるバグを修正し、無事QAが終了したら、Appleに提出して審査を経てリリースされます。

他にも色々な業務の進行の仕方があります。新規機能開発の中でも、iOSの次期バージョンの新機能や、実装が難しそうなものについては、まずはエンジニアが何ができるかを調べてドキュメントにまとめたり、プロトタイプを開発したりしてから、企画担当とともに仕様を確定していくこともあります。新しくサーバーのAPIを用意する必要があるときには、サーバーサイドエンジニアと話し合って、インターフェースの定義をしてから開発に進みますし、UI/UXの改善では、デザイナーが作成したデザインをもとに開発を行います。コードベースの内部構造改善では、タスクの洗い出し・分割・QA範囲の定義をしてから、実装に取り組みます。決まりきったパターンというか、それぞれ最適だと思われるフローで、必要に応じて関わる人を巻き込みながら進む感じでしょうか。

あと、開発中のコードレビューでは、バグがないかどうかはもちろんのこと、適切に設計されているかどうか、可読性に問題はないかどうかチェックし合います。レビューをする立場になったときには、そのコードが必要十分な要件を満たしているかどうかを確認し、疑問点や気になるところがあったらコメントを残します。議論をしたり修正をしたりして、納得することができたら、アプルーブされてマージされます。LINEではエンジニア同士が尊重しあっているので、適切な議論ややり取りができていると思います。

どういったプロジェクトにアサインされるかという部分はかなり柔軟だと思います。上長と定期的に行うミーティングが普段の会話の中で、自分がどのような仕事に取り組みたいのか話しておくと、仕事のアサインの際に考慮してもらえます。仕事の分担については、大きめのプロジェクトは複数人で担当することもありますし、小さめのタスクは1人で複数のものを並行してやることもありますね。
仕事を進める上で、意識していることはありますか
1つめは、「情報共有や相談をこまめにする」ということです。仕様や設計について自分が考えていることが、他の人にとっては違うということは当然起こり得ます。認識のズレがないかどうか十分に確認したり議論したりしながら進める方が、結果的に開発のクオリティやスピードに繋がると思っています。同じ理由で、ドキュメントやGitHub上には必要であれば自分がその方法を選んだ理由や懸念点についてもできるだけ詳しく情報を残すように意識しています。

2つめは、「スケジュール管理をしっかりする」ことです。LINEアプリのリリースタイミングは基本的に2週間ごとと決まっていて、それに合わせて複数のプロジェクトが同時に動いています。そのため、1つのプロジェクトのために数日延期してもらうということは難しいです。優先順位を意識したり、チームのメンバーとの仕事の分担を工夫したりして、予定通りにリリースできるように努力しています。

3つめは、「同じ過ちを繰り返さない」ということです。コードレビューで指摘されたこと、実装時にテストし忘れたこと、見逃してたコーナーケースなど、自分が一度ミスしたことはリストアップしておいて、次回以降は改善できるように気を付けています。誰でもミスをしてしまいますが、改善していくことで信頼されていきますし、自分にとってやりがいのある開発に携われるチャンスが増えていくはずです。
おもしろいことや難しいことなど、働く中でこれまでに得た感触を教えて下さい
LINEアプリのクライアントサイド開発のおもしろい部分は、たくさんのユーザーの目に直接触れるような表側の開発に関われることです。自分が取り組んだ仕事がリアルに見える形であらわれると、やりがいを感じます。これは、LINEで働く人の多くが感じるところだと思います。

一方で、難しい部分は、コードベースの規模が非常に大きく複雑なことです。最初のうちは、新しい機能の実装のために既存のコードを把握するだけでも苦労しましたね。

自分自身の課題として感じていることは2つあります。1つめは、新規機能開発のために技術的な可能性や具体的な仕様について話し合うとき、実装前に実装可能性を検討したり仕様漏れがないようにしたりするのは案外難しく、実装中や実装後に気づいてやり直すことになってしまうということがあることです。経験を積んでもっと上手くできるようになりたいと思っています。2つめは、コードベースの内部構造改善について、主体的に課題を見つけたり改善点を提案したりできるようになりたいと思っています。当事者意識を持てたほうが解決できたときのやりがいもより大きいですし、長期的なチームの開発効率の向上に貢献することができると思うからです。

実は私は内定者アルバイトをするまでiOSアプリ開発はほぼ未経験だったので、最初はとにかく新しいことの連続でしたね。ただ動くコードを書くのではなく、Swiftらしい書き方を学んだり、デザインパターンを勉強したりして、より良いコードを書けるように努力しました。その結果、今では昔の自分のコードを読み返してみると粗が見えてくるようになったので、入社時に比べて成長したのかなと思います。

これは私の経験でもあるのですが、入社時点で特定の領域のスキルを持っているのに越したことはありませんが、常に学び続ける姿勢を持ち続けられることのほうが大事だと思います。技術の仕様は変化しますし、使用する技術も変更されるので。会社ではたとえ一人で担当する仕事であっても他の社員と協業しながら進めることになるので、学生のうちからインターンやアルバイトを通してチーム開発やコードレビューを経験しておくことをおすすめしたいです。
LINEに入社して良かったと感じることはなんですか
立場や役割に関係なく発言できて、お互い意見を尊重し合う雰囲気があります。まわりは非常に優秀な人ばかりで、業務上の相談にも親身にのってくれます。コードレビューでは今後の改善に役立つようなアドバイスをもらえたり、他の社員が書いたコードを読んで新しい知識を得たり良い書き方を学べたりします。技術のトレンドに敏感な人も多く、雑談しているだけでも良い刺激になります。社内でもよく勉強会が開かれてますし、社外のカンファレンスにも積極的な人が多いです。

私自身、開発に関する幅広い知識を身につけつつ、自身の専門性を高めていきたいと思っていますし、仕事の進め方についても、今後も場数を踏んで成長していきたいと思っています。新卒で入る方に限りませんが、知識やスキルなどの成長を求める人には向いている環境だと思います。
最後にメッセージを
LINEは良い意味で本当にフラットな職場で、新卒入社後すぐ本格的な仕事を任せられることも少なくありません。1年目からバリバリ働きたい人、チャレンジをしたい意欲的な人には、もってこいの会社だと思います。ぜひ皆さんも応募してみてください。