読者です 読者をやめる 読者になる 読者になる

マサルの備忘録

ハイオク仕様のトルクフルな備忘録

LINE DEVELOPER DAY 2015に行ってきた(硬い部分の話)

スポンサーリンク

ちゃんと真面目に書こうと思ったんだけど、だんだんめんどくさくなってきた件。
テキトーにメモ書きました。間違ってたらごめんなさい。

CEO 出澤さん

f:id:domomasarudesu:20150428221621j:plain

はじめに

・4月に就任したばかり
・2011/6に簡単なメッセージングサービスとしてLINEがスタート
・2011/10にスタンプと無料通話機能を追加したことでユーザー数が激増し急成長した

LINE

・MAU1億8千万人、ユーザー同士のコミュニケーションは170億/日
・世界中に展開、1000万人以上のユーザーがいる国は13位上
・各国でトップシェアを取っていくことに重点(2位以下はどんどん過疎化が進む)
・プラットフォーム展開を進めている、「決済、コマース」「エンタメ」
・LINE以外のファミリーアプリも76リリース済み、9億ダウンロード

CTO 朴さん

f:id:domomasarudesu:20150428221702j:plain

Autonomous Team

・主体的な組織:エンジニアが主体的に動いている
・プロトタイプなどを活用して、企画を説得し正式なプロジェクトとして動く

Trust and Respect

・信頼と尊重が大切
・企画意図を積極的に理解することでプロジェクトに主体的に参加できる
・自分の仕事やプロジェクトを責任持ってすすめることができる
・コードレビューも大切で、連帯責任感をもってコメントを書く
・上司ではなく、エンジニア同士がプレッシャーを与え合うことができる

サービス開発担当 池邉さん

f:id:domomasarudesu:20150428221730j:plain

ローカライズ

・LINEは1つのバイナリ/1つのPFで世界中に展開している
・各国独自の問題や課題があり解決してきた

LINE遠征隊

・各国独自の問題点を調査/対応するためにエンジニアを短期間、その地域に派遣する
・エンジニアが実際に現地に行ったほうが速い
・エレベーターの話/スペインの地下鉄の話/パキスタンの話

サーバーサイドのエンジニアの話

いろんな問題を解決

・無駄なReq/Res削減のためにGatewayサーバーの導入とロングポーリングを採用
・コネクション数削減のためHTTP(S)からSPDYへ
・などなど地道な品質改善でUX向上を図っている

マイクロサービス

・個々の機能を独立したサービスとして開発、その間はAPIがつなぐ
・新しい人が入ってきても、すぐに実装できる
・サービスを分割するために、チームも分割して独立性を維持
アドホックにPrjを形成、短期間でIterationを回して、完成したら解散
・各チームで共通になってくるファシリティ部分は共通化して開発効率を向上
github、jenkins、MarenRepo、デプロイツール(PMC)、いろんな指標の可視化ツール(IMON)を共通化

Androidエンジニアの話

Androidの知識がない状態から開発スタート

・デザイン適用について:工数不足のためiOSのデザインをAndroid適用
Androidは画面解像度/サイズが様々で難しかった
・開発⇔デザイナーで意図が異なったり工数がかさんだ
iOS向けのデザインなのでAndroidユーザには不自然だったかも

現在はどうなのか?

・デザイナーがデザインガイドラインを理解し、それに基づいてスケッチ作成
Androidらしい、iOSらしいデザインになった
・マテリアルデザインへの進行もデザイナー主体だった
・お互いデザインガイドラインを理解していたから出来た

クラッシュレポート対応

デベロッパーコンソールで対応していたが、もっと便利に使いたい!
 ⇒難読化されたスタックトレースをなんとかしたい
 ⇒クラス名などで検索したい
 ⇒BugTrackingSystemと連動しした
 ⇒任意の場所でレポートしたい
・クラッシュレポーティングシステムを採用
 ⇒アプリ内にそのSDKを埋め込んで実装、ワンクリックでJIRAに

メンバーの話

・開発メンバーが増えると多くのコミュニケーションがふえたり、Prjのルールなどを覚える必要もありイニシャルコストが増える
・機能毎にチームを編成することでコミュニケーションが減る
ソースコードを一括管理にしてしまうと、機能感でコミュニケーションが必要となった
・Gitのサブモジュール機能をつかって、共通な機能と機能個別のリポジトリを分けてコミュニケーションを徹底的に分離した
・しかし、同じようなクラスが生成され、チーム間での知識が共有されない
・急ぐ開発から、品質重視の開発へ
・小さなチームを作成しては解散し、というのを繰り返し知識の共有などを図った

端末の断片化

・特殊な端末に対する最適化
Google Play Sericesが利用できない:らくらくフォンなど
・位置情報が利用できない、Mapが使えない、GCMが使えない
・PUSHサービスをLINEで開発
・LINEサーバ⇔GCM⇔LINE Push Serviceをうまく切り替えている

・低スペック端末にたいする最適化
・CPUの性能を確認し、性能が悪い場合はアニメーションを使わない
・利用可能なメモリが少ない場合はメモリキャッシュや画像の解像度を変えている
・バッテリの充電ステータスなどで挙動を過ている

開発

・22名
・計437,000行
・200コミット/週
・機能追加をしつつ、リファクタリングをしていく

ビッグデータ解析の話

グローバル化で見えてきた課題

グローバル化、多様化、長寿化/社内のプランナーの増加
・KPIの増加:対応国増加、カテゴリ増加、いろんなフラグでKPI、人が増えると要望増加
・KPIが増えると忙しくなり、だれもKPIを詳しく見なくなる
・KPIを自動で算出/変化があった場合のみ通知するシステムを開発中
・ユーザー情報は隠蔽/誰がどんなクエリを投げたかもログを取っている

会場の様子

・ヒカリエ9F
・プレス席に座ってしまって焦った
・意外と電源がなかったけどMacbook Airなら大丈夫
・会場寒かった/トイレ激混み