Spark、Mesos、Zeppelin、HDFSを活用した大容量セキュリティデータの解析

LINE Plusでゲームセキュリティ開発を担当しているWJ、KHです。

莫大なユーザーがモバイルからアクセスするLINEゲームにおいて、データの迅速な解析と対応はそう容易なものではありません。LINEゲームへのアクセスと海外ユーザーの大幅な増加に伴い、様々なアビューズ(不正とされる操作を通じて不当な利益を得る行為)行為が次々と観察されています。アビューズ行為は、正常にゲームを利用する善意のユーザーに迷惑を掛けることはもとより、ゲームサービスそのものにも直接的な影響を及ぼします。ゲームの安定性を守り善意のユーザーを保護するためには、アビューズ行為に迅速に対処することがとても大事です。

アビューズ行為が探知されたら、異なった形式のログを関連付けて解析しその問題の原因を洗い出して修正する必要がありますが、このとき一番の障壁は、大容量のログデータの速やかな処理でした。LINEで扱う各種データ量の増加により、従来の伝統的なビッグデータ処理方式では現象が発生してから事象を確認するまで数十分、数時間が掛かってしまいます。また、データ形式(RDB、NoSQL、File、API)や大容量サービスのためのData Shardingのような技術導入などの理由から、すべてのデータを連携することも容易ではありませんでした。何よりも、人気ゲームの場合は流入されるデータ自体が非常に多いのです。いろんな観点から迅速なデータの処理を可能にする多彩なオープンソースを組合せ、その可能性をチェックしてみました。結果として、作業の分配とリソースの活用にはApache MesosとApache Sparkを活用し、データのビジュアライズ(可視化)にはApache Zeppelinを採用することが希望のデータ処理要件に最も近いことが分かり、適切な構成を試みることになりました。

LINE DEVELOPER DAY 2015 Tokyo 動画と資料を公開

こんにちは、カンファレンス担当の櫛井です。

LINE DEVELOPER DAY_2015 Tokyo 開催のお知らせ « LINE Engineers’ Blogにてお知らせしておりました、LINE DEVELOPER DAY_2015 を開催いたしました。

イベント当日は応募者多数のため抽選となりましたが、沢山のエンジニアの皆さまにご来場いただき盛況となりました。ありがとうございました!

細かな部分を含めイベント全体の企画や運営を担当しました。「社外のエンジニアの皆さんにLINEを深く知っていただきたい」という主旨で企画をおこない、イベント準備等なかなか苦労した点もありましたが、ご参加いただいた皆さんに大変好評だったり、当日はTwitterのトレンド入りをしたりと評判が大変よかったので次回も是非開催できればと考えています。

イベントレポート等、また別の機会に行いたいと思いますが、まずは動画と資料を公開いたしますので是非ご覧いただければと思います。

B612における動画コーデックの採用と最適化オプション

こんにちは。LINE+でB612 Android開発を担当しているHTです。今回のブログでご紹介するB612は、小説『星の王子さま』に登場する王子さまが住んでいた星の名前にちなんで名付けられた自撮り専用アプリです。セルフィーアプリでは初めて撮影前フィルターと3~6秒の分割動画撮影に対応しています。今回のブログでは、B612アプリ開発においてMediaCodecを活用してコラージュ形式のビデオを作成し、最終的にMP4ファイルに仕上げるまでの過程についてお話したいと思います。

Apple Watch、新たな地平を拓く。

こんにちは。LINE iOS開発を担当しているRoyです。Apple Watchの公開に足並みを揃え、Apple Watchの機能についての簡単なレビューとApple Watch向けのアプリ開発、そしてLINEでのApple Watch対応について紹介したいと思います。

(注:現在はLINEのApple Watch向けアプリは非公開です)

Apple Watch

Apple Watchは、2014年9月9日の発表会ではじめて公開されました。この日、iPhone6、iPhone6+、Apple Payが次々と紹介され、終盤のOne More Thingで38mm42mmサイズのWatch、Watch Sport、Watch Editionの3種が発表されました。 Apple Watchではユーザーの動きの測定はもちろん、iPhoneで受信した通知も確認できます。また、Apple以外の3rd party企業のためのSDKも公開されました。1

Apple Watchには、タッチスクリーンとデジタルクラウン、サイドボタンがあります。右サイドのデジタルクラウンでは画面をスクロールしたり、ズームイン/ズームアウトでき、そのすぐ下のサイドボタンでは、よく連絡を取る友達を表示することができます。時計の下部にはユーザーがApple Watchを着けているかどうかをチェックしたり、ユーザーのバイオ情報を確認できるセンサーが付着されています。スピーカーと振動センサーが内臓されていて、通知が届くとアラーム音が聞こえたり、振動で感じ取ることができます。 2Apple-Watch-Heart-Rate-Sensor-337x400

LINE DEVELOPER DAY_2015 Tokyo 開催のお知らせ

こんにちは、今回のカンファレンスを担当している櫛井です。

LINE DEVELOPER DAY_2015 Tokyo では、弊社エンジニアチームの様々な経験を未解決の課題も含めて共有させていただきますので、ご来場のエンジニアの皆さまと共に知見を深めることができれ ば幸いです。皆さまのご来場を心からお待ちしております。
LINE DEVELOPER DAY_2015 公式サイト

