エムスリーテックブログ
https://www.m3tech.blog/
エムスリー(m3)のエンジニア・開発メンバーによる技術ブログです
フィード

エムスリーはpmconf 2026の全会場でプラチナスポンサー&登壇します!〜福岡・大阪・東京でお会いしましょう〜
エムスリーテックブログ
皆さんこんにちは、こんばんは。朝晩がすっかり冷え込んできて、そろそろキャンプの季節到来だとソワソワしている取締役CPO/CAIOの山崎です。 今更ながら新品購入してまだ火入れしていないWolf&Grizzlyの焚き火台「Fire Safe」の火入れが今から楽しみで仕方ありません^^。 尾上製作所のコンパクトピザオーブンIIも良い感じに乗るみたいなので、焚き火ピザにもチャレンジしてみたいと思っています。 まだ火入れしていないWolf&Grizzlyの焚き火台「Fire Safe」。合わせて使うゴトクはBoundless Voyageのチタン。 そしてもう一つ、今年もこの季節がやってまいりました。…
6日前

Claudeが実装したE2Eテストをレビューするツールを自作してみた
エムスリーテックブログ
こんにちは。エムスリーのQAチームの須賀です。 私が担当するチームでは、開発経験のないQAエンジニアの方もClaudeを用いてPlaywrightのE2Eテストを実装しています。 Claudeを用いることでE2Eテストの実装自体は簡単になりましたが、Claudeが実装したコードは「テスト実行は成功するがテスト手順や操作対象が誤っている」こともあります。そのため、Claudeが実装したE2Eテストの振る舞いが正しいかどうかは人がチェックする必要があります。 自分でE2Eテストを実装する場合は、実際の画面を見ながら実装するため「このコードが画面のどの要素を操作しているか」は感覚的に分かります。 一…
10日前

geohash について知ったので、パン屋巡りに使えないか考えてみた
エムスリーテックブログ
※ 記事とは何の関係もない、夏の旅行で撮った馬の写真 メディカルマーケティングオートメーションチームの山本(@hiro_o918)です。 本記事はメディカルマーケティングオートメーションチーム(Unit2)のブログリレー2日目の記事です。 前回は中村さんの「Rustで自己言及プログラムであるQuineを作っていく」でした。 最近、場所をハッシュ値で持つ geohash という概念を学びました。休日にたまにパン屋巡りをするのですが、これを応用すれば効率的にパン屋を巡れるんじゃないかと思いついたので、考えたことを書いていこうと思います。 ただ、人間の胃には限界があるため、実際にこのとおり巡るのは難…
15日前

Rustで自己言及プログラムであるQuineを作っていく
エムスリーテックブログ
はじめに エムスリー株式会社 メディカルマーケティングオートメーションチームの中村(@inakam00)です。 本記事はメディカルマーケティングオートメーションチーム(unit2)のブログリレー1日目の記事です。 エムスリーテックブログではお馴染みとなりつつあるQuineを、今回はRustで作ってみました。 はじめに Quineについて RustでM3 Quineを作る 完成品 コードを3つのパートに分ける 空白の代わりにコメントを使う マスク情報も英字にしてコードに溶け込ませる raw文字列と文字エスケープ raw文字列の終端記号 置換処理の重複防止 空白文字の保持 おわりに 編集後記 We…
16日前
git worktree大増殖で困っていた
エムスリーテックブログ
Gitのworktreeサブコマンドは、AIエージェント開発が普及してから急によく知られるようになった感があります。実際にこれが登場したのはもう10年前、2016年のことだそうですね。私自身は業務の性質上、複数の依頼案件を並列で進めることが多くてAIエージェントが出てくる前からworktreeみたいなことをしていました。同じリポジトリを何個もローカルに別々にcloneしてあっちへ行ったりこっちへ来たりと作業していたんです。それで昨今の流行でworktreeサブコマンドの存在を知ったときには悔しいのなんの。 とはいえ、worktreeを使って(AIエージェントも使って)超多並列で開発業務をやって…
19日前

RecSys 2026の論文を紹介するぜ!
エムスリーテックブログ
こんにちは。エンジニアリンググループのAI・機械学習チームに所属している鴨田 です。弊チームでは毎週1時間の技術共有会を実施しており、各自が担当するプロダクトの技術や、最近読んだ論文を紹介しています。9/27〜10/1までRecSys 2026が開催されていたこともあり、同学会の論文読み会となりました。 本ブログでは輪読会で取り上げた論文を紹介します。また、2026年の内容が公開される前の8月末から実施していたため、その期間に実施したRecSys 2025の論文紹介も合わせて掲載します! RecSysTopページから素材を拝借し組み合わせた画像
21日前

