LINE DEVELOPER DAY 2016に行ってきました

このエントリーをはてなブックマークに追加

2016年9月29日に開催されたLINE DEVELOPER DAY 2016に参加しました。1日掛りでとても濃い内容でしたので整理が追いついていませんが、とりあえず備忘録として取ったメモを載せておきます。

全体

  • ヒカリエホール(9F)
  • 全てがLINEアプリだけで完結
    • 入場はLINEからQRコードを表示
    • 会場に設置された3つのビーコンをLINEで受信するとスタンプがもらえる

A-1 Opening & Introduction

  • 今年で5周年
    • 230カ国
    • 2億2000万人
  • 目標: Closing the Distanceを実現
  • Content Platform
    • 各種ゲーム
    • line today
    • line live
    • line tv
  • Life Infra Platform
    • line@
  • line platformは ‘Open’
  • bot
    • どこよりも長くbotに取り組んできた
    • Message-APIがOpen
    • Chat Extention
      • チャットの中でできることを増やす
  • Large-Scale Platform
    • 大規模オンプレデータセンターを保有している
      • Private Cloud
  • storage
    • Storage Opensourceへのコントリビューションも増えている
  • Data Processing & Machine Learning
  • グローバルな開発人材確保
    • Tokyo, Fukuoka, SouthKorea, China, Taiwanなど
  • lineの清聴はlineだけでなされるものではなく、周りの協力が必要

A-2

LINE Notify

  • 開発者向け
  • 無料で利用可能
  • ユーザーのlineに通知を送れるAPI Gateway
  • OAuth2でアクセストークンを取得してAPI投げるだけ
    • シェルスクリプトやjenkinsに入れるなど、開発シーンで気軽に使える
  • IFTTTと連携
    • 様々なシナリオがコーディングレスに実現できる
  • GitHubとも連携
  • mackerelとも連携

LINE Messaging API

  • line bot
    • line oa
    • line@
    • 今までは管理画面で設定してメッセージを送信していた
  • 今まではlineが提供しているもの、または提携パートナーが提供しているものがAPI形式でbotを提供していた
  • line bot platformのオープン化
    • ボットを実装するためのAPIを一般公開する
  • 今年春にAPIをトライアル公開
    • 当初10kユーザーだったのが現在20kユーザー
  • 本日より正式公開
  • トライアルのフィードバックを基に改善
    • no magic numbers
  • APIドキュメントをフルリライト
    • 日本語/英語
    • 以前より読みやすくなった
    • 各言語でのサンプルコードも充実
  • SDKも公開
    • lineブログに詳細を本日公開予定
  • Three New Features
    • Group
      • 一部のbotのみだったが、groupに参加できるbotを作れるようになった
    • new message type
      • carousel, confirm, button
      • カルーセルからボタンが出てきてスムーズにwebに移動できる、など
    • reply / push
      • push
        • bot → user
      • reply
        • ユーザーの発言ひとつひとつにリプライトークンがつく
        • このリプライトークンを使ってAPIをコールするとコール料が無料になる
        • 有効範囲: 数十秒間、ワンタイム
  • botとのやり取り
    • リッチメニュー
      • 画面下からメニューパネルが出て来る
      • メッセージ送信しなくてよいので、botとのやり取りがスムーズに行える
  • line web login
    • botの機能を使うにしても限界がある→やはりweb画面で用意したい
    • line内のwebviewであればオートログイン機能が働く
    • line profile+ に登録されている情報をweb上で取得する、などが簡単にできる
    • ただしまだ提携パートナー向けのみの提供
  • Line bot platformの上でユーザーにサービス提供が可能

IoT: line beacon

  • ビーコンをlineが受信して、自作bot

bot award

  • 優勝賞金最大1000万円

A-3

  • lineのサービスダウンの歴史

2016/3/11

  • サービス障害を興すとtwitter等でデマが流れるというリスクもある(笑い話)
  • 必要なときに必要最低限の通信をするよう心がけた設計がされている
  • クリエイターズきせかえのリリースにむけた開発中に発生
  • データ更新作業を何回かにわけて実施
    • 1つずつ更新する通知と、全データ更新する通知がある
    • ほぼ全ユーザーから全きせかえデータの更新通知を送ることになった
    • 全データ更新通知は時間分散していなかった
    • 更新のため認証APIが呼ばれ、認証サーバがダウン
  • サーキットブレイカー: lineブログで解説している
  • 1次対応、再発防止対応、総務省に報告
  • 多機能にも影響を与えてしまった
    • マイクロサービスがまだ不十分であったので更に推進する必要がある
  • 質問
    • マイクロサービスで構築されている場合、部分的な作業をする際の連絡経路はどうなっているのか?
      • 影響などを想定して必要があれば連携するが、このときには影響を予想できなかった

A-4

What is LINE login

  • LINEアカウントでログインできる
  • web/iOS/Androidで実装可能
    • SDKの提供
  • Autologin from the Line app
    • line内webviewではアイパス入力不要
  • OAuth2
  • app-to-app authentication

What’s NEXT?

  • Profile+
    • lineに登録したユーザー情報を自サービスで利用できる
  • Email API
    • ユーザーが同意すればEmail情報も取得できる?
  • LINE Payとの連携

A-5

