エムスリーテックブログ

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

あちらを立てればこちらが立たぬ...リファクタリングQA戦略

ソフトウェアテストで悩んでいる人をAI画像生成してもらいました。イメージとピッタリ。すごい。

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

エンジニアリンググループ QAチームの末吉です。前回の記事ではいつか英雄ポロネーズを弾いてみたい...なんて書いていたようですが、なんと私の今の課題曲が英雄ポロネーズです。2年前の私がびっくりするでしょうね。

続きを読む

Firebase App Test Agent 自然言語のE2Eテストを試してみた

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

こんにちは。逝去から1年経っての俄かポール・オースター2巡目通読、追憶がちなマルチデバイスチームQA前川です。

チームで開発する複数アプリとサーバサイドのQAでAI活用による効率化が求められる中、Firebase App DistributionのApp Test Agent機能がAndroidでプレビューリリースされた、ということで試してみました。 自然言語テストなので厳密な記述は不要で与しやすいかと思いきや、自然言語ゆえに意外なところでやや手間どった初動という感触でした。

  • App Test Agentとは
  • 有効化
  • テストケース記述&実行
  • 所感
  • We are hiring!
続きを読む

m3.com における全員 QA への取り組み

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

こんにちは。エンジニアリンググループ QA (Quality Assurance) チームの津向です。 健康診断前は気を付けていましたが、すっかり生活習慣が戻ってしまいました。

さよなら、ワカメ、納豆、フィットボクシング。

こんにちは、ラーメン、餃子、ピザ、ポテト。

おいしいつけ麺。ソウルフード。

私が所属するUnit4(医療系ポータルサイトm3.comの開発・運営を担当するチーム)では、「全員QA」の考え方のもと、エンジニアも品質保証に積極的に関わる取り組みを進めています。

www.m3tech.blog

エムスリーにおけるQAは、単に不具合を見つけるだけでなく、リリースするサービスの品質を総合的に保証するチームです。開発された機能が要件を満たしているか、使いやすさに問題はないか、安定して動作するかなど、様々な視点から検証しています。具体的には新機能が正しく動くか確認する機能テスト、システム全体の連携を確認するシステムテスト、リリース前の最終確認である回帰テストなど、多岐にわたるテストを実施しています。

今までエンジニアの方が全くテストをしていなかった、ということは決してなく、品質保証という共通の目標に向かって、エンジニアとQAがそれぞれの専門性を持ち寄り、協力し合う体制を構築しています。

特にシステムテストの確認フェーズではEngQAとして積極的に協力いただいています。

  • EngQA実施例
  • EngQAのメリット・デメリット
  • EngQA確認依頼を効率よく行う
    • Slackのワークフローを利用する理由
  • まとめ
  • We're hiring

EngQA実施例

EngQAとして確認完了していただいている一例としては次のようなものがあります。

  • 簡易なテキスト修正
    • 誤字脱字など、機能への影響が軽微で、目視で確認できるもの。
  • 1パターンの疎通確認で確認完了できるもの
    • 特定のAPIエンドポイントが正しく応答するかなど、テストパターンが少なく、影響範囲が限定的なもの。
  • CIなどフロント影響のない修正
    • サーバーサイドのロジック変更やビルドプロセスの改善など、ユーザーインタフェースに直接的な影響がないもの。
  • QA環境用の設定修正
    • 本番環境に影響しない、開発・テスト環境固有の設定変更。
  • 一部のライブラリバージョンアップ
    • セキュリティアップデートやパフォーマンス改善など、既存機能への影響が少ない、もしくは自動テストでカバーできるもの。

上記以外にも、エンジニアの方から「これEngQAで大丈夫じゃない?」と判断されたものは、QA チームが確認したうえでEngQA で確認完了にしていただいています。 ただし、QA側で通常のQA確認が必要と判断した場合は、従来通りQA側での確認を実施しています。

続きを読む

6年10ヶ月続けた技術顧問を卒業しました & 入社しました

はじめに

はじめまして。2025年5月1日にエムスリーに入社した藤原聖です。 好きな日本酒は十水と福小町、注目している再開発は高輪ゲートウェイシティ、週末は有明ガーデンかららぽーと横浜にいます。

この度、6年と10ヶ月続けた技術顧問を辞め、ゼネラルマネージャーの一人としてエムスリーに入社しました。合わせて、2024年4月1日に設立されたエムスリーテクノロジーズのVPoEに就任することになりました(6月にはVPoE兼取締役に就任の予定です)。

入社日にCPO兼CAIO山崎さん、VPoE河合さん、CTO大垣さんと。山崎さんはGWの休暇中に駆けつけてくれました。

本記事は入社エントリとなります。

続きを読む

m3.com 電子書籍アプリ Androidで持続可能な開発を行うための式年遷宮(リファクタリング)

【マルチデバイスチーム ブログリレー5日目】

エンジニアリンググループ マルチデバイスチームの渡辺です。

m3.com 電子書籍アプリはエムスリーで開発しているスマホアプリの中で最も歴史のあるアプリです。

アプリの機能やデザインのリニューアルをしたい、しかし長年積み続けてきた技術的負債がそれを妨げ、簡単そうに見える改修でさえ難しいという状態でした。継続的な開発を可能とするためにどのように式年遷宮(リファクタリング)をしているか紹介します。

iOSは先行してリファクタリングが完了しており、今回はそれに追従するかたちで進めているAndroid側の内容です。

続きを読む

エムスリーが技術書典18で新刊を出します!

エムスリーエンジニアリンググループ データ基盤チームでソフトウェアエンジニアをしている橋口 (@matsudo840) です。

技術書典18が2025/06/01に開催されます(オンライン開催は5/31-6/15)。

今回もエムスリーでは有志が集まり、新刊「エムスリーテックブック8」を携えて参戦します。 回を追うごとに着実にページ数が増えておりますが、ついに今回は268ページとなりました。 エムスリーのギークで技術を楽しむカルチャーがふんだんに詰まった一冊となっております。

オンラインでは5/31以降、こちらから購入いただけます!

techbookfest.org

この記事では皆さんに新刊を手に取ってもらえるように、各章がどんな内容になっているのかを紹介します。

続きを読む

Swift6対応で見えた課題とswift-dependenciesへのDI移行戦略

【マルチデバイスチーム ブログリレー4日目】

こんにちは、マルチデバイスチームの藤原です。

私たちのチームでは、複数のSwift製のアプリを開発しており、Swift 6への対応を少しずつ進めています。 その過程で、依存性注入(DI: Dependency Injection)ライブラリとして利用してきた Needle が生成するコードと、将来的にSwiftで必須となる existential any *1 *2 との相性問題が顕在化してきました。

コード生成に依存するライブラリは言語仕様に大きな変更があると互換性の問題に悩まされることがよくあると思います。 今後のSwiftの進化に柔軟に対応していくために、できる限りコード生成を伴わない、Swiftネイティブの機能を活かしたライブラリを選定するというのは、1つの重要な指針となりそうです。
そこで、チームのいくつかのプロジェクトでは、以前から注目していた swift-dependencies への移行を決断しました。

今回は、Needleからswift-dependenciesへの移行について、具体的な方針、そしてその過程で得られた知見をご紹介します。

*1:SE-0335: Introduce Existential Any

*2:当初はSwift6で必須化されるという話もあったが現在では延期となっている

続きを読む