LINE Dev Day参加レポート

はじめに

LINE 株式会社様より学生への交通費支援を利用させて頂き LINE DEVELOPER DAY に初めて参加してきました.楽しくてとても勉強になるイベントに招待頂きありがとうございました.自分が聞いたセッションや参加したハンズオンについてのまとめと感想を紹介できたらと思います.間違えている部分などがあれば優しく指摘していただけると嬉しいです.

入り口からスマホを何台も使ったロゴがあってびっくりしました.私は事前に顔認証での登録をしておいたのでスムーズに入場できました.受付も顔認証が認証端末に近づいたときには既に認証されているという速さでびっくりしっぱなしでした.

f:id:ocucraqp:20191125150015j:plain
豪華な入り口

keynote

speakerdeck.com

これまでの Dev Day や今年の事業の話と力を入れている 3 つの分野についての話です.最初の Keynote については Developer アカウントが詳しくツイートされていますので是非御覧ください.

twitter.com

3 つの分野は下の 3 つです.

  • AI
  • Data Platform & Infrastructure
  • Security & Privacy

AI

Smart Channel や LINE BRAIN の話がありました.Smart Channel とは,最近よくトーク一覧の上に表示されているあれです.なんとユーザの行動を基にした 2000 万次元もある特徴量を分析して,表示するコンテンツを決めているそうです.LINE BRAIN は,LINE で培われた AI を技術を外販するサービスです.受付でも使われていた顔認証システムや OCR 技術,自然言語処理,STT/TTS,動画解析など多くの技術が開発されています.自分は LINE の AI 関連技術は主に LINE Clova しか知らなかったので想像以上に力を入れているのが分かりました.会場で OCRAPI を無料体験できるコードを頂いたので時間があれば使ってみたいと思います.

Data Platform & Infrastructure

それぞれの欲しいデータがすぐ手に入る環境(Self-Service Data Platform)を目指しているそうです.LINE では毎日 1 兆件ものレコード(390TB)を処理しており,次の課題の解決が必要でした.

  1. Accessibility
  2. Multi-tenancy
  3. Data Quality

これらに対して,次のような解決策を考案したそうです.

  1. オンラインでのプラットフォームの統合
  2. スケーラブルなオンデマンド分析環境の実装
  3. 自動でデータ分類・メタデータの構築

プラットフォームの統合によってデータガバナンスが向上したそうです.また,プライベートクラウド Verda の紹介がありました.自社でクラウドを運用することで,不具合が発生しても迅速に対応することが可能になっています.ソフトウェアでインフラ機能を実装することでインフラのライフサイクルを開発のライフサイクルに近づけることができたそうです.

Security & Privacy

LINE では法律の専門家を加えたチームがいて,エンジニアと設計段階からセキュリティーとプライバシーについて話あって開発を行っている程プライバシーを大事にしているそうです.私もネット上のデータや OSS を利用したりする際法的に問題ないか心配になるときがあるので,ユーザだけでなくエンジニアも安心できる仕組みだと思います.またアカウント乗っ取りについて,昨年の乗っ取り件数が 0 件だったのは驚きました.乗っ取り対策についても機械学習が使われていて,フィルタリングルールを自動的に更新している手動で更新するコストを削減していました.他にもいち早く FIDO の導入が行われていたり,透明性レポートを発行しているなどの話がありました.

LINE が開発した時系列データベース‘Flash’の紹介

speakerdeck.com

眠いときは DB の話を聞くと元気がでるらしいです.

既存の DB は何かしらの欠点があったため新しい DB を作る必要があったそうです.新しい DB を作るにあたって必要だったものは次の 3 つ.

  • ユーザがどのプロトコルを使ってもサポートしたい
  • 簡単にスケールアウトでき読み込みも書き込みも高速
  • メンテンナンスコストが低い

これらを目標に実際に完成した DB は以下のようなものでした.

  • 秒間 400 万の Datapoints を書き込める
  • 秒間 1000 クエリを処理できる
  • Write P99 < 100ms
  • Read P99 < 100ms

時系列 DB とは,CPU などの情報を Label,時間毎の Label を Datapoint,一連の Datapoint を Serie として定義された DB です.Flash の実現には,基本的に利用することが多い最新の 28 時間分データは DRAM 保存したり,Delta-Delta Xor Algorithm というものを利用したそうです.

