SPECIAL REPORT「LINE DEVELOPER DAY_2015 Tokyo」

「LINE DEVELOPER DAY_2015 Tokyo」が2015年4月28日、東京・渋谷ヒカリエホールにおいて開催されました。エンジニアを対象にした初の大規模技術カンファレンスとなっており、長時間にもかかわらず盛況のイベントとなりました。ここではその模様をレポートします。

「グローバル化」「LIFE」で、さらなる成長を

オープニングに登場したのは、LINE⁠株⁠の代表取締役社長CEOである出澤剛氏写真1⁠。出澤氏は「LINE初の大規模な技術者向けカンファレンスですが、これだけ多くの方に興味を持ってもらえてうれしい」と述べ、LINEが最も大きく成長している企業であり、常に挑戦を続けていることを強調しました。そして、その難しさとして「ユーザの多さ」「プラットフォームの多様性」を挙げ、⁠LINEの挑戦には、技術的なハードルがたくさんあります。このカンファレンスでは、LINEが取り組んできたこと、目指していくことをみなさんにお伝えしていきます」と述べました。

写真1 CEOの出澤剛氏
写真1 CEOの出澤剛氏

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

出澤氏は「今のLINEは、やっと世界戦のチケットを手に入れたところです。これから山を登っていくことになるので、これからが大変です。その中でエンジニアも世界と関わりながら成長してほしい」と述べ、LINEのチャレンジとして「トップシェアを取ること」⁠プラットフォーム化」を挙げ、そのために「グローバル化」と、生活に密着したサービスを展開する「LIFE」に取り組んでいくとしました。

優秀な技術者をグローバルで育てていく

続いて、上級執行役員CTOである朴イビン氏が、⁠LINE Global Culture」と題した講演を行いました。朴氏は、他社の開発者の方から、LINEの開発環境や文化についてもっと知りたいという声が多かったため、ここではLINEの文化について紹介するとしました。

LINEは日本をヘッドクォーターとして、6ヵ国にブランチオフィスがあり、5つの開発拠点があります。朴氏は、効率的な開発を進めていくためのキーワードを挙げていきました。まずは「Autonomous Teams」⁠主体的)というキーワードです。LINEでは、開発者が主体的にプロジェクトを立ち上げており、そこに国や部署にかかわらず興味のある人たちが集まって開発が進んでいきます。一方で、正式サービスにまで発展できないプロジェクトを「コールドケース」と呼び、年に一度コールドケースを共有し、プロジェクトの活性化を図るチャンスの場としています。

「リモートコラボレーション」も、LINEの開発で特徴的なキーワードだと言います。朴氏はそこで必要になるものとして、リモートでもビジョンを明確に共有できる技術、また実際に口頭で話しながら意思を可視化する技術を挙げました。

LINEの開発ではスケーラビリティが基本になるため「チャレンジ&コントリビューション」として、システム設計には多くのリサーチを行い、さまざまなOSSも試しているとしました。また「トラスト&リスペクト」もLINEで重視しているとのこと。これについて、⁠最後まで自分のプロジェクトとして責任を持つこと」⁠レビューやコメントレベルではなく、はっきりした意見を言うこと」⁠評価や意見を尊重して反映させていくこと」などにより優秀な技術者が育ち、組織も成熟していくとしました。

海外に「遠征隊」を送り、現地で改善・実装

LINEの上級執行役員でありサービス開発担当である池邉智洋氏は、⁠LINE Messenger for the World」という講演を行いました。池邉氏は「LINEは1つのプロダクトでありプラットフォームですが、各国の事情に合わせることもエンジニアの仕事です」と言います。

LINEでは、サービスを開始した当初から英語版を用意し、ユーザ数の増加に伴い海外展開にも積極的に取り組んだと言います。現地のキャリアとの調整など、国外特有の品質の問題がありましたが、池邉氏が重視したのはエンジニアが現地に行って「肌で感じること」でした。そこでLINEでは、エンジニアをさまざまな国に「遠征隊」として派遣しています。

遠征隊はつど構成され、4日くらい滞在します。現地に着くと、まず空港などでSIMカードを購入し、現地のネットワークでLINEのサービスを使ってみます。滞在中は、なるべく現地の人と同じような行動をとり、場所ごとにサービスが快適に使えるかどうかをチェックしていきます。そして、現地で問題を見つけて改善し、実装まで行います。

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

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

LINEのメッセージ基盤とマイクロサービス

LINEの開発センターでサーバを担当している鶴原翔夢氏写真2は、⁠LINE Platform Development Chronicle」と題した講演を行いました。内容は「LINEメッセージング基盤の進化」および「LINE流マイクロサービス」です。鶴原氏はLINEのユーザ数推移のグラフに基盤の歴史を重ね合わせ、説明に入りました。

