MicroAd Developers Blog

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

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

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で開発を初めて困ったところと、どうやって解決していったのかをセットにして紹介したいと思います。 初心者がどこで詰まるのかというところ、どのようにし…