iOS/Android エンジニアの担当サービスを紹介

富家将己:それでは新卒採用説明会、iOS/Androidエンジニア、クライアントサイドの説明会を開始したいと思います。よろしくお願いします。

まず自己紹介です。僕は富家将己といいます。主にLINEクライアントアプリを開発するLINE Platform Developmentセンター2という部署で、モバイルエクスペリエンス開発室の室長をしています。2015年にLINEにiOSエンジニアとして入社し、紆余曲折あり現在は開発マネージャーとして働いています。

今日お話ししたいことは、(スライドを示して)こちらです。まず、担当サービスについてお話ししたいと思います。それからそれを作っている私たちの組織についてお話しした後、どのように働いているか、就業環境についてお話ししたいと思っています。

それから最近のタスク事例ですね。入ってきた方がどのような仕事をしたのかを少し紹介した後に、私たちはプロジェクト外の外部活動にもけっこう力を入れているので、こちらの紹介もしたいなと思っています。最後に、今後の課題や展望をお話しして、Q&Aセッションにいきたいなと思っています。

それではまず、担当サービスについてです。私たちはLINEのiOS/Android用のクライアントアプリの開発をしています。(LINEは)多くの方にコミュニケーションアプリとして利用されていますが、そのほかにもさまざまな機能があり、それらの対応をしています。

メッセージング、友だち・グループなどの管理機能、ホームタブ、LINE公式アカウント、LINEミニアプリ、登録フロー、アカウント管理機能などの実装をしています。また、モバイルOSは毎年メジャーリリースがありますが、そういったアップデートに含まれる新機能などに対応し、LINEのアップデートを行っています。それからApple Watch、Siri、Google Assistant連携など、スマホアプリ以外の対応も行っています。

もう1つは、LINE公式アカウントアプリです。LINE公式アカウントは、お店の方などがユーザーとつながるためのプラットフォームで、お得な情報を送ったり、お客さまと1対1でコミュニケーションしたりできるアプリです。また、お店に必要なクーポン、ショップカード、販促ツールなど、BtoBの用途で使える機能も持っています。

主にクライアントアプリの開発を担当するLINE Platform Development Center2

こういったアプリはどのように作っているのでしょうか? 次は開発組織の話です。LINEの開発は東アジアの領域を開発拠点にしており、分担して(開発を)対応しています。日本だと東京の他に、福岡にも開発拠点があります。海外だと韓国、台湾、ベトナムなどがあり、彼らとも協業して開発をしています。

世界各国で開発する場合、タイムゾーンの影響がありますが、私たちの場合、2時間程度のタイムゾーンの違いに収まっているので、わりと気にせずにコミュニケーションを取ることができます。

開発拠点はそれぞれ別の法人になっています。LINE Fukuokaも別法人です。しかし、開発自体はそれぞれ別の会社にもかかわらず協業しており、基本的には区別なく共にLINEを開発しています。

LINEの開発は、LINE株式会社内ではLINE Platform Developmentセンター1と2が担当していますが、1は主にサーバーサイドを担当しており、2が私たちの組織で、主にクライアントアプリの開発に携わっています。

LINE Platform Developmentセンター2について、もう少し詳細をお話ししたいと思います。(LINE Platform Developmentセンター2の名称は)長いので、略してLPDC2と呼んでいます。

LPDC2の下には4つの開発室が分かれており、それぞれ細かく担当するチームがあります。

LINEコミュニケーションプラットフォーム開発室では、メッセージング周りの開発を行っています。LINEコンテンツ&サービスプラットフォーム開発室では、メッセージ以外のさまざまな機能について開発を行っています。

モバイルエクスペリエンス開発室は、新しいOSの対応や開発環境の改善などを中心に対応しています。LINEサービス開発室は、LINEのQAやBtoBアプリの開発などを行っています。

LINE Platform Development Center2を構成する4つのチーム

LINEコミュニケーションプラットフォーム開発室は、(スライドを示して)このようなメッセージング周りの開発です。LINEコミュニケーション基盤開発チームでは、LEGYという、メッセージの通信を取り持つ技術の開発や、メッセージが来た・既読がついたなど、アプリに関わるイベントを受け取ってそれぞれのモジュールに伝えるなど、基盤の開発をしています。

LINEコミュニケーションサービス開発チームでは、Androidのトーク画面の開発や、みなさんのトークのメッセージのデータの管理や保存、データ移行に関する新機能開発や改善など、メッセージングに必要なアプリ内の改善を行っています。

LINEコンテンツ&サービスプラットフォーム開発室は、非常に広い範囲の対応をしています。まず、LINEコンテンツプラットフォーム開発室では、ホームタブにおいてLINEの他のサービスの入り口となる機能を開発したり、トークリストの上に表示されているSmart Channelという機能で、ユーザーに今必要な情報を表示する窓口など、LINEでより生活が便利になるような開発を行っています。

LINEサービスプラットフォーム開発チームでは、主にWeb利用を扱ったサービスが多いです。LINEの他のサービスや、他社製のサービスをLINEで提供するプラットフォーム、LINEミニアプリの開発を行ったり、アプリ内のブラウザの開発を行ったりしています。

