Tag Archives: AdventCalendar

Qiitaで人気のLINE関連投稿紹介(保存版)

Developer Relations Teamマネージャーの砂金(いさご) @shin135 です。この記事はLINE Advent Calendar 2017の21日目の記事です。

LINEでは12月よりDeveloper Relation Teamを新設し、より一層エンジニアのみなさまとの関係構築に注力して参ります。

LINEとしてエンジニアが積極的に情報発信してゆく雰囲気を応援しようという意図で、Qiitaのアドベントカレンダーに協賛させていただいている流れもあり、今回はQiita上でLINE、特にチャットボット開発に関連した記事をピックアップして、みなさまが後に参照するときに困らないためのまとめ記事として紹介してゆきます。LINE Bot関連情報はWeb上に多くあるものの、まとまった記事を見つけにくいというご意見もいただいており、こちらの投稿を「はてぶ」などで保存版としてご活用いただけると幸いです。ここに掲載させていただいた方々のみならず、LINEが公開しているMessaging APIやLINE Loginを実際に試していただいたすべてのエンジニアのみなさまに、改めて御礼申し上げます。

Qiita上の投稿は1.事例系、2.作り方解説系、3.Tipsの3つに分類することができそうなので、順にご説明してゆきます。

レイテンシーを計算する技術の話

こんにちは、LINEメッセンジャーのサーバーサイドとモニタリングプラットフォームの開発を担当しているフィ(@dxhuy)です。この記事はLINE Advent Calendar 2017の20日目の記事です。

今日は、モニタリングシステムでよく使うレイテンシーやその計算方法などについて紹介したいと思います。LINEでは、日々ユーザが楽しくメッセージを送れるように、システムの安定性を第一に考えています。安定したシステムを保つためにたくさんの指標を見守る必要がありますが、その指標の1つが「レイテンシー」です。

ウィキペディアでは、レイテンシーは以下のように定義されています。

デバイスに対してデータ転送などを要求してから、その結果が返送されるまでの不顕性の高い遅延時間のこと

インターネットサービスにおいては、レイテンシーは基本的に「レスポンスタイム」のことです。つまり、リクエストを受けてからレスポンスを返すまでにかかる時間がレイテンシーです。

V8のHidden Classの話

この記事はLINE Advent Calendar 2017の19日目の記事です。

JavaScriptの気持ちを知りたい

こんにちは、LINE FukuokaのフロントエンドエンジニアのYoneharaです。

そろそろクリスマスですね。フロントエンドエンジニアのみなさん、苦しんでいますか?私は苦しんでいます。2017年も暮れようというのに、いまだにブラウザやJavaScriptの気持ちが分からず、ユーザーに思うような快適なUXが提供できないことがあるからです。

JavaScriptの気持ち。ただ幸いなことに、我々はかなりの程度、それを分析的に知ることができます。GoogleやMozillaが自身のJavaScriptエンジンのコードを公開し、随所でそのアーキテクチャを解説してくれており、また豊富なトレーシング・プロファイリングの手段が用意されているからです。

今回の記事では、みなさんおなじみのChromeに採用されているV8というJavaScriptエンジンの、Hidden Classという最適化のための1つの仕組みをのぞいてみたいと思います。

Redis Lua scriptingをatomicな処理とcache stampede対策に使った話

こんにちは。LINEでゲームプラットフォーム開発をしているKagayaです。この記事はLINE Advent Calendar 2017の18日目の記事になります。昨年新卒入社1年目で執筆した「マイクロサービスのためのプロジェクト生成ツールLazybonesを使ってみた」に引き続き、今年もAdvent Calendarの記事を書くことになりました。よろしくお願いします。

はじめに—RedisとLINE GAMEプラットフォーム

LINE GAMEプラットフォームでは、インメモリNoSQLデータベースであるRedisをメインデータベースの1つとして利用しています。キャッシュとしての利用が多く、例えば、LINEやFacebookなどのアカウントで認証を行っているユーザのソーシャルデータ(プロフィールや友だちリストなど)のキャッシュに利用しています。基本的にはRedis Clusterとして利用しており、開発環境では共通のクラスタを、本番環境ではゲームごとに独立のクラスタを組んで運用しています。

Akka HTTPの仕組みを理解する

初めまして、Ads Platform開発チームの岡田(@ocadaruma)です。

この記事はLINE Advent Calendar 2017の17日目の記事です。

今回、個人的に以前から気になっていたAkka HTTPの内部構造について、この機会に調べましたので紹介いたします。

Akka HTTPとは

Akka HTTPは、Lightbend社によって開発されている、Scala/Java用のHTTP toolkitです。