新卒1年目からKPIオーナー。任せて、支えるエムスリーのPdM育成
エムスリーテックブログ
こんにちは。エンジニアリンググループ プロダクトマネージャーの杉本です。2025年4月に新卒で入社し、デジスマ診療のチームでプロダクトマネジメントを担当しています。デジスマ診療は、診療の予約・問診・決済といった医療機関の業務をDX化し、患者さんの診療体験そのものを改善するサービスです。 シルバーウィークに行った八丈島 エムスリーのPdMは、1年目から課題の発見、開発のリード、KPIのオーナーまで一貫して任せてもらえます。この記事では、任せてもらう側だった私から見た「任せきりにしない環境」を紹介します。
24日前

この数字、成果にできますか? ABテストの落とし穴を公開データで確かめる全5問
エムスリーテックブログ
こんにちは。AI・機械学習チームの高田です。 施策の効果検証では、発生頻度の低いイベントをKPIに置くことがあります。母数が小さいぶん、集計定義のちょっとした違いで数字が動きやすくなります。「test群が勝っています」と報告を受けたとき、その数字をどこまで信じてよいのか。判断に使う観点を一度整理しておきたいと考えていました。
24日前

PDCAの罠 〜A/Bテストの使いどころ〜
エムスリーテックブログ
こんにちは。エンジニアリンググループ プロダクト支援チームでプロダクトマネージャーをしている中村です。 業務でAIエージェントを活用するようになり、分析のスピードが圧倒的に上がりました。気になった数字をすぐ別の切り口で分解し、仮説を立てては検証する。以前なら一段で止まっていた深掘りが、何段も進むようになったのです。その結果、A/Bテストの設計から効果検証までが格段に捗るようになりました。 そうして積み重ねた改善は、一つひとつ確実に成果を出し、プロダクトは順当に成長しています。ただ、10xを狙えるステップチェンジには、まだ至っていません。 PDCAで成果が出ているからこそ、無自覚にPDCAを回し…
24日前

AIが作る資料、みんなに配りたいし、見た目も構成も揃えたいし、図もグラフもきれいにしたいし、スライドも作りたい
エムスリーテックブログ
こんにちは、エムスリーエンジニアリンググループの福林 (@fukubaya) です。 AIエージェントに調査や分析をさせると、成果そのものは十分な質で出てきます。ところが、それを人に配る段になると一手間かかります。ターミナルに流れた結果をそのままSlackに貼っても読んでもらえませんし、Markdownのままでは図表の表現力が足りません。かといってHTMLで出力させると、実行するたびにデザインも文章構成も安定せず、チームの成果物として見たときに揃いません。 そこで、成果物の「見た目」と「構成」をプラグイン側に固定してしまうことにしました。社内のデザインシステムをレポートに適用し、目的別の文書構…
1ヶ月前

KestraとAmazon EKSのキャパシティプランニング - JVMに思いを馳せながら
エムスリーテックブログ
エムスリーエンジニアリンググループGMで、データエンジニアの木田です。 この記事はデータ基盤チームのブログリレー4日目の記事です。前回は橋口さんの 「BigQueryのスロット、返し忘れていませんか? fluid scalingによるスロット費用最適化」 でした。 データ基盤チームでは Digdag / Embulk で長年運用してきた各種サービスから BigQuery へのデータ連携基盤を、Kestra(OSS のワークフローオーケストレータ)と EKS(AWS のマネージド k8s)へ移行しています。 移行作業自体は現在最終局面といったところで、Kestra の選定経緯や使用感については後…
1ヶ月前

BigQueryのスロット、返し忘れていませんか? fluid scalingによるスロット費用最適化
エムスリーテックブログ
エムスリーでは、BigQuery EditionsでAutoscalingを使っています。BigQueryのスロットは使った分に応じて課金されると思いがちですが、厳密には確保したスロットに応じて課金されます。BQのfluid scaling機能を有効化すると、確保したスロットを素早く解放でき、費用の最適化につながります。この記事では、BigQuery のスケーリングの仕組み、何に対して課金されているか、max_slots 調整の取り組み、fluid scaling の効果について書きます。 データ基盤チームの橋口です。この記事はデータ基盤チーム & Unit9(エビデンス創出プロダクトチーム)…
1ヶ月前

