メインコンテンツへスキップ

LINE Developer Day 2019 参加レポ

·4384 文字·9 分
Taiyo Minagawa (sun-yryr)
著者
Taiyo Minagawa (sun-yryr)

一昨年,昨年に引き続き参加させていただきました!忘れないようにまとめておきます(間違ってるの見つけたらよければ教えてください)

まぁ,学生向け支援制度の申し込みは忘れたんですけどね…w

すっかり忘れてた https://t.co/yJdJLJ3qwm— ゆるゆる🎋 (@taittide) November 6, 2019

目次
#


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

時系列データベースは初耳でしたが,面白そうだったので参加しました。

LINEのObservability team(直訳すると可観測性チーム)はLINEの各サービスのMetricsを観測し,Analysisに活用するためにFlashを開発した。

OSSやVenderのものではダメだった理由は「要求スペックに合わない,コストが大きいから」

1分間に到着するMetricsの数は2016年には10Mだったのが2019年には200Mになり,2020年には1Bまで到達すると予測しているため,高速でread,writeをこなすデータベースが必要だった。

ここから感覚でしか理解できてないですが,簡単にまとめると

  • Label (stringのみのデータ)とDatapoint (数字のみのデータ)に分解し (idで紐づける) それぞれ別のストレージに保存する
  • 入ってるデータ形式が一つなので最適化が凄い(?)
  • さらに早くするためにDRAMに直近28時間のデータを入れる
    • Delta-Delta XORを使う(?)
  • Goで書いた

shardは本当にわからなかったです。精進が足りない……

最適化等のチューニングは別として,データベースの構築方法を多少知ることができたので良かったです。

LINT (LINE Improvement for Next Ten years)
#

後半少ししか聞けなかったです。

LINEに溜まっている技術的負債の解決について話されてました。SPDY初知り

[Hands-on] 仕事をよりクリエイティブにするための「Learning Session」の実践
#

つよつよプログラマーばっかを想像して怖がってましたw

モブプログラミングも知らなかったのが大きい。

興味がある内容で4~8人のグループを作り実践しました。僕はCircleCIのグループでした。

やり方はとても簡単で,40分~1時間ほどで達成したいものを話し合う(10min)。手を動かす人を定期的に変えながら,決めたものを達成するよう話し合って進める(40min)。今回はこれを2セットやりました。

LeaningSessionに大事なことは

  • 毎日やる
  • 業務時間内に業務に関係する(将来的にする)ことを題材にしてやる
  • 批判しない
  • パソコンを1台のみ使う。パソコン担当を交代しながら実施する

パソコンを回すと聞き専の人がいなくなるので,LeaningSessionじゃないものでもやるのもいいなと思いました。

NAVER ClovaのOCR (光学的文字認識) #

ClovaのOCRの紹介。従来手法(これはtesseract.js)と比べて「縦書き」「歪んだ文字」「小さい文字」の認識ができている。凄い

OCRの説明。OCRとは「テキスト検出」「テキスト認識」をまとめたもの。DeepLearningを使った手法は多くの論文で取り上げられているが,大体が英語を対象としている。

日本語のOCRには以下のような課題がある。

  • 単語間のスペースが存在しない
  • 縦書きがある
  • 3000を超える文字種がある

テキスト検出
#

文で検出する場合,極端なアスペクト比や歪み,各文字サイズが違う等の要因で難しくなってしまう。文字ごとに検出することで問題を解決する。(Character-level detection)

Region score(指定されたピクセルが文字の中心である確率)とAffinity score(指定されたピクセルが空白の中心)を使ってテキスト領域の認識をする。

テキスト認識
#

英語などに比べて多くの文字が存在していることが問題。

モデルの組み合わせ24通りを全部試した。

うーん機械学習とかDeepLearningは未勉強なので触りのかんたんな部分しかわからんかった……凄いなぁ(小並感)

Brain OCRのAPIが来たので早急に何か作らないと

Opening DAY2
#

2日目です。ネカフェ泊をしたので寄り道しながら行ったんですが,晴海埠頭も潮風公園も工事中で無を感じた。

LINE MINI APPとかLIFFとか紹介。オフィスとか企業文化的なことも

つながろういつでも,何とでも。LINE Thingsからはじまるモノと人との新しいコミュニケーション
#

今年春に実装されたAutomated BLE communicaition(自動通信)の話など。

IoTを LINEでやれるようにしたプロダクトで,以下のような特徴があるから開発者にはメリットが多いよ!

  • LINEのMAUをそのまま使える
  • アプリのダウンロード,登録,ログインがいらない
  • 課金時にクレカ情報の管理などがいらない
  • 自動でマルチプラットフォームに対応している
  • メッセージを届けられないことがない

BLEの実装とかめんどくさい面をLINEで全部やってくれるのは本当に凄い楽になった。

