MicroAd Developers Blog
https://developers.microad.co.jp/
マイクロアドのエンジニアブログです。インフラ、開発、分析について発信していきます。
フィード

保守運用を楽にするデザイントークン導入
MicroAd Developers Blog
マイクロアドでフロントエンドエンジニアをしている大石です。 フロントエンド領域で欠くことのできない"デザイン"に課題はありませんか? 仮実装フェーズから最終成果物まで、非デザイナーでもデザインを行うケースは多々あります。 非デザイナーのフロントエンドエンジニアでも、根拠を持ってUIを組み立てられる仕組みがあると開発が一気に楽になります。 今回は、Vue.jsを採用しているプロダクトでデザイントークンを導入し、デザインと開発のワークフローを改善したプロセスを共有します。 TL;DR 課題: デザインプロセスに明確なルールがなく、スタイルの一貫性とアクセシビリティが崩れていた 解決策: デザイント…
3日前

Trinoのタイムアウトエラーを解決するAirliftの設定について
MicroAd Developers Blog
TL;DR Trinoで時々発生するメモリ管理関連のタイムアウトエラーは、ドキュメントに記載されていない memory-manager.http-client.request-timeout パラメータを設定することで解決できることがあります。 # config.properties(Coordinatorのみ) memory-manager.http-client.request-timeout=60s ただし、この設定はCoordinatorでのみ有効です。Kubernetes Helm Chartを使用する場合、additionalConfigPropertiesではなくserver.c…
17日前

HAProxy で提供する Rancher × Kubernetes エンドポイント
MicroAd Developers Blog
はじめに プラットフォームエンジニアリングユニットの齊藤(id:saitoperf)です。 マイクロアドでは、複数の Kubernetes (K8s) クラスタを Rancher から構築・管理しています。 Rancher は、OSS の K8s クラスタ管理ツールで、クラスタの状況確認や UI 上からのバージョンアップなど、運用を効率化する様々な機能を提供しています。 今回は、Rancher で構築した複数の Downstream cluster1 のエンドポイントを、HAProxy を用いて提供・集約する方法を紹介します。 はじめに 対象読者 前提知識 HAProxy が必要になった背景 …
1ヶ月前

GitHub Copilot を活用した開発効率化のプラクティス
MicroAd Developers Blog
マイクロアドで広告配信システムのバックエンド開発をしている飛田です。 私たちの開発チームでは、GitHub Copilotを中心としたAIアシスタントを活用しています。試行錯誤を重ねる中で効果的だったプラクティスを、今回はいくつかご紹介します。 まだまだ模索中の部分も多いですが、何かの参考になれば幸いです。 本記事のポイント 本記事では、以下の2つの観点からGitHub Copilotの活用方法をまとめています。 観点 内容 コンテキストの重要性 Copilotの効果を高めるためには、仕様書や関連コードなどの背景情報を適切な形で提供することが重要だと考えています。Atlassian MCPや関…
1ヶ月前

マイクロアドにおける生成AIの活用事例
MicroAd Developers Blog
はじめに こんにちは!マイクロアドのシステム開発部の酒井です。 ここ数年、ChatGPTをはじめとする生成AIが大きな話題になっていますね。マイクロアドでも、日々の開発業務で生成AIを活用しています。使ってみると想像以上に便利で、もはや日常でも手放せないツールになっています。 この記事では、マイクロアドの開発で主に使っているGemini Enterprise(旧Google Agentspace)とGitHub Copilotという2つの生成AIツールについて、どんな場面でどのように活用しているのかをご紹介します。「生成AIって実際の開発現場でどう使われてるの?」という疑問をお持ちの方の参考に…
2ヶ月前

