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

SQL課題:月の集合を連続した期間の集合にまとめてください
2
エムスリーテックブログ
基盤チーム & Unit9(エビデンス創出プロダクトチーム)ブログリレー 4日目は、SQLプログラミングのお話をお届けします。Unit9エンジニアの三浦[記事一覧 ]です。昨日は木田さんの『巨大テーブルにインデックスを追加したい、Flywayで』でした。 今回の課題はタイトル通り、月の集合(たとえば、ユーザーがアクティブであった月の集合)から「何年何月から何年何月まで連続していた(アクティブだった)」という期間の集合に変換せよというものです。連続した期間ってのがまとまっていると判定で便利な局面があるんですよね。具体的にどう役に立つかは後述しますが、大変に実用を意識したデータ基盤プログラミング…
6時間前

巨大テーブルにインデックスを追加したい、Flywayで
3
エムスリーテックブログ
エムスリーエンジニアリンググループGMで、データ基盤チームの木田です。 この記事はデータ基盤チーム & Unit9(エビデンス創出プロダクトチーム) ブログリレー3日目の記事です。前回は橋口さんの データ整備の「曖昧さ」に立ち向かう、ドメインエキスパートと協業するための実践的Tipsでした。 本日は、既存のPostgreSQLのさるテーブル (レコード数 100億超) に対して、差分データをSQLで抽出してBigQueryに連携するための索引追加をしたときの経験を元に、PostgreSQLの巨大テーブルに対してFlywayを使用してインデックスを安全に追加する方法についていくつかのテクニックを…
1日前

データ整備の「曖昧さ」に立ち向かう、ドメインエキスパートと協業するための実践的Tips
5
エムスリーテックブログ
データ基盤チームの橋口です。この記事はデータ基盤チーム & Unit9(エビデンス創出プロダクトチーム)ブログリレー2日目の記事です。 昨日は坂元さんの『冴えたClaude Codeの育て方(50本のSQLをdbt化した話)』でした。 私の所属するチームでは、社内のデータ活用サポート(データマート作成、分析支援など)を重要な業務の1つとしており、関連部門と一緒にプロジェクトを進める機会も多くあります。 関連部門とプロジェクトを進めていく中で、私は技術的な課題と同じくらい、ステークホルダーといかに上手く協業するかが大事だと学んできました。 なぜなら、データ利活用は「ビジネス課題の特定」から「どの…
5日前

冴えた Claude Code の育て方(50 本の SQL を dbt 化した話)
134
エムスリーテックブログ
システムを運用していると時折直面するのが「移行作業」です。 新しい技術に触れられるのは楽しいです。一方、大量のコードの書き換えはちょっと辛いですよね。単純な置換で済めばよいのですが、そううまくはいかないことがほとんどです。 今回はこの書き換えを Claude Code を活用して楽に、精度良く実施したお話です。 データ基盤チーム/Unit9(エビデンス創出プロダクトチーム)エンジニアの坂元です。このブログはデータ基盤チーム/Unit9 ブログリレー 1 日目の記事です。 背景 はじめの一歩 独り立ち そして検証も… できたこと 残った課題 細かい工夫 全文読んでから対応すること セルフレビュー…
6日前

続・Claude Agent SDKでClaude Code Webを作ってみる ~SDKの名前変わったけどそんなことよりStreaming Inputの話をしよう~
エムスリーテックブログ
基盤チームリーダー兼エンジニアリンググループGMの横本(@yokomotod)です。 このブログは基盤チームブログリレー4日目の記事です。3日目の記事は林さんの「BigQuery から高速にデータを持ってきてシームレスに Kotlin data class で使いたい - エムスリーテックブログ」でした。 今回の記事は、Claude Agent SDKの続編です。 前回記事でClaude Codeの公式SDKを使って対話型CLIやWebアプリを作りましたが、いくつか課題がありました。 その後SDKが大きく進化し、Streaming Input Mode でそれらの課題が解決しているのが個人的に…
11日前

