サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ChatGPT
www.m3tech.blog
エムスリーエンジニアリンググループ、データ基盤チームの石塚です。 この記事はデータ基盤チーム & Unit9(エビデンス創出プロダクトチーム) ブログリレー5日目の記事です。前回は三浦さんの 「SQL課題:月の集合を連続した期間の集合にまとめてください」でした。 エムスリーが提供するサービスの中には、今も一部でオンプレミス環境のOracleを活用しているシステムがあります。私たちは、これらのシステムについてもコスト効率やメンテナンス性をさらに向上させるため、Oracleへの依存を段階的に減らしていくプロジェクトを進めています。 このプロジェクトを推進する上で、「そもそも、どのシステムがどれくらいOracleを参照しているのか?」という実態の正確な把握が大きな課題となりました。特に、SQLを解析してどのテーブルに、誰が、いつアクセスしたかを観測し、Oracleへの依存度を正確に測定する必要が
データ基盤チーム & Unit9(エビデンス創出プロダクトチーム)ブログリレー 4日目は、SQLプログラミングのお話をお届けします。Unit9エンジニアの三浦[記事一覧 ]です。昨日は木田さんの『巨大テーブルにインデックスを追加したい、Flywayで』でした。 今回の課題はタイトル通り、月の集合(たとえば、ユーザーがアクティブであった月の集合)から「何年何月から何年何月まで連続していた(アクティブだった)」という期間の集合に変換せよというものです。連続した期間ってのがまとまっていると判定で便利な局面があるんですよね。具体的にどう役に立つかは後述しますが、大変に実用を意識したデータ基盤プログラミング課題であります。 さて私自身がややこしいコードの書かれた記事を見るとコード部分を読み流してしまいがちなので偉そうなことが言えないのですが、やはりプログラミング課題の解説はコードを精読してこそです
エムスリーエンジニアリンググループGMで、データ基盤チームの木田です。 この記事はデータ基盤チーム & Unit9(エビデンス創出プロダクトチーム) ブログリレー3日目の記事です。前回は橋口さんの データ整備の「曖昧さ」に立ち向かう、ドメインエキスパートと協業するための実践的Tipsでした。 本日は、既存のPostgreSQLのさるテーブル (レコード数 100億超) に対して、差分データをSQLで抽出してBigQueryに連携するための索引追加をしたときの経験を元に、PostgreSQLの巨大テーブルに対してFlywayを使用してインデックスを安全に追加する方法についていくつかのテクニックを紹介します。 背景 ナイーブな実装の問題点 CREATE INDEX CONCURRENTLYの使用 Flywayから実行する時の注意点 タイムアウトへの対処 一時領域不足 インデックスサイズを抑える
データ基盤チームの橋口です。この記事はデータ基盤チーム & Unit9(エビデンス創出プロダクトチーム)ブログリレー2日目の記事です。 昨日は坂元さんの『冴えたClaude Codeの育て方(50本のSQLをdbt化した話)』でした。 私の所属するチームでは、社内のデータ活用サポート(データマート作成、分析支援など)を重要な業務の1つとしており、関連部門と一緒にプロジェクトを進める機会も多くあります。 関連部門とプロジェクトを進めていく中で、私は技術的な課題と同じくらい、ステークホルダーといかに上手く協業するかが大事だと学んできました。 なぜなら、データ利活用は「ビジネス課題の特定」から「どのデータを使うかの判断」、「技術的な実装」、「関係者との合意形成」まで幅広く、1人ですべてをカバーすることが難しい領域だからです。 本記事では、私が日々の業務で学習した、ステークホルダーとの協業を円滑に
システムを運用していると時折直面するのが「移行作業」です。 新しい技術に触れられるのは楽しいです。一方、大量のコードの書き換えはちょっと辛いですよね。単純な置換で済めばよいのですが、そううまくはいかないことがほとんどです。 今回はこの書き換えを Claude Code を活用して楽に、精度良く実施したお話です。 データ基盤チーム/Unit9(エビデンス創出プロダクトチーム)エンジニアの坂元です。このブログはデータ基盤チーム/Unit9 ブログリレー 1 日目の記事です。 背景 はじめの一歩 独り立ち そして検証も… できたこと 残った課題 細かい工夫 全文読んでから対応すること セルフレビューしてもらう まとめ We are hiring! 背景 エムスリーのデータ基盤(BigQuery)上では数多のデータパイプラインが稼働しています。今回はそのうちの一部を dbt (data build
この記事はコンシューマーチームブログリレー5日目の記事です。 こんにちは。エムスリーのコンシューマーチームエンジニアの園田です。 以前のポストにもあるように、エムスリーでは GitLab から GitHub EE へ移行しています。 www.m3tech.blog コンシューマーチームで管理している GitLab リポジトリも、いくつか GitHub に移行しました。当然ですが、GitLab CI の CI/CD パイプラインは GitHub Actions に置き換える必要があります。移行前は「GitLab でできることは GitHub でもできるんでしょ?」と軽く考えていたのですが、実際に移行を進めてみると、想定外の制限や落とし穴に数多く遭遇しました。 本稿では、GitLab CI から GitHub Actions へ移行する際に直面したいくつかの課題と、それぞれの解決策を共有します
この記事はコンシューマーチームブログリレー4日目の記事です。 エムスリーエンジニアリングG コンシューマーチームの松原です。 今回はここ半年ほど開発支援として使っていた AI エージェントについて振り返ります。 自分の使い方としてはバリバリに使いこなしているわけではなく人並みに使っているというレベル感です。 それでも AI エージェントに助けられていると感じることがいくつもあったので、この記事でいくつか紹介したいと思います。 使用ツールの紹介 使っている AI エージェントですが、初期の頃は Cline を使っていて、Claude Code が盛り上がってきてからはほぼ Claude Code を使い続けています。その他にもチーム内では Devin が使われていたりして、様々なことに AI が使われてくるようになってきました。 当初は AI エージェントとのやりとりにのめり込みがちで、細か
本記事は、コンシューマーチームブログリレー 3日目です。 はじめまして。エンジニアグループ、コンシューマーチームの松本と申します。 本記事では、社内で開発・利用している内部ツールのフロントエンドを CoffeeScript + Backbone.js の構成から TypeScript + React の構成に置き換えた時の知見を共有できればと思います。 早速ですがまずは宣伝から 弊チームでは AskDoctors というサービスを開発しております。 「病気・症状のお悩みを実際の医師に聞ける」というサービスで、1つの質問に複数の医師から意見を伺うことができるサービスとなっております。実在の医師から意見をもらうことができるので、悩み事があればぜひ相談してください。 早速ですがまずは宣伝から 背景 当時は最先端だったAltJS 役目を終えたCoffeeScript 作業の手順 CoffeeScr
こんにちは。エンジニアグループQA (Quality Assurance) チームの中塚です。 この記事はコンシューマーチームブログリレー 2日目の記事です。QAエンジニアがリスク洗い出しをサポートする取り組みの事例をご紹介します。 はじめに エムスリーでは、チーム全員で品質保証に取り組む考え方のもと、QAエンジニア以外のメンバーも品質保証に積極的に取り組むチャレンジをしています(この取り組みを社内では「全員QA」と呼んでいます) ちなみに取り組み内容についてはこちらの記事でより詳しく紹介しておりますので、ご興味のある方はぜひ読んでいただけますと幸いです。 www.m3tech.blog この取り組みには次のような狙いがあります。 開発と品質保証を担当エンジニアが一貫して行えることでリリースを早くできる 今はQAエンジニアのフルアサインができていても、将来的に新プロジェクトの立ち上げ時にア
こんにちは。エンジニアリンググループ プロダクト支援チームでプロダクトマネージャーをしている中村です。 既存プロダクトを担当しているPdMにとって、どうやって次の非連続な成長(=Step Change)を起こせるかというのは、重要な課題だと思います。 私はこれまでPdMとして、既存プロダクトのグロースに携わることが多く、KPIを伸ばすためにデータ分析をし、仮説検証をしながらプロダクトを連続的に成長させる(KPIを120%〜130%伸ばす)経験を積んできました。さらにPdMとしてより事業成長に貢献するためには、次の非連続な成長(KPIを2倍にするなど)を生み出したいと考えていました。 そんな時に、ある担当プロダクトにおいて、主要KPIを2倍に伸ばすというミッションに取り組む機会を得ました。CPO山崎と一緒に主要KPIを2倍に伸ばすためのチャレンジに取り組む中で、超一流のPdMがどのようにデー
はじめに エムスリーテクノロジーズの永江 (@yukinagae)です。 最近はAIエージェントを使った開発が当たり前になってきました。CLIだけでもClaude Code / Gemini CLI / Codex CLI など多くのツールが登場し、開発効率の向上を日々実感しています。実際、Claude Codeを使うと趣味開発のスピードが数倍に上がり、1週間かかるものが数時間で完成することもあります。 さらに、コーディング用途だけでなくDia / Comet / Gemini in Chrome といった、ブラウザとAIが一体化したツールも次々と登場しています。エンジニアリング以外の業務効率化も、これから一段と加速していきそうです。 自分自身もプライベートでDiaを使い始め、その便利さを感じ始めています。そこで試しに、Chrome拡張でDiaのようにサイドパネルからAIを使えるプロトタイ
はじめに こんにちは、エムスリーで2週間インターンをさせていただいたしーぴー (@__cp20__) です。インターンではWebバックエンドを中心としてWebフロントエンド、インフラ (IaC)、など幅広い分野のタスクをこなすことができました。このブログでは具体的にどんなタスクをこなしたか、それによって何が学べたかなどをご紹介します。 インターン最終日に撮った写真 目次 はじめに 目次 概要 キッカケ タスク1: 請求画面の速度改善 解決策の検討 改善効果の測定 タスク2: ログイン導線の改善 タスク3: 請求画面のソート順序の整理 タスク4: マイクロサービスごとの Redis を統合 Redis と Valkey の互換性 インスタンスの移行 (統合) インターンを振り返って 良かったこと: いろいろなコードが触れた 良かったこと: アウトプットを出せた もう少し頑張りたかったこと:
【Unit1 ブログリレー 6日目】 この記事はUnit1ブログリレー 6日目の記事です。前日の記事は こちら 。 エンジニアリンググループGMの木田です。 先日、数年に一度の規模のシステムメンテナンスを実施しました。メンテナンス作業自体は複数のチームが関わり、サービスの計画停止も伴う複雑な作業だったにもかかわらず、入念な準備のおかげで大きなトラブルもなく予定時間を1時間ほど前倒しで完了できました。 関係者で行った振り返りで今後も続けたいプラクティスが多く得られたので、その学びを「やってよかった」準備集として整理してお伝えします。大規模なシステムメンテナンス作業を計画している方の参考になれば幸いです。 メンテナンスのあらまし 「やってよかった」 準備作業 リハーサルは絶対に実施する。できれば複数回。 リハーサルでの振り返りが本番の「やってよかった」につながる 本番と同じデータ量で試す タス
【Unit1 ブログリレー5日目】こんにちは。先日阪口さんのブログで違和感について良いことが書かれていました。せっかくなのでそちらの記事にのっかった形で「趣味を通じて仕事を考える」というテーマでやっていきたいと思います。 www.m3tech.blog 自分の趣味であるボードゲームの話や漫画の話を比喩的に使いながら依頼仕事業務を紐解いていこうと思います。皆さんの琴線に触れることが出来れば幸いです。 本編に入る前に、ボードゲームの話題として2025年の大きなトピックを紹介します。日本人ゲームデザイナー林尚志さんの「ボムバスターズ(ボムスカッド)*1」が世界最高峰の賞であるドイツ年間ゲーム大賞(Spiel des Jahres)を受賞*2しました。本当におめでとうございます。 依頼仕事を分解してみる 依頼受付フェイズ:依頼の配分とカジュアルな悲鳴 依頼受付フェイズ:トラブル対応の難しさをアイス
【Unit1 ブログリレー4日目】こんにちは、Unit1(製薬企業向けプラットフォームチーム)の高澤です。ブログリレー3日目は河野さんによる「AWS ECSの各クラスタのデプロイの失敗を横断的に検知する方法」でした。 Unit1 では Web講演会 という医師に向けた情報の講演会ライブ配信サービスを開発・運用しています。2020年から段階的にオンプレからクラウドへの移行を進めており、この記事ではデータベースのクラウド移行と併せて本番データの正当性を担保する仕組みを構築した話をご紹介したいと思います。 背景 実現したいこと 方針検討 実装 効果とこれから We are Hiring! 背景 エムスリーではサービスのクラウド化を進めています。チーム横断のSREである「コアSRE」が運用するオンプレ環境から、各サービスチーム内のSREである「チームSRE」が管理するクラウド環境に移行すると同時に
【Unit1 ブログリレー2日目】こんにちは、Unit1(製薬企業向けプラットフォームチーム)とデータ基盤チームを兼務しております石塚です! ブログリレー1日目は佐野さんによる「たった9行でAIレビュー導入!Claude CodeとGitLab CIで全リポジトリにAIコードレビューを導入した話」でした。 Devinに代表される自律型AIエージェントの話題を目にする機会が増えてきました。その実力については、 「本当に人間の作業を代替できるのか?」 「どうすればうまく使いこなせるのか?」 など、多くの開発者が期待と疑問を寄せているのではないでしょうか。 この記事では、エムスリーのチームが実際にDevinを導入し、レガシーコードのマイグレーションや社内Q&A対応といったリアルな課題に取り組んだ具体的な活用例と、そこから得られたTipsを共有します。 Devinの導入を検討している方にも、すでに
【Unit1 ブログリレー3日目】こんにちは。エンジニアリンググループ Unit1 の 河野那緒 です。ブログリレーではココまで生成AI活用に関する記事が続いておりましたが、本日は チームSRE が行なっている活動の一つを取り上げたいと思います。 Unit1 (MR君ファミリー開発チーム) では Web講演会 という医師に向けた情報の講演会ライブ配信サービスや MR君 という製薬会社の MR と医師とのコミュニケーションを支えるサービスをはじめとして、多様なサービスおよびその社内向け管理ツールを開発・運用しております。 詳細はこちらをご覧いただけたらと思います。 speakerdeck.com 当チームのサービスについては現在主に AWS を利用しており、またアプリケーションサーバーについては ECS(Fargate) を採用しております。 ソースコードの管理としては GitLab を採用
世の中ではDevinやGithub CopilotなどのAIコードレビューが定着しつつあります。 しかし、セルフホストGitLabを利用している企業では、対応製品が少なかったりサードパーティ製品のセキュリティチェックや保守が気になってしまい導入が進めづらいと思います。 エムスリーでは、Claude CodeとGitLab CIを組み合わせ、わずか9行でAIコードレビュー導入が可能な仕組みを構築しました。 【Unit1 ブログリレー1日目】Unit1(製薬企業向けプラットフォームチーム)のチームリーダーの佐野です。本日からUnit1のブログリレーが開始されます🎉 趣味は業務改善で、SlackWFやClaude Code、GASなど手軽に使える様々なツールを組み合わせて新しい仕組みを日々発明することを考えています。 最近はspec駆動開発の社内用フレームワークを作れないか考え中です。 Git
【Unit7 ブログリレー4日目】 こんにちは、エムスリーエンジニアリンググループのUnit7(リサーチプロダクトチーム)でチームリーダーをやっている遠藤(@en_ken)です。 私たちのチームは、アンケートシステムをはじめとするリサーチプロダクトを開発していますが、近年、大規模なシステムリアーキテクチャを推進しています。その背景や全体像については、ぜひこちらの記事をご覧ください。 www.m3tech.blog 記事内でも触れている通り、リアーキテクチャの大きな方針として「アンケート回答機能を1つのシステムに集約する」という目標を立てました。この目標を実現するためにゼロから開発されたのが、アンケート回答システム「Lion」です。 アンケートシステムを改めて構築してみると、既存のシステムのユースケースもカバーしつつ、汎用性を考慮して設計するというのは難しい点が多数あります。中でも、回答の整
【Unit7 ブログリレー5日目】 Unit7のrikutoこと佐藤(@riku929hr)です。 2025年5月に入社したばかりの新参者ですが、気がつけば4ヶ月が経過しました。 今はGo言語を利用したアンケートシステムの開発に取り組んでおり、日々キャッチアップしながら刺激的な毎日を過ごしています。 入社、そしてAIエージェント到来 AI時代の学びの難しさ 手を動かすこと、理解すること 学び方はたくさんある 手を動かすのも楽しい 楽しもう!!! We are hiring!! 入社、そしてAIエージェント到来 僕が入社すると同時期に、Claude CodeなどのAIが自律してコードを書く技術・ツールが次々に登場し、直接手を動かしてコードを書く機会が少なくなりました。 そして、最近身近でよく話題になりますが、AIを活用しながら学ぶことの難しさを感じています。 一例を上げると次のような感じです
【Unit7 ブログリレー3日目】こんにちは、プロダクトマネージャーの阪口です。これまでスポーツは野球一筋でしたが、息子が小学校でサッカーを始めたのをきっかけに、Jリーグや海外サッカーを見るようになりました。漫画『アオアシ』や『ブルーロック』にもハマり、今ではすっかりサッカーギークになりつつあります。私が所属するUnit7では、主に医師向けのリサーチサービスを運営しています。 試合でボールを追いかける息子 / C・ロナウドに憧れ7番 皆さんは、日々のプロダクト開発で、どのようにアイデアを生み出していますか? エムスリーに入って約2年。幸運にも、いくつかのプロダクトを良い方向に導くことができています。その過程を振り返ったとき、成功の裏に共通のある考え方があったことに気がつきました。今回は、その着想術について記事にしてみました。 違和感を大切にする 違和感から生まれたプロダクト 違和感を察知す
【Unit7 ブログリレー2日目】こんにちは、Unit7チームリーダーの丸山です。私が所属するUnit7では、主に医師向けのアンケートサービスの開発・運用を担当しています。 私たちのチームでは、開発プロセスを効率化し、コードの品質を向上させるためにAIによるコードレビューを活用しています。 今回は、便利なAIコードレビューが抱えていた課題と、その課題を解決するために開発した「AIレビュアー育成コマンド」についてご紹介します。 AIコードレビュー、はじめの一歩 浮かび上がった「チームの文脈が伝わらない」問題 チームの知見を学ぶ「AIレビュアー育成コマンド」 実装の裏側 使ってみた感想と今後の展望 We are hiring!! AIコードレビュー、はじめの一歩 エンジニアリンググループでは、開発プロセスの中にAIを活用する取り組みが進んでいます。他のチームでの活用事例は次の記事をご覧ください
はじめに エムスリーテクノロジーズの永江 (@yukinagae)です。 2025年7月からエムスリーテクノロジーズに入社し、グループ会社への技術支援をしています。詳しい業務内容は、前回の記事でも紹介しました。 支援内容は、各グループ会社の状況や参画するエンジニアのスキルによって変わりますが、共通してCI/CDの強化から始めることが多いです。なかでも特に自動テストの強化は、最初に手がけるべき施策だと考えています。 その理由は、次の3つです。 導入ハードルが低い: 既存のコードに影響を与えずに導入できる 既存コードの理解が深まる: テストを書く過程で自然とコードの動きやドメイン知識が身につく 成功体験を積める: 自動テストは必要だとわかっていても後回しにされがち。テストを強化することで、チームに喜ばれ、小さな成功体験を積み重ねることができる このように大きなメリットがある自動テストですが、個
はじめまして。4月にQLife(エムスリーグループ会社)に中途入社した安田(@Quarter_st)です。主に社内向けのメルマガ配信基盤の開発に携わっております。 バウンスメールはメール送信に失敗すると送信先サーバからenvelope-fromに返されるメールです。 弊社のメルマガ配信基盤で使用しているエムスリーのメールサーバの信頼性を下げないためにもバウンスメールの発生率を下げておきたいです。 今回は、そんなバウンスメールの発生理由を可視化し、発生理由が二度と相手に届かない類のものである場合は該当アドレスを送信対象から除外し、バウンスメール発生率を低下させた話をご紹介します。 はじめに バウンスメールの発生理由を可視化した Sisimaiはバウンスメールを解析してくれるライブラリ SisimaiをLambdaで動かしてバウンスメール発生理由をdbに保存する バウンスメール発生理由を管理画
【Unit4 ブログリレー12日目】 エムスリーエンジニアリンググループの松山です。Unit4(m3.com開発チーム)のチームSREとしてなんでもやっています。 最近は手芸が好きで、紫外線硬化レジンで飼い猫や好きなキャラクターのグッズを作ったり、羊毛フェルトにひたすら針をさしたりしています。 この記事では、起動時の挙動が不安定なサービスのデプロイを安定させるため、ECS Blue/Greenデプロイへの切り替えを試してみた、という内容を書きます。 世界一かわいい生き物のアクキー(高さ12cm)。気泡を減らすのが今後の課題です 背景 とあるScalaで書かれているサービスを改修するため調べていたところ、起動直後の不安定さが気になりました。ECSではローリングアップデートによってデプロイを実施しているのですが、起動直後数分間のCPU利用率が高くなりがちでした。(実装が軽量な)ヘルスチェックは
【Unit4 ブログリレー11日目】 こんにちは。昨年末に入社した、Unit4(m3.com開発チーム)エンジニアの升元です。このブログは、Unit4ブログリレー11日目の記事です。 この記事では、Dynamodbの実践の中で初めて知った仕様を紹介していきます。これからDynamodbを検討する方の参考になればと思います。 はじめに 対象のサービスと、そこにDynamodbが使われている理由 対象を管理するテーブルを追加しようとした 知見1: 1トランザクションの上限は100アクション 知見2: パーティションキーだけを指定して削除できない 1行ですべての対象情報を持とうとした 知見3: セット型で複数の値を持てる。ただ、そこにインデックスを張れない ミニマムでの実現と、他データベースの検討 おわりに We are Hiring! エンジニア採用ページはこちら エンジニア新卒採用サイト カ
【Unit4 ブログリレー9日目】 何言ってるんですかね。でも、見てみたいかも。こんにちは、エムスリーエンジニアリンググループの福林 (@fukubaya) です。 OracleのSQLに手を加えることなくBigQueryで実行させたいことってよくありますよね(ない)。今回はその手法を紹介します。 渋谷公会堂は、東京都渋谷区宇田川町にある公会堂。本文には関係ありません。 帳票環境のBigQuery移行とチーム横断での取り組み なぜSQL変換が必要なのか - bashを駆使してSQLを組み立てる地獄 段階的移行のための並行実行環境の構築 並行実行環境のアーキテクチャ SQL変換の課題と初期アプローチ SQLをparseして変換する sqlparse ConvertSQLクラスの実装 関数変換の詳細実装 変換処理の全体的な流れ パターンマッチングによる変換 個別変換ルール(スクリプト固有) s
【Unit4 ブログリレー8日目】 エムスリー エンジニアリンググループの井本です。Unit4チーム(m3.com開発チーム)に所属しています。今日が誕生日です。 この記事では、Claude Codeを活用して30分で作成した実用的なタスク管理ツールについてお話します。 背景 課題 タスク管理ツールの開発(30分で) 結果 雑に記入できる 実際の依頼例とその結果 見やすく表示できる 今後の課題 まとめ We're hiring! 背景 中途入社してから1年以上経過し、複数サービスの開発を担当する機会が増えてきたタイミングで従来のテキストメモベースのタスク管理がしんどくなってきました。 かといって複雑なタスク管理ツールを使うのも大変で結局、使わなくなるリスクがあったため、気軽に運用できるタスク管理ツールを作りました。 あまり時間をかけたくなかったので30分で作りました。 課題 具体的な既存ツ
【Unit4 ブログリレー7日目】 こんにちは、Unit4のキムです。この記事はUnit4チーム (m3.com開発チーム) メンバーにより投稿されるブログリレー7日目の記事です。 本記事では、近年やけに不安定になってきたユースケースコンポーネントをドメイン分離を通じて安定させた事例をご紹介します。この内容は先日のtechtalk発表内容の続きでもあるので、ぜひ発表のほうもご覧ください! youtu.be はじめに 不安定度と SDP 「今日のクイズ」と「夕方クイズ」 1. 問題診断 2. リファクタリング方針 3. 実装 3.1 ドメイン分離 3.2 ドメインサービスの導入 3.3 クロスドメインサービスのDIP 4. 結果 4.1 ユースケース複雑度の低下 4.2 SDP強化 4.3 クロスドメインサービスの拡張性 4.4 依存関係とアーキテクチャの再構築 5. まとめ We are
次のページ
このページを最初にブックマークしてみませんか?
『エムスリーテックブログ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く