エムスリーテックブログ

エムスリーテックブログ

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

Playwright移行を自律化。Claude Codeで実現するマルチエージェント設計

【QAチーム ブログリレー5日目】の記事です。

こんにちは。エンジニアリンググループ QAチームの須賀です。 最近エムスリーに復帰しました。 私は2月1日に入社してからQAエンジニアも使い放題のClaude Codeを用いてmabl(ノーコードのE2Eテストツール)の自動テストをPlaywrightにリプレースしています。 AIエージェントを用いた開発は未経験だったため、最初は期待するコードをなかなか生成できず試行錯誤の連続でした。しかし、最近では人の介入なしで期待するコードが生成できることも増えてきました。 試行錯誤の結果、AIエージェントの活用において重要だったのは、実は『人間同士が円滑に仕事をするためのマネジメント方法』を適用することだと気づきました。

本記事では、次の参考書籍の知見をベースにしつつ、実際のリプレース業務において試行錯誤して私が構築した、6つのサブエージェントを活用したワークフロー設計の実例を紹介します。

参考書籍

gihyo.jp

  • 設計の全体像 — .claudeディレクトリとCLAUDE.md
  • commands:自律的なワークフローの定義
    • ワークフローの流れ
    • ワークフローに沿ったタスクリストの作成・更新
    • テスト仕様書の作成と人によるレビュー
    • AIによる実装、テスト実行、コードレビューのループ
    • 作業中に発生した課題の振り返り
  • agents:役割の分離と責任の明確化
    • 各工程でエージェントを分ける
    • エージェントの作業の流れを具体的に書く
    • やらないことを定義しておく
  • skills:再利用可能な知見の集約
    • エラー分析フローについて
  • おまけ:Claude Codeに私のリポジトリを採点してもらった
    • 総合スコア: 92点 / 100点
  • おわりに
  • We are Hiring!
続きを読む

仕様の文体はAIテスト生成に影響するか?クノー『文体練習』に倣って実験

【QAチーム ブログリレー4日目】

はじめに

こんにちは、QAチームの草場です。

レーモン・クノーの『文体練習』という本をご存知でしょうか? 1947年に出版されたこの本は、とある短い1ストーリーを99通りの文体で書きわけるもので、語られるのは同じストーリーなのに文体を変えるだけで得られる情報や印象の変化を感じられる味わい深い本です。

今回は「文体練習」を参考に、システムの仕様を表す文体として最適なものは何か? もしくは文体による差は無いのか?をカジュアルに実験してみました。

仕様は、書き手や場面によって様々な文体で書かれることがあります。決められた書式で厳密に書かれた物、広く知られた記法では無いが構造的に整理された物、Slackに貼られたメモのような物、ユーザーからの口伝を文字起こしした物など、多種多様です。どのテキストでも同じ機能の話をしているとして、そこから読み取れる情報量やテスト観点の数は、同じなのでしょうか? 異なるのでしょうか?

このように、実験してみました。架空のフードデリバリーアプリの注文フローを11の文体で書き分け、それぞれをAIに読ませてテストケースを生成させ、事前に人間が作成したテストケースに対するカバレッジを比較するというものです。

結論を先に言うと、文体によるカバレッジの差はありました。ただし、それ以上にAIの実行ごとのブレや評価方法の影響が大きく、「文体にこだわる必要は薄い」という結果になりました。以下、実験の詳細と結果です。

続きを読む

QAエンジニアがClaude Codeを半年間使って気づいたこと 〜テスト自動化74%高速化を実現した3つの技術アプローチ〜

  • TL;DR
  • 背景と課題
    • なぜClaude Codeを選んだのか
  • 課題1: テスト実行時間の長さ
    • 何が問題だったのか
    • 解決アプローチ
      • 1. 待機処理の最適化
      • 2. Page Objectパターンの徹底
      • 3. 並列実行の自由度向上
    • 結果
  • 課題2: ワークフロー自動化の余地
    • 何が問題だったのか
    • 解決アプローチ
      • MCP(Model Context Protocol)による外部ツール連携
      • カスタムスキルによるワークフロー定義
    • 結果
  • 課題3: テストの保守性と安定性
    • 何が問題だったのか
    • 解決アプローチ
      • 1. CI/CD認証パターン
      • 2. 環境依存テストの「警告扱い」パターン
    • 結果
  • 実績サマリー
    • 半年間のコード貢献
  • 学んだこと・Tips
    • 意外だった発見
    • うまくいったこと
    • 課題と対策
    • これから始める方へのTips
  • 今後の展望
  • まとめ
  • 参考リンク

【QAチーム ブログリレー3日目】Claude Code、MCP、Playwrightを活用したE2Eテスト自動化の半年間の実践から得た気づきを共有します。技術的なアプローチだけでなく、「AI活用に不安があったけど、実はこれまでのドキュメント整備が土台になっていた」という発見についてもお伝えします。

テストプレイをサボりすぎたRPG

こんにちは、エムスリー QAチームの今井です。最近話題の「テストプレイをサボりすぎたRPG」をご存知でしょうか? テストをサボりすぎてバグだらけになったRPGを、プレイヤーが「ミス」を探しながら進めるというフリーゲームです。私たちQAはそうならないよう、いかに効率よくテストを回すかが課題でした。

