エムスリーテックブログ

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

90秒かかるDELETE文の原因を探る【PostgreSQL】

こんにちは! デジスマチームの山田です。これはデジスマチームのブログリレー4日目の投稿です。

事業が成長してユーザー数やトランザクションが増加すると、それに比例して扱うデータの量やバリエーションも増加します。サービス規模の拡大に伴い発生する課題の1つにスロークエリがありますが、デジスマ診療においてもサービスの成長とシステムの健全性を維持するためにクエリの改善に日々向き合っています。

データベースの気持ちを知りたい

続きを読む

Firebase Remote Config で Web の A/B テストを実現する

はじめまして、5月に中途入社したデジスマチームの東です。入社してから早くも3ヶ月が経とうとしていますが、日々学びがあり充実しております。

このブログはデジスマチームブログリレーの3日目の記事です。

この記事では Firebase Remote Config を利用して Web の A/B テストを実施する方法を紹介します。

続きを読む

JavaScript の Object 比較を変えるか? 新しいプロポーザル proposal-composite とは

皆さん、こんにちは! デジスマチームの小島(@jiko_21)です。

このブログはデジスマチームブログリレーの 2 日目の記事です。

JavaScript の進化は止まりませんね! 毎年、新しい仕様が TC39(ECMAScript の標準化委員会)にて議論され追加されています。 今回は、最近 TC39 に追加された、proposal-compositeについてご紹介します。これは、JavaScript におけるObjectの比較という、長年の課題を解決する可能性を秘めた興味深い提案です。

続きを読む

Server Functions っぽい仕組みを自作して Lambda 関数呼び出しに適用してみた

デジスマチームの池奥です。 新卒2年目のソフトウェアエンジニアです!

先週、人生で初めて外部モニターを買いました。快適な作業環境を手に入れたと思ったのですが、モニターのある環境に慣れておらずすっかり持て余しています。今のところ YouTube ビュワーとして活躍しています。

このブログは、デジスマチームブログリレーの 1 日目の記事です 🎉

イントロ

普段、私はNode.jsでバックエンドを実装することが多いのですが、一部の処理を AWS Lambda のような別の実行環境に切り出したい、というシーンに時々遭遇します。このような場合、Lambda の実装は別のパッケージに置き、元のサーバーからはSDK経由で呼び出す形にすることが多いと思います。

しかし、皆さんは「もし、Lambda関数を普通の関数のように呼び出せたら」と思ったことはありませんか?

別のパッケージに実装を置いてしまうと、呼び出し元のアプリケーションと Lambda 関数でビジネスロジックが分断され、コードの見通しが悪くなりがちです。さらに、データの受け渡しにはシリアライズ・デシリアライズの処理が必要となり、TypeScript の強力な型システムの恩恵を受けることが難しくなるという課題があります。

そこで今回、発想を転換してみます!ロジックを単一コードベース上に書き、ビルド時にランタイムごとに処理を分離するというアプローチです。あたかもローカル関数を呼び出すように Lambda 関数を使えるようになれば、開発体験も向上するはずです。

続きを読む

これで依頼対応は絶対に漏れない! 簡単確実Slackワークフロー

エンジニアチームの仕事は開発、調査、障害対応などあって日々チケットを起票しては消化しながらお仕事を皆様回しておられるのではないかと思います。一方で、チケットにすることのない作業依頼というのも少なくないのではないでしょうか。「ミーティングのリスケ先日程を探して移しておいてください」などなど⋯ そして次に起こる問題は「Slack上で依頼が流れてしまって対応が漏れていた」ですね?

作業依頼の対応漏れというエラー、再発防止はどうしましょう、すべての依頼でチケット切ることにしますか? はい、それが確実なのですが、体裁に沿ったチケットを書くというのはそれなりに重い作業です。依頼をためらわせてしまうという難点が。チームのタスク管理上も、粒度の異なるチケットが大量に紛れ込んでくることになり微妙。と、ここまでの流れはどこの職場でも見られる景色なのではと思います。そこに一つご提案、確実に対応漏れを防ぎつつ依頼側も対応側も楽、仕組みを用意するのも手間じゃない方法を。エムスリーエンジニアリンググループUnit1(製薬プロモーション)/Unit9(治験臨床研究支援)エンジニアの三浦[記事一覧 ]です。

続きを読む

エムスリーの GitHub 移行、SRE の道中記

こんにちは。エムスリーで SRE エンジニアをしている伴です。
このブログは SRE チームブログリレー 5日目の記事です。

M3 Tech Blog でも AI を開発に活用した記事が多く出ていますが、弊社では開発への AI 活用が積極的に進められています。
その流れで、GitHub が構築している AI のエコシステムを積極的に活用するため、昨年末からセルフホスティング版の GitLab Server から GitHub Enterprise Cloud への移行を進めています。

SRE チームは、GitLab の運用経験を活かし、GitHub への移行支援と運用サポートを担っています。 本記事では、このGitHub移行という『旅』の途中でありながらも、SREチームがどのようにこの道を進んでいるかをご紹介します。

  • 移行の目的
    • GitHub Copilot Agent や Devin などの AI ツール導入
    • GitHub エコシステムの活用
    • 強力な GitHub Actions
  • 移行で SRE が行っていること
    • Organization の管理
    • Organization ポリシーの設定
    • 監視の作成
    • Self-Hosted Runner の提供
  • まとめ
  • We are Hiring!
    • エンジニア採用ページはこちら
    • カジュアル面談もお気軽にどうぞ
    • エンジニア新卒採用サイトもオープンしました!
続きを読む

Claude Code SDKでClaude Code Webを作ってみる

エンジニアリンググループ ゼネラルマネージャーの横本(@yokomotod)です。

このブログはSREチームブログリレー4日目の記事です。 昨日は山本さんによるSRE作業もGemini CLIで効率化する記事でした。

www.m3tech.blog

続けて今日もAIコーディング関連、Claude CodeのSDKが気になって触ってみた知見を紹介します。

言わずもがなClaude Codeは強力なツールで、最近はHooksなども登場し、拡張性もどんどん強化されています。 しかし、まだまだもっと自由に機能強化して「オレの最強のClaude Code」を作ってみたいですよね。

というわけで、Claude Code SDKを使えばそういうことも出来るのかな? と思って遊んでみました。

ソースコードはこちらでも公開しています。

github.com

続きを読む