自動通信はLINE Thingsのシナリオ登録APIから登録することで使えるようになる。デバイスがスマホと繋がったときや,繋がってる上でNOTIFYが走ったときにGATTの読み書きなどが可能。自動通信をするときの注意点として「100%ではないよ」ということが強調されていた。

注意点

  • autoClose = trueの時はBLE_NOTIFICATIONのみのトリガーを設定できない
  • バックグラウンドで動いているのでイベントを取り逃がすことがある
  • 接続が切れてしまうので,Sleepは5秒以内にする
  • 動作はOSに依存するのでデバックをしっかりする

他にもThingsのproduct版の利用料が説明されていました。登録から1年は無料,2年目からは従量制になるとのこと(トライアル版は例外)

小さな規模にとても優しくて助かる……

What's New in LINE Front-end Framework
#

LINE Front-end Frameworkがバージョンアップしてv2になった。LIFFは

新機能

  • モダンブラウザ(Chromeなど)でもLIFFを開けるようになった
  • Deeplink(line://から始まるカスタムスキーマがhttps://から始まるスキーマになった)
  • LINE Loginっぽさが強くなり,接続チャネルがLogin側になった(OpenID Connect)
  • ログイン状態などを取得したり,QRコード読み取りをするAPIが追加された
  • SDKがTypeScriptで書かれている(!)今後npmモジュールも配布を検討している

個人的にTSのモジュールは嬉しいかも。React-LIFFとかやってみたい。

LINE Loginとの違い
#

initで自動的にログイン,メールアドレスやプロフィールを取得できることがわかりましたが,同じ機能はLINE Loginに搭載されています。しかしLoginの方はセッションの検証や再発行など,トークンの管理も自前で組まないといけません。

簡単なサービスならLIFFで組んでしまうのが楽になった気がする(要検証)

LINE Loginで始めるAuth0の使い方 - 認証基盤をかんたんに構築する方法
#

上で書いたLINE Loginの大変さをAuth0で解決しちゃおう!ってセッション。

Auth0って…?

Never Compromise on Identity. - Auth0

Webサービスを提供する際に認証・認可はほぼ必須と言っていいくらいになったけど,複数のログイン基盤を実装するのはとても大変。それぞれトークンだったり更新時間だったりがあるので複雑になりがちだけど,Auth0を使うと解決できる。

開発者はAuth0用のコードを書くだけでLINEだったりGoogleだったりTwitterだったりのログイン処理をまとめてくれる。凄い。

実装も簡単そうで自分のサービスに組み込んでみたくなった。iOSの場合Webアクセス許可のダイアログが出るけど,Auth0.comになってしまうのはちょっと気になる。(そこ気にするなら自前で書けよって話ですね)

LINEを支える社内システム
#

LINEでは社内システムは社内"サービス"として考えられている。これはユーザーの要望を取り入れて届ける・継続して改善していく必要があるよということを表している。

LINEで行なっている(た)社内システムの改善
#

  • データが複数に散らばっている問題
    • システムごとにID,Passが存在していた
    • ユーザー情報が各社内サービスごとに管理されているので統一性がなくなっしまう
    • DisplayName(表示名)があだ名や名前だったり,ニックネームだったりしたため検索性が低くなっていた

    → 各クラウドのID, Passも含めて全て1つでログインできるように整備した

    → ユーザー情報は人事が持っているので,マスターを決めた

    → 先頭に必ずアルファベットが来るように表示名を設定

  • Onbording
    • 情報を探しづらい
    • 人を探しづらい

    → サポートカウンターやBotを多言語で設置することで質問のハードルを下げた

    → オペラという管理サービスを使うことにした。(人版Wikiのようなもの?)ここの情報を使ってつながりを可視化するテストを行なっているらしい

  • WOWなサービス
    • Time Attendance(勤怠管理)

      → LINE Beaconを使って自動でタイムカードを押せるようにした。「やめられない」

    • Floor map

      → 聞き逃してしまったのですが,何かのサービスを使って情報がシームレスに繋がる(wikiと)ようにした?

    • Enviromental Sensor

      → 環境センサを使って記録をとっている。現時点では何に使うなどはないけど,会議室の利用状況などがすぐわかるのでいいなぁ。

      → LINE Styleの話にもあった「ワクワクしなければ仕事じゃない」を地で行なっている

感想
#

年々豪華な会場になってて,お弁当美味しくて,成長度合いが目に見えてわかるようだ……

DeepなLeaningや機械学習のセッションが多くあったけど,勉強不足で理解できないことの方が多かったので悔しかった。ただ,聞いたセッションはなるほどなことが多かったので高専卒業までにもっと精進したい。

(最後のセッション,ちょうどタイムキーパー見えちゃったんだけど残り8秒だったの凄い。卒論発表しっかりできるよう頑張ろう……)