MicroAd Developers Blog

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

Workplace from Facebookを導入した話

はじめまして。IT戦略グループの比嘉です。 マイクロアドでは社内コミュニケーションツールとして、Facebook社のWorkplaceというビジネス向けSNSを利用しています。2017年11月に利用を開始していますので3年弱の運用を続けています。 今回は導入に至った経緯…

Chrome84(beta)におけるUser-Agent Client Hintsの調査

Chrome84(beta)におけるUser-Agent Client Hintsの調査 はじめまして。Tech Labの郭です。 Tech Labは弊社の開発効率・運用効率・技術レベルの向上を目的として、業界最新かつ有効な技術を研究・導入するチームです。 今回はブラウザ界隈の最新仕様、User-Ag…

リモートワークでDiscordを導入しました

マイクロアドのサーバサイドエンジニアでチームリーダーを担当している松宮です。 マイクロアドは先月まで全社員フルリモートで、現在はリモートワークを取り入れた新しい働き方を模索している段階です。 リモートワークにおけるコミュニケーションは大きな…

Moleculeのdelegatedドライバ + OpenStackでAnsibleのテストを行う

インフラエンジニアの長田です。 今回は、Ansibleのテスト支援ツールであるMoleculeの実践例について記事にしたいと思います。MoleculeはDockerやPodmanでコンテナを起動し、その中でAnsibleロールのテストを簡潔に行うことができる便利なツールですが、Ansi…

マイクロアドのログ蓄積の流れ

はじめまして。サーバサイドエンジニアの前西と申します。主にETL処理*1のバッチ開発を行っています。 マイクロアドでは、広告配信ログやアクセスログなどのデータを元にして、様々な加工を行った上で蓄積を行なっています。 今回の記事では、私が普段業務で…

新卒2年目のエンジニアがモノイドの数学的な定義について調べてScalaで実装してみた

はじめに モノイド 代数学 圏論 Scalaでモノイドを実装する 代数学的な定義に従った整数を加算するモノイドの実装 圏論的な定義に従った整数を加算するモノイドの実装 モノイドの合成 Catsによるモノイドの利用例 おわりに はじめに こんにちは。マイクロア…

Jestを使ったVueコンポーネントのテストを導入した話

はじめまして、フロントエンドエンジニアをしている川上です。 業務では、主にサービス要件に沿ったフロントエンド開発を担当しています。 今回は、私自身初めての経験だったフロントエンドのテスト導入手順や、 導入するにあたって気をつけた点などをお話し…

Hive パフォーマンスを改善する設定の紹介

マイクロアドではデータ基盤に Hive が使われています。 データ基盤について、以下の記事をご確認ください。 MicroAdのデータ基盤 より使いやすいデータ分析基盤にするために この一年間、Hive を使う機会が増えましたのでクエリパフォーマンスを改善する為…

新卒がMLOpsに挑戦していく話

システム開発本部のデータサイエンスユニットに所属している19新卒の豊原です。 巷で結構耳にするMLOpsですが、結構苦労していらっしゃる組織も多いと考えます。 今回の記事では、マイクロアドで挑戦するMLOpsについての概要と、その挑戦について解説します…

Cloud 版 Jira Service Desk の導入と社内ワークフローの整理

マイクロアドでコーポレートエンジニアをしている米田(マイタ)です。 マイクロアドでは以前から Atlassian 社の Cloud 版 Jira Software と Confluence を導入していますが、今回は「2019年から Jira Service Desk を導入して社内のワークフローを整理してい…

より使いやすいデータ分析基盤にするために

京都研究所・TechLabの田中です。 今回は、データ分析基盤をより使いやすくするために実施した取り組みをご紹介します。 この記事では、結論だけでなくそこに至るまでの過程も一緒に紹介しているので、実務の雰囲気の一端も感じ取っていただければ幸いです。…

マイクロアドの新卒エンジニアがCatsに入門してみた

目次 目次 はじめに 型クラス シンタックス インタフェースオブジェクト implicitlyメソッド Catsの型クラスとインスタンス Catsまとめ 考察および雑感 型クラスのメリット 実装の責務のイメージ 終わりに はじめに こんにちは、19新卒バックエンドエンジニ…

Digdagバッチの基本設計とビルドの実例紹介

サーバサイドエンジニアの大澤です。主にETL処理のバッチ開発を行っています。 以前の記事で紹介していますが、マイクロアドではバッチ処理のワークフローを主にDigdagを使用して管理しています。 今回は、Digdagを1年以上使ってきてたどり着いた構成につい…

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

さてクリスマスも終わって今年も残すところあと数日ですが皆さんいかがお過ごしでしょうか。インフラの元井です。 今年も昨年に続きまして無事にアドベントカレンダーを完走することができました!忙しい中、頑張って投稿してくれたメンバーに感謝です! Mic…

Developers Boost 2019で登壇してきました

こんにちは、まっつーです。11/30に開催されたDevelopers Boost 2019に登壇してきました。 今年はマイクロアドからもスポンサーさせて頂き、登壇の他、ブースの出展も行いましたので、その様子を皆さんにご紹介できればと思います! はじめに Developers Boo…

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の関数 省…