以下の内容はhttps://www.m3tech.blog/entry/2025/12/26/170000より取得しました。


AI・機械学習チーム Best Pull Request決定戦 2025

こんにちは。AI・機械学習チームの氏家(@mowmow1259)です。 この記事はエムスリーアドベントカレンダー2025を勝手に延長して26日目の記事として書いています。

みなさんは今年1年を振り返って、最も印象に残ったPull Requestはありますか? 大きな機能追加、難しいバグ修正、芸術的なリファクタリング...きっとそれぞれに心に残るPRがあることでしょう。

そんなPRにスポットライトを当てるべく、エムスリーのAI・機械学習チームでは毎年年末にチーム全体で「今年のベストPR」を決める恒例イベントを開催しています。 単なる技術的な凄さだけでなく、チームや会社へのインパクトなども評価の対象で、とにかく「ベスト」だと思うPRを表彰しています。

www.m3tech.blog

そんなわけで、今年もチーム総出でベストだと思うPRをノミネートし、投票の結果7件のを選出しました。 ちなみにエムスリーではGitLabからGitHubへの移行を進めているため、ベストPRといいつつMerge Request (MR)も混じっています。 入賞PRは現地開催された全社規模のLT会でそれぞれ推薦者から発表され、現地では大盛り上がりでした。

当日の発表の様子

また、今年新たな試みとして「タイトル部門」を新設してみました。

エムスリーのエンジニアはギークでユーモアな方が多く、PRのタイトルにも遊び心が散りばめられています。 面白いPRも多いことだし、せっかくならユーモアな観点でもベストPRを決めようじゃないか! ということで、思わず笑ってしまうようなセンス溢れるPRタイトルも表彰することにしました。

それでは、それぞれの部門について入賞PRをみていきましょう!

第7位: gcp-ai-infra の原初の GitHub 移行

  • 紹介者: 須藤健

gcp-ai-infra の原初の GitHub 移行

AI・機械学習チームでは、これまでGitLab CIでTerraformのパイプラインを運用してきましたが、GitHubへの移行に伴いGitHub Actionsへの再構築が必要となっていました。

CIの複雑さから着手が遅れがちなタスクでしたが、本PRにてGitHub Actionsの整備を完遂していただきました。これにより、以前と変わらない運用をGitHub上でも実現できています。

チームメンバーが後回しにしがちだった重たいタスクを、自分から引き受けて一気に解決してくれたのが本当に助かりました。

第6位: 同じ事をレビューするの飽きたからClaude君やって/AI レビュー機能をテンプレートに追加

  • 紹介者: 苅野秀和

AIレビュー

AI・機械学習チームでは、数多くの機械学習モデルの開発や運用をしています。 人手のレビューだけでなく Claude Code を使ったコードレビューが行われてきました。 これまでリポジトリが GitLab でホストされて GitLab CI で Claude Code が動いていたのが、GitHub 移行に伴い GitHub Actions で Claude Code を動かす必要が出てきました。

本 PR によって GitHub Actions で Claude Code が動くようになり、Pull Request 上で気軽にメンションするとコードレビューしてくれるようになりました。また cookiecutter のテンプレートにこの AI レビュー機能が追加されたことで新規に作成されたプロジェクトでは特に CI を整備せずとも Claude Code によるコードレビューを受けられるようになりました。

第5位: IAPのclientを作る時代は終わり

  • 紹介者: 山本周典

IAPのclientを作る時代は終わり

AI・機械学習チームではGKE上の社内ツールなどをIAP(Identity-Aware Proxy)で保護する構成を多く採用しています。
これまでは「GCPコンソールでOAuth Clientを手動作成」し、「IDとSecretをK8sのSecretリソースに埋め込む」という作業をしていました。 しかし、IaC化の文脈としてここだけ手動作業が残ってしまうことに課題がありました。

このPRではBackendConfigのオプション設定のみで、この OAuth Clientを自動生成・管理できる機能を導入しました。
これにより、認証情報の管理コストがゼロになり、新規サービスの横展開もマニフェストを適用するだけで完結するようになりました。
AIチーム内で既存のIAPの構成手順はテンプレート化されていたため、従来の方法を見直すタイミングが中々発生しませんでした。
そんな中、機能のアップデートを発見し、すぐさま導入に踏み切ったこのPRは、PR作成者のギークさと手の動かす速度を象徴しています。

第4位: panderaがconcatで壊れるのを直した

  • 紹介者: 中村伊吹

github.com

AI・機械学習チームではPanderaというDataFrameのバリデーションライブラリと、静的解析ツールであるmypyを組み合わせて、Pythonにおいても型チェックを活用して開発を進めています。
しかし、2025年8月ごろのpanderaのリリース時に、mypyでの解析時にエラーで落ちるという現象が発生するようになりました。これを解決したのが今回のPRです。
本質的には不要な部分が問題の発生原因だったため、これを削除して解決するという解決方法もスマートです。