BigQuery から高速にデータを持ってきてシームレスに Kotlin data class で使いたい
エムスリーテックブログ
この記事は基盤開発チームのテックブログリレー3日目の記事です。 (2日目の記事は、田尻さんの「未来に続く、これからの非同期処理 ~ Algebraic Effect and Handlers ~ - エムスリーテックブログ」でした) こんにちは、基盤開発チーム/Unit3を兼務している林です。 最近の仕事で、AWS環境のKotlinアプリケーションでBigQueryにあるデータを高速処理したくて、BigQuery Storage Read APIを使ったうえでKotlin data classへの変換処理を実装しました。 「簡単に見える処理でも色々考えることがあるなあ」ということをあらためて実…
13日前

未来に続く、これからの非同期処理 ~ Algebraic Effect and Handlers ~
エムスリーテックブログ
非同期処理、難しいですよね。 現代のプログラミングにおいて、非同期処理や並行処理は必須とも言え、各言語で様々な実装があります。コールバック、promise/future そして async/await など。 複数の概念・実装があるものの、例に漏れず銀の弾丸はなく、難しい非同期処理との戦いは今もなお続いていると言えます。 今回紹介するのはその戦いの武器になるかもしれない概念、代数的エフェクト (Algebraic Effect and Handlers) 1 です。 現時点では代数的エフェクトを使える環境・言語は限られていますが、今知っておけば十年後にすました顔でいられるかもしれません。 代数…
15日前

OCamlでQuineを作った
エムスリーテックブログ
ギークな皆さん、こんにちは、こんばんは。 10月より基盤開発チームのチームリーダーもやりはじめました、エムスリーエンジニアリンググループVPoEの河合(@vaaaaanquish)です。 夏の思い出。本文とは関係ありません。 当記事では、私がOCamlに初挑戦した話、そしてQuineを作った話を書いていきます。 基盤チームとOCaml Quineを作った OCaml Quine解説 ディレクティブ OCaml eval アスキーアートへの整形 おわりに We are hiring !! エンジニア採用ページはこちら カジュアル面談もお気軽にどうぞ インターンも常時募集しています
15日前

ICCV2025が開催されるので、エムスリー AI・機械学習チームの推し論文を勝手に紹介するぜ!
エムスリーテックブログ
こんにちは。エンジニアリンググループのAI・機械学習チームに所属している鴨田 です。弊チームでは毎週1時間の技術共有会を実施しており、各自が担当するプロダクトの技術や、最近読んだ論文を紹介しています。今週はICCV2025が開催されていることもあり、同学会の論文読み会となりました。1セッション1名の担当で、各自がセッション内で気になった論文の詳細を解説します。本ブログではその一部として、セッションごとの「推し論文」を紹介します。 ChatGPTで生成した、「ハワイ開催のコンピュータービジョン学会会場」 Scaling Laws for Native Multimodal Models 推しポイ…
21日前

睡眠時無呼吸リスク計測サービス「Sleep Doc」のデータ基盤を支えるAWSサーバレスIoTアーキテクチャ
エムスリーテックブログ
この記事はグループ会社支援チームブログリレー1日目の記事です。 エムスリーエンジニアリングGグループ会社支援チームの愛宕です。 私たちグループ会社支援チームは、その名の通り、エムスリーの多様なグループ会社が抱える技術的な課題を解決し、事業成長をサポートするというミッションを担っています。 今回はその中の1つ、エムスリーとソニー社のジョイントベンチャーである、会社サプリムが提供する睡眠時無呼吸リスク計測サービス「Sleep Doc」で採用しているIoTアーキテクチャについて、約1年間の運用で得られた学びをお届けしたいと思います。
1ヶ月前

GitLab CI から GitHub Actions への移行でハマった N 個のこと
エムスリーテックブログ
この記事はコンシューマーチームブログリレー5日目の記事です。 こんにちは。エムスリーのコンシューマーチームエンジニアの園田です。 以前のポストにもあるように、エムスリーでは GitLab から GitHub EE へ移行しています。 www.m3tech.blog コンシューマーチームで管理している GitLab リポジトリも、いくつか GitHub に移行しました。当然ですが、GitLab CI の CI/CD パイプラインは GitHub Actions に置き換える必要があります。移行前は「GitLab でできることは GitHub でもできるんでしょ?」と軽く考えていたのですが、実際に…
1ヶ月前