時系列データ同化手法のまとめ:カルマンフィルタから融合粒子フィルタまで
MicroAd Developers Blog
こんにちは. マイクロアドで機械学習エンジニアをしている崎下です。 時間によって変わる広告配信リクエスト量に応じて適切に配信量を調整するためのシステムの開発を担当しています。 今回は時間変化するデータの評価手法としてカルマンフィルタについての勉強会を実施したため、その内容をまとめてご紹介します。 本記事の構成 本記事では、時間変化するシステムの状態を評価するための手法として、カルマンフィルタとその拡張手法を取り上げます。 基礎となる状態空間モデルの定式化から始め、以下の流れでまとめます。 参考書として樋口知之『データ同化入門』を主に参照しています。 状態空間モデル 時系列観測データの背後に隠れ…
3ヶ月前

CTR予測でも Target Encoding は大事だという話
MicroAd Developers Blog
はじめに こんにちは。マイクロアドで機械学習エンジニアをしている前田、簀河原です。 この記事では、マイクロアドにおける Click Through Rate (CTR) 予測の精度および安定性向上のために Target Encoding を活用した事例を紹介します。 はじめに CTR予測とは Target Encoding Greedy Target Encoding Leave-one-out Target Encoding K-fold Target Encoding Holdout Target Encoding Ordered Target Encoding マイクロアドにおける事例 …
3ヶ月前

25卒新卒研修 日程調整アプリ開発
MicroAd Developers Blog
はじめに はじめまして!25 卒新入社員(入野、森田)です! 私たちは新卒開発研修にて日程調整アプリ「525」を開発しました! 今回の技術ブログでは、日程調整アプリ「525」についてご紹介していきます。 開発研修について マイクロアドの新卒エンジニアは、4 月にビジネス職・エンジニア職合同での全体研修を終えた後、エンジニア職の講義研修を経て開発研修に移ります。 今年度の開発研修は 5 月上旬から 7 月上旬までの約 2 か月間、新卒 2 人で 1 つのチームとなり、アプリケーション開発に取り組みました。 この開発研修では、キックオフミーティングでテーマや要望を聞き、仕様作成、開発、テスト、リリ…
4ヶ月前

Cloud Load Balancing(CLB)にOAuth2認証を導入した話
MicroAd Developers Blog
はじめに こんにちは!マイクロアドでインフラエンジニアをしている大泉です。 今回はGoogle CloudのCloud Load Balancing(以下、CLB)にOAuth2認証を導入したお話をします! 背景として、権限分掌の観点から、ネットワーク構築を担当するチームとアプリケーション構築を担当するチームでプロジェクトを分けて運用しています。 各アプリケーションごとに個別のネットワーク接続を構成すると管理・運用が複雑になるため、共有VPCホストプロジェクトがネットワーク接続を一元的に担い、各アプリケーションのVPCはこの共有VPCを経由して通信する構成としています。 こちらがCLB導入前の…
4ヶ月前

GCP外のSparkからBigQueryにデータを転送する
MicroAd Developers Blog
はじめに マイクロアドでサーバーサイドエンジニアをしている高橋です。 Apache Spark SQL connector for Google BigQuery(以下spark-bigquery-connector)でSparkからBigQueryにデータを転送する際に、ドキュメント通りでもうまくいかない部分がありました。 そこで本記事では実際に転送できた設定例を紹介します。 タイトルのとおりですが、本記事ではGCP(Google Cloud Platform)外で動作するSparkからBigQueryへのデータ転送について扱います。 はじめに 経緯 使用するライブラリや環境 Spark s…
5ヶ月前

小規模から始めるSlack Boltでのアプリケーション開発
MicroAd Developers Blog
はじめに こんにちは。システム開発部 新規プロダクト開発ユニット(NDU)の東です。 NDUはその名の通り、新規プロダクトを開発するユニットです。 新規プロダクトの立ち上げにおいて、開発部門は効率的な開発で迅速なローンチを行うことを目標の1つとして開発をしています。 この記事では、Slack Bolt for JavaScript (Node.js) を使って、小さなSlackアプリケーションを開発する第一歩を踏み出す方法をご紹介します。 Slack Boltとは Slack Boltは、Slackが公式に提供しているアプリケーション開発のためのフレームワークです。 Boltを利用することで、…
5ヶ月前