第3位: df = Schema.empty() 誕生

  • 紹介者: 髙橋峻太郎

github.com

4位に続き、panderaへのコントリビューションが堂々3位にランクインしました。

AI・機械学習チームの開発では、panderaの DataFrameModel を用いてgokart Taskの入出力データのスキーマを定義し、常にバリデーションが走る仕組みにしています。

Taskの実装上、「入力がemptyであれば、処理実行前にそのスキーマ型を持つemptyなDataFrameを返したい」という状況が多々あります。 以前は別途専用のメソッドを定義して対応していましたが、panderaに直接コントリビュートしたことで、Schema.empty() とするだけで済むようになりました。

第2位: MLプロダクトの大型アップデート

  • 紹介者: 北川亮

大型アップデート

皆さん、ライブラリの最新化はしていますか? AI・機械学習チームではrenovateなどを各プロダクトに導入することによってライブラリの最新追従をしています。 ライブラリの最新化は脆弱性の観点ではもちろん、最新の機能の導入するためにも必要になってきます。 このPRは髙橋さんが現役プロダクトのバージョンアップをしてくれたPRになります。 タイトルはpytorch1.x→2.xですが実際には次のメジャーアップデートがありました。

  • xgboost: 0.x -> 2.x
  • scikit-learn: 0.x -> 1.x
  • pytorch: 1.x -> 2.x
  • numpy: 1.x -> 2.x
  • pandas: 1.x -> 2.x

そして驚くべきことにソースコードの変更は20行以下で済みました! 動作確認などは大変だったと思いますが、これらのOSSが後方互換性をなるべく残すように実装してくれたおかげで無事にアップデートが出来ました。 OSS開発者への感謝とメジャーアップデートをしてくれた髙橋さんへの感謝を込めて推薦しました。

[番外編: タイトル部門] Claude Codeにブチギレる

  • 紹介者: 農見俊明

Claude Codeにブチぎれる

このMRの作者は、「プロンプトでMCPの使用を指定しているのに、Claude Codeが勝手にbqコマンドを使うこと」に憤慨していました。しかし、人間がその都度怒るのは非効率です。そこで、bqコマンドが実行されるたびにシステムが自動でブチギレる仕組みを構築しました。これにより、人間はブチギレる必要がなくなり、安らかな日々が訪れることになりました。めでたしめでたし。

さて、どのような仕組みで実装したかというとClaude Codeのhooksを使用しました。bqを含むコマンドが使われようとしたらblockしてmcpを使えというメッセージを返すようにするだけです。Claude Codeは優秀なツールですが、プロンプトやCLAUDE.mdに書いたことを忘れてしまうことが多いので、システムで行動を担保できるhooksは非常に便利です。皆さんもhookを利用して自動でClaude Codeにブチギレましょう。

第1位: gomoku

  • 紹介者: 中村伊吹

gomokuリポジトリ

AI・機械学習チームは東京・大阪・福岡と複数拠点で開発していますが、年に数回全員が東京のオフィスに集まってイベントを行っており、過去にも様々なイベントを実施しています。

www.m3tech.blog

そして今年11月に実施されたのは、五目並べで最強のAIを作るというイベントでした。このイベントの様子や準備過程は以下をご覧ください。

www.m3tech.blog

事前に共有された際には、「CLIで簡易的に表示するのかな」と想像していましたが、イベント当日には作り込まれたフロントエンドとバグなく動くバックエンドが用意されており、クオリティの高さに驚かされました。楽しい記憶と共にこのPRを推薦します。

試合の様子

まとめ

2025年の栄えあるベストPRは「gomoku」でした。 私も当日参加していましたが、対戦が始まった瞬間キャラクターが喋り始めたのにはかなり衝撃を受けました。 遊び心も残しつつギークさが滲み出ているエムスリーらしさに溢れたPRだったと思います!

今年の入賞PRを見ても分かる通り、エムスリーでは社内での開発はもちろん、OSSへも積極的にコミットする文化があります。 ベストPR決定戦はそんな文化を再確認できるとともに、素晴らしい開発をしてくれているチームメンバーにお互いに感謝する良い機会になっていると感じています。 みなさんもやってみてはいかがでしょうか!

ちなみに、2025年のベストPRが終わったばかりですが、実はすでに次回のベストPR候補たちが生まれてきています。 来年も今年以上にギークなPRが出揃うはずです。来年のベストPR決定戦もお楽しみに!

We are hiring !!

エムスリーでは我こそは来年のベストPRをとるぞ!という意欲あるエンジニアを募集しています。 少しでも興味を持っていただけたら、次のリンクからカジュアル面談にご応募ください!

エンジニア採用ページはこちら

jobs.m3.com

カジュアル面談もお気軽にどうぞ

jobs.m3.com

インターンも常時募集しています

open.talentio.com




以上の内容はhttps://www.m3tech.blog/entry/2025/12/26/170000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14