nakamoto_tatsuyaのブックマーク (29)

  • SSPリニューアルの新規参入者向けチュートリアルを作って内定者アルバイトが爆速で即戦力になる予定の話 - MicroAd Developers Blog

    はじめに システム開発部アプリケーションエンジニアの新卒1年目の輿水です。 前提としてマイクロアドのCOMPASSというSSPのプロダクトをScala、Catsを用いてDDDの戦術的戦略を取り入れてリニューアルすることになりました。 Scala、Cats、DDDを初めて学習する人にとっては参入障壁があまりにも高すぎるのですが、その障壁をすこしでも下げて、メンバーに即戦力になってもらうためにチュートリアルを作成しました。 この記事では、実際に内定者アルバイトのS君に研修としてやってもらった時の所感を話していこうと思います! COMPASSとは MicroAd COMPASSはメディアの広告配信の最適化と、包括的な管理を行うことで広告収益を最大化する次世代のサプライサイドプラットフォーム(SSP)です。 https://www.microad.co.jp/services/adplatfor

    SSPリニューアルの新規参入者向けチュートリアルを作って内定者アルバイトが爆速で即戦力になる予定の話 - MicroAd Developers Blog
  • 圏論初心者が関手に入門し、Scalaで実装した話 - MicroAd Developers Blog

    はじめに こんにちは。マイクロアドでソフトウェアエンジニアをしている飛田と申します。私は主に UNIVERSE Ads というプロダクトの開発に携わっています。 UNIVERSE Ads では、より関数型ライクな設計や実装を取り入れることにより、高い保守性と効率性を目指しています。 過去の記事では、圏やモノイドについて書きましたが、今回の記事では「関手」について共有させていただきたいと思います。 過去の記事: 「関数型言語をもっと使いこなしたい!」マイクロアドの新卒エンジニアがデータサイエンティストの先輩に圏論の初歩を指導してもらった話 - MicroAd Developers Blog 新卒2年目のエンジニアがモノイドの数学的な定義について調べてScalaで実装してみた - MicroAd Developers Blog 以降、関手について説明しますが、数学用語としてそれについて言及する

    圏論初心者が関手に入門し、Scalaで実装した話 - MicroAd Developers Blog
  • アラートメールのslack通知の話 - MicroAd Developers Blog

    マイクロアドでアプリケーションエンジニアをしているタカギです。 バッチ開発がメインのチーム(第4開発ユニット:通称ゆーよん)に所属しています。 バッチといえば避けては通れないのが、アラート対応ですね。 そういうわけで、今回の記事では、アラートメールのslack通知について記事を書いていきたいと思います。 背景 マイクロアドでは、非常に多くのバッチ処理が走っています。バッチスケジューラとしては、最近はDigdagが主流ですが、一部にはJenkins、Rundeckなどから実行されるバッチも存在します。また、監視ツール系のバッチはcrontabで動いていたりもします。 大抵の場合、アラートメールはメーリングリスト宛に送信され、所属しているメンバーの会社の個人メールアドレスに届く事が多いと思います。 個人のメールボックスには、アラートメール以外にも多くのメールが届いているはずなので、必然的にアラ

    アラートメールのslack通知の話 - MicroAd Developers Blog
  • Vue 3 に向けて Composition API を導入した話 - MicroAd Developers Blog

    システム開発部アプリケーションエンジニアの Edy です。 マイクロアドの WEB アプリケーションのフロントエンドは、大半を Vue.js を用いて開発しています。 その Vue.js ですが、「Vue 3 is now in RC! (Vue 3 is now in RC! · Issue #189 · vuejs/rfcs · GitHub)」が公開され、version 3 ( Vue 3 ) が盛り上がりを見せています。 今回は、Vue 2 から 3 へ移行する理由と、 2 から 3 へ version up するために行なっている Composition API の導入 についてお話していこうと思います。 そもそも Vue.js とは ? SFC TypeScript Vue 2 の限界 大規模なプロジェクトになるほど開発効率が落ちる ロジックの再利用にかかるコストが大きい 単

    Vue 3 に向けて Composition API を導入した話 - MicroAd Developers Blog
  • MAASを導入した話 - MicroAd Developers Blog

    こんにちは。マイクロアドでインフラエンジニアをしているハダです。 2回目にして久々のブログ執筆です。 今回の記事では、マイクロアドで利用を始めたCanonical社のMAASについて記事を書いていきたいと思います。 インストール方法や使い方などの詳細については公式ドキュメントを読んだほうが確実ですのでこの記事の中で触れていません。 背景 マイクロアドではPXE bootとkickstartを利用したOSインストールを、長年利用しています。 現在もその仕組は現役なのですが、今回はデータセンターの移設に伴ってMAASの導入を進めていくことになりました。 マイクロアドでの課題 マイクロアドではPXE BootとkickstartによるOSの自動インストールを行ってきました。 過去から引き継ぎ、より使いやすいようにしてきましたが以下のような課題も出てきました。 PXE Bootを利用したインストー

    MAASを導入した話 - MicroAd Developers Blog
  • 新卒2年目のエンジニアがモノイドの数学的な定義について調べてScalaで実装してみた - MicroAd Developers Blog

    はじめに モノイド 代数学 圏論 Scalaでモノイドを実装する 代数学的な定義に従った整数を加算するモノイドの実装 圏論的な定義に従った整数を加算するモノイドの実装 モノイドの合成 Catsによるモノイドの利用例 おわりに はじめに こんにちは。マイクロアドでソフトウェアエンジニアをしている飛田と申します。私は主に UNIVERSE Ads というプロダクトの開発に携わっています。 UNIVERSE Ads では、より関数型ライクな設計や実装を取り入れることにより、高い保守性を目指しています。 この記事では、関数型プログラミングの入門的な話として、モノイドについて調べてみたので、この記事で共有させていただきたいと思います。 モノイドについてより深い理解をするために、まず、圏論と絡めたモノイドの説明をしたいと思います。 そしてその次に、より理解を深めるために、Scala のサンプルコードを

    新卒2年目のエンジニアがモノイドの数学的な定義について調べてScalaで実装してみた - MicroAd Developers Blog
  • Jestを使ったVueコンポーネントのテストを導入した話 - MicroAd Developers Blog

    はじめまして、フロントエンドエンジニアをしている川上です。 業務では、主にサービス要件に沿ったフロントエンド開発を担当しています。 今回は、私自身初めての経験だったフロントエンドのテスト導入手順や、 導入するにあたって気をつけた点などをお話しできればと思います。 はじめに Vueコンポーネントのテストについて Jestの導入について Jestを利用したテスト おわりに はじめに マイクロアドには様々なプロダクトがありますが、私の担当しているUNIVERSEというプロダクトについては、 フロントエンドフレームワークにVue.jsを利用しています。 jp.vuejs.org テストの導入を行うにあたって、今後、現在利用しているVue2をVue3へ移行していくことを考えると*1 TypeScript*2でテストを書いていくのがいいということになりました。 また、TypeScriptのメリットでも

    Jestを使ったVueコンポーネントのテストを導入した話 - MicroAd Developers Blog
  • Hive パフォーマンスを改善する設定の紹介 - MicroAd Developers Blog

    マイクロアドではデータ基盤に Hive が使われています。 データ基盤について、以下の記事をご確認ください。 MicroAdのデータ基盤 より使いやすいデータ分析基盤にするために この一年間、Hive を使う機会が増えましたのでクエリパフォーマンスを改善する為に Hive 設定を試行錯誤しましたので、その中からいくつか紹介します。 前提条件 1. Vectorization 2. Cost-based Optimization (CBO) 3. 並列実行 4. MapJoin 参考リンク 前提条件 Hive 1.1.0-cdh5.14.0 まず基ですが SET; を実行すると、以下が表示されます。 システム変数 環境変数 Hadoop 設定(ユーザーが定義した・デフォルトプロパティ) Hive 設定(ユーザーが定義した・デフォルトプロパティ) set, define, hivevar で

    Hive パフォーマンスを改善する設定の紹介 - MicroAd Developers Blog
  • 19年度新卒チームが研修でMVP投票システムを作った話 - MicroAd Developers Blog

    ぼーちゃんトップページ マイクロアドの19新卒グループです。 全体研修が終わり、システム開発部の研修として「ぼーちゃん」という月間インセンティブ獲得者を決める、MVP投票システムの開発を行いました。 今回は、その概要と開発時に工夫した点をまとめて記事にします。 昨年度:マイクロアドの新卒4人が研修で社内システムを開発した話 はこちら 19新卒メンバー 目次 ぼーちゃん?自己組織化?MVP投票制度の存在 まずはじめに 設計 DB 状態遷移 技術 フロントエンド サーバーサイド 今後の展開 社内システムをリリースしてみて ぼーちゃん?自己組織化?MVP投票制度の存在 MVP投票制度とは「自己組織化」を掲げる当部署において、 マネージメントの分散の点からインセンティブ獲得者(MVP)を広くみんなで決める必要がある という考えから生まれた制度です。 これにより現場の納得感が得られ、チーム間での情報

    19年度新卒チームが研修でMVP投票システムを作った話 - MicroAd Developers Blog
    nakamoto_tatsuya
    nakamoto_tatsuya 2019/10/21
    つよそう
  • Google Compute Engine を用いた機械学習モデル学習バッチのスケジュール実行 - MicroAd Developers Blog

    こんにちは、機械学習エンジニアの河 (@nnkkmto) です。マイクロアドのシステムにおいて、機械学習が必要な部分の研究開発及び実装を担当しています。 この記事では GCP (Google Cloud Platform)、特に GCE (Google Compute Engine) を用いた機械学習モデル学習バッチのスケジュール実行について紹介できればと思います。 はじめに 前提 全体の流れ 各処理の詳細 スケジューリング Cloud Scheduler Cloud Pub/Sub Cloud Functions インスタンス起動による学習バッチの実行 preempted 時のリトライ処理 終わりに はじめに 現在マイクロアドでは、以下にあるようにGCP を用いた機械学習基盤の構築を進めていて、Kubeflow を用いた実行環境へ移行予定です。 オンプレ×Google Cloud Pl

    Google Compute Engine を用いた機械学習モデル学習バッチのスケジュール実行 - MicroAd Developers Blog
    nakamoto_tatsuya
    nakamoto_tatsuya 2019/10/07
    キレッキレ
  • 「関数型言語をもっと使いこなしたい!」マイクロアドの新卒エンジニアがデータサイエンティストの先輩に圏論の初歩を指導してもらった話 - MicroAd Developers Blog

    はじめに こんにちは、19新卒バックエンドエンジニアの飛田です。 弊社では、プロダクトの一部にCatsという関数型プログラミングを行うためのライブラリを導入しており、今後、Catsをより多くのプロダクトに使用していく予定です。 Catsにはモナドやファンクタという概念が登場しますが、これらの概念は圏論に由来しています。圏論を勉強することで、Catsで登場する諸概念をより深く理解することができると考え、今回、圏論の初歩の内容を自分でまとめてみることにしました。 なお、マイクロアドの優秀なデータサイエンティストであり、数学や物理に大変に詳しいT先輩(アイコンがおふとん)にレビューを依頼することにしました。 slackのアイコンがおふとんのT先輩 レビューをしてもらった結果 まとめた内容の初稿をT先輩にレビューをしていただいたところ、以下の通りものすごい量のツッコミをらってしまいました。 レビ

    「関数型言語をもっと使いこなしたい!」マイクロアドの新卒エンジニアがデータサイエンティストの先輩に圏論の初歩を指導してもらった話 - MicroAd Developers Blog
    nakamoto_tatsuya
    nakamoto_tatsuya 2019/09/06
    なんかごめん
  • ScalaMatsuri2019の参加レポート - MicroAd Developers Blog

    こんにちは。サーバサイドエンジニアの松宮です。 今年もScalaMatsuriに参加してきました。そして今年は大名スポンサーとして協賛させて頂きました! 濃い内容のセッションが盛りだくさんで非常に勉強になりましたので、いくつかピックアップしてレポートを書きたいと思います。 ↑ScalaMatsuriに参加したマイクロアドのエンジニアたち 目次 いつかは導入したい、ES + CQRS これからは小まめにCVEをウォッチします・・! 10msの世界で戦うエンジニア必見ですね 関数型プログラミングは技術的にDDDをサポートする CPSとDIはユースケースによって使い分ける また来年! いつかは導入したい、ES + CQRS speakerdeck.com 早速ですが、TIS株式会社の根来さんより「決済サービスで Akka Cluster 使ってみた」のレポートからです。 マイクロアドでもAkka

    ScalaMatsuri2019の参加レポート - MicroAd Developers Blog
  • Spark Structured Streaming で遅延データを処理する方法 - MicroAd Developers Blog

    マイクロアドのアプリケーションエンジニアの x です。数ヶ月前からストリームアプリの開発を担当しています。ある案件を検証する為、Structured Streaming を使ってみました。 マイクロアドでは、Spark Streaming でデータを5~10秒毎に処理しています。Spark Streaming については、順序保証型分散ストリーム処理 と、 Spark Streaming と Kryo シリアライザーの話 でも解説していますので、ご覧ください。 Spark Streaming は強力なストリーミングですが、遅延したデータを簡単に処理する方法がなく、マイクロアドでも問題となっています。さしあたり解決方法として、 処理する時に event time(実際にイベントが発生した時間)ではなく、ingestion time(データがソースに入った時間)を見る 遅延したデータを捨てる

    Spark Structured Streaming で遅延データを処理する方法 - MicroAd Developers Blog
    nakamoto_tatsuya
    nakamoto_tatsuya 2019/07/12
    完全理解
  • dead code following this construct ...という警告 - MicroAd Developers Blog

    マイクロアドのサーバサイドエンジニアの松宮です。日はある日の社内日報を焼き直して、外部公開することにしました。 ・・・ ある晴れた日のこと。Specs2でテストを書いていて、下記のようなコードをコンパイルをすると警告が出ることに気が付いた。 ... val hoge = mock[Hoge] hoge.apply(any()) returns fuga ... 「よし!コンパイル!!」 「えっ」 これはその文字通り、絶対に実行されないコード(dead code)がソース中に存在する場合に教えてくれるイケてる警告文。しかし、如何せん、警告と実際のコードの関係が分からない。 そこで、気になったので調べてみた。 Ywarn-dead-codeの有効化のススメ その前にdead codeの警告をおさらいしよう。 dead codeの警告をしてもらうためには、コンパイラオプションに-Ywarn-d

    dead code following this construct ...という警告 - MicroAd Developers Blog
  • Spark Streaming と Kryo シリアライザーの話 - MicroAd Developers Blog

    マイクロアドでアプリケーションエンジニアをしている「G」です。日々、バッチを作ったり WEB アプリケーションを作ったりしています。 今回はライトに Spark Streaming でカスタム Kryo (クライオ)シリアライザーが必要になってしまったお話を書いていきたいと思います。 Spark Streaming とは Spark Streaming とは Apache Spark という分散コンピューティング基盤上でストリーム処理を行うためのソフトウェアです。 マイクロアドでは秒間数万件以上発生するユーザーのアクセスログの処理のために Spark Streaming を利用しています。 詳細は以下の記事をご確認ください。 developers.microad.co.jp ブロードキャスト変数とシリアライズの罠 Apache Spark では、メインプログラムが実行されるドライバーと呼ば

    Spark Streaming と Kryo シリアライザーの話 - MicroAd Developers Blog
    nakamoto_tatsuya
    nakamoto_tatsuya 2019/02/08
    本当に公開されてしまった...
  • 社内電話システムをリプレイスした話 - MicroAd Developers Blog

    マイクロアドで社内システムの管理や運用、ヘルプデスクをしています高橋と申します。 今回は直近で行いました社内電話システムをリプレイスした話をしたいと思います。 リプレイスの背景 マイクロアドはPHSとPBXを利用した社内電話システムを使用していたのですが、まだ先の話ではありますがPHSのサービスが終了するとの事で、社内電話システムのリプレイスをすることになりました。 リプレイスの条件 リプレイスをする際の要件として、今まで使用できていた機能で必要なものを出来る限り残した上で、ネックであった管理コストを軽減出来る事を前提としました。 以前のシステムではPHSで0ABJ番号を使用した発着信や同じグループ間でのピックアップ等色々と出来ており便利ではあったのですが、専用の機器を利用しないといけなかった為、設定の変更等をこちら側で自由にすることが出来ず、変更はすべて業者に依頼を出して設定を変更しても

    社内電話システムをリプレイスした話 - MicroAd Developers Blog
    nakamoto_tatsuya
    nakamoto_tatsuya 2019/01/25
    強そう
  • 新卒が初めてScalaを触って詰まったところと解決方法 - MicroAd Developers Blog

    18新卒でマイクロアドに入社した山城です。 今回はScalaを一切触ったことのない僕が、いきなりScalaで開発を初めて困ったところと、どうやって解決していったのかをセットにして紹介したいと思います。 初心者がどこで詰まるのかというところ、どのようにして解決したのかを見ていただいて、新人にScalaを教える際の参考にしていただけたらと思います。 目次 前提 新人がScalaで困ったこと一覧 Scalaってそもそもなに? JavaでかけてしまうのでJavaで書いてしまう Optionの扱いにはじめ戸惑う Scala特有のコレクションの扱いに戸惑う まとめ 前提 前提として、僕がどれくらいプログラミングができるのかを話します。 入社半年の新人で、普段はJavaを使って既存のプロダクトの改修や、新規プロジェクトのサーバーサイドからフロントまでを書いています。Scalaは名前だけ知っているくらいで

    新卒が初めてScalaを触って詰まったところと解決方法 - MicroAd Developers Blog
    nakamoto_tatsuya
    nakamoto_tatsuya 2019/01/11
    かわいい
  • 2018年アドベントカレンダー完走 - MicroAd Developers Blog

    MicroAd Advent Calendar 2018 - Qiita 昨年から参加しているアドベントカレンダー(2017年はこちら)、今年も参加表明してくれたメンバーが頑張ってくれたおかげで完走することができました。年末の忙しい時期に時間を割いて投稿してくれた皆さんお疲れ様でした! せっかく完走したのにQiitaを見ていない人もいると思いますのでブログで全記事を一挙紹介!といきたいところですが上記リンクから辿れますので、ここでは気になった記事をピックアップして紹介したいと思います。 思った以上にカテゴリがバラバラだったので絞り込みをしようと思います。記事にタグがついているのでタグが多かった記事を探してみることにします。 qiita.com この記事を参考に全記事をスクレイピングして、 <meta content="キーワード1,キーワード2,..." name="keywords" /

    2018年アドベントカレンダー完走 - MicroAd Developers Blog
    nakamoto_tatsuya
    nakamoto_tatsuya 2018/12/26
    Pythonタイムアップ
  • 機械学習処理におけるカテゴリ変数の扱い方(Feature hashingについて) - MicroAd Developers Blog

    こんにちは!機械学習エンジニアの桶原です。 業務では主に機械学習処理を用いた広告効果予測と改善をテーマとしています。 今回は機械学習処理におけるカテゴリ変数の扱い方の中でもあまり触れられることのない、Feature hashingを利用した方法についてお話できればと思っています。 カテゴリ変数の取り扱い Feature hashingとは Feature hashingの種類 hashing functionの比較 概要 注意事項 実装 1. Shi's hash function 2. Weinberger's hash function 結果 次元圧縮手法としてのFeature hashing 1. Shi's hash function 2. Weinberger's hash function まとめ カテゴリ変数の取り扱い カテゴリ変数の扱う方法として多くの教科書ではOne ho

    機械学習処理におけるカテゴリ変数の扱い方(Feature hashingについて) - MicroAd Developers Blog
    nakamoto_tatsuya
    nakamoto_tatsuya 2018/12/07
    つよそう
  • Scala関西Summit 2018に参加したので感想を書きます - MicroAd Developers Blog

    マイクロアドのサーバサイドエンジニアの松宮です。少し時間が経ってしまったんですが、今年もScala関西Summitに参加してきましたのでマイクロアドと絡めながらつらつらと感想を書きたいと思います。 ちなみに今年はマイクロアドからも初めてスポンサードさせて頂きました! 今までもマイクロアドではScalaを採用したプロダクトはいくつかありましたが、全体ではJavaがメインだったため、Scala関係のイベントへのスポンサードはしておりませんでした。しかしここ数年でApache Sparkを採用したり、主要プロダクトのScala化をきっかけに社内全体にScalaが浸透していき、その結果、今回のScala関西Summit 2018へのスポンサードができました! Apache SparkやScalaへの変遷については以前のブログ記事で紹介させて頂いていますので、良ければご覧ください。 順序保証型分散ス

    Scala関西Summit 2018に参加したので感想を書きます - MicroAd Developers Blog
    nakamoto_tatsuya
    nakamoto_tatsuya 2018/11/20
    ぼくは人命救助一回も成功しなかったけど合格しました