セキュリティエンジニアからみたUnityのこと

この記事はLINE Advent Calendar 2016の16記事目です。

こんにちは、LINEエンジニアの愛甲健二です。所属は「セキュリティ室」の「Application Security Team」というところで、主にリリース前のGames/Appsの診断を行っている、いわゆる一般的なセキュリティエンジニアです。今日はUnityに関するセキュリティ視点の入門記事を書きたいと思います。

20161222_1

新語・固有表現に強い「mecab-ipadic-NEologd」の効果を調べてみた

LINE の Data Labs(データラボ)で自然言語処理に関連する技術に関わっている @overlast (佐藤 敏紀) です。この記事は、LINE Advent Calendar 2016 の 15 記事目です。

この記事をお読みの方には「LINE と自然言語処理って関係あるの?」と思われる方もいらっしゃる思います。

Data Labs ではデータ収集・解析基盤の開発や機械学習技術の適用だけでなく、自然言語処理に関する実用的な技術の開発・研究を、かなり真面目におこなっており、その成果によって弊社のお客様のお役に立つことは当然として、他社さまや研究者、学生さんにも広く貢献したいと考えております。

20161221_overlast_mecab_ipadic

Sparkと機械学習と時々MPI

はじめに

こんにちは、LINEで機械学習エンジニアを担当している久保です。この記事はLINE Advent Calendar2016の14記事目です。 今回の記事は、機械学習の(勾配などの)基本的な知識を持ち、Sparkにおける機械学習に興味がある人向けの内容となっています。

Sparkは大規模なデータのための分散処理フレームワークとして人気があり、弊社でも機械学習関連の開発において利用しています。 弊社では機械学習の特徴量の元となるデータがHDFSに格納されているため、それらを容易に読み込むことができる親和性の高さと、分散処理のコードが容易に実装できる所がSparkを利用する上での大きな魅力となっています。

具体的な利用方法として、例えば機械学習エンジンに入力する特徴量を作成するためのETL(抽出、変換、ロード)処理に利用しています。 また、LINE STOREにおける着せ替えの商品ページの右枠にあるアイテムベースのレコメンドやLINEアプリ内でLINE NEWSを立ち上げた際にトップ画面に出てくる「FOR YOU」枠のためのユーザベースのレコメンドなどにおいて、Sparkの機械学習ライブラリであるMLlibを用いてモデルの学習を行っています。

YAPC::Hokkaido 2016 SAPPORO と Fukuoka Perl Workshop #27 の登壇報告

どうもこんにちわ! LINE LIVEを開発している@Yappoです。この記事はLINE Advent Calendar2016の13記事目です。

はじめに

今回は他の記事とは毛色を変えて Perl 成分濃いめでお届けします。 今更 Perl かと思われるかと思いますが、弊社でも幾つかのサービスを Perl で構築しており現在もサービス提供を行っています。

また、ご存知の方は少ないかと思いますが、日本のエンジニア界隈で一大ブーム巻き起こしている Engineer’s Advent Calendar ですが、もともとは2008年に日本の Perl コミュニティで開催された事が発端なんですよね。 今回の記事を読む事で、この Engineer’s Advent Calendar が Perl コミュニティから産まれた理由、そのエンジニア文化の背景などの一端に触れて頂けたら幸いです。

Fukuoka Perl Workshop #27

リアルタイム画風変換とその未来

こんにちは。LINE Fukuoka でデータ分析やその基盤作りをしている tkengo です。この記事は LINE Advent Calendar 2016 の 12 日目の記事です。

2016 年の 11 月下旬、LINE Fukuoka で 2 日間の社内ハッカソンが開催されました。その時にいくつかのチームが結成され、IoT や VR、機械学習など、それぞれのチームで挑戦的なプロダクトが作られ、大いに盛り上がりました。今日は、その時に私たちのチームが作ったディープニューラルネットワークを使った以下のようなリアルタイム画風変換アプリケーションのお話をしたいと思います。

※ちょっとわかりにくいですが、下側のスマホのカメラに映っている映像に対してリアルタイムに画風変換処理を施し、それを上側のスマホで表示しています。

マイクロサービスのためのプロジェクト生成ツール Lazybones を使ってみた

こんにちは。LINE ゲームのプラットフォーム開発を担当している Kagaya です。6 日目の記事を担当した 川田さんと同様、今年の 4 月から新卒で入社して主に Java を使ったサーバサイド開発を担当しています。

こちらの記事は LINE Advent Calender 2016 の 11 日目の記事になります。

はじめに

LINE のサービスの多くは Microservices Architecture と呼ばれるような構成になっています。このアーキテクチャそのものについては、過去の LINE Developers Blog でも こちらの記事 で扱ったり、Developer Day にて こちらの講演 を行ったりしています。様々なメリットが提唱されていますが、チーム開発の機能的な側面から言えば、巨大なシステムの各機能を疎結合にすることで、新しくチームにジョインしたメンバーでも開発をスピーディに行う事ができるのがメリットといえるでしょう。