ほどほどに使う生成 AI
エムスリーテックブログ
この記事はコンシューマーチームブログリレー4日目の記事です。 エムスリーエンジニアリングG コンシューマーチームの松原です。 今回はここ半年ほど開発支援として使っていた AI エージェントについて振り返ります。 自分の使い方としてはバリバリに使いこなしているわけではなく人並みに使っているというレベル感です。 それでも AI エージェントに助けられていると感じることがいくつもあったので、この記事でいくつか紹介したいと思います。
1ヶ月前

「生成AIでサクッと!」というわけには行かなかったCoffeeScript → TypeScriptへの置き換え
エムスリーテックブログ
本記事は、コンシューマーチームブログリレー 3日目です。 はじめまして。エンジニアグループ、コンシューマーチームの松本と申します。 本記事では、社内で開発・利用している内部ツールのフロントエンドを CoffeeScript + Backbone.js の構成から TypeScript + React の構成に置き換えた時の知見を共有できればと思います。
1ヶ月前

「全員QA」を30分ミーティングで強くする
エムスリーテックブログ
こんにちは。エンジニアグループQA (Quality Assurance) チームの中塚です。 この記事はコンシューマーチームブログリレー 2日目の記事です。QAエンジニアがリスク洗い出しをサポートする取り組みの事例をご紹介します。
1ヶ月前

チーム開発はじめました。のその後
エムスリーテックブログ
コンシューマーチームブログリレー 1日目です。 こんにちは。エムスリーエンジニアリングG コンシューマーチームで主にアスクドクターズ開発を担当しているスクラムマスターの甲村と申します。 2023年にコンシューマーチームを3つのチームに分割した例をご紹介しました。チーム開発の導入から早2年。スクラムチームで起きた変化を語っていきたいと思います。 全員一丸となる開発の流れ チーム開発を導入した背景 現在の体制 起きた変化 先を見通せるようになった 品質の向上 大規模、シビアな開発もトラブル0へ 守備範囲を広げる 制約を乗り越えるスクラムのループ 終わりに We Are Hiring!
1ヶ月前

あえて二度手間することで取り戻す、AI時代のコーディングの楽しさ
エムスリーテックブログ
はじめに エムスリーテクノロジーズの永江 (@yukinagae)です。 最近はAIエージェントを使った開発が当たり前になってきました。CLIだけでもClaude Code / Gemini CLI / Codex CLI など多くのツールが登場し、開発効率の向上を日々実感しています。実際、Claude Codeを使うと趣味開発のスピードが数倍に上がり、1週間かかるものが数時間で完成することもあります。 さらに、コーディング用途だけでなくDia / Comet / Gemini in Chrome といった、ブラウザとAIが一体化したツールも次々と登場しています。エンジニアリング以外の業務効率…
1ヶ月前

超一流のプロダクトマネージャーはどのようにデータを見るのか〜KPIを2倍にするための分析方法
エムスリーテックブログ
こんにちは。エンジニアリンググループ プロダクト支援チームでプロダクトマネージャーをしている中村です。 既存プロダクトを担当しているPdMにとって、どうやって次の非連続な成長(=Step Change)を起こせるかというのは、重要な課題だと思います。 私はこれまでPdMとして、既存プロダクトのグロースに携わることが多く、KPIを伸ばすためにデータ分析をし、仮説検証をしながらプロダクトを連続的に成長させる(KPIを120%〜130%伸ばす)経験を積んできました。さらにPdMとしてより事業成長に貢献するためには、次の非連続な成長(KPIを2倍にするなど)を生み出したいと考えていました。 そんな時に…
1ヶ月前

【インターン参加記】フロントエンドからインフラまで全部触ってきました!!!
エムスリーテックブログ
はじめに こんにちは、エムスリーで2週間インターンをさせていただいたしーぴー (@__cp20__) です。インターンではWebバックエンドを中心としてWebフロントエンド、インフラ (IaC)、など幅広い分野のタスクをこなすことができました。このブログでは具体的にどんなタスクをこなしたか、それによって何が学べたかなどをご紹介します。 インターン最終日に撮った写真 目次 はじめに 目次 概要 キッカケ タスク1: 請求画面の速度改善 解決策の検討 改善効果の測定 タスク2: ログイン導線の改善 タスク3: 請求画面のソート順序の整理 タスク4: マイクロサービスごとの Redis を統合 Re…
2ヶ月前

