Autonomous Teamsで取り組むLINEの開発~LINE DEVELOPER DAY_2015 Tokyoレポート

「LINE DEVELOPER DAY_2015 Tokyo」が4月28日、渋谷ヒカリエホールにおいて開催されました。LINEがエンジニアを対象にした初の大規模技術カンファレンスで盛況の中、閉幕しました。その中から午前中の模様をお届けします。

「グローバル化」「LIFE」の2つの軸で、さらなる成長を目指す~CEO出澤氏~

オープニングに登場したのは、LINEの代表取締役社長 CEOである出澤剛氏。出澤氏は「LINE初の大規模な技術者向けカンファレンスですが、これだけ多くの方に興味を持ってもらえて嬉しい」と述べ、LINEが最も大きく成長している企業であり、常に挑戦を続けていることを強調しました。

LINE代表取締役社長CEO 出澤剛氏
LINE代表取締役社長CEO 出澤剛氏

2011年6月にスタートした「LINE」は、公開から3ヵ月で100万ダウンロードを記録しました。そして最初のブレイクスルーとなったのが、同年10月4日に提供を開始した無料通話とスタンプ機能のリリースだったと出澤氏は振り返ります。ここからLINEのユーザ数は加速度的に伸びました。そして現在、LINEはグローバルの月間アクティブユーザ数が1億8千万人、1日あたり最大1,700万のメッセージがやり取りされています。23の国と地域でサービスを提供しており、そのうち13カ国でユーザ数が1,000万を超えています。

出澤氏はLINEのチャレンジとして「トップシェアを取ること」⁠プラットフォーム化」への取り組みを挙げました。トップシェアを取るための施策として、各地に展開するリアルのグッズストアを挙げ、オフラインでの接点が重要であるとしました。プラットフォーム化のための施策としては、情報発信やビジネスに活用できるアカウントサービス「LINE@」をはじめ、決済サービス「LINE Pay⁠⁠、⁠LINEバイト」⁠LINE TAXI」⁠LINE WOW」など「LIFE」をテーマとするサービスに注力していくとのこと。

こうした「ファミリーアプリ」と呼ばれる関連アプリは現在76あり、9億近くダウンロードされているそうです。出澤氏は今後LINEが取り組んでいくこととして「グローバル化」「LIFE」を挙げ、この2つの軸でさらなる成長を目指すとしました。

「グローバル化」「LIFE」がキーワード
「グローバル化」と「LIFE」がキーワード

優秀な技術者をグローバルで育てていくことで組織が成熟する~CTO朴氏~

続いて、上級執行役員CTOである朴イビン氏が、⁠LINE Global Culture」と題した講演を行いました。朴氏は、昨年に続いて2回目のカンファレンスであるとして、今回はより具体的な内容を紹介するとしました。また、前回参加していただいた開発者の方から、LINEの開発環境や文化についてもっと知りたいという声が多かったため、ここではLINEの文化について紹介するとしました。

上級執行役員CTO 朴イビン氏
上級執行役員CTO 朴イビン氏

LINEは日本をヘッドクオーターとして、韓国、台湾、タイ、スペイン、米国など8ヵ国にブランチオフィスがあり、その中で開発拠点は、日本では東京と福岡、海外には韓国、台湾、中国とアジアに5つのブランチがあります。また、昨年にはイギリスにも開発拠点が設立されました。こういった状況の中では、効率的な開発を進めていくための工夫が必要です。

