LINEは4月28日、エンジニアを対象とした初の大規模技術カンファレンスとなる「LINE DEVELOPER DAY_2015 Tokyo」を、渋谷・ヒカリエホールにて開催した。本稿では、同イベントで行われた講演「A-6:4年に渡るLINE Androidアプリの進化とチャレンジ」についてレポートする。
同講演では、同社 開発1センターのLINE開発2室にてAndroid開発を行うTsutomu Horiyashiki氏が登壇し、Android版の開発開始から現在までの歴史をたどりつつ、開発手法や利用している技術、工夫したことなどを紹介した。
そう簡単にはいかなかったiOSデザインのAndroidへの適用
LINEのAndroid版は、開発開始から1カ月半でリリースされた。この短期間での開発にはさまざまな苦労があったが、印象に残っているもののひとつとしてHoriyashiki氏は、「デザインの適用」を挙げた。
開発当初は最小構成のメンバーで進めており、デザイナーの数も多くなく、またWebデザインがデザイナーの主な業務であった当時は、アプリのデザイン経験が乏しい状況だったため、Android用とiOS用のデザインをそれぞれ開発するには時間が足りないと判断。iOSのデザインをそのままAndroidへ適用することにしたという。しかし、そう簡単にはいかなかった。
Horiyashiki氏は「Android端末はiPhoneに比べて解像度やサイズの種類が多いため、低解像度のものでは画像サイズが大きすぎて適用できないということがよくあった」と当時の状況を振り返った。
このためエンジニア側で、内容に応じて拡大縮小が可能なグラフィックである9-patchを作成したり、画像を低サイズに加工したりするなどして対応していたが、デザイナーの意図に反するものになってしまい、やりなおさなければならないこともしばしば。
時間短縮のつもりで行うことにしたiOSデザインのAndroidへの適用だったが、結果的に多くの時間を使うことになってしまった。そのうえ、「Androidユーザーには違和感のあるUIになっていたのでは」とHoriyashiki氏は考察する。
現在では、デザイナーがデザインのガイドラインを確認し、Androidに適したデザインを行っている。かつてエンジニアが行っていた、画像サイズの変更や9-patchの作成は、今やデザイナーの仕事だ。Googleが提唱する新しいデザイン「Material Design」の適用も、デザイナー主導で進めている。
現在はデザインに無駄な時間を費やすことなく、開発に専念できているという。
短期間で多くの機能をリリースできた組織の作り方とは
リリース後の2012年には、タイムライン、ノート、スタンプショップなど、それぞれを単独のアプリにしても良いくらいの大きな機能が追加されていった。
これら複数の機能を短期間でリリースするためには、単純なメンバーの追加だけでは対応できない。同社では、開発者・企画者・デザイナー間で細かく協議しながら開発を進めており、ここに多くのメンバーが追加されると、多くのコミュニケーションが発生してしまううえに、新メンバーが参加する際には多くの準備期間が必要となってしまうためだ。
そこで同社は、各機能ごとにチームに分けて開発する方法を採用。こうすることで、不必要なコミュニケーションが減り、スムーズな進行が可能となる。
さらに、git submoduleを利用し、ソースコードリポジトリすらも分離した。メインリポジトリから機能別にサブモジュールを作成し、各チームはそのサブモジュールを管理するといった方法で、コミュニケーションを必要最低限に抑えた。共通で利用したいコードは、共通サブモジュールで管理する。これにより、コミュニケーションが必要となるのは、共通サブモジュールとデザイン変更の際だけになるため、素早い進行ができるようになった。
しかし、開発のスピードよりも品質の方が重要となってきている現在では、分離されていたチームは統合されている。新しい機能が追加される場合には、機能ごとに小さなチームに分かれ開発を行う。開発が完了すれば、チームは解散となる。
Horiyashiki氏は「同じチームで開発しているという意識をもって取り組める」と、現在の開発方法を評価した。
さまざまな端末への対策
画面が腕時計程度のサイズになっているものや、見た目がiPhoneのようになっており、Backボタンがない端末など、Androidには特殊な端末が多数あり、同社はそのそれぞれについてなるべく対応するようにしているという。
たとえば、高齢者や子ども向けの「らくらくホン」や、メーカーが独自でカスタマイズを行っている端末は、Google Playサービスが利用できず、位置情報が取得できなかったり、GoogleMapが見れなかったりするものもある。しかしこの場合、Push通知を利用するための仕組みである「Google Cloud Messaging(GCM)」が利用できないというのが、一番ネックとなる。即座に通知がこないというのは、メッセンジャアプリーとして致命的な問題だ。
そこで同社では、自社で開発したPushサービスを利用している。一般の端末では、LINEの利用中にはGCMも自社Pushサービスも使わず、LINEを利用していないときにGCMを使うといったように切り替えているのだが、らくらくホンなどの端末でGCMが利用できないと判断された場合には、自社のPushサービスを使うよう切り替えられる。
現在のAndroid開発メンバーは22名、コードは複雑化
以上のように同講演では、さまざまな工夫を凝らしながらAndroid用アプリの開発が行われている様子を垣間見ることができた。
現在のAndroid開発メンバーは22名、ソースコードの量は43万7,000行にも及ぶという。多数のメンバーでさまざまな機能を開発しており、コードが複雑になってしまっている部分もある。Horiyashiki氏は「これからも新しい機能追加や機能改善を続けつつ、同じような重要度をもってリファクタリングを行っていきたい」と今後の展望を述べて講演を締めくくった。
LINE DEVELOPER DAY 2015 関連記事・基調講演(A-1~A-3)加速度的に成長するLINEの開発施策とは - LINE DEVELOPER DAY 2015基調講演 ・A-4:LINE Platform Development Chronicle LINEのプラットフォームを支えるアーキテクチャと組織の作り方 #linedevday ・A-6:4年に渡る LINE Android アプリの進化とチャレンジ LINE Androidアプリ開発の歴史に見る、開発手法の進化と挑戦 #linedevday |
---|