TL;DR

  • エムスリーではClaude Code使い放題: QAエンジニアも最新AIツールをフル活用
  • テスト実行時間74%短縮(既存ツール 105分 → Playwright 27分)、年間約68時間分のCI/CD待ち時間を削減
  • 67件のMR/PRをマージ(E2Eテスト、リリース作業自動化、Agent開発など)
  • MCP(Model Context Protocol)で外部ツールと連携し、テスト〜ドキュメント更新を一気通貫で自動化
続きを読む

Playwright移行を支えるClaude Agentシステム - AI+ツールで品質を担保する

こんにちは。エンジニアリンググループ QA (Quality Assurance) チームの津向です。 2月に入り、暖かくなってきたのでBBQをしたのですが、ピンポイントで降雪になり、雪の中で肉を焼くという稀な経験をしてきました。 後日、元プロテニス(現スポーツキャスター)の方が国内不在と知りました。

そんなわけでQAチームブログリレー2日目になります。

お肉は焼くことで美味しくなると言われています。

  • はじめに
  • 1. エージェントの2層構造
    • 専門エージェントの役割分担
    • 逐次処理による「AIのコンテキスト過負荷」防止
  • 2. 標準化を担う生成エージェント
    • ナレッジベースによる標準化
    • 共通パーツの再利用
  • 3. デバッグエージェントの独立化
    • 生成エージェントと分けた理由
    • Playwright MCPによるライブ診断
    • 「堂々巡りの修正」をさせない
  • 4. 2種類のレビューエージェント
    • 役割を分けた理由
  • 5. AI+ツールでレビュー
  • おわりに
  • We're Hiring!
続きを読む

Firebase MCP × Claudeでアプリクラッシュ解析をSlack通知する

【QAチーム ブログリレー1日目】

こんにちは。マルチデバイスチームQAエンジニアの前川です。

新国立のテート展のダミアン・ハースト、久しぶりにホルマリン漬け来るか!の期待に対しての無難なオフィス机の展示にちょっぴり落胆した春先です。

最近LAでクラブよりも午前中のコーヒーパーティが流行っているらしいです。夜&酒の脳コンディションよりもシラフで冴えた頭への社交シフトがビジネスやクリエイティブ層で強まっている。密度と精度、スピードが重視されるAIの普及が、コミュニケーション指向へも影響していると取れなくもないと思えます。

画像はAI (Gemini)により生成したイメージです

  • はじめに
  • 消えることのない課題
  • Firebase MCPを用いたワークフロー実装
    • 1.Firebase側(書き込み):
    • 2.GitLab CI側:
  • Cloud Functions /Firestoreを用いない実装
    • Prompt
  • run.py
    • MCP設定ファイル生成のコンテンキストマネージャー
    • Claude呼び出し
    • 通知サンプル
      • フロー改善の感触
  • 解析精度
    • ポジティブな点
    • 不足点:修正提案の精度
  • まとめ
  • We are hiring!
続きを読む

23年続くOSSの、9年越しのバグが直るまで

AI・機械学習チームブログリレー15日目の記事を三浦 (@mamo3gr) がお送りします。前日は須藤さんによるClaude Codeと安全に付き合うためのサンドボックス機能の検証でした。

www.m3tech.blog

私は先月まで半年間の育児休業を取得していたのですが、復帰してからというもの、AIエージェントの進化とそれに伴う開発プロセスの様変わりにびっくりしています。日進月歩の変化にキャッチアップしなくては…、と危機感を募らせつつ、今日は20年以上も続く老舗ソフトウェアへのコントリビュートに挑戦したエピソードを通して、ちょっとだけ世界を良くするために小さなことでも始めようよ、という話をします。

厳島神社の大鳥居。この神社は台風や高潮など自然災害のたびに大小の改修を経て、1400年以上の歴史を持つとされています

  • Emacsとorg-modeによるタスク管理
  • 見積もり時間が空になるバグ
  • 修正パッチの提出と挫折
  • フォロワー現る
  • 世界をちょっとだけ良くする
  • We are hiring !!
    • エンジニア採用ページはこちら
    • カジュアル面談もお気軽にどうぞ
    • インターンも常時募集しています
続きを読む

AIエージェントを安全に使い倒すには?Claude Codeのサンドボックス機能を試してみた

こんにちは、AI・機械学習チームの須藤です。

この記事はAI・機械学習チームブログリレー14日目の記事です。 13日目は田中さんによる「スタートアップCTOが、M3のAIチームに転職して3か月。感じた不安と、その答え。」でした。

www.m3tech.blog

突然ですが、私は今年に入ってからランニングを始めました。1月頃はキロ8〜9分ペースで2〜3km走るのがやっとでしたが、毎日続けているうちに最近はキロ4分台で走れるようになり、20km程度であれば走れるようになってきました。今年の目標はマラソン大会に出場することです。継続は力ですね。

最近買ったadizero evo sl woven。AIエージェントが自走するということは人間も走らないといけない(?)。

続きを読む