RSS

Posts Tagged “AdventCalendar”

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

by LINE Engineer on 2016.12.22

 この記事はLINE Advent Calendar 2016の16記事目です。  こんにちは、LINEエンジニアの愛甲健二です。所属は「セキュリティ室」の「Application Security Team」というところで、主にリリース前のGames/Appsの診断を行っている、いわゆる一般的なセキュリティエンジニアです。今日はUnityに関するセキュリティ視点の入門記事を書きたいと思います。 はじめに  そもそも「Games/Appsのセキュリティ診断って具体的に何をするのか」という話ですが、基本的にはアプリの解析と、通信プロコトルの解析/診断をメインに行います。  アプリの解析にはいくつかのツールを使うのですが、まず.dexを分析するためにJava Decompilerを使います。有名なものにJD-GUIがあります。ただ、デコンパイルに失敗するメソッドがあったりするので、そのときはsmali(AndroidのJavaVM実装)を直接読みます(smali)。smaliはApktoolを使って.apkを展開するとファイルが作成されます。コード分析においてはJava、ARM、そしてIL(Intermediate Language)が読めればほぼ問題ないので、それぞれJD-GUI、IDA、JustDecompile辺りを使います。これらは後ほど改めて解説します。

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

by LINE Engineer on 2016.12.21

LINE の Data Labs(データラボ)で自然言語処理に関連する技術に関わっている @overlast (佐藤 敏紀) です。この記事は、LINE Advent Calendar 2016 の 15 記事目です。 この記事をお読みの方には「LINE と自然言語処理って関係あるの?」と思われる方もいらっしゃる思います。 Data Labs ではデータ収集・解析基盤の開発や機械学習技術の適用だけでなく、自然言語処理に関する実用的な技術の開発・研究を、かなり真面目におこなっており、その成果によって弊社のお客様のお役に立つことは当然として、他社さまや研究者、学生さんにも広く貢献したいと考えております。 はじめに 今回は、私が作っている mecab-ipadic-NEologd とその効果について、このブログで一回も書いていなかったので書きます。 mecab-ipadic-NEologd は形態素解析エンジン MeCab と共に使う単語分かち書き辞書で、週2回以上更新更新され、新語・固有表現に強く、語彙数が多く、しかもオープンソース・ソフトウェアである という特徴があります。 この記事では、mecab-ipadic-NEologd の分書分類タスクにおける有効性を確認する実験をおこない、その結果として「安心して最新版の mecab-ipadic-NEologd を使って大丈夫」という結論を得たことについて書きました。 色々な方々が頑張って下さっているおかげで mecab-ipadic-NEologd は Kuromoji からも使える様になっており、川田さん(@hktechno)による 6 記事目、(Elasticsearch を検索エンジンとして利用する際のポイント)の記事に出てきた「Elasticsearch のすごいところは、大量のドキュメントの中から形態素解析や n-gram など自然言語的な解析を行った上で(略)」という部分にも関係してきます。 この記事は、自然言語処理が必要そうな仕事をなさっているエンジニアさんにオススメの記事ですので、最後まで読んで頂いたり、「新語や未知語が足りない問題」などで困っているお仲間にオススメして頂けると、とても嬉しいです。 例文:「彼女はペンパイナッポーアッポーペンと恋ダンスを踊った。」

Sparkと機械学習と時々MPI

by LINE Engineer on 2016.12.20

はじめに こんにちは、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 の登壇報告

by LINE Engineer on 2016.12.19

どうもこんにちわ! LINE LIVEを開発している@Yappoです。この記事はLINE Advent Calendar2016の13記事目です。 はじめに 今回は他の記事とは毛色を変えて Perl 成分濃いめでお届けします。 今更 Perl かと思われるかと思いますが、弊社でも幾つかのサービスを Perl で構築しており現在もサービス提供を行っています。 また、ご存知の方は少ないかと思いますが、日本のエンジニア界隈で一大ブーム巻き起こしている Engineer’s Advent Calendar ですが、もともとは2008年に日本の Perl コミュニティで開催された事が発端なんですよね。 今回の記事を読む事で、この Engineer’s Advent Calendar が Perl コミュニティから産まれた理由、そのエンジニア文化の背景などの一端に触れて頂けたら幸いです。 登壇の背景 基本的に筆者は LINE LIVE の開発をしていますが、過去の案件で社内向けの LINE BOT API Client を書いていた縁もあってMessaging API の Perl SDKの開発を担当しました。 この SDK は9/29の LINE DEVELOPER DAY 2016 で公開され、その時ちょうど良いタイミングで YAPC::Hokkaido でのトーク募集や Fukuoka.PM での登壇のお誘いを頂いたので、 Messaging API や付随するサービスを Perl から使う方法についてのトークを行うこととしました。

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

