新卒エンジニアの仕事〜10月のクライアントサイドエンジニア編〜

はじめに

こんにちは。2019年4月新卒入社の服部恵美です。開発1センターのLINE開発2室のApp Dev 6チームというところで、LINEのメッセンジャーのiOSアプリケーションの開発をしています。

この記事では、私がLINE株式会社に新卒入社してから約半年間のあいだに取り組んできたこと、LINEのメッセンジャーの開発を担当するクライアントサイドエンジニアがどのような働き方をしているのかについて、ご紹介します。

「友だち追加」画面のA/Bテスト

新卒入社後にかかわったお仕事はいくつかありますが、その中でも特に印象に残っているものの1つは、「友だち追加」画面のA/Bテストのクライアントサイドの開発です。この業務は、正確には、新卒入社前の内定者アルバイトのときから、新卒入社後の本配属されたあとにかけて、担当しました。

「友だち追加」画面には、「友だち自動追加」、「グループ作成」、「おすすめ公式アカウント」、「知り合いかも?」というセクションが並んでいました。しかし、たとえば「グループ作成」や「おすすめ公式アカウント」などは、「友だち追加」という本来の目的とはあまり関係がありません。

そこで、「友だち追加」画面から必要のない要素を取り除くことで、より良いUI/UXにしようというプロジェクトが生まれました。ただし、「友だち追加」画面からいくつかの動線を削除するということは、ユーザーが求めるアクションを取れなかったり、そのアクションを取る機会を失ってしまったりするという、残念な結果をもたらすかもしれません。そのため、まずはA/Bテストを実施して、それに基づいて判断しようということになりました。

結果は期待通りではなく、ネガティブな影響が出ていました。企画、データエンジニア、クライアントサイドエンジニアで話し合ったところ、UI/UXの観点からは画面をなるべくシンプルにしたいところだけれども、A/Bテストの結果を考慮すると可能な限り動線を残しておきたいということになり、「友だち自動追加」と「グループ作成」は削除せず、「おすすめ公式アカウント」のみを削除するということになりました。

その後、クライアントサイドで、A/Bテスト関連のコードの削除と、「友だち追加」画面からの「おすすめ公式アカウント」の削除をおこないました。実際にコードをさわってみると、リファクタリングしなければいけない箇所が見つかり、共通化できるコードをまとめたり、一部のコードをObjective-CからSwiftに書きかえたりしました。また、UIの実装では、1つのデバイスやOSでレイアウトをチェックしても、別のデバイスやOSではうまくいかないということもあるので、様々なケースを考慮しなければいけないことも、QA期間中のバグの修正対応を通して実感しました。

このプロジェクトは、ユーザー視点では、「友だち追加」画面から「おすすめ公式アカウント」のセクションが削除されたというだけの、ほんのちょっとの変更です。でも、その裏では、入念な議論や分析がなされていたり、リファクタリングが必要だったり、様々なデバイスやOSでのレイアウトのチェックがあったり、想像していたよりも手間や時間がかかるものなのだなと感じました。

iOS13対応: Context Menus

新卒入社後にかかわったお仕事の中で、もう1つ印象に残っているものとして、iOS13対応があります。これは、今年6月にアメリカのサンノゼで開催されたThe Apple Worldwide Developer Conference 2019で発表された新OSのアプリ開発者向けの新機能に対応するために、社内で組まれたEarly Bird TFというタスクフォースで取り組んだものです。

私は、Context Menusという新しいUIの導入を担当しました。Context Menusでは、Haptic Touchや3D Touchで、メニューを表示したり、メニューとともに特定のビューを表示したりすることができます。

Context Menusの導入箇所としては、まずチャットルームをチラ見できる機能がありました。これによって、iPhone6以前やiPhoneXR以降の3D Touch非対応デバイスでも、チャットルームの一覧から特定のチャットルームの内容を素早くプレビューすることができるようになりました。

他には、チームのメンバーから、「ホーム」タブの友だち・グループ・公式アカウントの項目を長押したときに表示するAction SheetsもContext Menusに変更したほうが良いかもしれないというアイデアをもらったので、それも企画と話して仕様を固めていきました。このように、iOS13対応は新しい技術を導入するという業務なので、企画側から新しい仕様を提案されるというよりは、エンジニア側で何ができるのか調べて、プロトタイプを作成し、企画側に相談を持ちかけるという仕事の流れが多かったです。

開発の段階では、やはり新しい技術であるために参考となる情報が不足していて、わからないことも自分で試行錯誤しながら探らなければならず、少し大変でした。一方で、真新しい技術をいち早くさわれるというのは、なかなかあることではありませんし、良い経験になったと思います。

チームで働く

ここまでは担当したお仕事について紹介してきましたが、ここからはどのような働き方をしているのかについて紹介していきます。