プロトタイプとベータ版はたったの 2 ヶ月で完成したが,製品としてリリースするには 1 年かかかったらしいです(通常は 5 年はかかるらしいのでめちゃくちゃ早い).現在のスペックにはまだ満足していなそうで,これから秒間に書き込める Datapoints を 100 倍,クエリの数を 10 倍にすることを目指しているとのことでした.

LINT (LINE Improvement for Next Ten years)

speakerdeck.com

2011 年から溜まっている過去の技術的負債を消すための活動について聞くことができました.LINE は「安定したメッセージングサービスを目指す段階」から,「より信頼でき,より柔軟なプラットフォームを目指す段階」に移行しており,多くの部分で改善が必要になっているそうです.これらの改善のために,様々な分野の専門家が集まった LINT チームが誕生しました.現在主に取り組んでいる課題は以下の 4 つです.

  1. HTTP/2 and Push
  2. Event delivery mechanism
  3. Authentication Token renewal
  4. General setting storage for client/server

セッションでは 1 と 2 について語られていて,1 については,Google がサポートを終了している SPDY をベースにした LEGY という内製プロトコルを使っており,それが無駄なリクエストをしているため,HTTP/2 ベースに変えていきたいという内容でした.2 についてはクライアントとサーバ間でのデータの不整合を分かりやすくしたり,久しぶりに LINE を起動すると使ってなかった期間のデータを一気にフェッチしようとして重くなるのを改善しようという取り組みです.データ整合性に関してはデータのダイジェストをクライアント・サーバ間で交換することで整合性を保つ Auto Repair という仕組みを導入しているそうです.フェッチの部分には,メッセージが 100 件以下程度なら従来どおりフェッチし,それ以上であれば FullSync という API を叩きデータを得る仕組みとなっていました.

他にも自分がずっと改善を望んでいるマルチアカウント機能やマルチデバイス機能も今後の課題として挙げられており改善が楽しみです.

Kubernetes の利用・普及,その先は何か?

このセッションのスライドは見つけられなかったです.最初は Docker や k8s(Kubernetes)などに関して軽い説明がありました.世界ではすでに k8s を使ったプロダクトは当たり前で,日本は出遅れている状態だそうです.また Google はすべての業務がコンテナで実行されているというのはさすが Google という感じでした.

なぜ k8s を選んだかについて

登壇者の河さんが所属するZ Labのミッションは「イケてるモダンなインフラを作る」というもの.Portability & Reproducibility の観点からコンテナ技術に注目したが,当時は k8s の他に docker swarm や mesos もありました.k8s を選んだのはスポンサー企業の数やセキュリティ対応などから将来性が高いと判断したから.とりあえず k8s を構築してみるとすぐに運用がハードであることが分かったそうです.VM と同時に k8s を運用するのは保守コストが非常に高いのでソフトウェアで解決しようということで Caas を立ち上げ.

CaaS (Container as a Service)

CaaS はいろいろ操作が 1 コマンドでできるように作られました.k8s は Declarative object configuration モデルをサポートしており,この設定を読み込み,処理するプログラムを Controller と呼ぶ.理想の状態を定義し,Controller がその状態になるように稼働し,この機構を Reconciliation Loop と呼ぶ.CaaS 自体が SPOF(単一障害点)になることを防ぐために,自身が所属する K8s クラスタも CaaS が生成する.CaaS が壊れても k8s が復旧し,k8sVM に障害が起きても CaaS が復旧する.

CaaS と k8s がそれぞれ補い合っているというシステムが面白いと思いました.このセッションを聞いて国内外の同年代に負けないように自分も頑張って行きたいと気持ちを改めました.

Gatebox の内と外 - AR でも VR でもない新しいデバイスプラットフォーム

www.gatebox.ai developer.gatebox.biz

Gatebox の仕組みをガッツリ紹介していただきました.こちらもスライドは見つけられなかったです.

Gatebox の癒しの花嫁である逢妻ヒカリは人らしい会話や能動的アクション,動きにこだわっているそうです.システムは Unity, STT/TTS, Gatebox SDK, CIC SDK などで構築されており,クライアント側のことを Hikari App,サーバ側のことを Hikari Brain としていました.ユーザの時間分布や特徴的な発話傾向などを分析することでクオリティが対応力が上げています.キャラクターの動きをフレーム単位で制御し,どんなときでも不自然にならないように状態を変更する技術がすごいと思いました.例えば飲み物を飲んでいるときに話すのはおかしいので,そういうことにならないように設定されているのはこだわりを感じました.今後は Gatebox 上で動くアプリ・サービスの開発がオープンでできるようになるというのは夢もあるし,サービスの数が増えるのはユーザにはかなり嬉しいことなんじゃないかと思います.