AIの分析が返す"それっぽい数字"をどう防ぐか——dbt × Lightdash × MCPでガードレールを作る
エムスリーテックブログ
こんにちは、データ基盤チームと Unit1(製薬企業向けプラットフォームチーム)を兼務している石塚です。この記事はデータ基盤チーム & Unit9(エビデンス創出プロダクトチーム)ブログリレー 2 日目の記事です。前回は坂元さんの「共通データセットを育て続けたい。でもデータマートの数字は勝手に変えたくない」でした。 データ基盤チームでは今、「分析依頼に対応する業務フロー」を AI 前提に作り替える PoC を進めています。依頼を受けた人が集計ロジックを組み立てて数字を作り、シートに整えて返す。この流れを、AI エージェントが一気通貫で回せる形にしたいと考えました。その中核に据えたのが、dbt …
1ヶ月前

共通データセットを育て続けたい。でもデータマートの数字は勝手に変えたくない
エムスリーテックブログ
複数のデータマートのベースとなる共通データセットに手を入れたい。でもデータマートの数字が変わると困る人がいる。そういうことってありますよね。 この記事は、共通データセットは進化させ続ける一方、影響を取り込むタイミングをデータマート側で制御できるようにするお話です。 データ基盤チーム/Unit9(エビデンス創出プロダクトチーム)エンジニアの坂元です。このブログはデータ基盤チーム/Unit9 ブログリレー 1 日目の記事です。 東京競馬場のキッズガーデンの巨大滑り台。夏の間はキッズガーデンは閉鎖されており、9月の初週は比較的空いている気がします。
1ヶ月前

Go Conference 2026 に参加しました!(登壇&スポンサー)
エムスリーテックブログ
エンジニアリンググループの田口です。 9月11日に中野セントラルパーク カンファレンスで開催された Go Conference 2026 に、エムスリーはランチスポンサーとして協賛させていただきました。 また、私自身はスポンサーセッションで登壇させて頂きました。 私自身は Go Conference 初参加となりましたが、Gopher の皆さんの熱意と Go に対する愛が感じられて楽しむことができました。 本記事では、会場の様子や私のセッション、印象に残ったセッションについてレポートします。
1ヶ月前

Azure Document Intelligenceで非定型の表を読む
エムスリーテックブログ
この記事はグループ会社支援チームブログリレー1日目の記事です。 OCRイメージ エムスリーエンジニアリンググループ グループ会社支援チーム(エムスリーグループ各社のプロダクト開発を支援するチーム)およびM3 Technologiesの愛宕です。 最近、紙の帳票をスキャンした画像から項目と値を抽出し、構造化データに変換する社内システムを開発しました。今回はそのときの話をします。 難しかったのは、読み取る対象が「非定型の表」だったことです。同じ種類の情報を載せた帳票でも、発行元が違えば表の組み方が違います。列の並びも、罫線の引き方も、セルの結合の仕方もさまざまで、「この位置にこの項目がある」という…
1ヶ月前

QuineMakerを作った話と技術的な解説
エムスリーテックブログ
はじめに エムスリー株式会社、業務執行役員VPoEの河合(@vaaaaanquish)です。 本記事は、私もGMとして在籍する「AskDoctors開発チーム」のブログリレー 5日目の記事です。 本記事では、私が個人開発した「QuineMaker」というサービスの技術面の紹介をします。 はじめに QuineMakerについて Quineについて Quineの作り方 画像からのQuine生成 画像に対して適切なコードを見つける 色付きQuineの生成 動画からのQuine生成 動画からのQuineの難しさ おわりに We are hiring !!
1ヶ月前

ETL 基盤を Embulk から dlt + dbt に乗り換えた 2 つの理由
エムスリーテックブログ
この記事はコンシューマーチームブログリレー 4日目の記事です。 Embulk 0.9.25 で動かしていた担当プロジェクトの ETL を、dlt + dbt と Step Functions に全面移行しました。証明書エラーと BigQuery のレガシー API 利用で観念した話です。 こんにちは。エムスリーのコンシューマーチームエンジニアの園田です。 コンシューマーチームで大幅なメンテナンスなく元気に動いていたEmbulkですが、今年の夏に全部やめました。 なぜやめたのか、なぜ dlt + dbt なのか、やってみてどこでハマったのか、という順で書いています。 新しい技術の話はほとんどなく…
2ヶ月前