バッチが読むテーブルのスキーマ変更をimport1行の追加で検知できるOSSを作る
エムスリーテックブログ
【Unit1 ブログリレー7日目】 こんにちは、CTOの大垣です。 このブログはUnit1ブログリレー 7日目の記事です。前日は木田さんの、大規模メンテナンスを振り返る 〜「やってよかった」準備集でした。大規模な作業だからこそ、リハーサルや実況などワイワイやることの良さが光りますね! さて、今日の話題は、本番稼働している定期実行バッチの安全性についてです。 皆さんの環境でも、きっとたくさんのバッチが動いてますよね? エムスリーのMR君サービスを支えるUnit1でも400以上のバッチが動いています。パーソナライズされたコンテンツの生成だったり、KPIの計測だったり、データの健全性チェックだったり…
2ヶ月前

大規模メンテナンスを振り返る 〜「やってよかった」準備集
エムスリーテックブログ
【Unit1 ブログリレー 6日目】 この記事はUnit1ブログリレー 6日目の記事です。前日の記事は こちら 。 エンジニアリンググループGMの木田です。 先日、数年に一度の規模のシステムメンテナンスを実施しました。メンテナンス作業自体は複数のチームが関わり、サービスの計画停止も伴う複雑な作業だったにもかかわらず、入念な準備のおかげで大きなトラブルもなく予定時間を1時間ほど前倒しで完了できました。 関係者で行った振り返りで今後も続けたいプラクティスが多く得られたので、その学びを「やってよかった」準備集として整理してお伝えします。大規模なシステムメンテナンス作業を計画している方の参考になれば幸…
2ヶ月前

極力負担が少ない形で本番データの正当性を担保する仕組みを導入した話
エムスリーテックブログ
【Unit1 ブログリレー4日目】こんにちは、Unit1(製薬企業向けプラットフォームチーム)の高澤です。ブログリレー3日目は河野さんによる「AWS ECSの各クラスタのデプロイの失敗を横断的に検知する方法」でした。 Unit1 では Web講演会 という医師に向けた情報の講演会ライブ配信サービスを開発・運用しています。2020年から段階的にオンプレからクラウドへの移行を進めており、この記事ではデータベースのクラウド移行と併せて本番データの正当性を担保する仕組みを構築した話をご紹介したいと思います。 背景 実現したいこと 方針検討 実装 効果とこれから We are Hiring!
2ヶ月前

AWS ECSの各クラスタのデプロイの失敗を横断的に検知する方法
エムスリーテックブログ
【Unit1 ブログリレー3日目】こんにちは。エンジニアリンググループ Unit1 の 河野那緒 です。ブログリレーではココまで生成AI活用に関する記事が続いておりましたが、本日は チームSRE が行なっている活動の一つを取り上げたいと思います。 Unit1 (MR君ファミリー開発チーム) では Web講演会 という医師に向けた情報の講演会ライブ配信サービスや MR君 という製薬会社の MR と医師とのコミュニケーションを支えるサービスをはじめとして、多様なサービスおよびその社内向け管理ツールを開発・運用しております。 詳細はこちらをご覧いただけたらと思います。 speakerdeck.com…
2ヶ月前

うちのチームにもDevinが来た!自律型AIは本当に"同僚"になれるのか?
エムスリーテックブログ
【Unit1 ブログリレー2日目】こんにちは、Unit1(製薬企業向けプラットフォームチーム)とデータ基盤チームを兼務しております石塚です! ブログリレー1日目は佐野さんによる「たった9行でAIレビュー導入!Claude CodeとGitLab CIで全リポジトリにAIコードレビューを導入した話」でした。 Devinに代表される自律型AIエージェントの話題を目にする機会が増えてきました。その実力については、 「本当に人間の作業を代替できるのか?」 「どうすればうまく使いこなせるのか?」 など、多くの開発者が期待と疑問を寄せているのではないでしょうか。 この記事では、エムスリーのチームが実際にD…
2ヶ月前

