MicroAd Developers Blog

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

Kotlinのアップグレードをした話

マイクロアドシステム開発部の東です。業務では主にUniverse Adsの管理画面開発をしています。 今回はUniverse Adsの管理画面で使用しているKotlinのアップグレードについて、お話ししていきます。 はじめに Universe Adsの管理画面(以下、管理画面)ではサー…

開発チームのスプリント密着とツール紹介

システム開発部アプリケーションエンジニアの EDO です。 マイクロアドでは各チームがプロダクトや領域 (画面, 配信など) に分かれての機能開発を行っています。案件によっては複数プロダクトにまたがることもあり、その場合は複数チームでの合同の開発とな…

予算消化制御のための入札率のfeedback制御

はじめに こんにちは. マイクロアドで機械学習エンジニアをしている福島です. 主にReal-Time-Bidding (RTB)におけるClick Through Rate/Conversion Rate(CTR/CVR)予測や入札最適化の研究・開発を担当しています. 現在マイクロアドでは, UNIVERSE Adsというプ…

PCへのログインアカウントをGoogleに変更した話

マイクロアドで社内SEをしています高橋です。 今回はマイクロアドがPCログインをActiveDirectryユーザーを利用した方法からGoogleWorkspaceのアカウントを利用した方法に切り替えているお話をします。 従来のアカウント管理 マイクロアドではWindowsを利用す…

Grafanaの画面操作を Playwright を使って便利にする

京都研究所で監視チームのお手伝いをさせてもらってるエンジニアの I です。マイクロアドでは監視の可視化ツールとしてGrafanaやKibanaを活用しています。今回は普段Grafanaを使っていて不便な点を補うためにコードを書いて解決した話を紹介します。 Grafana…

Scalaのリテラル型について調べてみた!

サーバサイドエンジニアの飛田です。 主にDSPの開発を行っています。 今回の記事では、Scalaのリテラル型について調査しましたので、 ここで共有させていただきます。 リテラル型 SIP-23 - Literal-based singleton types | Scala Documentation リテラル型…

Pythonのdigdagモジュールを利用してDigdagバッチの処理継続可能なエラーをハンドリングする

はじめに サーバサイドエンジニアの前西です。主にETL処理1のバッチ開発を行っています。 マイクロアドでは、データ処理バッチを主にDigdagとPythonで開発2しています。 今回は、マイクロアドで開発しているDigdagバッチでのエラー処理について、簡単に紹介…

MySQL Shellのユーティリティをコマンドラインで実行する

はじめに インフラエンジニアの長田です。今回は、MySQL Shellで提供されている種々の便利な機能をコマンドラインで実行する方法について紹介したいと思います。 MySQL Shellとは MySQL Shellは、公式に提供されている新しいMySQLのコマンドラインクライアン…

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

UNIVERSE ADSでは、たくさんの機能改修や機能追加が日々行われています。 その中でもフロントエンドの改修にフォーカスしていくと、機能改修ごとにコンポーネントの書き換えなどを頻繁に行うゆえに、しばしば改修のたびにデグレが発生していました。 デグレ…

アドベントカレンダー完走 2021

アドベントカレンダー完走 2021 あけましておめでとうございます。 マイクロアドのシステム開発本部 の 奈良橋 です。 昨年 年末のことになりますが 例年通り無事 MicroAd (マイクロアド) Advent Calendar 2021 を完走しました!(ほぼ去年のままの書き出し) …

マイクロアドでのWebページカテゴリ分類の取り組み

はじめに マイクロアドで機械学習エンジニアとして働いている守屋です。 21卒として新卒入社し、配属後はWebページのカテゴリ分類精度改善や、広告オークションの入札戦略改善に取り組んでいます。 この記事では、私が新卒開発研修終了後に取り組んでいた、 …

Cats の関数覚え書き

はじめに 前回 Scala With Cats を読む前に知っておきたかったこと というタイトルで、Scala With Cats の輪読会に参加した際の感想などを書きました。 developers.microad.co.jp その中で "今後やろうと思っていること" として挙げた「Cats で実装されてい…

JVMアプリの暖機運転の導入と効果

京都研究所・Tech Labの郭です。 今回は、マイクロアドが提供する広告配信プラットフォーム「UNIVERSE Ads」の広告配信システムを開発する中で取り組んだ、JVMアプリの暖機運転について紹介していきたいと思います。 JVMの暖機運転とは 課題 アプローチ アイ…

オフィス移転をした話

はじめに はじまり タスク(必須) 新規ネットワーク回線の契約 社内サーバルーム機器の移設 監視カメラの撤去 オフィス扉のセキュリティ導入 複合機の移設と削減 電話/FAXの契約と解約 契約関連の住所変更 無線アクセスポイントの移設 タスク(検討) ネッ…

マイクロアドでのAnsibleの活用方法

はじめに 初めまして。マイクロアド21年卒サーバーサイドエンジニアの陶山(id:suyama_naoki)と申します!普段はUNIVERSE Adsの開発を行なっています。 今回の記事では、マイクロアドで使用している構成管理ツール「Ansible」について共有させていただきま…

Label Distribution Learningを用いた順序を持つ確率分布の学習

