エムスリーテックブログ

エムスリー(m3)のエンジニア・開発メンバーによる技術ブログです

Cascade Model に適用する Bandit Algorithms の理論と実装

f:id:abctail30:20220121105631p:plain

エムスリーエンジニアリンググループ AI・機械学習チームでソフトウェアエンジニアをしている中村(po3rin) です。検索とGoが好きです。

最近エムスリーでは迅速かつ簡単に実装できるという観点から情報検索(IR)にバンディットアルゴリズムを適用する施策が進行中です。その過程でCascade Modelに多腕バンディットを適用したアルゴリズムを調べたので、Pythonによる実装とともに紹介していきます。

続きを読む

「Shell作れます」と言うために

新卒の永山です。 昨今、SNSではなぜかシェルを作ることに関する言及が盛んに行われています。 そこで、本記事ではシェルの実装に関する理解を深めることを目的に簡単なシェル「nosh」*1 をインクリメンタルに作成したいと思います。

完成した実装は以下のリポジトリで公開しています。

github.com

実装にはD言語を用います (この記事はD言語の布教も兼ねています)。

  • D言語について
  • 0. 処理系の概形
  • 1. プロジェクトの作成
  • 2. 最も簡単なREPL
    • 2.1. 入力の取得
    • 2.2. 入力の分割
    • 2.3. コマンドの実行
  • 3. モジュールの分割
    • 3.1. 字句解析器
    • 3.2. 構文解析器
    • 3.3. 評価器
  • 4. パイプ演算子の実装
    • 4.1. 字句解析器・構文解析器の拡張
    • 4.2. 評価器の拡張
  • まとめ
  • We are hiring!

*1:"シェルもどき" といった意味合いを込めnoshと命名しました。

続きを読む

エムスリー執行役員VPoE兼PdMの山崎が、エンジニア、QA、デザイナー、プロダクトマネージャーにお薦めする良書7選

こんにちは。最近、お掃除職人きよきよ*1というYouTuberにハマってしまい掃除に明け暮れ、近所のドラッグストアでドメストとパイプフィッシュの原材料が同じことなどを知って、ふむふむと楽しんでいるエムスリー執行役員兼VPoE兼PdMの山崎です。薬剤を活用した掃除はDr. STONE*2気分で面白いですね。

本ブログはエムスリー Advent Calendar 2021の25日目の記事です。

エムスリー Advent Calendar 2021の締めとして、今年も「VPoEとしてこの◯年間を振り返って」シリーズで2021年を締めくくろうかとも思ったのですが、先日fukabori.fmの第59回第60回でしっかり語ったのと、流石に3年連続でやっていて4年目も同じネタだと皆さん飽き飽きするかなとも思ったので、本日は新企画として「エムスリー執行役員VPoE兼PdMの山崎が、エンジニア、QA、デザイナー、プロダクトマネージャーにお薦めする良書7選」ということでやっていきたいと思います*3

qiita.com

はじめに

特に順序に意味はなく、お薦めする良書7選を選んでみました。多数のジャンルから選んできたので選考過程で惜しくももれた良書もありますが、そちらは登壇などまたの機会で紹介したいと思います。それではさっそく行ってみましょう!各本の紹介には(アフィリエイトIDの埋め込みなしで)Amazonへのリンクを張っておきますのでよろしければどうぞw。

  • はじめに
  • 1. 最難関のリーダーシップ ― 変革をやり遂げる意志とスキル
  • 2. ジョブ理論 イノベーションを予測可能にする消費のメカニズム
  • 3. デザイン思考が世界を変える イノベーションを導く新しい考え方
  • 4. INSPIRED 熱狂させる製品を生み出すプロダクトマネジメントシリーズ
  • 5. コミック版 100円のコーラを1000円で売る方法シリーズ
  • 6. マンガ 餃子屋と高級フレンチでは、どちらが儲かるか?シリーズ
  • 7. 未来を変えるためにほんとうに必要なこと――最善の道を見出す技術
  • おまけ. 「一緒にいたい」と思われるリーダーになる。――人を奮い立たせる50の言葉
  • まとめ
  • We are hiring!

f:id:yamazaki-m3:20211225181124j:plain
ロナルド・A・ハイフェッツのリーダーシップとは何か?が廃版なので中古で買ったら、なんと幸田シャーミンさんのサイン入りだった件

*1:https://www.youtube.com/channel/UCOb2mSJVXt_Aw2pAyj3Glgw

*2:https://ja.wikipedia.org/wiki/Dr.STONE

*3:例によって結局12/25当日まで準備出来ずに、当日残り時間をきにしながら書いています

続きを読む

15年間続いているサービスをクラウドに移行しています