CMake を使ったクロスプラットフォーム開発環境

こんにちは、LINE で LINE GAME Clinet SDK の開発をしている やまぐち です。 この記事は LINE Advent Calendar2016 の 10 日目の記事です。

cmake_logo

弊社でも iOS / Android / Unity 向けに LINE GAME Clinet SDK を提供しています。コードは共通の C++ を使っているのですが、複数のプラットフォーム向けにビルドを行う必要があってソースファイルの管理やビルド方法がバラバラで大変ですよね。そこでクロスプラットフォーム向けのビルドシステムなどを調査してCMake を使ってクロスプラットフォームビルド環境を作ることにしました。

HBase Cross Row、Cross Tableトランザクション処理機能を実装してみました

こんにちは、LINEでGame Platformを開発している 趙 です。

この記事はLINE Advent Calendar 2016の9日目の記事です。

LINE Game Platformでは分散型でスケーラブルな高速データベースであるHBaseをメインストレージの一つとして使っています。HBase運用における問題のひとつは、cross row, cross tableトランザクション処理機能がない事です。Client Faultなどが起こった時の対応が難しいです。(例えば、HBaseにテーブルAとBがあり、ABの順番にデータを処理する場合、もしAの挿入の後にBの挿入に失敗した場合、データ不整合が起きます)

HBaseは幾つかの単行atomic apiを提供します。(HBase versionによって違うところがあります)

Comprehensive Security for Hadoop

(This is the 8th article of LINE Advent Calendar 2016)

Hello everyone, this is Neil Tu from Data Labs. I am in charge of Hadoop architecture at Line Corp. I construct and manage Hadoop clusters and their ecosystems, and supply a high availability, and high performance platform for the engineers and data analysts in our group.

Today, the topic we are going to talk about is “Comprehensive Security for Hadoop”.

Abstract

Nowadays, Hadoop has become a popular platform for data storage, data analysis, reporting, and distributed calculations. Basically, Hadoop cluster is an open platform that supplies users with the required resources and HDFS capacity to execute queries. But as you know, Hadoop cluster comprises of many different componments with their own administration models, such as HDFS, Yarn, hive etc. It needs to access each componment to modify or edit access permissions. This is hard to manage, so a central management tool is necessary. Maybe it is better to name it ‘Framework’. Currently, there are some united open source administration management frameworks. Ranger for Hortonworks, and Sentry for Cloudera. Beside this, Ambari, HDFS and Yarn all provide a UI to track the status of a job or the job history. Sometimes you don’t want the information of a cluster to be seen by others, so you may need a tool which can do the user authentication for you. For this requirement, Knox can help you to achieve. You can regard Knox as a reverse proxy which provides a single REST API access point of authentication and access for Hadoop services.

SwiftでElmを作る

この記事は、LINE Advent Calendar 2016の 7日目の記事です

こんにちは、開発1センター・開発2室の 稲見 (@inamiy) です。 普段はiOSエンジニアとしてSwiftを書いていますが、最近はもっぱら関数型プログラミング全般に興味があります。

今日は、「SwiftでElmを作る」というテーマで、お話しさせていただきます。

Elmって何?

Web向けの静的型付け・関数型プログラミング言語です。詳しくは http://elm-lang.org をご参照ください。

簡単に言うと、「Haskell + React.js + Redux」です。コンパイル時に、JavaScriptに変換されます。

さっそく、簡単なボタンカウンターの例を見てみましょう。

import Html exposing (beginnerProgram, div, button, text) 
import Html.Events exposing (onClick)

-- `main`関数 = プログラムの始まり。 
-- 初期状態(model)に`0`をセット + 以下にあるview関数、update関数をセット。 
main = 
  beginnerProgram { model = 0, view = view, update = update }

-- `view`関数 = モデル(状態)からビュー(Virtual DOM)を生成。 
-- プログラムがメッセージを受け取る度に呼ばれる。 
-- ユーザー入力(onClick)等の度に、プログラムにメッセージが送られる。 
view model = 
  div [] 
    [ button [ onClick Decrement ] [ text "-" ] 
    , div [] [ text (toString model) ] 
    , button [ onClick Increment ] [ text "+" ] ]

-- `Msg` = メッセージ型。今回は2つのパターンだけ定義。 
type Msg = Increment | Decrement

-- `update`関数 = 状態遷移関数。 
-- 「メッセージ」と「現在の状態」を引数に、「新しい状態」を返す。 
-- プログラムがメッセージを受け取る度に呼ばれる。 
update msg model = 
  case msg of 
    Increment -> 
      model + 1

    Decrement ->
      model - 1