Parquet形式への変換処理におけるストレージI/O削減
MicroAd Developers Blog
はじめに マイクロアドでサーバサイドエンジニアをしているタカギです。 この記事は、JSON形式の生ログをParquet形式へ変換する際に発生する膨大なI/Oを削減した話になります。 背景 マイクロアドではデータ基盤移行プロジェクトを進めてきました。 様々な検証が進められるなか、懸念点として浮上した話が、ストレージI/O問題でした。 当時のデータ基盤の処理をそのまま移行した場合、I/O性能が処理量に追い付かない可能性がありました。 しかしながら、新データ基盤ではS3互換ストレージ(非常に高価)を使用しており、増設は可能な限り避けたい状況でした。 ということで、いかにしてI/Oを減らすことができる…
6ヶ月前

Vue I18n の肥大化した翻訳ファイルを、分割管理でスッキリ解決した話
MicroAd Developers Blog
はじめに こんにちは、マイクロアドでサーバサイドエンジニアをしている藤田です。 Vue I18n を使った多言語対応は非常に便利ですが、プロジェクトが成長するにつれ、翻訳メッセージファイルの管理に頭を悩ませることはありませんか? マイクロアドが提供しているプロダクトの 1 つに、 メディア事業者向けのサプライサイドプラットフォーム MicroAd COMPASS があります。 このプロダクトのリニューアルプロジェクトでは、多言語対応するためのライブラリとして Vue I18n を採用しています。 しかし、プロジェクトが進むにつれ、対応言語や翻訳対象のテキストの増加に伴って翻訳メッセージファイル…
9ヶ月前

MAASで物理サーバのOSデプロイをワンクリック自動化!らくらく検証環境構築
MicroAd Developers Blog
はじめに こんにちは!マイクロアドでインフラエンジニアをしている大泉です。 今回はオフィスのサーバルームに検証環境を構築する中で、OSのデプロイを簡単に行えるツールが非常に便利だと感じたので、ご紹介します。 リモートでOSを入れる環境を用意しない場合、USBにイメージを入れて手作業でデプロイしたり結構手間がかかります。 1台あたり30分、10台で5時間程度かかります。 さらに何十台も行う場面だと、膨大な時間と手間がかかってしまいます。 それでは、時間と手間を省くためにどうしたか、お話していきます! はじめに OSデプロイの時間と手間を省くツール MAASとは 実際に使ってみた 検証環境のネット…
10ヶ月前

OpenAPIからTypeScriptの型定義を作る: APIファースト開発の効率化
MicroAd Developers Blog
システム開発部新規プロダクト開発ユニット(NDU)の大石です。 NDUはその名の通り、広告事業に関わらない様々な新規事業に関するサービスの開発・立ち上げを担当するユニットです。 新規事業の立ち上げではスピードが重視され、NDU では効率的な開発で迅速なローンチを目標の1つとして開発をしています。 今回はBtoB企業向けの商談獲得ツール「ショウグン」の開発で行ったAPIの型定義の効率化について紹介いたします。 ショウグン OpenAPIとAPIファースト開発 NDUをはじめ、マイクロアドの様々なプロジェクトでOpenAPIを用いたAPIファーストな開発を取り入れており、ショウグンでも採用していま…
10ヶ月前

Vue 3 移行の技術 Tips
MicroAd Developers Blog
Vue 3 移行の技術 Tips はじめに 半年前に弊社の画面プロジェクトの Vue 3 移行を担当した郭です。 本記事では、移行時に得た知見を整理し、実践的な技術 Tips を共有します。 全体的な移行アプローチ 試行錯誤の結果、公式の移行ガイドを活用するのが最もスムーズな方法でした。日本語版も提供されており、非常に参考になります。 Vue 3 移行ガイド また、Vue 3 への移行は単なるバージョンアップではなく、環境の整備やライブラリの更新、テストの強化を含む包括的な作業となりました。スムーズな移行を実現するため、以下のフローを採用しました。 テスト環境の強化 Node.js, Webp…
1年前