普段の仕事は、小さな仕事であれば一人で担当することもありますし、大きな仕事であれば数人で分担することもあります。私が所属している最小のチームの単位はApp Dev 6チームですが、LINEのメッセンジャーを開発するチームは他にもあり、別のチームの人と仕事をすることもありますし、ときには海外のオフィスのチームの人と連絡を取ったりコードレビューを頼んだりすることもあります。

それぞれのチームでは、定期的に進捗共有のミーティングをします。私のチームでは、毎日12時から5分程度のデイリーミーティングをして進捗共有をしています。また、東京オフィスのLINEのメッセンジャーのiOSアプリ開発のチーム全体で、週1の進捗共有をします。加えて、韓国オフィスとともに週1のスタディミーティングで、全体に共有したい技術のお話やカンファレンスの参加報告などをします。その他、LINE開発2室で月に1度、開発1センターで四半期に1度集まります。

どのチームがどの仕事を担当するかは、ある程度は決まっていますが、はっきり決まっているわけではありません。それは、個人でも同じです。最近、QA中に私が担当した箇所のバグがいくつも見つかったとき、同時に新しい開発の仕事もあったので、手がいっぱいになってしまうということがありました。そのとき、チームリーダーが私の持っているタスクの一部を余裕があるメンバーに頼むようにとアドバイスしてくれて、チームの人たちに助けてもらいながら締め切りに間に合わせることができました。誰かの仕事を人の仕事だからと放っておくのでなく、お互いに協力し合う柔軟さがあるので、非常に働きやすい環境だと感じています。

他職種と一緒に働く

他職種の人と一緒に働く機会もあります。

たとえば、企画から新しい仕様の提案があったり、デザイナーからデザインガイドをもらったりして、それらをもとに開発をすることがあります。開発期間を終えてQA期間に入ると、QAにテストをしてもらい、問題があった場合には修正対応をおこないます。ときには、サーバサイドエンジニアやフロントエンドエンジニアとの連携が必要なものもありますし、iOSとAndroidで仕様を合わせるためにAndroidアプリエンジニアと調整することもあれば、A/Bテストのときにデータエンジニアともかかわることもあります。細かいところでは、多言語対応、Accessibility(VoiceOver)対応、ログ送信、着せ替え対応などで、その担当者と連絡を取り合うこともあります。

このときに感じたのは、職種によって視点が違うということです。企画が求める仕様やデザイナーが求めるデザインがあっても、エンジニアの判断では技術的な観点から難しく、話し合って折り合いをつけなければいけないことがあります。また、エンジニア同士ではコードを見せれば通じることでも、他職種には言葉で説明しなければいけません。複雑な仕様のときには、言葉でうまく説明できず、誤解が生じてしまうということもありました。他職種とコミュニケーションをとるのは大変ではありますが、アプリの開発には色々な職種の人たちの力が不可欠だということも知ることができました。

グローバルに働く

LINEのメッセンジャーの開発体制はグローバルです。

東京オフィスでのクライアントサイドエンジニアのメンバーは、実は半数以上が外国籍で出身も様々です。さらに、東京オフィスだけでなく、福岡、韓国、台湾、ベトナムのオフィスでも開発しています。

GitHubや社内のドキュメントでは、基本的に英語を使用することになっています。チャットやミーティングでは、参加するメンバーに合わせて日本語のときもあれば英語のときもあり、必要に応じて日英の通訳が入ったり、日韓のミーティングでは日韓通訳が入ったりなど、状況に応じます。

出張のチャンスもあります。内定者アルバイトのときには、台湾のオフィスと韓国のオフィスでのワークショップに参加しました。今月中旬にも、韓国の春川のNaver Connect Oneという場所で、LINE Client Global Workshopというワークショップがありました。ワークショップでは、サービスの課題と改善策を話し合ったり、ハッカソンでアイデアを出し合って新しいものを作ったり、集中的にリファクタリングしたりすることができます。また、普段チャットやコードレビューでしか接していない海外オフィスの人と、直接会って挨拶をしたり、親睦を深めたりできる良い機会でもあります。

おわりに

私がLINEで仕事を始める前、世の中で誰もが使っているようなアプリの開発にかかかわることに、最初は不安もありました。けれども、仕事を始めてみると、まわりがサポートしてくれたり、ちょっとずつでも新しいことを学んだりして、徐々に慣れることができました。そして、仕事で何日もかけて開発したものが、いつも使っているアプリに追加されるのを初めて見たときには、言葉で言い表せないほど嬉しかったです。

もちろん実際の仕事は泥臭いことの連続ですが、その先にある感動を味わえるのは、LINEのメッセンジャーのクライアントサイドエンジニアならでは、だと思います。

この記事を読んでくださっている皆さんにも、ぜひLINEへの新卒入社や、LINEのメッセンジャーのクライアントサイドエンジニアのお仕事に、少しでも興味を持っていただけたなら幸いです。