この記事はエムスリー Advent Calendar 2021 の24日目の記事です。

エムスリーエンジニアリングG コンシューマチームの松原(@ma2ge)です。 2021年4月にチーム異動をして、入社当時に所属していたチームにまた戻ってきました。 コンシューマチームでは AskDoctors に代表されるコンシューマ向けのプロダクト開発を日々行っていて自分もその一員として働いています。 また9月からは SRE *1 としての役割も持ち、インフラ面も学びつつ開発をしています。 本記事では今チームが注力しているクラウド移行について、自分が担当した部分について紹介したいと思います。

リモートワークでの健康を保つため卓上スタンディングデスクを導入、日に数回上げ下げしています
リモートワークでの健康を保つため卓上スタンディングデスクを導入、日に数回上げ下げしています

*1:こちらの記事 https://www.m3tech.blog/entry/m3infra-3-years-history で紹介されているチーム SRE としての役割です

続きを読む

エムスリーエンジニアリングフェローに河合 俊典さんが就任しました!

人事の友永です。この度、河合 俊典さんにエムスリーエンジニアリングフェローに就任いただくことになりましたのでお知らせいたします。

エムスリーエンジニアリングフェローとは

在籍中または卒業後に顕著な活躍をしたエンジニアに対して、エムスリーを卒業しても継続的にフェローとして称えるものです。また、エムスリー卒業生として定期的な意見交換を行ったり、エムスリーとエンジニアコミュニティをつなぐハブを担ってもらうという役割もあります。卒業は寂しいですが、新たな関係性のスタートですので引き続き仲間として良好な関係を築いて行きたいと思います!

続きを読む

キーフレーズを抽出して遊ぶ

AI・機械学習チームで2021年新卒の氏家です。 この記事はエムスリーAdvent Calendar 2021の23日目の記事です。 最近チームでスタンディング&ステッパーが流行っているのでその流れに乗ろうと試みましたが、スタンディングの時点で挫折してしまいました。

さて、今回のテーマは自然言語処理です!
AI・機械学習チームでは普段から自然言語処理をはじめとした機械学習を用いてプロダクトの開発・運用を行っています。 しかし、業務にあまり関係ない技術で遊びたい気持ちがあるのもまた事実。 そこで今回は、キーフレーズ抽出と呼ばれる技術に着目して、弊社に関連するデータに適用して遊んでみたいと思います。

  • キーフレーズ抽出とは
  • 使用した手法
  • いざキーフレーズを抽出
    • テックブログ
    • AskDoctors
  • キーフレーズを使った応用
  • まとめ
  • We are hiring!
続きを読む

GitLab上でよしなに自動実行してくれるTerraformのCIを目指して

こんにちは、エムスリー エンジニアリンググループ の鳥山 (@to_lz1)です。製薬企業向けプラットフォームチームでチームSREとして活動しています。

この記事はエムスリー Advent Calendar 2021 22日目の記事です。

Googleの実践から生まれたSREという職種は決してインフラ "だけ" を見る存在ではありませんが、インフラの構築・維持管理は依然として主要な仕事の1つです。

ここ数年のエムスリーのインフラの変遷やその全体像については14日目の記事「エムスリーの IaC 3年史」に譲りますが、私の所属する製薬企業向けプラットフォームチームも、

  • 多くの本番プロダクトがAWS上で稼働
  • データ基盤はBigQuery上に整備
  • 他のチームが開発するGCP上の機械学習システムとも連携

...といった具合で日々クラウド上での開発と運用をしています。また、AWS上の構成はほぼ全て Terraform によってコードとして記述されている状態です。

さて、IaCが実現されてくると、今度は 「その変更を如何にスムーズに検証環境・本番環境に適用するか?」 という課題が挙がってきます。

エムスリーではソースコードの管理にGitLabを用いていますが、今回はGitLab CIを用いてTerraformの適用自動化を推し進めた事例をご紹介します。

インフラ変更の最後のワンステップである「適用」は意外に手作業が残ってしまいがちな領域の1つでもあると思います。類似する課題意識をお持ちの方、お持ちのチームに、この事例が少しでも参考になりましたら幸いです。

f:id:to_lz1:20211220234639p:plain

  • ディレクトリ構成と開発フロー
    • Merge Requestを出したとき
    • Mergeされたとき
  • レビュアがレビューするとき
  • フローを実現するためのGitLab CIの諸機能
    • include
    • extends
    • rules
      • プロジェクト直下の .gitlab-ci.yml
      • 各プロダクト配下の .gitlab-ci.yml
  • その他の工夫点
    • 1. 新しいバージョンのTerraformも利用できるようにしたい
    • 2. セキュリティリスクを抑えたい
  • まとめ
  • We are Hiring!
続きを読む