サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「#文学」
developers.microad.co.jp
はじめに マイクロアドでサーバサイドエンジニア 兼 システム開発部の副部長をしている奈良橋です。 今回は社内運用が(わずかにですが)安全になるようなChrome拡張機能を作成しました。 この経験を通じて(差し出がましく恐縮ですが) わずかな手間でもChrome拡張機能が作成できるといった知見や、様々なWebUIを安全に運用するためのきっかけを提供させて頂きます。 ※ 本ブログの内容はDigdagのWebUIを例に書かれていますが、WebUIが存在するものは全般応用できるものになっております。 話のきっかけ 軽く前提にも触れますと、マイクロアドではバッチ処理のワークフローやジョブスケジューラーとしてDigdagを利用しています。 ※マイクロアドでのバッチ開発を詳しく知りたい方はこちら developers.microad.co.jp プロダクション環境での利用はもちろんですが、検証環境用とし
マイクロアドでサーバサイドエンジニアをしているタカギです。 今回はデータ基盤移行とPySparkについての話になります。 目次 目次 データ基盤移行の概要 データ基盤移行後のバッチ処理 Spark Connectを導入する Spark Connectの問題点 まとめ 補足 データ基盤移行の概要 諸々の事情1により、データ基盤をHadoopから移行することになりました。 現在のデータ基盤でのETL/ELT処理はHadoopエコシステム(Hive、HDFSなど)を中心に構成されています。 ※Hadoopについてはこちらの記事が参考になります。 これらをKubernetes、PySpark、S3互換ストレージ(詳細未確定)を組み合わせたデータ基盤へ移行する計画です。 すぐにすべてを移行するのは難しく、完全移行までは新旧並行稼働がそれなりの期間続く予定です。 今回の記事では、PySparkを使用し
京都研究所の田中です。 マイクロアドでは、主にエンジニア以外のメンバーが広告配信実績などの各種データにアクセスする際はRedashを利用しています。 Redashを使えば気軽にクエリを作成でき、同じUIからいろいろなデータベースにアクセスしてデータを取得できます。 マイクロアドでのRedash活用については以前のブログ記事でも取り上げているのでご参照ください*1。 今回は、Redashのメタデータを使ってRedash上に作成されたクエリやダッシュボードの利用状況をモニタリングする方法をご紹介します。 Redashの利用状況をモニタリングすることの重要性 マイクロアドでRedashを使って作成されるクエリには大きく分けて次の2種類が存在します。 アドホックな分析や集計のために作成されたクエリ 定常的なレポートやデータ抽出のために作成されたクエリ 前者のアドホッククエリはエンジニアだけでなくア
はじめに アプリケーションエンジニアの Edy です。 今回は、Vue.js での開発する上で、メンテナブルな設計するために、「Container/Presentational Component パターン」を部分的に適用できないか検討した話となります。 「完全に理解」して、少しでも設計力に活かしていきたい所存です。部分的に自身の意見も取り入れつつ考えていきます。 ダニング・クルーガー効果 はじめに きっかけ コンポーネント実装のコストパフォーマンスの悪さ コンポーネントを読み解くことによる疲労蓄積 Container / Presentational パターンとは? Container Component Presentational Component 切り分け方法 実際の画面 UI にデザインパターンを適用してみる 設計する上で意識したこと まとめ - 構成を変えてどこにメリットを実
こんにちは。 マイクロアドでサーバーサイドエンジニアをしている飛田です。 今回はScalaの依存型について調査してみましたので、共有させていただきます。 依存型について調査したきっかけは、 Scalaで型レベル”だけ”でクイックソートという記事で、 こちらは型を使ってクイックソートを行う(コンパイル結果がクイックソートの結果になる)という内容になっています。 こちらを拝見して、Scalaの型の柔軟性にかなりのポテンシャルを感じましたので、 Scalaの型に関するトピックとして、「依存型」について共有させていただきます。 依存型とは 依存型とは定義が値に依存する型のことです。 例えば、以下のコードの型 hoge.T は hogeの値に依存している依存型になります。 trait Hoge { type T val t: T } val hoge = new Hoge { type T = St
こんにちは。 マイクロアドでWebエンジニアをしている木田です。 今回は、新たに着手した画面開発の業務においてつまづいたこと、その解決方法についてお話しします。 はじめに 本記事では、以下の言語・フレームワークが利用可能な状態を前提に話を進めます。 TypeScript (v3.7.3) Vue.js (v2.6.10) Composition API (v0.3.4) ※過去の記事に、Vue3に向けてComposition APIを導入した話もありますのでこちらもぜひご覧ください。 ■外部モジュールのimport文が全てコンパイルエラーとなる つまづいたこと まずは環境構築の時のお話です。 GitHubのリポジトリからcloneしてきてVSCodeで.vueファイルを開いた時にそれは起こりました。 なんと外部モジュールをimportしている箇所が全て真っ赤になっているのです。 シンタック
はじめに こんにちは. マイクロアドで機械学習エンジニアをしている福島です. 主にReal-Time-Bidding (RTB)におけるClick Through Rate/Conversion Rate(CTR/CVR)予測や入札最適化の研究・開発を担当しています. マイクロアドでは, UNIVERSE Adsというプロダクトで予算消化制御と配信効果の最大化を目的として, 数理最適化による入札関数選択を導入しました. 今回は, 新たに導入した入札最適化について紹介します. はじめに 問題設定・定式化 線形計画問題の設計 予算の分配 期待消化金額の算出 試験導入結果 終わりに 問題設定・定式化 RTBでは, 広告主とメディア間でリアルタイムにオークションが開催され, オークションに勝利したDemand Side Platform (DSP)がコストを支払い広告を表示する権利を獲得します.
京都研究所・TechLabの田中です。 マイクロアドでは、主にエンジニア以外のメンバーが広告配信実績などの各種データにアクセスする際にRedashを利用しています。 Redashから接続しているデータソースには、以前このブログでも紹介した分析用Hadoopクラスタ*1に加えて、MySQLのレプリやBigQueryなどがあります。 これらの異なるデータソースに対してRedashからは同じインターフェースでアクセスでき、手軽にデータの抽出や可視化・分析などが可能です。 また、クエリで抽出したデータを利用して、Redash上にダッシュボードを作成することもできます。 本稿では、そんなRedashの活用方法の1つとして、 スケジューリング機能とキャッシュ機能を利用した簡易的なデータパイプラインを使ってダッシュボードを作成する例をご紹介します。 なお、この記事で扱うRedashの説明はバージョンv1
お久しぶりです。フロントエンドエンジニアの川上です。 業務では、UNIVERSE Ads のフロントエンド開発、フロントエンドの開発環境改善などを担当しています。 はじめに TypeScriptの導入について 導入にメリットがあると結論を出した理由 ① フロントエンドでテスト駆動様開発が可能になる ② Vueコンポーネント に対して TypeScript の恩恵を与えられる 具体的に解説 1つ目のメリットについて 2つ目のメリットについて おわりに はじめに マイクロアドには様々なプロダクトがありますが、私の担当している UNIVERSE Ads について、 フロントエンドフレームワークにVue.js を利用しています。 jp.vuejs.org 開発構成としては、MVVMでバックエンドとフロントエンドはそれぞれ、Spring Boot(Kotlin, Java), Vue.js(Type
はじめに 機械学習エンジニアの大庭です。普段はマイクロアドが提供する広告配信プラットフォーム UNIVERSE Ads に接続する機械学習 API の研究開発をしています。 マイクロアドでは、機械学習モデルの学習側との連携が容易なこととメンテナンス性を重視して Python で機械学習 API を実装しています。Python は使いやすい反面、基本文法は速いとは言えない言語です。そのため、実行時間制約の厳しい Real Time Bidding (RTB) のなかで使うには高速化を意識しておく必要があります。今回は様々ある Python の高速化手法の理解と整理のため記事にしました。 個人的にですが、Python の高速化は以下の手順で行っていくのがいいと思っています。この記事では、この手順毎に便利なツールやライブラリをまとめました。 ボトルネックの特定 計算量(オーダー)を減らす コード
京都研究所・TechLabの今村です、本記事ではGoogleが提案するCookieレス広告技術FLEDGEについて簡単な実装コードを交えて説明します。 FLEDGEとは FLEDGEでの広告表示フロー WebAssemblyについて FLEDGEの広告入札を実装する まとめ FLEDGEとは GoogleはChromeでの3rd party cookieの廃止を2023年後半に予定しています。1 3rd party cookieの廃止はプライバシーの保護に役立つ一方、広告への依存度が高い無料サイト・サービスはビジネス的に大きな影響を受けます。 そこでGoogleはユーザのプライバシーを保護しつつ、広告ビジネスを維持するための代替技術をプライバシーサンドボックスとして提案しており、 FLEDGE2はその1つになります。 FLEDGEはWeb広告の中で「リターゲティング広告3」を3rd par
はじめに サーバサイドエンジニアの酒井です. 普段はマイクロアドが提供する広告配信プラットフォーム UNIVERSE Ads の DSP 部分の開発をしています. 今回は JVM 言語におけるマルチスレッドプログラミングに関するいくつかの用語の理解と整理を兼ねて記事にします. 背景 まず Real-Time-Bidding (RTB) についてですが, RTB では大量のリクエストが送られてくる中でレスポンスタイムの制約が 100 ms 以内と非常に制約が厳しいです. そのような環境の中マイクロアドの DSP 開発では, レスポンスタイムとスループットの二つのパフォーマンス指標の制約を常に満たすことが非常に重要になっています. この制約を満たせるようアプリケーションのパフォーマンスを上げるため, マルチスレッドプログラミングが用いられることはよくあります. また, マイクロアドの DSP
はじめに マイクロアドでサーバサイドエンジニアをしているタカギです。 今回はPythonアプリから参照するデータをMySQLからBigQuery1へ切り替えた話になります。 背景 マイクロアドでは様々なデータを扱っています。 広告配信で発生するログはCDH2に蓄積および集計され、その後MySQL、Redis、分析用CDHクラスタ、BigQueryなど別のデータベースに転送され、分析や請求など様々な用途に利用されます。 その中の1つに、1日で1500万件弱のレコード数を扱うMySQLのテーブルがあり、とあるapiからの参照クエリのレスポンス速度が問題になっていました。 その対応策として、データソースをMySQLからBigQueryへ切り替えることになりました。 これまでもBigQueryへデータ転送することはありましたが、アプリケーションからBigQueryを参照するという点で新しい試みでし
はじめに インフラエンジニアの長田です。今回は、MySQL Shellで提供されている種々の便利な機能をコマンドラインで実行する方法について紹介したいと思います。 MySQL Shellとは MySQL Shellは、公式に提供されている新しいMySQLのコマンドラインクライアントで、従来の mysql クライアントと同様にSQLによるデータベースの操作に加え、JavaScriptまたはPythonによる操作を行うためのMySQL Shell APIを備えています。 その中の一つである util グローバルオブジェクトには、これまでのバージョンアップにより、並列スレッドで実行する高速なダンプ・リストア、テーブルデータのインポート・エクスポートなどといった便利な機能が追加されています。 MySQL ShellはWindows、Linux、macOS向けに提供されています。 dev.mysql
はじめまして!今年マイクロアドに入社してサーバーサイドエンジニアとしてバッチ開発を担当している根本( id:realyutanemoto )といいます! 今回は、マイクロアドのバッチ開発で利用している静的コード解析ツールのmypyについてのご紹介です。 はじめに バッチ開発で使っているリンター・フォーマッターなど yapf mypy flake8 最強の型チェッカーmypy mypyで型チェックしよう 最近のmypy オプションの追加 エラーコードの有効化/非有効化 特定のファイル/ディレクトリをビルドから除外 スタブパッケージの自動インストール 確認不要のスタブパッケージの自動インストール Pythonのサポート対象バージョンの変更 stdlibのモジュール以外に対してのスタブをmypyが提供しなくなる メソッドや変数の型範囲を狭めやすくなった type(x) を用いた型範囲の決定 Ty
はじめに 初めまして。マイクロアド21年新卒インフラ担当の森( id:bosq )と申します。 7月に新卒研修を終えてからは、基盤開発グループにて日々勉強しています。 配属後は新しいことのインプットが多いため、今回は学んだことの整理とアウトプットを兼ねて、マイクロアドのデータ基盤で利用しているHadoopについて紹介したいと思います。 はじめに 分散処理基盤 Hadoop / CDH とは Hadoop エコシステム データストレージ (HDFS) と リソース管理 (YARN) HDFS (Hadoop Distributed File System) YARN (Yet Another Resource Negotiator) ノードの役割 分散処理エンジン (MapReduce, Tez, Spark) MapReduce Apache Tez Apache Spark クエリエンジ
はじめに こんにちは。マイクロアドでソフトウェアエンジニアをしている田口と申します。 私が所属しているチームでは COMPASS というプロダクトに関する開発をメインで行っており、広告配信システム(Scala)、管理画面(Kotlin・Java)、バッチ系(Digdag(Python)・Spark Streaming(Scala)) ...etc など幅広い分野を担当しています。 担当しているプロダクトの中で広告配信システム(Scala)は、2014年に初期実装され現在(2021年)まで追加改修を継続的に行っているプロダクトになります。2019年の後半に「そろそろ刷新しよう」という声が上がり粛々と基盤固めを進めていましたが、他のプロダクトが落ち着いた今、ようやくチーム一丸となって広告配信システムのリプレイスに取り掛かり始めています。 今回のリプレイスでは Scala の関数型ライブラリであ
はじめに マイクロアドでインフラエンジニアをしている柏木です。 マイクロアドでは広告配信に高速なKVSであるRedisを使用しています。 Redisはシングルスレッドでの高速性、安定性を売りにしていました。しかし6.0でマルチスレッド機能であるThreded I/Oが追加されました。 広告配信で多用している、Redisを高速化できるのであれば積極的に導入したいので検証を行いました。 はじめに Threded I/Oとは シングルスレッドでのRedisの処理 マルチスレッドでのRedisの処理 io-threads io-threads-do-reads + io-threads 検証環境 OSの追加設定 今回の検証結果 前提条件 指標の取得方法について loopbackアドレスを利用した検証 実行CPUの指定 Redisの起動コマンド Redisのconfigについて 暖機運転 検証1:I
こんにちは、マイクロアド機械学習エンジニアチームの河本(@nnkkmto)です。今回、モデル学習における課題解決に向けて GCP における機械学習基盤に AI Platform Pipelines (Kubeflow Pipelines) を導入しました。今回はその内容について紹介します。 従来の方法 抱えていた課題 手段:AI Platform Pipelines 導入時の方向性 導入内容 実行処理 CI / CD 終わりに 参考 従来の方法 マイクロアドでは学習実行基盤として GCP (Google Cloud Platform) を採用しています。 定期的な学習が必要な推論モデルは、 AI Platform Training の単一の job として学習処理の含まれるイメージを cron 実行することで行っていました。 デプロイ・実行をまとめると以下のような構成になっています。 抱え
はじめに こんにちは. マイクロアドで機械学習エンジニアをしている福島です. 主にReal-Time-Bidding (RTB)におけるClick Through Rate/Conversion Rate(CTR/CVR)予測や入札最適化の研究・開発を担当しています. 今回はCTR/CVR予測の学習にFocal Loss [Tsung-Yi Lin et al., 2017]と呼ばれる損失関数を使ってみたのでその結果を紹介したいと思います. はじめに Focal Lossとは CTR/CVR予測にFocal Lossを用いることのモチベーション Focal Lossによるcalibrationの改善 検証 LightGBMで自作の目的関数を用いる calibrationの評価指標 実験 まとめ Focal Lossとは 一般的にCTR/CVR予測は学習データ中でclick/conversi
京都研究所・TechLabの田中です。マイクロアドでは、先日正式提供を開始した*1UNIVERSE Adsの開発と並行して、UNIVERSE Adsのサービス監視用の基盤も整備してきました。 今回はそんなUNIVERSE Adsの監視基盤の概要をご紹介します。 サービス監視の必要性 監視対象となるサービスの構成 サービス監視の方針 監視基盤の構成 データの収集 ストレージ 可視化 アラート 監視の監視 最後に サービス監視の必要性 UNIVERSE Adsは、24時間365日稼働しており常に大量のトラフィックを高速に処理する大規模システムです。このシステムは、互いに疎結合な関係にある100個以上のコンポーネント(マイクロサービス)から構成されています。そのUNIVERSE Adsがサービスとして正常に機能していることを常に監視するには、ヒトによる目視確認だけは到底不十分で、監視用のシステム
はじめに こんにちは、機械学習エンジニアの大庭です。昨年の4月に新卒でマイクロアドに入社し、現在はUNIVERSE Adsというプロダクトで入札アルゴリズムの研究開発および実装を担当させていただいてます。 この記事では、僕が現在検証している機械学習による落札予測タスクについてご紹介していこうと思います。皆さんにマイクロアドの事業内容を理解していただく助けとなれば幸いです。 はじめに RTBと入札額決定 落札予測とは? 入札額の最適化 入札額の安定化 落札予測の課題 出力が確率分布 右側打ち切り問題 実装 DeepHitモデル 入札額・落札額のビニング 損失関数 精度検証 ビニングによる落札額分布の変化 落札確率予測 落札額予測 おわりに RTBと入札額決定 Real-Time Bidding(RTB)では下図のように、広告主とメディア間でリアルタイムにオークションが開催され、オークションに
はじめに こんにちは. マイクロアドで機械学習エンジニアをしている福島です. 主に広告のClick Through Rate (CTR)予測やReal-Time-Bidding (RTB)の入札最適化を担当しています. 今回はマイクロアドでのCTR予測における確率補正について紹介したいと思います. はじめに CTR予測とは 問題1 学習データが不均衡 問題2 機械学習モデルの出力を確率として扱うのは不適切な場合がある 問題3 学習データの信頼度が高くない CTR予測における確率補正 アンダーサンプリングによって生じたバイアスの除去 Isotonic Regressionによる確率補正 確率補正の効果検証 終わりに CTR予測とは RTBでは下図のように, 広告主とメディア間でリアルタイムにオークションが開催され, オークションに勝利した広告がメディアに表示されます. マイクロアドでは現在オ
はじめに システム開発本部アプリケーションエンジニアの新卒1年目の輿水です。 前提としてマイクロアドのCOMPASSというSSPのプロダクトをScala、Catsを用いてDDDの戦術的戦略を取り入れてリニューアルすることになりました。 Scala、Cats、DDDを初めて学習する人にとっては参入障壁があまりにも高すぎるのですが、その障壁をすこしでも下げて、メンバーに即戦力になってもらうためにチュートリアルを作成しました。 この記事では、実際に内定者アルバイトのS君に研修としてやってもらった時の所感を話していこうと思います! COMPASSとは MicroAd COMPASSはメディアの広告配信の最適化と、包括的な管理を行うことで広告収益を最大化する次世代のサプライサイドプラットフォーム(SSP)です。 https://www.microad.co.jp/services/adplatfor
はじめに 初めまして, マイクロアドで機械学習エンジニアをしている福島です. 今年の4月に新卒でマイクロアドに入社し, 現在は UNIVERSE Ads というプロダクトでCTR(Click Through Rate)予測や入札アルゴリズムの開発研究をしています. 今回はCTR予測について共有させていただきたいと思います. CTR予測ではロジスティック回帰が広く使われてきており, マイクロアドでも長らく利用されてきました. 線形モデルであるため解釈性の高さや推論速度の速さなどのメリットも多く, 現在でも広く使われている手法です. しかし複雑なデータにはフィッティングしづらく, CTR予測のようなカテゴリ変数が多いデータの場合はデータを何らかの方法で連続値に変換する必要もあります. マイクロアドでは, entity embedding1を用いて作った分散表現を利用してカテゴリ変数を連続値に変
こんにちは、Tech Labの中野(@tosametal)です。 本記事ではAkka(Scala)を利用して開発したクローラの紹介を行います。 ストリームデータに対してクロールをする上で工夫した、ドメインごとのクロール頻度制御などについて紹介します。 Akkaはメッセージ指向のアクタシステムがベースとなっており、スケーラブルで弾力性のあるシステムを構築することが出来ます。 Akkaの詳細な説明は本記事では省略するため、興味がある方は 公式ドキュメント を読んで頂ければと思います。 概要 マイクロアドで独自に定義した、あらゆる事柄を目的を軸に階層構造で分類したものをトピックカテゴリと呼びます。 今回紹介するのはサイトのページのトピックカテゴリを判定するための前処理として動くクローラです。 以下はページのトピックカテゴリ判定を行うシステムの一部で、クローラは赤枠で囲った部分です。 kafkaか
はじめに こんにちは。マイクロアドでソフトウェアエンジニアをしている飛田と申します。私は主に UNIVERSE Ads というプロダクトの開発に携わっています。 UNIVERSE Ads では、より関数型ライクな設計や実装を取り入れることにより、高い保守性と効率性を目指しています。 過去の記事では、圏やモノイドについて書きましたが、今回の記事では「関手」について共有させていただきたいと思います。 過去の記事: 「関数型言語をもっと使いこなしたい!」マイクロアドの新卒エンジニアがデータサイエンティストの先輩に圏論の初歩を指導してもらった話 - MicroAd Developers Blog 新卒2年目のエンジニアがモノイドの数学的な定義について調べてScalaで実装してみた - MicroAd Developers Blog 以降、関手について説明しますが、数学用語としてそれについて言及する
マイクロアドでアプリケーションエンジニアをしているタカギです。 バッチ開発がメインのチーム(第4開発ユニット:通称ゆーよん)に所属しています。 バッチといえば避けては通れないのが、アラート対応ですね。 そういうわけで、今回の記事では、アラートメールのslack通知について記事を書いていきたいと思います。 背景 マイクロアドでは、非常に多くのバッチ処理が走っています。バッチスケジューラとしては、最近はDigdagが主流ですが、一部にはJenkins、Rundeckなどから実行されるバッチも存在します。また、監視ツール系のバッチはcrontabで動いていたりもします。 大抵の場合、アラートメールはメーリングリスト宛に送信され、所属しているメンバーの会社の個人メールアドレスに届く事が多いと思います。 個人のメールボックスには、アラートメール以外にも多くのメールが届いているはずなので、必然的にアラ
こんにちは。マイクロアドでインフラエンジニアをしているハダです。 2回目にして久々のブログ執筆です。 今回の記事では、マイクロアドで利用を始めたCanonical社のMAASについて記事を書いていきたいと思います。 インストール方法や使い方などの詳細については公式ドキュメントを読んだほうが確実ですのでこの記事の中で触れていません。 背景 マイクロアドではPXE bootとkickstartを利用したOSインストールを、長年利用しています。 現在もその仕組は現役なのですが、今回はデータセンターの移設に伴ってMAASの導入を進めていくことになりました。 マイクロアドでの課題 マイクロアドではPXE BootとkickstartによるOSの自動インストールを行ってきました。 過去から引き継ぎ、より使いやすいようにしてきましたが以下のような課題も出てきました。 PXE Bootを利用したインストー
次のページ
このページを最初にブックマークしてみませんか?
『developers.microad.co.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く