その中でも重要なのが「Autonomous Teams(主体的⁠⁠」というキーワードと説明しました。LINEの中では、開発者が主体的にプロジェクトを立ち上げており、たとえば技術的なプロジェクトやサービスのプロトタイプなどを自ら立ち上げています。そのリソースとなるメンバーは、国や部署にかかわらず興味のある人たちが集まって、都度構成されます。サービスのめどが立ってくると、さらに人数を増やし、企画や機材、サーバ系の開発者も巻き込んでプロトタイプへとプロジェクトを大きくしていきます。一方で、1つのブランチで完結するプロジェクトもあるといいます。

また朴氏は、LINEではこのようなプロジェクトが数多く進行しており、正式サービスにまで発展できないケースも多くあるそうです。こういったプロジェクトを「コールドケース」と呼び、年に一度コールドケースを共有する機会を設けているといいます。そこでプロジェクトを担当する人は興味のある人を集めたり、開発者は自らのスキルを広げるチャンスを得ることができます。

その他、LINEの開発で重要と考えているキーワードとして、⁠リモートコラボレーション」⁠チャレンジ&コントリビューション」⁠トラスト&リスペクト」となどが紹介されました。

とくに最後の「トラスト&リスペクト」については、⁠最後まで自分のプロジェクトとして責任を持つこと」⁠レビューやコメントレベルではなく、はっきりした意見を言うこと」⁠評価や意見を尊重して反映させていくこと」などにより優秀な技術者が育つので、LINEの開発ではこのサイクルをくり返し回していくことで組織を成熟させているとしました。

海外に「遠征隊」を送り、現地で改善・実装する~池邉氏~

LINEの上級執行役員でありサービス開発担当である池邉智洋氏は。⁠LINE Messenger for the World」という講演を行いました。現在、LINEの登録ユーザは日本で5,800万人、海外では1,000万人を数えています。とくに台湾ではトップシェアを獲得しており、たとえば、台湾に行くとコンビニの店頭にLINEのキャラクターが飾られているそうです。池邉氏は「LINEは1つのプロダクトでありプラットフォームですが、それがどの地域でもうまくいくわけではありません。各国の事情に合わせることも、エンジニアの仕事です」と、現地視察をした結果からの考察と、エンジニアに求められる要件について説明を続けました。

上級執行役員/サービス開発担当 池邉智洋氏
上級執行役員/サービス開発担当 池邉智洋氏

もともとLINEは、サービスを開始した当初から英語のリソースを用意していました。加えて、日本でユーザ数が1,000万人を超えたあたりから海外展開にも積極的に取り組んでいます。

こうした背景のもと、池邉氏が重視したのはエンジニアが現地に行って「肌で感じること」でした。それを実現するものが、エンジニアをさまざまな国に「遠征隊」として派遣することでした。

遠征隊は都度構成され、1回につき(現地に)4日くらい滞在するといいます。現地に着くと、まず空港などでSIMカードを購入し、現地のネットワークをチェックしてLINEのサービスを使ってみます。滞在中は、なるべく現地の人と同じような行動を取り、場所ごとにサービスが快適に使えるかどうかをチェックしていきます。その場所は、ホテル、レストラン、電車、バス、観光地、エレベーター、飛行機、高い場所などが含まれます。

こうした調査から現地での問題を見つけて改善し、実装まで行います。そうは言っても時間は限られていますので、多くの場合は事前に現地をリサーチして実装を用意しておき、現地で実装を切り替えながら検証することになります。このようなサイクルが、海外展開における品質担保になるわけです。

また、実際に海外に行ってみると、意外な事実も判明することについても触れました。池邉氏は具体的な例として、パキスタンからの無料通話先は、国内よりもサウジアラビア向けが多いこと、スペインでLINEユーザが増加すると、南米でもユーザが増加することを挙げました。後者は特に、地理的には離れていても同じポルトガル語圏という関係のためだと言います。

LINEではこのほかにも、国ごとに普及しているAndroid端末の特徴や、都市部における地下鉄の電波状況といった地道な細かい情報を集めており、またネットワークにおいては海外にPOPの設置を進めているといいます。またユーザ体験を向上するための施策として、まずユーザにどう思われているか、Appレビューやイベント分析などを組み合わせて問題を発掘し、素早く改善のプロセスを回していることを挙げました。

改善を重ねたLINEのメッセージ基盤とマイクロサービス~Tom氏~

LINEの開発センターでサーバを担当しているTom.T氏は、⁠LINE Platform Development Chronicle」と題した講演を行いました。内容は「LINEメッセージング基盤の進化」および「LINE流マイクロサービス」です。Tom氏はLINEのユーザ数推移のグラフに基盤の歴史を重ね合わせ、説明に入りました。LINEは、スマートフォンで使いやすいチャットアプリをコンセプトに、2011年6月にリリースしました。本格的な開発開始からわずか2ヵ月でのリリースだったそうです。

LINE開発センター、サーバ担当のTom.T氏
LINE開発センター、サーバ担当のTom.T氏

サービス開始当初は、アプリケーションサーバにTomcat、リバースProxyにApache、L4ロードバランサというアーキテクチャで、Tomcatの背後にRedisとMySQLを配置するという、一般的なWebサイトと同様の構成となっていました。なお、JavaとSpringという組み合わせは現在も変わらないとのこと。

メッセージングにおいては、Pollingを使ったメッセージ送受信ではfetchによる通信が多くなってしまうので、PUSH通知を採用しました。しかし、この組み合わせではPushの遅延や、無駄なリクエストとレスポンスによりバッテリへの負荷が大きいという問題がありました。

そこで、Push通信に代わる通知手段として、long pollingを採用しました。これはクライアントとサーバの間にゲートウェイを設置し、リクエストとレスポンスをゲートウェイとサーバ間のみで行うようにしたのです。このゲートウェイの導入に合わせ、2011年9月にアーキテクチャを変更、ApacheをNginxと拡張モジュールに置き換え、リアルタイム性を確保しました。しかし2012年1月くらいに、負荷が高いときにsegmentation faultで落ちるという状況が頻発しました。

この問題は、Nginxと拡張モジュールの実装に原因がありました。そこでPublishの処理にErlangを加えました。Erlangは並行性、分散処理、高級、無停止デプロイといった特徴があり、これによりゲートウェイ部分を「LINE Event Delivery Gateway(LEGY⁠⁠」としてアップデート、Push通知をコントロールできるようにしたといいます。

しかし2012年7月、これまでとは別の問題としてコネクション数の問題が表面化しました。これにはまず、クライアントとLEGY間で複数行われているコネクションをひとつのコネクションにまとめ、ヘッダ圧縮などを行いました。また、プロトコルをHTTPS(HTTP/1.1)からSPDY(HTTP/2)に変更、複数のコネクションを同時に行えるようにしたのです。こういった地道な通信量の削減により、最終的にコネクション数を半分から1/3までに抑えられたといいます。

2012年10月には、海外でのパフォーマンス追求が課題となりました。ここではメインのデータセンターからLEGYとL4ロードバランサをグローバルPOPとして分離することで、パフォーマンスを改善しています。

マイクロサービスについては、LINEが提供するサービスに求められる「スピード」⁠機能」⁠品質」を実現するために、開発スタイルをモノリシックからマイクロサービスに切り替えたといいます。マイクロサービスでは、メッセージングとソーシャルグラフを実装したTalk-serverを中心に、通話、画像・動画配信・スタンプ販売・公式アカウントなどをリンクさせ、さらにサービスゲートウェイを介してBusiness Connectやタイムラインとリンクさせています。

さらにバックエンドサービスとして、認証管理やAbusing、イベント処理、外部連携ゲートウェイ、Push基盤などを用意することで、マイクロサービスを容易に立ち上げられるようにしました。なお、マイクロサービスは「チーム」⁠デプロイメント」⁠開発プロセス」により構成され、⁠組織」⁠ファシリティ」⁠プロトコル管理」の3要素で支える形になっています。Tom氏は今後の課題として「マルチデータセンター」「マイクロサービスの発展」を挙げ、講演を締めくくりました。

以上、LINE DEVELOPER DAY_2015 Tokyo、午前の講演の模様をお届けしました。午後の講演を含めた詳細レポートについては、6月発売のWEB+DB PRESS Vol.87』でお届けします。お楽しみに。

おすすめ記事

記事・ニュース一覧