はじめに こんにちは、マイクロアドで機械学習エンジニアをしている大庭です。現在はUNIVERSE Adsというプロダクトで入札アルゴリズムの研究開発および実装を担当させていただいてます。 今回の記事では、Real-Time-Biddingにおけるオークションの落札額、自…

マイクロアドのデータ基盤と機械学習活用事例に関する勉強会を開催します!

こんにちは。機械学習エンジニアをしている福島と申します。 マイクロアドの開発部では、自己組織化のために以下3つの委員会があります。 広報委員会 : 技術広報 社内活性化委員会 : エンジニア組織の制度作成 採用委員会 : エンジニアの採用 本日は、私が所…

最強のPython型チェッカーmypy

はじめまして!今年マイクロアドに入社してサーバーサイドエンジニアとしてバッチ開発を担当している根本( id:realyutanemoto )といいます! 今回は、マイクロアドのバッチ開発で利用している静的コード解析ツールのmypyについてのご紹介です。 はじめに バ…

CDH (Hadoop) 入門

はじめに 初めまして。マイクロアド21年新卒インフラ担当の森( id:bosq )と申します。 7月に新卒研修を終えてからは、基盤開発グループにて日々勉強しています。 配属後は新しいことのインプットが多いため、今回は学んだことの整理とアウトプットを兼ねて、…

2021年新卒チームでコーディング試験の管理システムを作った話

はじめに こんにちは。マイクロアド2021年新卒チーム ( id:bosq, id:realyutanemoto, id:suyama_naoki, id:tsuno_ryo, id:moriya_shun ) です。 新卒研修が無事に終わりましたので、今年の研修について紹介したいと思います。 はじめに 開発研修について マ…

kotlinx-metadata-jvmを使って、kotlin-reflect無しでreflectする

はじめに こんにちは、マイクロアドでソフトウェアエンジニアをしている宮田です。 この記事では、kotlin-reflectの機能を代替しうるライブラリとして、kotlinx-metadata-jvmについて紹介します。 Maven Repository: org.jetbrains.kotlinx » kotlinx-metada…

Scala With Cats を読む前に知っておきたかったこと

はじめに こんにちは。マイクロアドでソフトウェアエンジニアをしている田口と申します。 私が所属しているチームでは COMPASS というプロダクトに関する開発をメインで行っており、広告配信システム(Scala)、管理画面(Kotlin・Java)、バッチ系(Digdag(Pytho…

チーム管理対象サービスプロジェクトの導入と比較 (Cloud 版 Jira Service Management)

はじめに マイクロアドでの利用状況 Jira Service Management Cloud Confluence Cloud Jira Service Management について カスタマーポータルは専用URLから オープン/非公開設定でアクセス制御 自動化を利用して作業を効率化 ナレッジベースで情報提供と自己…

redis threadedI/Oの検証

はじめに マイクロアドでインフラエンジニアをしている柏木です。 マイクロアドでは広告配信に高速なKVSであるRedisを使用しています。 Redisはシングルスレッドでの高速性、安定性を売りにしていました。しかし6.0でマルチスレッド機能であるThreded I/Oが…

JIRAカンバンボードを使用した開発の進め方

マイクロアドでアプリケーションエンジニアをしているタカギです。 今回の記事では、マイクロアドでどのような流れで開発が行われているのか、について記事を書いていきたいと思います。 システム開発本部の組織構成 まず、システム開発本部がどのようにチー…

圏論初心者が自然変換について学んでみた!

こんにちは。マイクロアドでソフトウェアエンジニアをしている飛田と申します。私は主に UNIVERSE Ads というプロダクトの開発に携わっています。 UNIVERSE Ads では、より関数型ライクな設計や実装を取り入れることにより、高い保守性と効率性を目指してい…

AI Platform Pipelines の機械学習基盤への導入

こんにちは、マイクロアド機械学習エンジニアチームの河本(@nnkkmto)です。今回、モデル学習における課題解決に向けて GCP における機械学習基盤に AI Platform Pipelines (Kubeflow Pipelines) を導入しました。今回はその内容について紹介します。 従来…

Focal Lossによる自信過剰な予測の抑制

はじめに こんにちは. マイクロアドで機械学習エンジニアをしている福島です. 主にReal-Time-Bidding (RTB)におけるClick Through Rate/Conversion Rate(CTR/CVR)予測や入札最適化の研究・開発を担当しています. 今回はCTR/CVR予測の学習にFocal Loss [Tsung…

UNIVERSE Adsの監視基盤

京都研究所・TechLabの田中です。マイクロアドでは、先日正式提供を開始した*1UNIVERSE Adsの開発と並行して、UNIVERSE Adsのサービス監視用の基盤も整備してきました。 今回はそんなUNIVERSE Adsの監視基盤の概要をご紹介します。 サービス監視の必要性 監…

Impalaのメタデータで困った話

前提 処理の概要 メタデータ更新問題 テーブルの転送フロー修正前 メタデータと統計情報の紐づけ テーブルの転送フロー修正後 メタデータ大きすぎる問題 突然のERROR 大きくなりすぎたオンメモリメタデータ 解決方法 まとめ 参考リンク マイクロアドでETL処…