アーキ

  • LEGY
    • ルーティング
    • 通信の暗号化 など
  • TLSの問題
    • 実際のデータを送る前にハンドシェイクなどが発生してしまう
    • TLS v1.3はまだドラフトなので使えない
  • LEGY Encryption
    • Lightweight TLS alternative
  • Kessagin E2EE
    • End-to-end Encryption for LINE – Letter Sealing
      • ユーザー間でしか暗号/復号化できない
        • LINEサーバ側でもできない
      • 現在はメッセージだけだが将来的には動画などにも対応させる
  • Device Security
    • True Delete
      • 削除を実行する際に削除フラグを立てたりするのではなく、本当にデータをnullなどでoverwriteする
    • 他にも色々

rick assesment

  • セキュリティ指標
    • コード解析・改造の難しさ
    • ボット・ツールのサーバ側での検知
  • Man-In-The-Middle対策
    • ゲーム内でゲームサーバの証明書を検証して、プロキシが挟まっていないことを確認する

Anti-Spam/Abusing

  • 誤検知率が十分に低くないとサービスとして致命的
  • 機械学習などの導入で自動化の研究を続けているか、まだ完全に自動化はされておらず人力でチェックしている範囲もある

Bug Bounty Program

  • ユーザーからのバグ報告を募り、有益な情報には報酬を出す制度
  • 実際に支払われた事例は5件ある

A-6

Why group?

  • messenger platform
    • 1:1
    • 1:bot
    • 1:group
  • Groupは親しい間柄だけでない、LINEが提供するgroupの範囲を広げていきたい
  • 課題
    • グループが巨大になるにつれて
      • 目的がずれてくる
      • 意図しないメンバーへの情報公開
      • 幽霊メンバー
    • 途中joinの場合に過去ログ見れない
  • Group 2.0(構想段階)
    • 3 member levels
      • owner, admin, normal
    • Admission Types
      • 誰でも参加可能
      • 承認制
    • More Chats
      • グループ毎に1チャットだったのを、複数チャットを作ることができるように
  • Group 2.0 Application
    • 元から機能実装しておくのではなく、アドオンで追加できる仕組みを用意する
      • Slackなどの他チャットの影響を受けていそう
    • グループのアクセストークンをどうするか
      • channel tokenを利用するようにした

A-7

  • HLS
    • HTTP Live Streaming
  • tsファイルは2秒毎
  • 動画配信が途切れた場合にストレージへのアクセスが増加する
    • 配信が途切れたイベントを検知して返すAPIを別途用意して、ストレージへのアクセスをしないようにした
    • 他のAPIとは分けてマイクロサービスとして構築しているので落ちても全落ちしない
  • チャットログデータもHLSと同じ考えで2秒ごとにjson分割
  • love
    • 連打をクライアント側でカウントしておきある程度の量をまとめてサーバ側に送信することで負荷を下げる

A-8

  • Group Call
    • 1年前にグループ通話に特化したpopcorn buzzをリリース
    • このノウハウを元に開発
  • グループ通話を実現するための選択肢
    • フルメッシュ
      • 全てがつながる
    • end system mixing
      • 特定のクライアントが中心となる
    • サーバを中心に据える←これを採用

A-9

What is Armeria?

  • 概要
    • 非同期RPC/API呼び出し用のクライアント/サーバライブラリ
    • Java 8, Netty 4.1, HTTP/2, Thrift
  • HTTP/2の採用
    • TCPコネクションの数が毎分60万だったのが2000くらいに激減
  • 同期処理が多かった実装を非同期化することによる課題
    • エンジニア側の意識・慣れ
    • TCP接続の数が激減することで、TCP単位でやっているロードバランシングが有効に働かない、など

A-10

  • 本日のラインナップ
    • 50タイトルほどの中から絞り込んだ
  • LINE GitHubエンタープライズ内のリポジトリ数
    • 2012.12 62
    • 2016.9 10660
    • マイクロサービス化などの成果
  • 各国独自のカルチャーを取り入れたプロダクト提供が必要
    • 単なる多言語対応では駄目
  • 言葉の問題
    • 多言語を話す
    • 必要があれば通訳担当者が同席
    • 翻訳bot
      • 使いたくて作った、昔からある
    • てっとり早いのは、直接会うこと
      • コードを見ながらだとエンジニア同士では案外やり取りできる

拠点

  • Fukuoka
    • 元々3つに分かれていたのを1つにした
    • 昇降式デスク、スタンディング可能
    • いすを選べる
  • SHinjuku
    • 南口のビルに引っ越し
  • エンジニアのためにより良い環境を提供し、存分にパフォーマンスを発揮してもらう

LINE ENGINEERING CULTURE

Take Ownership

  • チームとしての成果を重視しつつ、チーム内でのフィードバックを得ながら各自のオーナーシップを発揮する
  • 冬に雪が降る仕様は、iOSエンジニアの提案から始まった

Take Risk

  • いつも計画通り行くとは限らない
  • 新しい技術は新しい価値を生み出すもの
  • 5年前までPC向けだった開発チームがスマホ向けに大きく方向転換したのはかなりリスクを取った判断だった

Be Open

  1. 担当外のソースコード、KPIの数値などが閲覧可能
  2. オープンな気持ちで
    • 各フェーズでのレビュー、フィードバックを前向きに捉えていく

サイクル

  • 1〜3が回る
  • Trust & Respect
  • Self-directed Work
  • Positive Peer Pressure
  • 仲がいいだけでは駄目
  • チーム・同僚同士で前向きなプレッシャーを掛け合うことが理想

OPEN TO PUBLIC

  • lineは知ってるけど誰がどう作ってるのか見えない、というのが世間の反応であるという自覚がある
    • そんなんじゃいかん
  • より開かれた組織になりたい
    • オープンソース
    • カンファレンス

Comments