k_osawaのブックマーク (166)

  • GoのsubTestsを活用したTableDrivenTest - MicroAd Developers Blog

    こんにちは。 マイクロアドで機械学習エンジニアをしている大庭です。 今回の記事では Go で TableDrivenTest を書く上で重要になってくる subTests の使い方を紹介します。 subTests subTests は Go1.7 から追加された1つのテスト関数の中に階層を作るための機能です。 subTests を利用するメリットとしてはテストケース毎に正否判定を行える、特定のテストケースのみ実行できる、テストの並列実行ができるなどが挙げられます。 subTests の基的な使い方 はじめに subTests の基的な利用方法を subTests ありなしのコードを比較する形で実装例を紹介します。 例として足し算をする関数Addのテストを示します。 テスト失敗時の結果を見るために4つ目のケースは失敗するようにしています。 まずは subTests なしで書いたテストです

    GoのsubTestsを活用したTableDrivenTest - MicroAd Developers Blog
    k_osawa
    k_osawa 2023/07/12
  • マイクロアドのDiscord活用事例が本に取り上げられました - MicroAd Developers Blog

    マイクロアドのシステム開発部で広報委員会の委員長している 永富 id:yassan0627 です。 過去にリモートワークを取り入れた新しい働き方としてコミュニケーションの改善の手段としてDiscordをシステム開発部として採用している話を紹介しました。 developers.microad.co.jp こちらの記事は今でもよく閲覧される記事として人気のある記事になっています。 この記事がきっかけとなり、株式会社インプレス様より活用事例の1つとしてインタビューさせて欲しいと依頼がありました。 そのインタビュー記事を含んだが、Discordの活用ガイドとして、 2023/07/06 に発売されます! Discord活用ガイド 基操作&サーバー設営&活用事例が丸ごとわかる 作者:納富 亮介インプレスAmazon 当時の状況や導入の背景、現在での状況など、紹介記事のその後の話を含め色々触れて

    マイクロアドのDiscord活用事例が本に取り上げられました - MicroAd Developers Blog
  • Java8→Java19でいいなと思った機能 - MicroAd Developers Blog

    はじめに こんにちは。 マイクロアドでWebエンジニアをしている木田です。 今回は普段Java8を使用しているエンジニアJava19を触ってみて便利だなと思った点をいくつかご紹介しようとおもいます。 マイクロアドではWebアプリ開発のサーバサイド言語としては以下を使用しています。 Java Kotlin Kotlinについては比較的新しい言語ということもあり、Java8にはない便利な組込APIがいくつも存在しています。 今までは、「Kotlinのほうがシンプルに書けていいな〜」と思ってましたが、 Java19を触ってみて、「あれ、Javaも負けてないぞ!」と思ったので両者を比較しながら紹介します。 ※Java19での新機能ではなく、Java19で使用できるJava8にはなかった機能(Java9以降で追加された機能)の紹介になります。 目次 はじめに 目次 その1 Record Class

    Java8→Java19でいいなと思った機能 - MicroAd Developers Blog
    k_osawa
    k_osawa 2023/06/06
  • Toxを活用してAnsibleのアップグレードとUbuntu対応を進めている話 〜Ansible v2.9脱出作戦〜 - MicroAd Developers Blog

    はじめに インフラエンジニアの長田です。これまでマイクロアドのインフラ環境ではCentOS7を使っていましたが、現在はUbuntu20.04への乗り換えを順次進めています。 それに伴い、CentOS用に作ってきたAnsibleロールのUbuntu対応やGitHubリポジトリの構成見直し、新しいバージョンのAnsibleへの追随など様々なリファクタリングを進めています。 また、複数のansible-core、Moleculeバージョンで同時にテストするために、Pythonのテスト用仮想環境を管理するtoxというツールを活用しています。 はじめに Ubuntuへの対応 ロールのリポジトリ分離 ansible-coreおよびMoleculeのアップグレード、複数バージョンでの同時テスト おわりに Ubuntuへの対応 これまでマイクロアドのインフラ環境ではCentOS7を使っていましたが、現在は

    Toxを活用してAnsibleのアップグレードとUbuntu対応を進めている話 〜Ansible v2.9脱出作戦〜 - MicroAd Developers Blog
    k_osawa
    k_osawa 2023/06/06
  • 【新卒エンジニア向け】マイクロアドエンジニアの技術スタック(広告配信ユニット編) - MicroAd Developers Blog

    こんにちは。 マイクロアドシステム開発部RDU(RTB Development Unit)でサーバーサイドエンジニアをしている飛田です。 この度は、主に新卒エンジニアの方や新入社員の方向けに、 数ある開発チームのうちの1つであるRDUで使っている技術について共有させていただきます。 RDUは主に広告配信周りの開発をやっているチームでして、 DSPやSSPなどの広告配信プラットフォームの開発・保守がメインの仕事になります。 以降、RDUのことを「広告配信ユニット」といいます。 広告配信ユニットで働いてみたい方やマイクロアドで使っている技術に興味のある方は参考にしていただければ幸いです。 以降、広告配信ユニット内で使っている技術スタックを紹介していきます。 プログラミング言語 【Scala】 主なプログラミング言語はScalaです。 Scalaを採用した理由は、シンプルで直感的にわかりやすいコ

    【新卒エンジニア向け】マイクロアドエンジニアの技術スタック(広告配信ユニット編) - MicroAd Developers Blog
    k_osawa
    k_osawa 2023/05/25
  • Dockerコンテナを使ったHiveクエリの自動テスト - MicroAd Developers Blog

    こんにちは!マイクロアドでサーバーサイドエンジニアとしてバッチ開発を担当している根 (id:realyutanemoto)です。 マイクロアドではHadoop分散ファイルシステム(以下、HDFSとする)にビッグデータを蓄積し、その加工処理(ETL処理)を行うバッチを作っています。 今回はそのテストの一部でHive1クエリの自動テストを実装した方法を紹介します。 バッチ処理のテスト Hiveを使ったバッチ処理の例 なぜ自動テストしたいのか Hiveを使ったバッチ処理での自動テスト 自動テスト作成時の観点 自動テストですること 自動テストの実装 Dockerコンテナの立ち上げ テストデータの操作 実装のまとめ おわりに バッチ処理のテスト Hiveを使ったバッチ処理の例 広告の配信システムでは膨大な量のログが蓄積されます。 広告枠に表示する広告はRTB (Real-Time Bidding)

    Dockerコンテナを使ったHiveクエリの自動テスト - MicroAd Developers Blog
    k_osawa
    k_osawa 2023/05/25
  • Focal Lossによる自信過剰な予測の抑制 - MicroAd Developers Blog

    はじめに こんにちは. マイクロアドで機械学習エンジニアをしている福島です. 主に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

    Focal Lossによる自信過剰な予測の抑制 - MicroAd Developers Blog
    k_osawa
    k_osawa 2023/05/25
  • ユーザ行動から新規セッションのKPI達成を予測する試み - MicroAd Developers Blog

    はじめに こんにちは。マイクロアドで機械学習エンジニアをしている津野です。 21卒でマイクロアドに入社し、現在はUNIVERSE Adsというプロダクトで KPI達成確率予測の研究開発および実装を担当しています。 この記事では、自分が現在担当しているKPI達成確率予測について紹介させて頂きます。 問題設定 KPI達成確率予測(以下、KPI予測)とは、ユーザが新規セッションにおいて特定のKPI行動を達成するかどうかを予測するタスクです。 ここで言うセッションとは、ユーザが特定のウェブサイト上で行った一連の操作のことです1。 例えば、1回のセッションには、ページビュー、イベント、ソーシャルインタラクション、eコマーストランザクションなどの複数のユーザ行動(アクション)が含まれます。 セッションはユーザがサイトから離脱した場合や一定時間操作を行わなかった場合に終了し、そのユーザが再度ウェブサイト

    ユーザ行動から新規セッションのKPI達成を予測する試み - MicroAd Developers Blog
    k_osawa
    k_osawa 2023/05/17
  • Container/Presentational Component パターンの導入検討 - MicroAd Developers Blog

    はじめに アプリケーションエンジニアの Edy です。 今回は、Vue.js での開発する上で、メンテナブルな設計するために、「Container/Presentational Component パターン」を部分的に適用できないか検討した話となります。 「完全に理解」して、少しでも設計力に活かしていきたい所存です。部分的に自身の意見も取り入れつつ考えていきます。 ダニング・クルーガー効果 はじめに きっかけ コンポーネント実装のコストパフォーマンスの悪さ コンポーネントを読み解くことによる疲労蓄積 Container / Presentational パターンとは? Container Component Presentational Component 切り分け方法 実際の画面 UI にデザインパターンを適用してみる 設計する上で意識したこと まとめ - 構成を変えてどこにメリットを実

    Container/Presentational Component パターンの導入検討 - MicroAd Developers Blog
    k_osawa
    k_osawa 2023/03/04
  • UNIVERSE AdsでのScala 幽霊型 (Phantom Type) の活用方法 - MicroAd Developers Blog

    はじめに こんにちは。マイクロアド21年卒サーバーサイドエンジニアの陶山(id:suyama_naoki)です。普段は主にDSP (UNIVERSE Ads) の開発を行なっています。 今回の記事では、UNIVERSE AdsでのScala 幽霊型の活用方法について共有させていただきます。 はじめに Scalaの幽霊型 (Phantom Type) とは 具体例 UNIVERSE Adsでの幽霊型の活用方法 Currency.scala AdPrice.scala AdPriceのcompareメソッドを呼び出す まとめ Scalaの幽霊型 (Phantom Type) とは 幽霊型 (Phantom Type) とは、コンパイル時には検査されるが、コンパイル後のプログラムでは消えているような型パラメータのことです。 コンパイル時の型検査を利用したデザインパターンとして認知されています。

    UNIVERSE AdsでのScala 幽霊型 (Phantom Type) の活用方法 - MicroAd Developers Blog
  • TiDBをHadoop管理者視点でデータ基盤としての使い所を考えてみる - やっさんメモ

    この記事は MicroAd Advent Calendar 2022 と Distributed computing (Apache Spark, Hadoop, Kafka, ...) Advent Calendar 2022 の25日目の記事です。 今年のアドカレも最終日になりました。 とは言え、Distributed computing Advent Calendar 2022 の方はエントリが結構残ってるので、引き続き空いてる枠への参加をお待ちしてます! qiita.com qiita.com 今回は、Hadoopクラスタ管理者の視点で、データ基盤としてTiDBの使い所について考えてみます。 また、データ基盤の規模感としては、ペタバイトレベルのクラスタ、1テーブルあたり最大100TBクラスを想定しています。 TiDBとは データ基盤として見たときにTiDBに求めるもの 構築する場合

    TiDBをHadoop管理者視点でデータ基盤としての使い所を考えてみる - やっさんメモ
  • FLEDGEにおけるWebAssemblyの利用 - tosametal

    この記事は MicroAd Advent Calendar 2022 の22日目の記事です。 qiita.com これまでリターゲティング*1は、3rd Party Cookie*2を利用し、サイトアクセス情報をアドテクのサーバで保存することで実現していました。 しかしChromeで2024年に3rd Party Cookieの廃止が予定されているため、今の仕組みは使えなくなります。 そこでFLEDGEの登場です。 FLEDGEとは FLEDGEの仕組み インタレストグループ登録 ブラウザ上でのオークション generateBid scoreAd WebAssembly FLEDGEにおけるWebAssemblyの利用 さいごに 参考 FLEDGEとは FLEDGEはPrivacy Sandbox*3で提案される、クロスサイトトラッキング技術に依存せずにリターゲティングを実現する仕組みです

    FLEDGEにおけるWebAssemblyの利用 - tosametal
  • LOVOTがつくられて、お客様に届くまでの仕組み - Inside of LOVOT

    こんにちは、あるいはこんばんは。 GROOVE Xにスクラムマスターとして入社し、マーケティングチームを経て今はECシステムの移行プロジェクトを推進しているツネと申します。 入社してすぐ工場の組立ラインで製品試験の支援をしたり、チームのプロダクトバックログを見やすくしたり、製品紹介サイトをゴリゴリ実装してマーケ施策のPDCA回したり、終いにはECシステム見直したりと、最早自分が何屋さんなのか分からなくなっている今日このごろです。 そんな器用貧乏なスキルが幸いして、LOVOTの製造からお客様に届くまでの仕組みを一通り見てきたので、今回の記事ではその全体概要をざっくりお伝えできればと思います! LOVOT生産から、お客様がセットアップするまでの流れ まず最初に全体概要からです。 下記の図は少し古く、今の状況と変わっていたり厳密には仕組みが異なる部分もありますが、全体的な流れのイメージは掴めると

    LOVOTがつくられて、お客様に届くまでの仕組み - Inside of LOVOT
    k_osawa
    k_osawa 2022/12/22
  • Pythonばっかり書いてたエンジニアがGoに入門して感動したこと - MicroAd Developers Blog

    こんにちは。マイクロアドで機械学習エンジニアをしている大庭です。 マイクロアドの機械学習チームでは機械学習関連のメイン言語として長らくPythonを利用していました。 しかし最近は機械学習の成果物をAPIとしてリリースすることも多くなり、並列処理に強い言語のGoを利用することも多くなってきました。 私自身、Goは学び始めの段階で慣れない静的型付け言語に苦戦しているのですが、使えば使うほどGoの洗練された文法や機能が好きになり、最近ではPythonと同じくらいに好きな言語になっています。 今回の記事では、「Python ばっかり書いていたエンジニアGo に入門してみて感動したこと」と題して私が最近感じているGoの素晴らしさを何点か紹介させていただきます。 この記事で Go を学ぼうか悩んでる方に少しでも Go の魅力を伝えられれば幸いです。 テストが標準コマンドラインツールで行える Goはg

    Pythonばっかり書いてたエンジニアがGoに入門して感動したこと - MicroAd Developers Blog
  • Webアプリ開発における社内標準化の取り組みの話 - MicroAd Developers Blog

    システム開発部アプリケーションエンジニアの工藤です。 今回は、マイクロアドのWebアプリ開発における社内標準化の動きとその策定内容について、簡単に紹介したいと思います。 課題 同好会の立ち上げ 策定内容 Vueの自動テストフレームワーク タイポグラフィー Javaのスタイルガイド Kotlinのスタイルガイド 策定する際の試行錯誤 採用基準 検討・導入コストを下げるための施策 効率的に進めるために 今後の展望 募集 課題 Webアプリプロダクトに注力する機会があることで、チーム内・外のメンバーが様々なWebアプリプロダクトに触れることが度々あります。 その際、そのプロダクトの立ち上げ時期が大きく違うなどの理由で、プロダクト間の差異に困惑してしまうケースが見受けられていました。 例えば、フロントエンドの自動テストフレームワークにJasmineが採用されているプロダクトもあればJestが採用さ

    Webアプリ開発における社内標準化の取り組みの話 - MicroAd Developers Blog
    k_osawa
    k_osawa 2022/12/19
  • Internet Week 2022でPost Cookie関連の発表をしました - MicroAd Developers Blog

    こんにちは、TechLabの中野です。 11/21~30に開催されたInternet Week 2022で「インターネット広告の羅針盤~Post Cookie、嵐の時代」というテーマで登壇してきたので、その様子を紹介します。 Internet Weekとは インターネットに関する技術の研究・開発、 構築・運用・サービスに関わる人々が一堂に会し、 主にインターネットの基盤技術の基礎知識や最新動向を学び、 議論し、理解と交流を深めるためのイベントです。 また、「Internet Week」で得られたものを、 ご自分のフィールドで役立てていただくことにより、 インターネットの普及・促進・発展に貢献する(繋げる)ことを当イベントの目的としています。 https://www.nic.ad.jp/iw2022/ より引用。 今年のInternet Weekは初のハイブリッド開催でした。 11/21~2

    Internet Week 2022でPost Cookie関連の発表をしました - MicroAd Developers Blog
  • CloudNative Days 2022参加レポート - MicroAd Developers Blog

    この記事は MicroAd Advent Calendar 2022 の1日目の記事です。 qiita.com マイクロアドの京都研究所からリモートで働いている基盤開発グループの永富 id:yassan0627 です。 今回は、11/21-22開催された CloudNative Days 2022 に行ってきたので参加レポートを書いてみました。 イベントページ event.cloudnativedays.jp ツイートまとめ togetter.com マイクロアドとCloud Native(Kubernetes) Co-located ハンズオンについて 気になったセッションについて eBPF Superpowers Kubernetesのnamespaceを越えて: namespace跨ぎのsnapshotからのvolumeの作成の今と未来 スライド :はじめよう Kubernetes

    CloudNative Days 2022参加レポート - MicroAd Developers Blog
    k_osawa
    k_osawa 2022/12/06
  • Scala依存型の調査 - MicroAd Developers Blog

    こんにちは。 マイクロアドでサーバーサイドエンジニアをしている飛田です。 今回はScalaの依存型について調査してみましたので、共有させていただきます。 依存型について調査したきっかけは、 Scalaで型レベル”だけ”でクイックソートという記事で、 こちらは型を使ってクイックソートを行う(コンパイル結果がクイックソートの結果になる)という内容になっています。 こちらを拝見して、Scalaの型の柔軟性にかなりのポテンシャルを感じましたので、 Scalaの型に関するトピックとして、「依存型」について共有させていただきます。 依存型とは 依存型とは定義が値に依存する型のことです。 例えば、以下のコードの型 hoge.T は hogeの値に依存している依存型になります。 trait Hoge { type T val t: T } val hoge = new Hoge { type T = St

    Scala依存型の調査 - MicroAd Developers Blog
  • IPMIでリモート対応を強化して分かったこと - MicroAd Developers Blog

    概要 こんにちは。マイクロアドでインフラエンジニアをしているハダです。 今回もデータセンター移設(以降、DC移設と記述)に関することを書いてみました。 今回は「IPMIでリモート対応を強化」したという話です。 IPMIを活用するというのは一般的ですが、マイクロアドではDC移設まで活用する状況になっていませんでした。 1 その理由などを含め記事を書いてみましたのでご覧ください。 概要 IPMIとは… IPMIで出来ること IPMIを使うきっかけ DC移設前の状況 取り組めなかったワケ 増える配線 使ってどうなったか 別の課題 解決策 まとめ インフラエンジニア募集 インフラエンジニア求人詳細 マイクロアド採用情報サイト IPMIとは… Intelligent Platform Management Interfaceの略で、リモートからH/Wの状態を確認したり電源操作できるものです。 IPM

    IPMIでリモート対応を強化して分かったこと - MicroAd Developers Blog
  • PyCon JP 2022参加レポート - MicroAd Developers Blog

    はじめに こんにちは、マイクロアドでサーバーサイドエンジニアをしている髙橋です。 2022年10月14日(金)~15日(土)の日程で開催された PyCon JP 2022 に初参加しました。 マイクロアドとPython 今までの技術ブログでも記事になっていますが、マイクロアドでは主にDigdagとPythonを用いてデータ処理バッチを開発しています。 機械学習Pythonメインで開発しているほか、APIの実装でもPythonを使用することがあります。 developers.microad.co.jp developers.microad.co.jp developers.microad.co.jp Pythonの恩恵を大きく受けている中で、今年のPyCon JPはゴールドスポンサーとして協賛いたしました。 ブースにお越しいただいた皆さまありがとうございました! ブース展示の様子 PyCo

    PyCon JP 2022参加レポート - MicroAd Developers Blog