MicroAd Developers Blog

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

GCP環境にCloudera Altus Directorを入れてみた話

Distributed computing (Apache Spark, Hadoop, Kafka, ...) Advent Calendar 2019 - Qiita の 2日目(12/2)の記事になります! qiita.com インフラエンジニアのN村です。子育て中につき時短で勤務中です。 今日は、育休開け早々にGCP環境にCloudera Altus …

KotlinフレンドリーなBeanPropertyRowMapper的なものを作った

アプリケーションエンジニアの宮田です。 自分のチームでは、10月から既存のSpringBootプロジェクトへKotlinの導入を進めています。 今回は、そんな中で直面した課題への対策として、「KotlinフレンドリーなBeanPropertyRowMapper的なもの」を作った件につい…

京都のIT系学生コミュニティ CAMPHOR- さんとイベントを共催しました

こんにちは、まっつーです。10/5(土)に京都のIT系学生コミュニティ CAMPHOR-さんと「ネット広告を支える技術を知る」のテーマでイベントを共催させて頂きました。 マイクロアドのエンジニア3人で登壇して参りましたので、その時の様子や発表内容をご紹介した…

19年度新卒チームが研修でMVP投票システムを作った話

ぼーちゃんトップページ マイクロアドの19新卒グループです。 全体研修が終わり、システム開発部の研修として「ぼーちゃん」という月間インセンティブ獲得者を決める、MVP投票システムの開発を行いました。 今回は、その概要と開発時に工夫した点をまとめて…

Google Compute Engine を用いた機械学習モデル学習バッチのスケジュール実行

こんにちは、機械学習エンジニアの河本 (@nnkkmto) です。マイクロアドのシステムにおいて、機械学習が必要な部分の研究開発及び実装を担当しています。 この記事では GCP (Google Cloud Platform)、特に GCE (Google Compute Engine) を用いた機械学習モデ…

Builderscon2019の参加レポート

こんにちは、まっつーです。 Builderscon2019が終わって早1ヶ月が経とうとしていますが、builderscon2019の2日目に参加してきたのでそのレポートを書きたいと思います! ↓ マイクロアドのエンジニア達です。スポンサー特典で招待枠をもらったので参加させても…

「関数型言語をもっと使いこなしたい!」マイクロアドの新卒エンジニアがデータサイエンティストの先輩に圏論の初歩を指導してもらった話

はじめに こんにちは、19新卒バックエンドエンジニアの飛田です。 弊社では、プロダクトの一部にCatsという関数型プログラミングを行うためのライブラリを導入しており、今後、Catsをより多くのプロダクトに使用していく予定です。 Catsにはモナドやファンク…

Vue.jsを使ってメンテナンスツールを作ってみた

ご無沙汰しております。 マイクロアドでアプリケーションエンジニアをしているNです。 約1年前「JavaScriptフレームワーク(Vue.js)を導入して」というタイトルでブログを執筆させていただきました。 その時、 興味を示して頂き何らかの反応をいただければ…

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上に下記の様なテーブルが存在する場合…