MicroAd Developers Blog
https://developers.microad.co.jp/
マイクロアドのエンジニアブログです。インフラ、開発、分析について発信していきます。
フィード
ACM RecSys'24 参加レポート
MicroAd Developers Blog
はじめに こんにちは。マイクロアドで機械学習エンジニアをしている新卒の簀河原です。 この記事では、イタリアはバーリ(Bari)で開催されました ACM RecSys'24 の参加レポートと、広告業界のMLエンジニア目線で興味を持った研究発表を紹介します。 ACM RecSysとは ACM RecSys(The ACM Conference on Recommender Systems)は、推薦システム分野に特化した国際会議です。 2007年にスタートしたRecSysでは、現在の推薦システムの中核をなす技術が数々発表されています。 研究や実務で推薦システムを専門としている方は、RecSysで発表…
2ヶ月前
24卒新卒研修 1on1管理アプリ開発
MicroAd Developers Blog
はじめに はじめまして!24卒新入社員(小林、崎下、簀河原、髙橋、本間、前田、大泉、齊藤)です! 私たちは新卒開発研修にて1on1管理アプリ「サシログ」を開発しました! 開発にあたって、24卒は開発チーム(小林、崎下、簀河原、髙橋、本間、前田)とインフラチーム(大泉、齊藤)に分かれて作業しました。 今回の技術ブログでは、開発チームの髙橋とインフラチームの大泉が1on1管理アプリ「サシログ」についてご紹介していきます。 はじめに 開発研修について 1on1管理アプリの開発の背景 開発チームでの開発の流れ 基本設計 画面設計 画面遷移図 ER図 主要技術 サシログの機能の概要 こだわりの機能 リッ…
2ヶ月前
PyCon JP 2024 参加レポート
MicroAd Developers Blog
9月27~28日に開催されたPythonイベント「PyCon JP 2024」にマイクロアドPython愛好会のメンバーで参加してきました。 この記事では現地の様子や気になったセッション、スポンサーブースについて紹介します。 2024.pycon.jp PyCon JP とは セッション Pythonを活用したLLMによる構造的データ生成の手法と実践 低コストで実現する社内文書RAG機能を搭載したAIチャットボット開発 PEP 723(Inline script metadata)が拓く世界。Pythonスクリプトに必要な仮想環境をツールにおまかせできるんです! Pythonの数学機能を学ぼう…
3ヶ月前
24卒インフラ研修:監視編
MicroAd Developers Blog
📢<技術ブログを更新しました今回の記事は「24卒インフラ研修:監視編」です。新卒研修を通じて学んだマイクロアドの監視構成について紹介しています!#MicroadDev #はてなブログ #監視
3ヶ月前
Redis Pipelineによる通信を解析してみる
MicroAd Developers Blog
はじめに こんにちは。マイクロアドでソフトウェアエンジニアをしている飛田と申します。 最近、業務でストリーム処理アプリケーションのスループットを改善する必要がありました。特に、一つのリクエストに対して複数回Redisへの参照や書き込みを行う必要があるアプリケーションだったため、Redis周りの処理時間がボトルネックとなっていました。そこで、Redis Pipelineを導入したところ、パフォーマンスの向上を実感しました。 リリース後、Pipelineがどのように効率化を実現しているかをさらに理解したくなり、通信の仕組みを解析することにしました。 本記事では、Redis Pipelineの基本的…
4ヶ月前
現代のヒープメモリ管理 〜GCと所有権〜
MicroAd Developers Blog
こんにちは。マイクロアドで機械学習エンジニアをしている大庭です。 今回の記事では多くのプログラミング言語で採用されているメモリ管理機能である「ガベージコレクション」とRustで導入され現在注目されている「所有権」について、最近調べる機会があったため備忘録を兼ねてまとめてみようと思います。 スタック領域とヒープ領域 スタック領域 ヒープ領域 ヒープ領域の管理方法 ガベージコレクション 参照カウント マーク・アンド・スイープ コピーGC 世代別ガーベージコレクション 所有権 所有権の原則 スコープによる値の解放 所有権の移動 所有権の弊害 参照と借用 可変な参照 所有権のまとめ おわりに スタック…
4ヶ月前
24卒インフラ研修:サーバ構築・運用編
MicroAd Developers Blog
はじめに マイクロアド24年新卒インフラエンジニアの齊藤(id:saitoperf)です。 今回は、インフラ研修やその後の業務で学んだ「サーバ構築・運用周りの技術スタック」を紹介します。 マイクロアドのインフラエンジニアは現在9名で、各々得意な領域はありますが、基本的にはラックマウントや配線といった物理的なタスクから、監視基盤やミドルウェアの構築・運用までの一連に対応できます。 インフラ研修では、まずは座学やハンズオンを通して、チームメンバー全員が知っているような基礎的な知識をインプットしました。 はじめに どのようなインフラ基盤を使っているのか? ベアメタル(MAAS) AWSとGoogle…
4ヶ月前
実行中のクエリを監視するダッシュボードの作成
MicroAd Developers Blog
京都研究所の田中です。 マイクロアドでは、Redash上に作成されたクエリを利用してデータ抽出が行われています。 この記事では、Redashの利用者がクエリの混雑状況などを簡単に確認できるように作成した監視ダッシュボードを紹介します。 背景と目的 Redashから接続しているデータソースのうち、マイクロアドで最もよく利用されているのはImpala(Hadoopクラスタ上で動作する分散SQLクエリエンジン)1です。 RedashからImpalaを利用する体制で運用していく中で、 クエリの混雑状況:現在実行中のImpalaクエリの一覧や総数 クエリの進行状況:該当するクエリがいま何%くらい進んでい…
5ヶ月前
バッチアプリのPythonを3.11にバージョンアップした話
MicroAd Developers Blog
はじめに こんにちは、マイクロアドでサーバーサイドエンジニアをしている澤田です。 主にDigdag1とPythonを使用したETL/ELT処理2を行うバッチを開発しています。 今回はバッチ処理で使用しているPythonを3.7から3.11にバージョンアップした際の取り組みについてです。 バージョンアップの背景から実際に取り組んだ中で出た課題とその対応を共有します。 経緯 マイクロアドのバッチ開発ユニットではETL/ELT処理を行うために、メインのプログラム言語としてPythonを使用しています。 メインバージョンとしてはPython 3.7を長らく使用していました。 Python 3.7は20…
5ヶ月前
24卒インフラ研修:自作PC編
MicroAd Developers Blog
はじめに 初めまして。マイクロアド24年新卒インフラエンジニアの齊藤( id:saitoperf )です。 今回は、インフラ研修で取り組んだ「自作PCの性能評価」について紹介します。 インフラ研修では、パーツ選定 → 組み立て → WordPressのデプロイ → 評価実験までの流れを体験しました。 マイクロアドではオンプレが主流のため、 インフラエンジニアは「コストを意識したサーバ調達 → ラッキング → 構築後のパフォーマンスチェック」の一連に対応できる必要があります。 また、これらの作業が終わった後にも、メモリやストレージの故障といった断続的に発生するインシデントにも対応していく必要があ…
6ヶ月前
Scala Matsuri 2024 にスポンサー企業として参加してきました!
MicroAd Developers Blog
Scala Matsuri 2024 にスポンサー企業として参加してきました! 先日、お台場にて開催されたScala Matsuri 2024 に参加してきました! 弊社は大名スポンサーとしてScala Matsuri 2024に協賛しており、企業ブースを出させていただきました。 当記事では、現地での様子や興味深かったセッションなどをご紹介します。 Scala Matsuri とは まずScala Matsuriとは、アジア最大級の規模を誇るScalaカンファレンスです。 Scala有識者、Scalaに興味がある人、Scala初心者、コントリビューター、などScalaに関わる人が多く集まります…
6ヶ月前
JSAI2024参加レポート
MicroAd Developers Blog
はじめに こんにちは。マイクロアドの機械学習チームです。5月28日(火) ~ 5月31日(金)に静岡県浜松市で開催されたJSAI2024 (第38回 人工知能学会全国大会)の参加レポートです。 マイクロアドはゴールドスポンサーとして協賛させていただき、ブース出展とインダストリアルセッションでの発表を行いました。 スポンサーブース 今回は「オンライン広告の入札制御例とCookie規制後の広告技術」をテーマにブース出展していました。 ありがたいことに多くの学生さんや企業の方などにお立ち寄りいただくことができ、広告事業やマイクロアドの業務についてご紹介することができました。 Google Chorm…
7ヶ月前
Vertex AI Pipelines の開発環境を Dev Container で構築するには
MicroAd Developers Blog
はじめに こんにちは。マイクロアドで機械学習エンジニアをしている天野です。 マイクロアドの機械学習チームでは、機械学習関連のバッチ実行にVertex AI PipelinesというGoogle Cloud Platformが提供するマネージドのワークフロー実行サービスを利用しています。 利用を始めたのは昨年からで準備バッチのリプレースを進めている段階なのですが、componentsやpipelinesが正常に動作するかの検証、componentsを実行するDocker imageのBuildやPushなどの処理を効率的に行えていなく、移行に時間がかかっているという課題がありました。 これらの課…
7ヶ月前
広告配信アプリの調査術
MicroAd Developers Blog
マイクロアドの RTB 開発チームに所属しており, 普段は『Universe Ads』や『COMPASS』などの広告配信アプリを開発している酒井です。 この記事では、普段広告配信アプリの開発をしている際に発生する問題への対処や、その時に用いるツールに関して紹介します。 RTB に関して 私たちは普段 RTB 開発チームで RTB (Real Time Bidding) の開発をしています。 ここではまず RTB に関して軽く触れることができればと思います。 RTB は、リアルタイムに Web ページから送られてきたリクエストを元に広告を返す処理をするアプリケーションで、私たちが普段見ている W…
7ヶ月前
外部サービスと従業員データの整理とそれらの利活用による業務改善
MicroAd Developers Blog
マイクロアドのIT戦略グループの米田(まいた)です。 私は2022年1月末にマイクロアドを退職して他社に転職したのですが、業務委託(副業)を経て2023年10月に正社員としてマイクロアド復帰させていただき、改めてIT戦略グループで働いています。 今回は復帰してから進めている「社内で利用している外部サービスのデータ整理・管理」と「従業員データの整備」、そしてそれらのデータを利活用した業務改善を紹介させていただきたいと思います。 外部サービスのデータ整理・管理 Google Workspace Atlassian製品 Dialpad Workplace Slack 従業員データの整理 データ利活用…
8ヶ月前
Fake Report で使われている任意の組み合わせをランダムに選択する仕組み
MicroAd Developers Blog
はじめに 京都研究所のTechlabに所属するエンジニアの I です。 ChromeのPrivacy Sandboxには広告クリックまたは広告視聴が、広告主サイトでの購入などのコンバージョンにつながった タイミングを測定するAttribution Reporting API が含まれています。 このAPIのEvent-Levelレポートの機能は、プライバシーを保護するため、ノイズとして偽レポートを通知することがあります。 この偽レポートはランダムに数値を選ぶことから始まり、ユーザが設定した条件に基づいてランダムな組み合わせを生成します。 組合せをどのように選ぶのかという点で Chromiumの…
8ヶ月前
OTFSG Tokyo Meetup #2 で「Kafka ConnectのIceberg Sink Connector」をテーマに発表してきた
MicroAd Developers Blog
マイクロアドの京都研究所からリモートで働いているインフラ開発ユニットの永富 id:yassan0627 です。 3/1に開催されたOpen Table Format Study GroupのMeetupの第2回目にて、「Kafka ConnectのIceberg Sink Connector」をテーマに話してきました。 今回は、その紹介です。 otfsg-tokyo.connpass.com Open Table Format Study Group(OTFSG) について 私の発表について Kafka Connectとは Iceberg Sink Connectorとは お試し環境について …
9ヶ月前
Spark Connectの検証における知見と課題
MicroAd Developers Blog
マイクロアドでサーバーサイドエンジニアをしている高橋です。 PySpark x Spark Connectの検証によって知見が溜まってきたので共有します。 検証に至った経緯は別の記事で紹介しています。 developers.microad.co.jp Spark Connect関連の情報は検索してもまだ少なく、試行錯誤しながら進めています。 この記事が少しでも参考になれば幸いです。 構成 知見 Spark Connect server起動時にオプションを全て渡さなければならない Decimal型の列同士の四則演算で精度が変わる Hiveのクエリ・UDFが使える 課題点 構成 今回想定する構成は…
9ヶ月前
Googleマウンテンビュー本社でPrivacy Sandboxのディスカッションをしました
MicroAd Developers Blog
こんにちは。京都研究所・TechLabの中野です。 1/30、31にGoogleマウンテンビュー本社で開催されたPrivacy Sandboxのディスカッションに参加してきました。 Privacy SandboxのAPIの設計や開発に関わるGoogleの担当者がマウンテンビュー本社に集まり、マイクロアドのようなテスター企業と直接APIについて議論をするイベントです。 国内から数社が招待され、現地参加はマイクロアドを含めた2社でした。 技術的な内容が中心ということもあり、マイクロアドからはエンジニア2名で参加しました。 約50個の事前質問への回答や15分程度のプレゼン準備など、事前準備はなかなか…
10ヶ月前
Vue.jsでのコンポーネント設計を社内標準化してみた話
MicroAd Developers Blog
はじめに システム開発部フロントエンドエンジニアの工藤です。 マイクロアドの WEB アプリケーションのフロントエンドは、大半を Vue.js を用いて開発しています。 以前、社内標準化の取り組みについて取り上げましたが、今回は、そこでの策定内容でもあるVue.jsでのコンポーネント設計についてお話していきます。 developers.microad.co.jp Vue.jsによる設計 まずは、フロントエンドのコンポーネント設計でよく見かける「Atomic Design」をお試し採用しました。結論としては、pagesとtemplates, moleculesとatomsの区別が難しいのに対して…
10ヶ月前
Vertex AI Pipelinesを用いたMLバッチのディレクトリ設計
MicroAd Developers Blog
はじめに こんにちは。マイクロアドで機械学習エンジニアをしている大庭です。 マイクロアドの機械学習チームでは機械学習関連のバッチ実行に Vertex AI Pipelines というGoogle Cloud Platformが提供するマネージドのワークフロー実行サービスを利用しています。 Vertex AI Pipelinesを利用した機械学習プロジェクトはワークフローを管理するためにディレクトリ構成を工夫する必要があるのですが、新しいサービスなため設計関連の情報が少ないと感じています。 そこで今回の記事ではディレクトリ設計の一例としてマイクロアド運用している構成を紹介します。 はじめに Ve…
1年前
Protected Audience APIとK匿名性
MicroAd Developers Blog
はじめに Protected Audience API Protected Audience APIとは Protected Audience APIの処理フロー (1)InterestGroupの登録 (2)OnDeviceAuctionの実行 (3)FencedFrameで広告の表示 (4)Reportの送信 K匿名性 K匿名性とは Protected Audience APIにおけるK匿名性 もしK匿名性の制限がない場合 K匿名性サーバー K匿名性サーバの2つのエンドポイント Join Query AboveThresholdWithPeriodicRestartアルゴリズム Chrom…
1年前
マイクロアドの広告配信アプリ開発チーム「RDU」を新卒視点で語りたい記事
MicroAd Developers Blog
この記事では、マイクロアドの広告配信アプリ開発を担うチーム RDU について 新卒入社者の視点から分かりやすく書いていきます。 どうぞお付き合いください。 はじめに 高橋と申します。昨年マイクロアドに新卒入社し、 現在は広告配信アプリ開発チームでアプリケーションエンジニアとして働いております。 部署には他にも高橋さんが多いため、名前で呼ばれています。 自己紹介 RDU歴:6ヶ月 趣味:将棋(三段)/AtCoder(水)/ピアノ/ポケモンカード/フットサル部・テニス部・麻雀部所属など 最近の目標:Scalaをサラサラっと書けるようになること マイクロアドのシステム開発部には、BDU / RDU …
1年前
2023年アドベントカレンダー完走記念におすすめ記事紹介
MicroAd Developers Blog
新年あけましておめでとうございます。 マイクロアドのシステム開発部で、広報委員会の委員長をしている キガワ(id:takahiro_kigawa)です。 年を跨いだ後でのご報告となりましたが、2023年のアドベントカレンダーも例年通り無事完走出来ました! qiita.com 前回同様、振り返りとして気になった記事を広報委員会メンバの中から代表3名が紹介していくスタイルでお送りさせていただきます! それではどうぞ! 広報委員会メンバの推しエントリー SONiCのイメージをビルドしてGNS3で使ってみた #Network - Qiita 大規模言語モデルを量子化してRustで動かしてみる Rust…
1年前
S3互換ストレージ Apache Ozoneについて
MicroAd Developers Blog
はじめに マイクロアドのシステム開発部でインフラエンジニアをしているキガワです。現在マイクロアドではデータプラットフォーム事業を支える大規模な基盤(以下データ基盤)を移行計画中です。 現在のデータ基盤はHadoopエコシステムで実現されており、次期データ基盤ではコンピューティングとストレージを分離する構成を検討中です。 コンピューティング部分についてはマイクロアドで書かれた以前のブログ記事があるので、興味がある方はそちらをご覧ください。 ストレージ部分についてはS3互換のストレージ製品を検討しており、今回はその中で検証したApache Ozoneについて概要をご紹介します。 はじめに Apac…
1年前
【新卒エンジニア向け】マイクロアドエンジニアの技術スタック(バッチ開発ユニット編)
MicroAd Developers Blog
こんにちは! システム開発部BDU(BigData Development Unit)でアプリケーションエンジニアをしている高橋です。 主にマイクロアドが気になっている社外のエンジニアの方やマイクロアドの新入社員の方向けに、自分たちのユニットが使っている技術について共有します。 メインは大規模データを取り扱うバッチ開発の話になるので、広告配信に興味のある方は以下の記事をご覧ください。 developers.microad.co.jp BDU(以降「バッチ開発ユニット」と呼ぶ)では主にETL/ELT1処理のバッチを開発しています。 広告配信ログやアクセスログなどのデータを元にして、適切な形に加工…
1年前
Spring BootとKotlin開発における結合テストの自動化について
MicroAd Developers Blog
はじめに はじめまして。マイクロアドシステム開発部UDU(UI/UX開発ユニット)でアプリケーションエンジニアをしている崎元です。 今回は、私の所属するユニットでの自動テスト推進についてお話していきます。 まずは、お話を始めるにあたってマイクロアドシステム開発部でのテスト方針について触れさせていただきます。 目次 はじめに 目次 自動テストピラミッド このように変えた時に得られるメリット このように変えた時のデメリットは短期的な工数 テスト自動化の対応状況 結合テスト自動化 開発環境 GETの結合テスト 使用例 説明 POSTの結合テスト 使用例 説明 注意事項 今後の展望 自動テストピラミッ…
1年前
QPS制御の仕組みの改善
MicroAd Developers Blog
こんにちは。京都研究所・Tech Labの郭です。 今回は、マイクロアドが提供するCOMPASS(SSP1)の中に、取り組んでいるQPS制御仕組みの改善を紹介します。 COMPASS COMPASS紹介 QPS制御について 以前のQPS制御の仕組み 全体像 その仕組みの問題点 改善後のQPS制御の仕組み 全体像 詳細説明 ① 流量を書き込み ② 制御量を書き込み ③ 制御量を読み込み 結果 改善前 改善後 残課題 最後に COMPASS紹介 COMPASS マイクロアドのCOMPASSプロダクトは、メディアの広告配信の最適化と、包括的な管理をすることで広告収益を最大化する、次世代のサプライサイ…
1年前
広告キャンペーンの日予算分配の自動化
MicroAd Developers Blog
はじめに こんにちは. マイクロアドで機械学習エンジニアをしている福島です. 主にReal-Time-Bidding (RTB)における入札最適化の研究・開発などを担当しています. マイクロアドが提供する広告配信プラットフォーム(DSP)であるUNIVERSE Adsには予算管理の仕組みがいくつかあります. 今回はその中で配信制御のための自動予算分配について紹介します. はじめに UNIVERSE Adsにおける広告の構成 キャンペーン予算の最適分配 分配率最適化問題として定式化 予算分配後の配信制御 おわりに UNIVERSE Adsにおける広告の構成 UNIVERSE Adにおける広告は以…
1年前
運用作業を安全にするChrome拡張のススメ
MicroAd Developers Blog
はじめに マイクロアドでサーバサイドエンジニア 兼 システム開発部の副部長をしている奈良橋です。 今回は社内運用が(わずかにですが)安全になるようなChrome拡張機能を作成しました。 この経験を通じて(差し出がましく恐縮ですが) わずかな手間でもChrome拡張機能が作成できるといった知見や、様々なWebUIを安全に運用するためのきっかけを提供させて頂きます。 ※ 本ブログの内容はDigdagのWebUIを例に書かれていますが、WebUIが存在するものは全般応用できるものになっております。 話のきっかけ 軽く前提にも触れますと、マイクロアドではバッチ処理のワークフローやジョブスケジューラーと…
1年前