写真2 開発センターの鶴原翔夢氏
写真2 開発センターの鶴原翔夢氏

サービス開始当初は、アプリケーションサーバにTomcat、リバースプロキシにApache、L4ロードバランサというアーキテクチャで、Tomcatの背後にRedisとMySQLを配置するという、一般的なWebサイトと同様の構成となっていました。なお、JavaとSpringという組み合わせは現在も変わらないと言います。ここから、メッセージングにおける改善のトライ&エラーが始まりました。たとえば通知では、PollingからPUSH通知、long pollingと変遷し、Erlangを加えたゲートウェイ「LINE Event Delivery Gateway」⁠LEGY)を開発しています。

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

さらにバックエンドサービスとして、認証管理やAbusing、イベント処理、外部連携ゲートウェイ、Push基盤などを用意することで、マイクロサービスを容易に立ち上げられるようにしました。鶴原氏は今後の課題として「マルチデータセンター」「マイクロサービスの発展」を挙げ、講演を締めくくりました。

午後のセッションをミニレポート

ランチサービスが提供されたお昼の休憩を挟み、午後はホールA、Bの2つの会場で15のセッションが行われました。そして最後はホールAで、全登壇者の参加による座談会も開催されました。ここでは、午後のセッションからいくつかピックアップしてご紹介します。

LINEの膨大なデータを扱うストレージシステム

中村俊介氏によるセッション「HBaseとRedisを使った100億超/日のメッセージを処理するLINEのストレージ」では、LINEのストレージシステムについて解説されました。そこに求められるのは低遅延とゼロダウンタイムです。さまざまなOSSを試した結果、現在では高速で多様なデータに対応する「Redis」と、高速性とスケーラビリティの高い「HBase」の組み合わせを使用していると言います。LINEのデータは、メッセージなどが100TB以上、ユーザのソーシャルグラフが10TB以上、統計データは10PBの容量を扱っており、これらをRedis、HBase、そしてHDFSで運用しています。

また可用性においてはRedisをチューンアップし、ノード障害と遅いレスポンスのすばやい検知、I/Oのオーバーヘッドの削減などを行い、現在Redisのクラスタは、30のクラスタ、4,775のシャード、48TBのメモリを使用していると言います。一方、HBaseではタイムアウト関連のチューニングや、クラスタの冗長化などを行っています。HBaseのクラスタは、15のクラスタ、1,300のFusion-io ioDriveおよびHDDノード、1PBを使用しています。また、運用においての改善についても詳しく説明しました。

中村氏は今後の課題として、古いバージョンのアップデートをはじめ、複数のデータセンターの利用、Opsツールの向上、OSSコントリビューションを挙げました。

スマートデバイス向け開発最新動向

「LINEのiOS対応、新しい技術チャレンジ」と題されたセッションでは、LINEにおけるiOS向け開発の最新動向について紹介されました。

最初に登場したのは、Christopher Rogers氏。同氏は、イベントの数日前に発売されたばかりのApple Watch向けLINEアプリの開発について、現段階での問題点と解決方法について触れました。

Rogers氏はこれまでの開発経験をもとに、現段階でApple Watch向けアプリを開発する際には、⁠通知Actionの追加は慎重に行う」⁠よく使う画像はApple Watchにコピーしておく」⁠openParentApplicationとapp groupはほどよく使う」といったことに注意するとよいとして、発表をまとめました。

次に登場したのは、石川洋資氏。⁠Swiftによる開発チームの変化」と題し、LINEおよびFamily Appsの開発における問題点とその解決策としてのSwift採用について説明されました。

Swiftを採用したことにより、⁠開発の分担やデバッグがしやすくなる」⁠コードレビューが簡単になる」⁠安全なコードが書かれやすくなる」といったように、チーム開発で問題になり得る点をカバーできるようになったと言います。一方で、Swiftの場合、⁠ほかの言語に比べて)設計の良し悪しがインタフェースに出やすいことを注意点として挙げました。LINEではこの点の品質を高めることを意識しながら、今後もiOS向けアプリの開発環境としてSwiftの導入を進めていくそうです。

役立つデータ分析プラットフォーム構築を目指して

橋本泰一氏による「ビッグデータを活用するための分析プラットフォーム」では、LINEにおけるデータ分析について、分析プラットフォーム構築のポイントとそのグローバル化で見えてきた課題が紹介されました。