ランタイムを上げるか、Lambda をなくすか - Firehose ネイティブ機能でデータ変換 Lambda を消すまで
エムスリーテックブログ
この記事はコンシューマーチームブログリレー 3日目の記事です。 エムスリーエンジニアリングG コンシューマーチームの松原(@ma2ge)です。 ある日 AWS から「[要対応] AWS Lambda Node.js 20.x サポート終了」という通知が届きました。ランタイムの EOL 対応、皆さんも定期的にやってきますよね。 今回対象になったのは、メール配信システムのログ連携で使っていた Firehose のログメッセージ抽出用 Lambda です。当初は素直にランタイムを上げようと考えたのですが、そういえば Firehose がこの処理をネイティブサポートしたという話を以前に目にしていたこと…
2ヶ月前

ReceiptAPIからApp Store Server APIへ - iOSの課金基盤を一切止めずに移行した話
エムスリーテックブログ
この記事はコンシューマーブログリレー 2日目の記事です。 こんにちは。エムスリーエンジニアリングG コンシューマーチームエンジニアの甲村と申します。 今回は少し前の話となりますが、iOSアプリのサブスクリプション課金を支えるサーバー側の仕組みを、Appleが推奨する App Store Server API ベースに移行したときの話を書きます。着手する前は、新しいAPIを叩くように書き換えるだけだろうと思っていたのですが、実際に大部分を占めていたのは、新しいAPIの実装ではなく、どういう順番で出すかでした。一気に全体のAPIを変更してしまえばソースコードもきれいですし、楽なのですが、万が一不具…
2ヶ月前

副作用の影響範囲を型で示したい — Scala 3 が模索する「Capture Checking」
エムスリーテックブログ
本記事は、コンシューマーチームブログリレー 1日目です。 はじめに 関数型まつりで触れてから、再び自分の中の Scala 熱が高まっています。エンジニアリンググループ、コンシューマーチーム 兼 WHITEJACK チームの松本です。 Scalaでは従来、Effのようなライブラリを使うことでEffect Systemのようなものを実現できました。しかし学習コストが高く、実行時のインタープリタのコストなどの課題もあります。もっと軽い方法はないのでしょうか。 「OCaml 5 の algebraic effects(effect handlers)に似たことが Scala でできないか」という出発点…
2ヶ月前

チームのエンジニア勉強会で「ソフトウェアテスト徹底指南書」を読んだ話
エムスリーテックブログ
この記事は、Unit7ブログリレー8日目の記事です。 こんにちは!エムスリーエンジニアリンググループQAチームの城本です。普段は担当しているプロダクトチームのUnit7ことリサーチプロダクトチームで品質向上のためにあれこれしています。今年に入ってからチームの勉強会で「ソフトウェアテスト徹底指南書 〜開発の高品質と高スピードを両立させる実践アプローチ〜」を読んでおり、先日ちょうど読み終わりました。今回はこの勉強会の様子を紹介します。 勉強会で読んだ本と書見台。書見台はあると意外と便利 勉強会の経緯 本を選んだ理由 進め方 感想 テストの体系が言語化されていく感覚 探索的テストの議論が盛り上がった…
2ヶ月前

Claude Codeでトークンリミットが頻発したので、作業ごとにリミットを設定した
エムスリーテックブログ
この記事は、Unit7 リサーチプロダクトチームのブログリレー7日目の記事です。 こんにちは、エムスリーエンジニアリンググループ/Unit7 リサーチプロダクトチームでチームリーダーをやっている遠藤です。 皆さん、トークン使い切ってますか?私は24時間トークンを使い切れる人間でありたいと思っています。 エムスリーエンジニアリンググループにおける開発ではAIは使い放題なので、量に切迫しているというわけではありません。それでも個人利用も含めてサブスクプランの上限があれば使い切りたくなってしまうのが人情です。 そして、トークンを使い切ろうとした結果、最近私はトークンリミットと戦っています。 背景: …
2ヶ月前

