MicroAd Developers Blog

マイクロアドのエンジニアブログです。インフラ、開発、分析について発信していきます。

BeanValidationを用いるフォームクラスをテストする

アプリケーションエンジニア1年目の宮田です。 今回は以下のようなBeanValidationを用いるフォームクラスのテストについて、用いる道具と実際のテストにおけるTipsの2点からまとめます。 import lombok.Getter; import lombok.Setter; import org.hibernate.…

Spark Structured Streaming で遅延データを処理する方法

マイクロアドのアプリケーションエンジニアの x です。数ヶ月前からストリームアプリの開発を担当しています。ある案件を検証する為、Structured Streaming を使ってみました。 マイクロアドでは、Spark Streaming でデータを5~10秒毎に処理しています。Spar…

ScalaMatsuri2019の参加レポート

こんにちは。サーバサイドエンジニアの松宮です。 今年もScalaMatsuriに参加してきました。そして今年は大名スポンサーとして協賛させて頂きました! 濃い内容のセッションが盛りだくさんで非常に勉強になりましたので、いくつかピックアップしてレポートを…

RIDITスコアによる不正検知

マイクロアドでデータを分析している高橋と申します。 大学院までは物理学を専攻していましたが、縁あってデータ分析の分野に飛び込むこととなりました。 入札額の最適化アルゴリズムに取り組んでいた時期もありましたが、現在は広告表示の異常検知・不正検…

Ansible AWXでMySQLの構成管理を行う

マイクロアドでインフラエンジニアをやっている長田です。おもにMySQLなどのDBA業務に携わっていますが、今回はAnsible AWXを用いてMySQLのユーザやパラメータといった構成の管理を導入したことについてお話したいと思います。 Ansible / Ansible AWXとは ご…

「メソッドの引数名 -> メソッド引数」のMapを生成しようとした話

去年の10月1日から新卒エンジニアとしてマイクロアドで働いている宮田です。 今回は、現在開発中のプロダクトのサーバーサイドで、イケてない部分を改善しようとして失敗した話を書きます。 困っていたこと 開発中のプロダクトのDAOでは、SpringBootのNamedP…

PythonでDataFrameを省メモリに縦横変換する

マイクロアドの京都研究所で機械学習エンジニアをしている田中です。 機械学習を利用したユーザーの行動予測の研究開発などを担当しています。 今回は、データの前処理に関するお話をしたいと思います。 データの縦横変換 縦横変換するためのpandasの関数 省…

dead code following this construct ...という警告

マイクロアドのサーバサイドエンジニアの松宮です。本日はある日の社内日報を焼き直して、外部公開することにしました。 ・・・ ある晴れた日のこと。Specs2でテストを書いていて、下記のようなコードをコンパイルをすると警告が出ることに気が付いた。 ... …

Cloud Native Kansai #02 にて分散システムデザインパターン などCloud Native開発に必要な事について発表しました

3/15に行われたCloud Native Kansai #02 で弊社社員が「ゆるふわDocker使いなWebアプリ開発者が 分散システムデザインパターン など Kubernetes や Cloud Native 開発に必要な事」について登壇した事についてご紹介

エンジニアブログを一年続けてみて

1st_anniversary インフラの元井です。だんだん暖かくなってきて花粉症状も激しくなってきた今日この頃、みなさんいかがお過ごしでしょうか。 若干勢いではじめたエンジニアブログですが、多少は更新が遅れて空白の期間が出ても仕方ないなと思っていましたが…

Using the Java Comparator Construction Method in Scala

はじめに Ordered[T] compareの実装 コンパレータ構築メソッドを使って定義する Benchmark まとめ 参考文献 追記(2019/03/11) はじめに はじめまして。アプリケーションエンジニアをやってる新卒1年目の石田です。 Scalaをメインで書いているのですが、Scala…

Akka Streamsで例外を扱う時の注意

マイクロアドのサーバサイドエンジニアの松宮です。本日は技術Tips記事ということで、Akka Streamsで例外を扱う時の注意点についてのお話です。 Akka Streamsはフローを分岐した複雑なグラフを作る事が簡単に出来ます。また、例外についても捕捉する手段はい…

Spark Streaming と Kryo シリアライザーの話

マイクロアドでアプリケーションエンジニアをしている「G」です。日々、バッチを作ったり WEB アプリケーションを作ったりしています。 今回はライトに Spark Streaming でカスタム Kryo (クライオ)シリアライザーが必要になってしまったお話を書いていき…

社内電話システムをリプレイスした話

マイクロアドで社内システムの管理や運用、ヘルプデスクをしています高橋と申します。 今回は直近で行いました社内電話システムをリプレイスした話をしたいと思います。 リプレイスの背景 マイクロアドはPHSとPBXを利用した社内電話システムを使用していたの…

新卒が初めてScalaを触って詰まったところと解決方法

18新卒でマイクロアドに入社した山城です。 今回はScalaを一切触ったことのない僕が、いきなりScalaで開発を初めて困ったところと、どうやって解決していったのかをセットにして紹介したいと思います。 初心者がどこで詰まるのかというところ、どのようにし…