by LINE Engineer on 2016.12.16

こんにちは。LINE Fukuoka でデータ分析やその基盤作りをしている tkengo です。この記事は LINE Advent Calendar 2016 の 12 日目の記事です。 2016 年の 11 月下旬、LINE Fukuoka で 2 日間の社内ハッカソンが開催されました。その時にいくつかのチームが結成され、IoT や VR、機械学習など、それぞれのチームで挑戦的なプロダクトが作られ、大いに盛り上がりました。今日は、その時に私たちのチームが作ったディープニューラルネットワークを使った以下のようなリアルタイム画風変換アプリケーションのお話をしたいと思います。 ※ちょっとわかりにくいですが、下側のスマホのカメラに映っている映像に対してリアルタイムに画風変換処理を施し、それを上側のスマホで表示しています。 背景 2015 年の夏の終わり頃、ニューラルネットワークを使って画像の画風を変換するアルゴリズム A Neural Algorithm of Artistic Style が、 Gatys らドイツの研究者グループによって発表され、世界中で話題になりました。日本でも同時期に Chainer を使った実装 とその 解説記事 が出ましたので記憶にあたらしい方も多いのではないでしょうか。

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

by LINE Engineer on 2016.12.15

こんにちは。LINE ゲームのプラットフォーム開発を担当している Kagaya です。6 日目の記事を担当した 川田さんと同様、今年の 4 月から新卒で入社して主に Java を使ったサーバサイド開発を担当しています。 こちらの記事は LINE Advent Calender 2016 の 11 日目の記事になります。 はじめに LINE のサービスの多くは Microservices Architecture と呼ばれるような構成になっています。このアーキテクチャそのものについては、過去の LINE Developers Blog でも こちらの記事 で扱ったり、Developer Day にて こちらの講演 を行ったりしています。様々なメリットが提唱されていますが、チーム開発の機能的な側面から言えば、巨大なシステムの各機能を疎結合にすることで、新しくチームにジョインしたメンバーでも開発をスピーディに行う事ができるのがメリットといえるでしょう。 LINE ゲームのプラットフォームも同様に Microservices 化されており、チームの Github Enterprise には多くのリポジトリが存在しています。さて突然ですが、我々のチームに配属されたあなたが新機能を開発するために新しくリポジトリを作りました。最初の一歩としてどのように開発を進めていくことを考えるでしょうか?Microservices の利点のひとつにコードベースの独立性があるとはいえ、まずはテンプレートのようなものからスタートするのが一般的だと思います。プロジェクト内のディレクトリ構成から、横断的に利用しているミドルウェアやチーム内でよく使われるビルドツールの設定など、多かれ少なかれ存在するであろう共通部分をテンプレート化するのはエンジニアにとっては常套手段です(DRY 原則という言葉もあります)。

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

by LINE Engineer on 2016.12.14

こんにちは、LINE で LINE GAME Clinet SDK の開発をしている やまぐち です。 この記事は LINE Advent Calendar2016 の 10 日目の記事です。 弊社でも iOS / Android / Unity 向けに LINE GAME Clinet SDK を提供しています。コードは共通の C++ を使っているのですが、複数のプラットフォーム向けにビルドを行う必要があってソースファイルの管理やビルド方法がバラバラで大変ですよね。そこでクロスプラットフォーム向けのビルドシステムなどを調査してCMake を使ってクロスプラットフォームビルド環境を作ることにしました。 CMake を採用した理由 巷ではクロスプラットフォームでビルドをするための色々なソリューションがあります。ざっと上げてみると CMake Ninja GYP Bazel などなど、他にも沢山あるかと思います。まず、前提として以下の要求を満たせるか、色々なソリューションを調査しました。