LINE DEVELOPER DAY 2015

文字数をカウントする7つの方法

こんにちは、LINE+開発室のパク・サンジン(SJ)です。

今回は、文字数をカウントする方法についてお話したいと思います。LINEサービスではプロフィール名やグループ名、ひとことなど様々なところで文字数をカウントしていますが、画面で文字が短すぎたり長すぎないようにし、ストレージ容量を正しく割り当てるためには、文字数を正確にカウントすることがとても重要です。特に、LINEは全世界で使っているサービスなだけに他言語の文字数も正確にカウントできなければなりません。 ある日、BTS(Bug Track System)のプロフィール名にemojiを入力すると1字が2字で表示されるといった、文字数が正確にカウントされないという課題が登録されました。emojiとは、日本で使い始めたもので、今ではUnicode標準に含まれ世界的に広く使われるようになった絵文字セットのことです。最初は、単純にSurrogateカウントエラーの問題だと思い分析し始めました。Surrogateとは、UTF-16エンコードを16ビット以上に拡張させる文字セットのことですが、emojiにはSurrogateで表現する文字があるからです。しかしよく見ると、実際にはSurrogateとは関係のない2文字が入力されていることが確認できました。ということは、「emojiの後ろに共通的に追加されるcharacterがあるのでは」と思い、そのルールを探し出して例外処理をしようと考えていました。が、さらに他の課題が登録されてきました。

LINE Developer Workshop & Hackathon 2015

こんにちは、新米ソフトウェア開発者のJamesです。

今回は今年1月に開催された開発者向けワークショップ「2015 LINE Developer Workshop」についてレポートしたいと思います。

JavaScriptのクロージャ入門とECMAScript 6のletキーワードによる変数宣言

こんにちはUITチームの手島です。

先日社内のセミナー(勉強会のようなもの)でJavaScriptのクロージャについてお話しさせていただいたので、その内容をblogでご紹介させていただきます。

クロージャ自体はJavaScriptだけが持つ機構ではなく、現在様々なプログラミング言語でサポートされています。最近ではSwiftやJava 8など、クロージャを使える言語が増えてきています。

本記事ではクロージャとは一体なんなのかをJavaScriptの具体的な例を交えて初心者向けに解説します。また、ECMAScript 6のドラフトにあるletキーワードによる変数宣言についても少しご紹介します。

LINEのマイクロサービス環境における分散トレーシング

LINEとマイクロサービス

LINEのアプリは、トークをはじめとして、電話、ショップ、公式アカウントなど、多数のサービスで構成されていますが、これらのサービスはモノリシックな単一のシステムとして開発されているわけではありません。それぞれ独立したシステムとして開発・運用され、お互いにAPIを介してコミュニケーションする、いわゆるSOAやマイクロサービスと呼ばれるアーキテクチャになっています。

本エントリでは、大規模なマイクロサービス環境において、システムのトレーサビリティを向上させるためのLINEバックエンドの取り組みを紹介します。

FluentdとNorikraを使ったLINE BusinessConnectエラー検知&通知の仕組み

LINE技術戦略室のYoichiroです。今回は、徐々に数が増えてきたLINE BusinessConnectのエラー検知とその通知の仕組みについて紹介してみたいと思います。

LINE BusinessConnectって何ですか?

まず「LINE BusinessConnectの技術話」をご覧ください。

「メッセージが届かない」原因は?

LINE BusinessConnectは、今年の2月26日に行った「LINE Showcase 2014 Feb.」イベントで発表されました。既に半年近く経っていますが、いくつかの事例も登場していますので、LINEをお使いの方々に「企業サービスの新しい使い方」を体験していただくことができつつあるのかな、と嬉しく思っています。単なるメッセージングサービスの域を超えて、僕らも「え、そんな使い方がっ!?」と思う機会も多いです。今後もLINE BusinessConnectの事例を楽しみにしていて欲しいと思っています。

さて、LINE BusinessConnectの大きな特徴は、「LINE株式会社だけで開発が完結しない」ということです。LINE BusinessConnectにおけるLINE Platformの役割は「土管」です。その土管から流れてくるLINEユーザからのメッセージを処理するのは、LINE BusinessConnectを使って具体的なサービスを提供する各企業のサーバになります。ユーザが投稿したメッセージやスタンプなどは、文字通りLINE Platformを「右から左に」受け流され、対象の企業のサーバに届けられます。そして、メッセージの内容やスタンプの種類などが解析され、それに応じた返信がその企業のサーバから送られます。

LINE BusinessConnectに対応するための第一歩は、LINE Platformに登録を行い、LINE Platformから企業のサーバに情報を流すための技術的な設定を行うことです。つまり、LINE Platformに企業のサーバのEndpoint URLを登録します。その後、LINE PLatformから各種メッセージや友だち追加されたことなどの通知が送られてくるわけです。順調にいけば、登録したEndpoint URLに対してLINE Platformから接続が行われ、JSON文字列があっさりと流れてきます。