LINEの技術組織が取り組んでいる・今後取り組む未解決課題を深堀りするインタビューシリーズ「Unresolved Tech Issue」をスタートします。今回のテーマは「LINEアプリのさらなるモバイル体験向上に向けた改善・開発」です。
数億人のユーザーがコミュニケーションに利用するLINEアプリのクライアント開発組織では、2021年にモバイルエクスペリエンス開発室を立ち上げました。この開発室では、iOS/Androidの新機能対応やLINEアプリを複数のデバイスで利用する際の体験向上、モバイルプラットフォーム特有のビルド課題の改善などに挑んでいます。
モバイルエクスペリエンス開発室の活動の詳細について、室長の早石明浩と副室長の富家将己、副室長の岡本雄三が解説します。
モバイルプラットフォーム全般の課題を解決する組織
──モバイルエクスペリエンス開発室の概要や、立ち上げの経緯について教えてください。
早石:私たちはLINEアプリをiOSやAndroidなど複数のモバイルプラットフォームへ提供しています。そして、モバイルエクスペリエンス開発室ができる前から、新しいOSや端末などがリリースされると、それらのアップデートに対応してLINEアプリの機能改修を実施してきました。
こういったアップデート対応では、特定のチームが改修を担当するのではなく、複数のチームから少しずつメンバーを出し合って、組織横断的なチームを期間限定で組成することで対応していました。
しかし組織横断チームの解散後は、前述のようなタスクをそれぞれの開発チームが個別で実施するしかないという課題もありました。それだけではなく、複数デバイス対応の遅れなども生じていました。ユーザーによく使われている端末以外は、対応のためのリソースを割けていませんでした。
また他にも、ソースコードやチームの規模が大きくなるにつれて、ビルドに時間がかかるようになったり、エンジニアごとにコードの品質にばらつきが出たりという問題にも直面し、各チームの有志がボランティア的に対応していました。
この状況を改善するために、2021年1月にモバイルエクスペリエンス開発室を立ち上げました。この開発室では、ユーザーのモバイルアプリ体験の改善と、さらにはモバイルアプリを担当するエンジニアの開発体験向上も目指しています。
今回は私たちが実施している「iOS/Androidの新機能、新しいUI、APIの調査・開発」「Bazelを活用したビルドパフォーマンスの改善・開発」「Android/iPhone/iPadなど複数デバイスでアプリを利用する際の利用体験改善・開発」という3つの取り組みについて具体的に説明します。
各種のOSやデバイスに対応し、最適な体験を目指す
──まずは「iOS/Androidの新機能、新しいUI、APIの調査・開発」についてお聞かせください。
岡本:現在、モバイルエクスペリエンス開発室のAndroidを担当するチームで注力しているのはScoped Storage対応です。Android 10から導入されたScoped Storageにより、アプリ固有のストレージとアプリ外部のストレージが厳密に区別されるようになりました。コードを改修した場合の影響範囲が広く、かつデータのマイグレーションも必要になってくるため、LINEアプリではまだ完全な対応ができていません。
Google Play の対象APIレベルの要件変更のために、2021年11月までにアプリの対象APIレベルを30 (Android 11) に上げることが求められていることから、Scoped Storage対応も必須となっています。
LINE Android アプリの開発に携わっているチームは多く、それぞれのチームに漠然とScoped Storage対応を依頼しても、優先度の高いタスクを他にも抱えているため改修がなかなか進みません。そこで私たちは、モバイルエクスペリエンス開発室内にScoped Storage専任の担当者を置きました。
その担当者が LINE アプリ内で対応が必要な箇所のリストアップや、各エンジニアが利用できるライブラリの実装、さらには各チームへのディレクションを実施し、一元的にScoped Storage対応を管理できるようにしています。このように、OSのアップデートによって影響を受けた機能にいち早く対応するのも、モバイルエクスペリエンス開発室の重要な役割です。
また、LINEアプリではGoogleと連携してGoogle Assistant経由でメッセージを送れるのですが、モバイルエクスペリエンス開発室が主導して、この機能の使い勝手をさらに向上させるための改修を進めています。
冨家:次はiOS関連のプロジェクトについて私から解説します。これまでモバイルエクスペリエンス開発室のiOSを担当するチームでは、iOS13におけるContext MenuやDark Modeの対応、iOS14におけるWidgetの対応などを実施してきました。また、すでにiOS15もパブリック・ベータ版が発表されていることから、このOS対応の準備を進めている最中です。
新しいOSがリリースされると、新機能が実装されて、モバイルデバイスでできることが増えます。私たちはその進化に追随していき、ユーザーになるべく良い体験を提供し続けたいと考えています。さらにiPhone以外のデバイスとして、iPadやApple Watch、CarPlayなどにも対応しています。
ユーザーはさまざまな場所やシチュエーションでLINEアプリを利用しますから、どのようなデバイスでも最適な体験を提供できるように改修を続けることは、意義の大きい取り組みです。
ビルドパフォーマンスを改善して開発を効率化
──次は「Bazelを活用したビルドパフォーマンスの改善・開発」について。
冨家:もともと、iOS版のLINEアプリのビルドにはXcodeのビルドシステムを用いていました。しかし、プロジェクト数の増加やソースコードの肥大化に伴い、ビルド時間が長時間化する問題が生じるようになりました。また、LINEアプリの巨大なコードベースではIncremental Buildが正しく動作しないなどの問題も生じていました。その結果、コーディングが円滑に進まず、CIの実行にも時間がかかり、開発が滞る状況になっていました。
そこで、ビルドを改善するプロジェクトを立ち上げ、解決策として登場したのがBazelです。BazelはGoogleが開発しているオープンソースのビルドシステムで、モジュールごとにビルド成果物をキャッシュできるだけでなく、リモートキャッシュなどの機能を利用することで開発者がビルド成果物を共有できるといった長所があります。
Bazelを導入した結果 * として、30分以上かかっていたビルドが半分ほどの時間で収まるようになり、開発の効率化に成功しました。現在はBazelをApple M1チップ上で動かすための対応を進めており、すでにCIでのビルドには成功しています。
*… LINE iOS版のビルドパフォーマンスをBazelで改善 : https://engineering.linecorp.com/ja/blog/line-ios-build-performance-improved-with-bazel/
複数デバイスでも利用しやすいLINEアプリへ
──3つ目として「Android/iPhone/iPadなど複数デバイスでアプリを利用する際の利用体験改善・開発」についてもご説明ください。
岡本:モバイルエクスペリエンス開発室が改善しているLINEアプリの機能の中に、アカウントの登録・引き継ぎのフローがあります。かねてより「LINEアプリのアカウント引き継ぎ方法がよくわからなくて失敗した」というユーザーからの声を数多くいただいてきました。アカウント引き継ぎにおけるユーザービリティの向上は、重要度の高い課題でした。
一方で、LINEアプリはアカウント乗っ取りのような攻撃の対象となることもあり、あまりに引き継ぎのフローを簡易的にすると、セキュリティが低下してしまいます。わかりやすさとセキュリティの最適なバランスをとるために、試行錯誤を続けています。
そして改善の一環として、例えば2020年に生体情報を利用してパスワード入力なしにサブデバイスへ安全にログインする機能をリリースしました。この方式をアカウントの引き継ぎに応用して使いやすくする機能も、現在検討中です。
また、LINEはスマートフォン(iOS, Android)をメイン端末として利用し、iPadをサブ端末として利用して同一のアカウントを両方の端末で利用することが可能です。しかし Androidの場合はタブレットにLINEをインストールして利用することは可能ですが、サブ端末としての利用はまだ対応しておらず、同一のアカウントを利用することが出来ません。現在 Androidタブレットでもサブ端末としての利用が可能になるように開発を進めています。
このプロジェクトだけではなく、Androidアプリ関連の開発も挑みがいのあるプロジェクトが多いです。ひとくちにAndroidタブレットといっても、さまざまな画面サイズのものや折り畳み可能なものなど、デバイスの種類は多種多様です。
それに、最近ではChromebookでもAndroidアプリが動作するようになったり、将来的にはWindows 11でもAndroidアプリが動作する予定だったりと、アプリが動く環境もバリエーションに富んでいます。さまざまな画面サイズや機能、入力インターフェースなどにLINEアプリを最適化する必要があることから、とてもチャレンジングな仕事だと思います。
“最高のモバイル体験”を追い求められる職場
──インタビューの総括として、エンジニアがモバイルエクスペリエンス開発室で働く意義について聞かせてください。
早石:モバイルアプリの開発に携わるエンジニアは、普段から仕事とプライベートの両方で、iOSやAndroidなどのプラットフォームやデバイスに触れています。その過程で、「このアプリをこう変えたらより便利になるのに」や「新しいOSの機能を使えば、アプリを改善できるのに」と思う瞬間が必ずあります。
モバイルエクスペリエンス開発室は、そうしたエンジニアのモチベーションを最大限に発揮出来る部署を目指しています。また、この部署で働くエンジニアは最新の機能や各種デバイスの特性などを熟知し、モバイルプラットフォームのスペシャリストになれます。エンジニアのキャリアにもプラスの影響が必ずあると考えています。
岡本:多くのエンジニアは、ユーザーに対して使い勝手の良いアプリを提供したいと思っているでしょう。しかし、プロジェクトにおいては各種ビジネスKPIなどの達成を最優先に開発を進めるケースも多いため、必ずしもユーザー目線に立ったプロダクト開発を追求できる仕事ばかりではありません。
しかし、モバイルエクスペリエンス開発室ならば徹底的にユーザー目線に立って、そしてエンジニアの目線に立ってアプリを改善できます。自主的にアプリ改善のための提案をしてプロジェクトを推進したい人にとっては、魅力的な職場だと思います。
冨家:モバイルエクスペリエンス開発室では、最新のOSや新しい機能などエンジニアにとって魅力的な要素を扱えます。開発が好きなエンジニアや新しいものに取り組みたいエンジニアにとって、思う存分力を発揮できる環境です。よかったら、私たちと一緒に働きましょう。
採用情報
LINE株式会社では一緒に働くエンジニアを募集しています!
今回のインタビューと関連する募集ポジションはこちらです、ご応募お待ちしております。