マルチデバイスエクスペリエンス開発チームは、LINEを初めて使う時のアカウント登録や、悪意のあるユーザーへのセキュリティ対応、通報機能の改善など、複数のデバイスで共通的に使われるアプリ基盤の部分を開発しています。

モバイルエクスペリエンス開発室は、新しいことへの挑戦と、開発環境のアップデートが担当です。iOS/Androidエクスペリエンス開発チームでは、2022年リリースされたiOS16やAndroid13の対応、Watchアプリの開発などを行っています。OSの新機能を使ってLINEがより便利になるかを考えるのも、この部署の仕事になります。

デベロッパーエクスペリエンス開発チームの主な仕事は、開発環境の改善です。今はiOSの開発環境改善に注力していますが、Androidの改善にもこれから取り組む予定です。またCI/CDの自動化や、ビルド速度の改善などを通して、他の開発者を働きやすくするのが目的になります。

LINEアプリは10年以上開発をし続けている大きなアプリなので、ちょっと動かすだけでも大仕事になることが多いです。開発者のプログラムコードを改善し、変更しやすいような作り方とはどういうものかを考えて啓蒙していくのも、このチームの仕事になります。

LINEサービス開発室は、LINE公式アカウントアプリの開発と、アプリのチェックを行う部署です。LINE B2Bアプリ開発チームでは、先ほどのLINE公式アカウントアプリの他に、LINE内にあるLINE公式アカウント機能の開発も行っています。

APP QAチームは、Quality Assuranceを行うチームです。リリースごとに新機能の動作確認や、既存機能を壊してないかなどの改善・確認などを行っています。また、リリース後に気づかなかったバグの確認や、バグがあった場合には開発に必要な情報を集めて開発者に周知するなどの仕事をしています。

このような開発をしていますが、それぞれのチームは非常に多国籍なメンバーで構成されています。基本的に東京で開発していますが、国籍はさまざまです。コミュニケーションは日本語と英語で、コードレビューは主に英語を利用しています。

フルリモート・開発PCは「M1 MaxのMacBook Pro」…就業環境の説明

それでは、就業環境です。現状、私たちのチームはフルリモートになっており、これはコロナが明けても継続される予定です。オフィスに出社することも可能です。フリーアドレス制で、チームごとに割り当てられたエリアでは好きなところに座って仕事ができます。

会社の席にはモニターが1、2枚あるので、マルチディスプレイで開発することができます。今は開発PCとして、M1 MaxのMacBook Proを支給しています。すでに開発環境はAppleシリコンに対応しています。コミュニケーションツールとしてWiki ConfluenceやJIRAを使い、会話はLINEやSlackを利用しています。

開発環境と技術スタックを紹介

次に開発環境についてです。コードはGitHub Enterpriseで管理しています。自動化にはJenkinsを用いています。AndroidはAndroid Studioで開発しており、言語はKotlinがベースとなっています。

古いコードでJavaを利用しているところはありますが、基本的に新しいコードはKotlinで開発をしています。また、Gradle Enterpriseを利用しています。

iOSはXcodeで開発しており、Swiftで開発しています。Objective-Cのコードも残ってはいますが、最近はほとんどないぐらいに減ってきました。クライアントの開発としては、けっこうオーソドックスな環境だと思います。

その他、(スライドを示して)このようなものを利用しています。SwiftUIやJetpack Composeなどはこれから取り入れていきたいなと思っています。SwiftUIはすでにWatchやWidgetなどの機能で利用していますが、これからは本体アプリなど、より多くのところで利用をしていきたいなと考えています。

また、チームの中にfastlaneやXcodeのコミッターがいるので、こういった外部オープンソースとも連携しながら環境を改善しています。

配属までの流れと通常時のコミュニケーションについて

入社された場合どうなるかを少しお話ししたいなと思います。新卒はOJTとして各チームをローテーションします。例年だと5月末までに全社的な新卒研修が行われ、その後配属となります。

近年のリモート環境で、新しく入った時に誰がいるのかわからないという意見から、4週間ごとに3チームをローテーションして、各業務を体験するかたちにしました。その後、アンケートを取り、チームごとの状況と照らし合わせて鑑本配属のチームを決定します。

また、通常のフローですが、業務の中ではチームリーダーと1on1ミーティングを行い、現状のタスクで困ったことがないかなどを話したりします。だいたい2週に1回のペースでマネージャーと会話するというかたちにしています。

また、チーム外の関わりとして、LPDC2全体でiOS/Androidで週1回の頻度でStudy Sessionを行っています。持ち回りで発表するかたちで、専門的な話がいろいろ聞けます。持ち回りはiOS/Androidでそれぞれ分かれていますが、どちらにも参加できます。

ほかにも、コード品質の改善の取り組みとして、Random Reviewというものを行っています。(スライドを示して)こちらがLPDC2の特徴です。同じチームのメンバーのレビューを終えた後、チーム外のメンバーをランダムに指定して、コードの読みやすさなどをレビューします。初見の人に見てもらうことで、気づかなかったわかりにくい点などを見つけてもらうのが主旨です。このようなかたちでチームのコミュニケーションを取っています。