2018年アドベントカレンダー完走

MicroAd Advent Calendar 2018 - Qiita 昨年から参加しているアドベントカレンダー(2017年はこちら)、今年も参加表明してくれたメンバーが頑張ってくれたおかげで完走することができました。年末の忙しい時期に時間を割いて投稿してくれた皆さんお疲れ様…

Redis x MessagePack

こんにちは。 マイクロアドでアプリケーションエンジニアをしている新卒1年目の武井です。 今回は私が最近の案件で Redis と MessagePackを使った開発のお話をさせていただければと思います。 Redis と MessagePack まず題名のRedisとMessagePackのそれぞれ…

機械学習処理におけるカテゴリ変数の扱い方(Feature hashingについて)

こんにちは!機械学習エンジニアの桶原です。 業務では主に機械学習処理を用いた広告効果予測と改善をテーマとしています。 今回は機械学習処理におけるカテゴリ変数の扱い方の中でもあまり触れられることのない、Feature hashingを利用した方法についてお話…

Scala関西Summit 2018に参加したので感想を書きます

マイクロアドのサーバサイドエンジニアの松宮です。少し時間が経ってしまったんですが、今年もScala関西Summitに参加してきましたのでマイクロアドと絡めながらつらつらと感想を書きたいと思います。 ちなみに今年はマイクロアドからも初めてスポンサードさ…

Wikipedia2Vecを用いた文書分類

こんにちは、機械学習エンジニアの岸本です。マイクロアドのシステムにおいて、機械学習などデータ解析が関わる部分の研究開発を行っています。 学生時代は、医用画像を対象とした医師の診断を支援するシステム (Computer-Aided Diagnosis; CAD) の研究開発…

ホワイトボックススイッチとCumulus Linuxを使った話

はじめまして。マイクロアドでインフラエンジニアをしているハダです。 今回の記事では、マイクロアドで採用しているホワイトボックススイッチと、 その上で動かしているCumulus Linuxについて導入から使用している感想までを書いていきたいと思います。 背…

Hiveでarray、struct型などをNULLにする方法

こんにちは。マイクロアドでサーバーサイドエンジニアをしている大澤です。 今回はApache HiveでComplex型(ARRAY, STRUCT, MAP, UNION)を使用している際に発生した問題と解決方法について紹介します。 問題の内容 Hive上に下記の様なテーブルが存在する場合…

Digdagを使ったジョブ管理

はじめまして。アプリケーションエンジニアの中野です。 以前、MicroAdのデータ基盤の記事で紹介されていましたが、マイクロアドではデータ基盤刷新のタイミングでワークフロー管理ツールのDigdagを採用しました。 今回の記事では、Digdag採用の経緯やワーク…

SparkでGeoIP2を使うとjava.lang.NoSuchMethodErrorが発生する問題の回避方法

マイクロアドのサーバサイドエンジニアの松宮です。今回はプログラミングのTips的な記事になります。 タイトルの通り、「SparkでGeoIP2を使うとjava.lang.NoSuchMethodErrorが発生する問題の回避方法」を説明したいと思っておりまして、というのも、SparkでG…

マイクロアドに新卒で入っていきなりScalaを書かされた話

はじめまして。マイクロアドでアプリケーションエンジニアをしている新卒1年目の石田です。 主に、MicroaAd BLADEという広告配信プラットフォームの開発をしています。 内定者アルバイト時代からマイクロアドでBLADEの開発に携わっていました。BLADEのソース…

マイクロアドの新卒4人が研修で社内システムを開発した話

マイクロアドの新卒グループです。 全体研修が終わり、システム部の研修として「ななさん」という福利厚生制度を管理するシステムの開発を行いました。 今回はその概要と開発時に工夫した点をまとめて記事にしました。 What's ななさん? ななさんとは、個人…

無停止ブラウザ配信をささえる仕組み

どうもはじめまして、アプリケーションエンジニアの築野です。 主にデジタルサイネージ配信関連に携わっております。 今回は、Webブラウザにて配信アプリを支えている仕組みについて紹介したいと思います。 デジタルサイネージとは 従来の看板や紙のポスター…

【イベントレポート】Qiita Career Meetup for Server Side Engineers

こんにちは。インフラの元井です。体温よりも高い気温の日々が続いていますが、みなさんいかがお過ごしでしょうか。開発部メンバーは都会のど真ん中、新宿京王百貨店の屋上でバーベキューという、この時期、そして今年のこの気温のヤバさ、もはや罰ゲーム的…

JavaScriptフレームワーク(Vue.js)を導入して

マイクロアドでアプリケーションエンジニアをしているNです。 日々、バッチを作ったりWEBアプリケーションを作ったりしています。 今回はライトにJavaScriptフレームワークを導入したお話を書いていきたいと思います。 導入のきっかけ その1~きっかけのきっ…

さようならオーバーレイアニメーション

はじめまして、マイクロアドのSSPサービス COMPASS をメインで担当している「F」です。 オーバーレイ広告は正直ウザいという声もあるとは思いますが、 表現方法という意味では興味深いところでもありました。 そんなオーバーレイ広告ですが、先日遂にアニメ…