Apache EChartsにllms.txt対応をコントリビュートした話
エムスリーテックブログ
この記事は、Unit7(リサーチプロダクトを扱う部署)ブログリレー6日目の記事です こんにちは、Unit7 リサーチプロダクトチームの江波戸です。 Apache EChartsの公式ドキュメントはSPAのため、AIエージェントがHTTPで取得しても本文が読めません。これを上流側で解決するため、llms.txt とMarkdown版ドキュメントの生成を本家に提案してマージされました。この記事では、その設計と実装、振り返りを書きます。
2ヶ月前

Testcontainersで実DBを使う並列テスト基盤を設計する
エムスリーテックブログ
【Unit7 ブログリレー5日目】 記事とは関係ない自宅の本棚。気づいたら本が増えてます。 エムスリーエンジニアリンググループ Unit7(リサーチプロダクトチーム)の丸田です。 現在開発しているプロジェクトでは、可能な限りMockを使わず、実際のPostgreSQLに接続してJUnitでテストを動かしています。 Repositoryのテストだけでなく、HTTPリクエストを投げるControllerのテストまで実DBに繋いでいます。 実DBを使うと本番に近い状態で検証できますが、テストをそのまま並列実行するわけにはいきません。 複数のテストが同じDBの状態を読み書きするため、互いの操作が干渉し…
2ヶ月前

YANS2026にゴールドスポンサーとして参加してきました!
エムスリーテックブログ
スポンサーセッションでの1分間ピッチ こんにちは。AI・機械学習チームの池嶋です。 エムスリーは2026年8月17-18日に仙台国際センターで開催された第21回言語処理若手シンポジウム(YANS2026)に、ゴールドスポンサーとして協賛させていただきました! 当日は私を含むAI・機械学習チームのメンバー3名で参加してきましたので、その模様を紹介します!
2ヶ月前

OKFやDiátaxisを活用してDevinによるお問い合わせ対応をしている話
エムスリーテックブログ
【Unit7ブログリレー4日目】(Unit7のメンバーが持ち回りで記事を書く企画です) エンジニアリンググループ Unit7(リサーチプロダクトチーム)の長谷川です。 AIコーディングが当たり前になって久しいですが、じゃあ実際どう使うのがいいのか、運用のやり方はまだ手探りです。今回はその手探りの1つ、「ビジネスサイドからの問い合わせをAIに答えてもらう」取り組みを紹介します。 さて、社内のあるWebサービスには、エンジニアだけでなく、運用を担うビジネスサイドの担当者も関わっています。 担当者からは、クライアントからエスカレーションしてきた仕様の問い合わせが日常的に届いていて、エンジニアが都度答…
2ヶ月前

Claude Code から Cloud Run 上の MCP サーバを使うための認可構成
エムスリーテックブログ
MCP サーバを利用するクライアントとして Claude Code を想定し、Cloud Run 上の MCP サーバに認可を追加するための構成を検討します。
2ヶ月前

僕なりのForward Deployed Engineering
エムスリーテックブログ
この記事は、Unit7(リサーチプロダクトを扱う部署)ブログリレー2日目の記事です Unit7 リサーチプロダクトチームの佐藤(@riku929hr)です。 この1年で社内のAIの利用は一気に広がりました。 特にClaude Codeに関しては、いまではエンジニアだけでなく、ビジネスサイドのメンバーも使える環境が整い日常的に使われています。 僕は現在、プロダクトの開発と運用を本業としながら、リサーチ業務を担うビジネスサイドのチームとともに、AIを業務に実装する取り組みをしています。 この記事では、エンジニアが隣のビジネスサイドの部署に出向き業務最適化の伴走をするという役割を担った学びを書きます…
2ヶ月前

アンケートの設定が噛み合っているかをSMTソルバに確かめさせた
エムスリーテックブログ
こんにちは! エムスリーエンジニアリンググループ、Unit7(リサーチプロダクトチーム)の丸山です。この記事は、Unit7 ブログリレー1日目の記事になります。 私はアンケートを組み立てるための定義データを主に扱っています。 皆さんは、細かい設定の集まりを眺めていて「どれも単体では設定できてしまうのに、組み合わせると行き止まりができる」という状態に出くわしたことはありませんか。アクセス権限のルールを足していったら、どの役割からも触れないリソースができていた。あるいは割引の適用条件を足していったら、どんな金額でも割引が効かない組み合わせが残っていた。ルールを1つずつ見ているぶんには、どれもおかし…
2ヶ月前