DEIM2025 参加レポート
MicroAd Developers Blog
はじめに マイクロアドは「DEIM2025(第17回データ工学と情報マネジメントに関するフォーラム)」にゴールドスポンサーとして協賛させていただきました。 オンラインでは技術報告の発表を行い、オンサイトではスポンサーブースを出展し、多くの方々と交流することができました。 今回の記事では、その参加レポートをお届けします! 技術登壇 [9A] [9A]連合学習 | DEIM2025 第17回データ工学と情報マネジメントに関するフォーラム | Confit にて「マイクロアドのデータ基盤とその構成について」というテーマで登壇しました。 マイクロアドではオンプレミスでのデータ基盤をHadoopベースで…
1年前

CloudNative Days Winter 2024参加レポート
MicroAd Developers Blog
システム基盤開発グループの永富(id:yassan0627) と 齊藤(id:saitoperf) です! 今年はCloud Nativeな年になりそうです。 理由としては、今年の5月は沖縄で CloudNative Days Summer 2025 が開催され、また、6月に東京で KubeCon + CloudNativeCon Japan 2025 が開催されます。 cloudnativedays.jp events.linuxfoundation.org もう今年はCloud Nativeな年と言っても過言ではありません! そこで、そんなビックイベントの前に、昨年の年末 11/28-29…
1年前

動画広告配信システムをScala 3に移行する
MicroAd Developers Blog
こんにちは。株式会社マイクロアドでソフトウェアエンジニアをしています、入社一年目のid:kobayashi-tomoakiです。 私たちはインターネット広告の配信システムをマイクロサービスアーキテクチャで開発しており、主にScalaを開発言語として使用しています。 この度、当該システムの一部を構成するScala 2を使用した動画広告配信サービス*1について、Scala 3への移行を実施しました。 今回は、その移行プロセスやその作業で得た知見についてレポートします。 導入 VASTによる動画広告配信とは 動画広告配信システムのScala 3移行の手順 移行準備 本移行 Scala 3移行における…
1年前

アドベントカレンダー完走 2024
MicroAd Developers Blog
あけましておめでとうございます。 マイクロアド システム開発部 の 奈良橋 です。 昨年 年末のことになりますが 今年も MicroAd (マイクロアド) Advent Calendar 2024 を完走しました! qiita.com パチパチパチ👏。 ということで、私の目線でMicroAd (マイクロアド) Advent Calendarを振り返ります。 振り返り キーワードによる投票傾向 以下は投稿内容を独断と偏見によるキーワードで分類し、降順にソートしてみたものです。 - Kubernetes系 5記事 - Python 5記事 - 生成AI 3記事 - DuckDB 2記事 - Dig…
1年前

ACM RecSys'24 参加レポート
MicroAd Developers Blog
はじめに こんにちは。マイクロアドで機械学習エンジニアをしている新卒の簀河原です。 この記事では、イタリアはバーリ(Bari)で開催されました ACM RecSys'24 の参加レポートと、広告業界のMLエンジニア目線で興味を持った研究発表を紹介します。 ACM RecSysとは ACM RecSys(The ACM Conference on Recommender Systems)は、推薦システム分野に特化した国際会議です。 2007年にスタートしたRecSysでは、現在の推薦システムの中核をなす技術が数々発表されています。 研究や実務で推薦システムを専門としている方は、RecSysで発表…
1年前

24卒新卒研修 1on1管理アプリ開発
MicroAd Developers Blog
はじめに はじめまして!24卒新入社員(小林、崎下、簀河原、髙橋、本間、前田、大泉、齊藤)です! 私たちは新卒開発研修にて1on1管理アプリ「サシログ」を開発しました! 開発にあたって、24卒は開発チーム(小林、崎下、簀河原、髙橋、本間、前田)とインフラチーム(大泉、齊藤)に分かれて作業しました。 今回の技術ブログでは、開発チームの髙橋とインフラチームの大泉が1on1管理アプリ「サシログ」についてご紹介していきます。 はじめに 開発研修について 1on1管理アプリの開発の背景 開発チームでの開発の流れ 基本設計 画面設計 画面遷移図 ER図 主要技術 サシログの機能の概要 こだわりの機能 リッ…
1年前

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の数学機能を学ぼう…
1年前