橋本氏はまず、データ分析は「データの集約」⁠サービス状況の報告」⁠サービスの問題点や改善点の分析」という3つのフェーズに分かれると述べ、データの集約においてはリーズナブルに大量のデータを保持することが、状況の報告においては柔軟なデータの設計とわかりやすい可視化が、問題点や改善点の分析においては簡便で高速なデータの抽出がポイントであると述べました。そして、各フェーズで使っている技術を紹介したのち、こうした技術選定の際に重要視していることとして「API連携がしやすいこと」⁠なるべくOSSを使うこと」⁠コストに見合わないユーザトラッキングをしないこと」⁠認証をしっかり行うこと」といった点を挙げました。

最後に橋本氏は、グローバル化に際して分析すべきKPIが増加しており、すべてを人の目で確認するには負荷が高過ぎるという課題を挙げ、KPIの特徴的な変化のみを伝えるしくみを開発中であるとして発表を締めくくりました。

LINE Creators Marketのシステムと国際化

松野徳大氏写真3によるセッション「Webサービスの国際化にあたりLINE Creators Market開発がどのように行われたか」では、LINEが爆発的に普及する一因となったスタンプを誰でも作成して販売できる「LINE Creators Market」の開発およびグローバル対応について紹介しました。同サービスのポイントは、⁠誰でも参加可能」⁠売上の50%をクリエイターへ」⁠世界中に販売可能」の3点です。サービス開始後6ヵ月で、登録クリエイター数は27万人、登録されたスタンプは9万セット以上に伸びています。また、上位10位の平均販売額は3,680万円、販売1万円以上のスタンプは全体の40.8%を占めています。販売総額は35億9千万円に上っています。

写真3 LINE Creators Marketの国際化について語る松野徳大氏
写真3 LINE Creators Marketの国際化について語る松野徳大氏

技術的な面では、主要機能として大きく「ステッカーのアップロード/管理」⁠画像処理」⁠承認機能」⁠統計情報の表示」⁠送金」の5つに分けられます。全体のアーキテクチャとしてはマイクロサービスとして設計されており、Perlで書いていると言います。国際化への対応では、送金が国内では銀行でしたが、国外ではPayPalを利用すること、統計情報をCSVでrsyncdに渡して集計プログラムを介してMySQLに送ることなどが挙げられます。このほか、翻訳の社内実施や、アジャイルな開発であること、スケール前提で開発すること、監視が重要であることなどが説明されました。

新たな「LINEメッセージングパイプライン」

小野侑一氏による「Akka ActorとAMQPで作るLINEメッセージングパイプライン」というセッションでは、LINEメッセージングパイプラインをリプレースした内容について紹介しました。パイプラインとは、ユーザのデバイスと外部システム間でやりとりされる受信キュー、送信キューのしくみです。メッセージングでは、送信した順序で受信側に到達しなければならないという基本要件があります。Producer/Workerパターンでは処理順序が保証されないため、挿入順に処理される1Q1Cを採用したと言います。しかし1Q1Cには、コンシューマーのフェイルオーバーをどう実現するか、1キューに対して正確に1コンシューマーを割り当てる方法といった問題もありました。

そこで、AMQP ACKを活用した1Q1Cのフェイルオーバーを採用した結果、AMQP(RabbitMQ)のみでフェイルオーバーが可能になり、キューとコンシューマーのペアリングが容易になり、スケールアウトも解決するなど、可用性、スケーラビリティともに有効だったと言います。さらに、ScalaおよびJava向けの並行プログラミングライブラリ「Akka Actor」を組み合わせました。Akka Actorは、Receive Functionの切り替えを可能にし、内部ステートを引き継ぎつつ状況に応じて動作を定義できる、複雑なメッセージフローの制御に有利といった特徴があります。非同期パイプラインを実装することで、スループットを落とすことなく、複雑な要件を同時にクリアできたといいます。

「座談会」では、講演者が会場の質問に回答

本イベントでは、カンファレンス公式のLINEアカウントを作成し、参加者から質問を募っていました。最後のセッションでは「座談会」として、セッションの講演者12名が参加して、このアカウントに寄せられた質問に答えました写真4⁠。モデレーターは田中洋一郎氏が担当しています。採用された質問は、登壇者に合わせて12個。⁠マイクロサービスではサービス間の通信が増えませんか?」⁠iOSのバージョンによる互換性の問題で困ったことはありませんか?」など開発者らしい質問が出ました。

写真4 座談会では講演者が勢ぞろいして質問に答えた
写真4 座談会では講演者が勢ぞろいして質問に答えた

さらに「Swiftの体得はどのようにしましたか?」⁠これから崩壊しそうなところはありますか?」といった突っ込んだ質問や、⁠MySQLかRedis+HBaseかの選択をする基準の分岐点は?」のような具体的な質問もあり、登壇者が詳しくわかりやすく回答する姿が印象的でした。

おすすめ記事

記事・ニュース一覧