LINE Pay ハンズオン ~ あなたの Bot に LINE Pay 決済機能を追加してみよう

LINE Pay v3 ハンズオン資料 [Version. 2019.11.22]

最初に LINE Pay について簡単なまとめがありました.個人でも(法人でなくても)個人事業主であれば加盟店になれて,sandbox(開発環境)の利用のみなら加盟店になる必要もないそうです.LINE なのでユーザ行動と連動したサービスを作りやすいのも魅力です.

ハンズオンでは次の流れで行いました.

  1. LINE Pay Sandbox の設定
  2. ngrok の実行
  3. LINE Developers 上でチャネルの作成
  4. チャネルの設定(アクセストークンの発行や Webhook URL の設定など)
  5. サンプルプログラムのダウンロード
  6. リッチメニューの作成
  7. チャネル ID 等を設定して実行
  8. コードの解説

実際に動いた次のように画面が動いて感動しました.想像以上に簡単にできて感動しました(コードは書いてませんが).

f:id:ocucraqp:20191125152801p:plain
LINE Pay 商品画面

f:id:ocucraqp:20191125152828p:plain
LINE Pay カート画面

私は法人でも個人事業主でもないため,実際に活用ができないのが残念ですが,もしナイスなサービスが思いついたらまたチャレンジしたいです.

Journey of Feature Flag development in LINE Android

speakerdeck.com

LINE での Android アプリ開発の中で生まれた Feature Flag についてメリットから課題まで説明していただきました.

まずは Feature Branch についての説明がありましたが,これは Git を使って開発するときに機能ごとに切るブランチのことです.これの問題点ですが,大規模開発においては Feature Branch が多くなり,複雑に絡み合って管理やコンフリクトの修正が大変になるということでした.

Feature Flag は,従来 Feature Branch に対して送っていたプルリクを直接 Main Branch へ送るようにし,開発途中の機能についてはフラグをつけることで,本番環境では実行されないようにするというものです.これにより,コンフリクトサイズの縮小,リリース計画のスムーズ化,機能の有効/無効の切り替えの簡易化,全員が開発中のコードを確認できるなどのメリットがありました.すごくわかりやすいメリットで数人での開発でも開発の内容によっては有効に利用できそうだと思いました.

次に Feature Flag の限界についてです.従来のライブラリのアップデート等に適用するのが難しかったり,プロトタイプなどを作成する際には過剰な管理になってしまったなどです.社内で実際に Feature Flag を使っていた際のトラブルにも触れていて,flag 生成のコードがコピーされ参照関係で問題が起こったことなどが語られていました.

なんとこのセッションのタイミングで LINE のアンドロイド開発用の Feature Flag を用いる開発ツールが公開されました.以下の URL から利用することができます.

github.com

LINE Developer Community の歩み

LINE の開発者のコミュニティだと思ったら社外のコミュニティでした.こういうコミュニティがあったのは知らなかったので知ることができてよかったです.LINEDC から生まれた関連ツールもあり,C# SDK LINE Messaging API や LIFF CLI のサーバ API をいい感じに CLI から実行できるツールなどがそうらしいです.このコミュニティでは Bot を公開できたり,API Expert の方に質問できます.実際に会場でも Q&A が和気あいあいと行われて,コミュニティの熱が伝わってきました.自分も LIFF を使ってアプリ作りたいと思っているので,疑問があれば質問したいなと思いました.

おわりに

多くの新しい知識を得られたとともに同世代の学生にも出会うことができ,非常に刺激的な2日間となりました.ほとんど理解できなかったセッションもあり,もっと勉強しないとと思いました.また,もっと質問したりすればよかったというのが心残りなので,今後もこのようなイベントに参加して見聞を広めればと思います.改めて LINE 株式会社様,ありがとうございました.

f:id:ocucraqp:20191125151105j:plain
1日目の後で大井町で食べた美味しい味噌バターラーメン

f:id:ocucraqp:20191125151209j:plain
会場近くのUCガンダム デストロイモード