たった9行でAIレビュー導入!Claude CodeとGitLab CIで全リポジトリにAIコードレビューを導入した話
エムスリーテックブログ
世の中ではDevinやGithub CopilotなどのAIコードレビューが定着しつつあります。 しかし、セルフホストGitLabを利用している企業では、対応製品が少なかったりサードパーティ製品のセキュリティチェックや保守が気になってしまい導入が進めづらいと思います。 エムスリーでは、Claude CodeとGitLab CIを組み合わせ、わずか9行でAIコードレビュー導入が可能な仕組みを構築しました。 【Unit1 ブログリレー1日目】Unit1(製薬企業向けプラットフォームチーム)のチームリーダーの佐野です。本日からUnit1のブログリレーが開始されます🎉 趣味は業務改善で、SlackWF…
2ヶ月前

新機能開発の突破口:この機能の顧客は誰?
エムスリーテックブログ
こんにちは! エンジニアリングG プロダクトマネージャーの杉本です。 私はインターン・業務委託を経て、今年(2025年)4月にエムスリーに入社しました。現在はデジスマチームに所属し、経験豊富なチームメンバーと共に医療業界のDXに真正面から取り組んでいます。 入社してからの半年間、人生で経験したことがないような濃密な学びを重ねながら、楽しく働くことができています。このブログでは、そんな学びの1つをシェアできればと思います。 Imagenで今までの半年間を表現してみました はじめに:急成長プロダクトゆえの難しさ 顧客の声はいつも正しい、しかし… 灯台下暗し! 突破口はすぐ近くにあった この経験から…
2ヶ月前

アンケートの分岐構造を自動解析してQAを楽にする試み
エムスリーテックブログ
【Unit7 ブログリレー7日目】こんにちは、エンジニアリンググループGMの木田です。 前日の記事は海野尾による プロダクトマネジメント1年目の学び 〜プロダクトを成功に導く「一次情報」の力〜 でした。 さて、今日はアンケートシステムの複雑な分岐制御に潜む構造的な問題を検知するための取り組みを試行錯誤した結果、一定の成果が得られたのでご紹介します。
2ヶ月前

エムスリー、実はアプリの会社です
エムスリーテックブログ
はじめに こんにちは。エンジニアリンググループ マルチデバイスチームGMの藤原聖です。 エムスリーはiOS/Androidアプリを2025年9月時点で、13サービス開発しています。 1つの会社が作っているアプリの数としては意外に多いのではないでしょうか? 本記事ではエムスリーが実はアプリの会社であることをご紹介できればと思います。 We're App Developers
2ヶ月前

DartでQuineをダーッと書きました
エムスリーテックブログ
デジスマチームの荒谷(@_a_akira)です。 最近、社内で各言語のQuineを作成するブームが起きています。この流れに乗って、私もDartでQuineを作成してみましたので、本記事でその仕組みを解説します。 エムスリーは2025年9月10日(水)から12日(金)に開催されるDroidKaigi 2025にゴールドスポンサー、また2025年11月13日(木)に開催のFlutter Kaigi 2025にはシルバースポンサーとして協賛します。 イベントでは、今回作成したQuineをデザインしたクリアファイルをノベルティとして配布予定です。ぜひ弊社ブースにお立ち寄りいただき、お手に取ってみてくだ…
2ヶ月前

プロダクトマネジメント1年目の学び 〜プロダクトを成功に導く「一次情報」の力〜
エムスリーテックブログ
【Unit7 ブログリレー6日目】 こんにちは。エンジニアリンググループ プロダクトマネージャーの海野尾です。 Unit7に所属し、主に医師向けのアンケート/インタビューサービスのプロダクト開発に取り組んでいます。 私は2024年10月にエムスリーに入社しました。前職はIT企業でクラウドサービスの顧客提案・導入支援に携わっており、プロダクトマネージャーは今回が初挑戦になります。 気がついたらあと少しで1年が経過しようとしており、時間の経つスピードの早さに驚いていますが、この節目にこの1年間で得られた学びを振り返りたいと思います。 夏季休暇でイギリスに行ってきました。写真は湖水地方の宿からの眺め…
2ヶ月前