現在はメンテナンスが終了したsprayの後継と位置付けられており、特徴的なRouting DSLをsprayから受け継いでいます。

また、Play Frameworkは2.6系より、Akka HTTPをデフォルトのバックエンドとして採用しています。

大規模サービスLINE LIVEのためのエンコーダレイヤ構造と悩んだこと

はじめに

こんにちは。LINE ITSC所属のエンジニア、Kim Suhyukです。これはLINE Advent Calendar 2017の16日目の記事です。

先日12月10日に、LINE LIVEサービスがリリースされてからちょうど2年が経ちました。リリース以来障害なく運営できて、とてもよかったと思っています。私はライブメディアサービスの構築や運営の経験がなかったため、今回の記事では、設計や構築を始めるときに悩んだ点についてまとめてみました。

背景および課題

LINE LIVEは、いつでも誰でもライブ配信できるサービスとして、予測を超える数のユーザーが利用したとしても円滑にライブを配信・視聴できる必要があります。そのため、以下の条件を満たす構造が必要と考えました。

Japan.R 2017開催レポート

この記事はLINE Advent Calendar 2017の15日目の記事です。

こんにちは、LINEとLINE Fukuokaでデータサイエンティストをしております、stakaya、horikawa、oshiroです。

12月2日(土)に、Japan.R 2017というイベントが開催されました。弊社はJR新宿ミライナタワーの本社を会場として提供する形で協賛しましたので、当イベントについてご報告します。

Japan.Rとは

Japan.Rは、統計解析言語Rのコミュニティ関係者が集まる国内最大のカンファレンスで、日本各地で年に1度開催されます。

当日の様子

今年の参加者は、募集サイト上では162名にのぼりました。開場早々に机席はほぼ全て埋まってしまい、急きょ椅子席を追加しました。

01.04.opening

Swift 4.1+

こんにちは、AIプラットフォームClova開発チームのezuraです。この記事はLINE Advent Calendar 2017の14日目の記事です。

みなさん、今年のSwiftマイグレーション祭りは無事に終わりましたか。例年よりも穏やかなエラーを味わえたのではないでしょうか。

さて、マイグレーションといえば、みなさんの行ったマイグレーションは「普通の」マイグレーションですか?それとも「スーパー」マイグレーションですか?

ここでいう「スーパーマイグレーション」とは、エラー・警告部分を修正するだけでなく、Swiftの改善によって効率的に書けるようになった部分の変更を含めたマイグレーションです。

スーパーマイグレーションの対象箇所はエラー等が出ない部分も含むため、いざマイグレーションを始めると見つけにくいですよね。効率良く移行するには、今のうちから、新しいバージョンに移行しやすいような設計や記述にしておくことや、新規または既存のコードに今後実装される機能によって改善できる部分を見つけたらマークをつけておくなど、下準備が重要です。これはSwift Projectでもよく見られる光景です。

しかし、そのためにはこの先に何が変わるのかを早めに知っておく必要があります。

類似文字列検索ライブラリResemblaを公開しました

LINEでClovaの開発をしている上村です。これはLINE Advent Calendar 2017の13日目の記事です。今日は文字列の話をします。

はじめに

与えられた文字列によく似たものを大きな文字列集合から探すということは、古典的でありふれていながら奥が深く難しい問題です。文字列の類似度を正確に見積もるには複雑な計算が必要ですが、膨大な量のコーパスが与えられたときも可能な限り高速に応答を返す必要があります。

検索する文字列の性質をよく把握することも、品質のよい類似文字列検索を行うためには極めて大切です。ここで、今回考える問題の例を見てみます。

問題

イメージマップメッセージを使って終電に乗り遅れないボットを作りました

こんにちは。LINEでLINE Messaging APIやLINEログイン等のプラットフォームの啓蒙活動を担当している立花です。この記事はLINE Advent Calendar 2017の12日目の記事です。

本記事では、LINE Messaging APIに実装されているイメージマップメッセージ(Imagemap message)の概要と、日頃ハッカソンで最も多くご要望をいただく、タップして詳細を表示できる、ピンがたくさん刺さったマップの表示方法について解説します。

LINE Messaging APIとは

Messaging APIは、ボットを作るためのAPIです。ボットというと、テキストでしかやり取りしかできず不便という印象をお持ちの方もいらっしゃるかもしれません。しかし、Messaging APIを使うと、画像やファイル、さらにはHTMLアプリやネイティブアプリでいうところのAlertViewのようなものも手軽に実装でき、ユーザーにストレスなく使ってもらえるボットを簡単に作ることができます。

画像、動画、ファイル