24卒インフラ研修:監視編
MicroAd Developers Blog
📢<技術ブログを更新しました今回の記事は「24卒インフラ研修:監視編」です。新卒研修を通じて学んだマイクロアドの監視構成について紹介しています!#MicroadDev #はてなブログ #監視
1年前

Redis Pipelineによる通信を解析してみる
MicroAd Developers Blog
はじめに こんにちは。マイクロアドでソフトウェアエンジニアをしている飛田と申します。 最近、業務でストリーム処理アプリケーションのスループットを改善する必要がありました。特に、一つのリクエストに対して複数回Redisへの参照や書き込みを行う必要があるアプリケーションだったため、Redis周りの処理時間がボトルネックとなっていました。そこで、Redis Pipelineを導入したところ、パフォーマンスの向上を実感しました。 リリース後、Pipelineがどのように効率化を実現しているかをさらに理解したくなり、通信の仕組みを解析することにしました。 本記事では、Redis Pipelineの基本的…
1年前

現代のヒープメモリ管理 〜GCと所有権〜
MicroAd Developers Blog
こんにちは。マイクロアドで機械学習エンジニアをしている大庭です。 今回の記事では多くのプログラミング言語で採用されているメモリ管理機能である「ガベージコレクション」とRustで導入され現在注目されている「所有権」について、最近調べる機会があったため備忘録を兼ねてまとめてみようと思います。 スタック領域とヒープ領域 スタック領域 ヒープ領域 ヒープ領域の管理方法 ガベージコレクション 参照カウント マーク・アンド・スイープ コピーGC 世代別ガーベージコレクション 所有権 所有権の原則 スコープによる値の解放 所有権の移動 所有権の弊害 参照と借用 可変な参照 所有権のまとめ おわりに スタック…
1年前

24卒インフラ研修:サーバ構築・運用編
MicroAd Developers Blog
はじめに マイクロアド24年新卒インフラエンジニアの齊藤(id:saitoperf)です。 今回は、インフラ研修やその後の業務で学んだ「サーバ構築・運用周りの技術スタック」を紹介します。 マイクロアドのインフラエンジニアは現在9名で、各々得意な領域はありますが、基本的にはラックマウントや配線といった物理的なタスクから、監視基盤やミドルウェアの構築・運用までの一連に対応できます。 インフラ研修では、まずは座学やハンズオンを通して、チームメンバー全員が知っているような基礎的な知識をインプットしました。 はじめに どのようなインフラ基盤を使っているのか? ベアメタル(MAAS) AWSとGoogle…
2年前

実行中のクエリを監視するダッシュボードの作成
MicroAd Developers Blog
京都研究所の田中です。 マイクロアドでは、Redash上に作成されたクエリを利用してデータ抽出が行われています。 この記事では、Redashの利用者がクエリの混雑状況などを簡単に確認できるように作成した監視ダッシュボードを紹介します。 背景と目的 Redashから接続しているデータソースのうち、マイクロアドで最もよく利用されているのはImpala(Hadoopクラスタ上で動作する分散SQLクエリエンジン)1です。 RedashからImpalaを利用する体制で運用していく中で、 クエリの混雑状況:現在実行中のImpalaクエリの一覧や総数 クエリの進行状況:該当するクエリがいま何%くらい進んでい…
2年前

バッチアプリの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…
2年前

24卒インフラ研修:自作PC編
MicroAd Developers Blog
はじめに 初めまして。マイクロアド24年新卒インフラエンジニアの齊藤( id:saitoperf )です。 今回は、インフラ研修で取り組んだ「自作PCの性能評価」について紹介します。 インフラ研修では、パーツ選定 → 組み立て → WordPressのデプロイ → 評価実験までの流れを体験しました。 マイクロアドではオンプレが主流のため、 インフラエンジニアは「コストを意識したサーバ調達 → ラッキング → 構築後のパフォーマンスチェック」の一連に対応できる必要があります。 また、これらの作業が終わった後にも、メモリやストレージの故障といった断続的に発生するインシデントにも対応していく必要があ…
2年前