開発の流れ

最後に、開発の流れについてお話しします。主に企画案件の場合ですが、まずキックオフがあり、実装について検討します。実装が可能かどうかを確認するために、プルーフ・オブ・コンセプト(POC)というフェーズがある場合もあります。

実装検討では、デザインドックを描いて実装についてアーキテクチャをチームメンバーと確認したりします。実装検討が終わると、実装に入ります。実装後、QAチームがチェックを行い、バグ修正を行ってリリースされます。

リリースは2週間ごとのスケジュールが決められています。年始に1年間のリリーススケジュールが決定します。そのスケジュールに合わせて実装とQAを行い、各バージョンの開発完了日、QA完了日を目指して開発します。2週間ごとにリリースされるので、常に開発とQAが同時に動いているということになります。企画案件の開発は(スライドの)左のフローを踏みますが、これ以外にも開発主導のタスクがあり、こちらも2週間のリリースに合わせて開発します。

新人が担当した最近のタスク事例を紹介

それでは、新人が担当した最近のタスク事例について、いくつか紹介したいと思います。まず、Androidでedge-to-edge screenの対応です。こちらの適用範囲は大きく、1画面ごとに適宜対応しています。それからiOS16で追加されたLock Screen Widgetの対応も行いました。

また、トーク画面での誕生日アイコンの適用や、iOS16の機能としてプッシュに写真を表示する機能などを実装しています。特にOSに関連する新機能は、ユーザーの生活を良くする可能性を秘めているので、素早く対応したいと考えています。

セッション登壇・ブース展示・執筆活動などプロジェクト外の活動も積極的に取り組む

LPDC2では、プロジェクト以外の活動にも積極的に取り組んでいます。「iOSDC」や「DroidKaigi」などでは、プラチナスポンサーとして参加しています。毎年、開発者のセッションやブース展示などを行っています。2022年のDroidKaigiではコードレビューチャレンジという催しをしました。間もなく解説記事が上がるのでぜひ見ていただきたいなと思います。

また、今年はヤフーさん、PayPayさん、ZOZOさんと一緒に「WWDC」のKeynote? の前に「WWDC22 Extended」というイベントを開催しました。これはKeynoteを楽しみに待ちましょうというイベントで、各社1人ずつiOSに関する発表をしました。

ブログは定期的に更新しており、クライアントのみならず他の部署の記事もあるので、ぜひご覧いただけたらなと思います。

さらに重ねての宣伝ですが、2022年10月、私たちのチームで先生と呼ばれている石川先生(石川宗寿氏)が、コードに関する本を出版しました。入社後、コードリーダビリティセッションという、コードの可読性のセッションを行っているのですが、その資料を元にこの本は書かれています。

『リーダブルコード』を読んだことがある方はけっこういると思いますが、より具体的にどういった命名がよいのかを説明した本で、僕も読みましたがとても役立つ本だと思います。ぜひ手に取って読んでいただければと思います。

解決したい課題は山積み、より快適なアプリ体験を実現していきたい

最後に、今後の課題・展望についてです。ちょっとズラッと並べてしまいましたが、解決したい課題はたくさんあります。

まずトーク機能の強化。End to End encryptionの適用範囲の拡大。機種変更時のよりスムーズなデータの引き継ぎ。特に現在は、iOS/Androidが別々になっていますが、異なるプラットフォームでのバックアップ、リストア機能の提供などを考えていきたいと思っています。

また、Android12からタブレット対応が新たに追加されましたが、こちらの大きい画面の対応もこれから進めていきたいと思っています。

ほかには、LINEのファミリーサービスなど、コンテンツ基盤配信の改善。企業向け配信サービス基盤の改善。LINEミニアプリですね。LINEミニアプリのレストランのモバイルオーダーや、順番待ち受付、デジタル会員証などを実装しやすくなるような機能開発を行っていきたいと思っています。

さらに、ホームタブのアプリ体験の向上。また、アプリの基本機能にはなりますが、アプリのサイズを小さくしたり、パフォーマンスを上げて、より快適なアプリ体験を実現していきたいと思っています。

また、開発環境としてビルド速度の改善や、SPM(Swift Package Manager)を利用したライブラリの管理などを行っていきたいと思っています。こういった課題を一緒に解決してくれる仲間を募集しています。

モバイルアプリが好き・技術習得を楽しめる・ユーザーのニーズを考えかたちにできる人を募集中

最後に、求める人物像についてお話しします。まず、モバイルアプリを作るのが好きな人です。モバイル用OSは毎年大きいアップデートがあり、今までの作り方がひっくり返ることもあるので、新しい技術に貪欲で技術習得を楽しめる人がよいと思います。

そして、ただ作るだけでなく、ユーザーにとって何が必要かを考えてそれをかたちにできる人。技術が好きで、それをユーザーに届けたいと思っている方にぜひチャレンジしていただきたいなと思っています。

これでLPDC2の説明を終わりにします。ご清聴ありがとうございました。