Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
リアーキテクチャ後の障害ゼロを目指したShadow Testingの取り組み
Search
nihonbuson
PRO
September 17, 2026
Technology
18
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
リアーキテクチャ後の障害ゼロを目指したShadow Testingの取り組み
nihonbuson
PRO
September 17, 2026
More Decks by nihonbuson
See All by nihonbuson
「背中を見て育て」からの卒業 〜専門技術としてのテスト設計を軸に、品質保証のバトンを繋ぐ〜 #genda_tech_talk
nihonbuson
PRO
4
2.1k
「QA=テスト」「シフトレフト=スクラムイベントの参加者の一員」の呪縛を解く。アジャイルな開発を止めないために、10Xで挑んだ「右側のしわ寄せ」解消記 #scrumniigata
nihonbuson
PRO
7
3.3k
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
2
840
体験しながら作るクラシフィケーション ツリーテスト
nihonbuson
PRO
1
590
意外と知らない状態遷移テストの世界
nihonbuson
PRO
4
4k
「品質のつくりこみ」と「リリース後に行うとよいテスト活動」を体験する
nihonbuson
PRO
1
400
ホリスティックテスティングの右側も大切にする 〜2つの[はか]る〜 / Holistic Testing: Right Side Matters
nihonbuson
PRO
0
2k
テストを実施する前に考えるべきテストの話 / Thinking About Testing Before You Test
nihonbuson
PRO
18
4k
テストコードにはテストの意図を込めよう(2025年版) #retechtalk / Put the intent of the test 2025
nihonbuson
PRO
20
3.9k
Other Decks in Technology
See All in Technology
The Agent Builder Loop from Daily Work to OSS
minorun365
PRO
3
170
顧客に向き合う開発組織へ。リアーキテクチャとフィーチャーチーム化で挑む組織改革
safie
0
1.3k
HRC_Frontend_Conference_Fukuoka_2026.pdf
ts020
0
680
多層防御と最⼩権限で実現する、安全なAIエージェント設計パターン
lycorptech_jp
PRO
1
290
2026-09-09 【sigma_ucj#1】Sigma を IaC 管理したい! / IaC for Sigma
civitaspo
0
130
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
310
AI 駆動 Terraform 開発/SRE_BizReach_MIXI_2
visional_engineering_and_design
5
2.1k
品質と信頼性を地続きにする
grimoh
0
170
Reactの設計論
uhyo
21
11k
AIエージェントの自己改善をどう設計するか / How to Design Self-Improvement for AI Agents
22mi
23
14k
AIネイティブプロダクトで顧客価値を最大化するプロダクトエンジニアとFDEの協働
righttouch
PRO
0
280
AIを活用するために決めた "やらないこと" - 価値に注目する / Not betting on AI
soudai
PRO
1
490
Featured
See All Featured
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
840
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
670
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Making the Leap to Tech Lead
cromwellryan
135
10k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
660
YesSQL, Process and Tooling at Scale
rocio
174
15k
Six Lessons from altMBA
skipperchong
29
4.5k
Code Reviewing Like a Champion
maltzj
528
40k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Transcript
リアーキテクチャ後の障害ゼロを 目指したShadow Testingの取り組み 10X, Inc. ALL RIGHTS RESERVED
自己紹介 • 風間裕也(ブロッコリー) • 株式会社10X 品質管理チーム • 副業:B-Testing(個人事業主)として テストコンサルタント・テストコーチを行っている •
社外活動 ◦ JaSST Review(ソフトウェアレビューシンポジウム)実行委員長 ◦ WACATE(テストの合宿型ワークショップ形式勉強会)実行委員長 ◦ Developers Summit 2026 コンテンツ委員 10X, Inc. ALL RIGHTS RESERVED 2
翻訳書籍 今日のメイン 10X, Inc. ALL RIGHTS RESERVED 3
はじめに 継続的テストモデルで考える 10X, Inc. ALL RIGHTS RESERVED 4
はじめに 継続的テストモデル 10X, Inc. ALL RIGHTS RESERVED Continuous Testing in
DevOps… に掲載の画像を元に発表者が翻訳 5
はじめに 継続的テストモデル テストの 範囲に なりがち 10X, Inc. ALL RIGHTS RESERVED
Continuous Testing in DevOps… に掲載の画像を元に発表者が翻訳 6
はじめに シフトレフトなテスト活動 早い段階 に行う テストがある 10X, Inc. ALL RIGHTS RESERVED
Continuous Testing in DevOps… に掲載の画像を元に発表者が翻訳 7
はじめに シフトライトなテスト活動 リリース後 に行う テストがある 10X, Inc. ALL RIGHTS RESERVED
Continuous Testing in DevOps… に掲載の画像を元に発表者が翻訳 8
はじめに 今回はMONITOR部分に注目したシフトライトなテスト活動の話 今回の事例は MONITORの話 10X, Inc. ALL RIGHTS RESERVED Continuous
Testing in DevOps… に掲載の画像を元に発表者が翻訳 9
事例紹介を より理解してもらうための前提知識: 事業概要 10X, Inc. ALL RIGHTS RESERVED 10
Stailer ネットスーパー概要 • ネットスーパーの運営に必要なすべての機能を提供してい る、国内トップクラスのネットスーパープラットフォーム • 様々な業態・規模・地域のネットスーパー事業を支えてい ます 導入企業 11
10X, Inc. ALL RIGHTS RESERVED ※2025/06/16時点でレビュー件数が100件以上、複数のアプリを提供している場合はレビュー数の加重平均で比較
事例紹介をより理解してもらうための前提知識:ピッキング・パッキングとは何か? ネットスーパーのサービスの一連の流れ お客様 注文実行 店舗 スタッフ 配達 スタッフ 10X, Inc.
ALL RIGHTS RESERVED 注文変更 締め切り ピッキング パッキング 売り場から 商品を集める 注文ごとに 商品を梱包する 配達 12
事例紹介をより理解してもらうための前提知識:ピッキング・パッキングとは何か? ネットスーパーのサービスの一連の流れ お客様 注文実行 店舗 スタッフ 配達 スタッフ 10X, Inc.
ALL RIGHTS RESERVED 注文変更 締め切り ピッキング パッキング 売り場から 商品を集める 注文ごとに 商品を梱包する 配達 13
事例紹介をより理解してもらうための前提知識 ピッキングする様子 • カメラを用いて、 バーコードをスキャンする • 注文の商品と異なる場合は すぐに分かる仕組み 10X, Inc.
ALL RIGHTS RESERVED 14
事例紹介をより理解してもらうための前提知識 障害が発生 • カメラを用いてバーコードをスキャンしようとしたが、 うまくスキャンできなかった • バーコードのスキャンは、店舗スタッフのピッキング/パッキングの 業務上、重要な作業 • 障害を糧にしつつ、
バーコードスキャンの 改善を行うことにした 10X, Inc. ALL RIGHTS RESERVED 15
バーコードの仕様について 複雑な要素が絡み合っている 10X, Inc. ALL RIGHTS RESERVED 16
バーコードの仕様について バーコードの取り扱いの難しさ • バーコードの桁数の違い ◦ ◦ EAN(European Article Number)コード:13桁もしくは8桁 ▪
日本の国コード(先頭が42か49)が付与されたものがJANコード UPC(Universal Product Code)コード:12桁もしくは8桁 • バーコードの読み取り方式の違い ◦ Android(フレームワークはMLKit):読み取ったまま認識 ◦ iOS(フレームワークはAVFoundation):13桁になるように0埋め • 不定貫商品(重さごとに価格を変える商品)の取り扱い ◦ 不定貫商品のバーコードの情報の中に、価格情報も含める ▪ 例えば、9〜12桁目を利用する 10X, Inc. ALL RIGHTS RESERVED ¥25 0 ¥30 0 17
バーコードの仕様について 読み取った結果のデータだけでは商品を特定しきれない 読み取った結果のデータが「0012345678905」の場合、 • 「0012345678905」という13桁のEANコードかもしれない • 「00123456」という¥7,890の不定貫商品かもしれない • 「012345678905」という12桁のUPC-Aコードを iOSで読み取って0埋めした結果かもしれない
• 「12345678905」という11桁の未知の規格のバーコードを iOSで読み取って0埋めした結果かもしれない 10X, Inc. ALL RIGHTS RESERVED 18
バーコードの仕様について バーコードの仕様に立ち向かうために 複雑なバーコードの仕様に対して、現状のままだと… • 修正コストが高い • デグレードの発生リスクが高い そこで、バーコードスキャンの一連の流れを再整理するために リアーキテクチャを行うことにした 10X,
Inc. ALL RIGHTS RESERVED 19
今後よくするための活動 「リアーキテクチャ」 10X, Inc. ALL RIGHTS RESERVED 20
今後よくするための活動「リアーキテクチャ」 森林施業を効率的に行うための作業道「路網」 木材などを車両で 運搬するための作業道 路網のおかげで、急斜面にある 木材もトラックで搬出できる 路網整備作業自体は 木材の生産にならないが、 整備後の生産量は劇的に上がる 10X,
Inc. ALL RIGHTS RESERVED 画像の出典:Vol.22 路網づくりで林業と山林の未来に“道”をつける 21
今後よくするための活動「リアーキテクチャ」 今後の開発を効率的に行うための「リアーキテクチャ」 森林施業における路網と同様に、今後の開発をしやすくするために リアーキテクチャを行う リアーキテクチャの作業自体は新たな機能を提供できないが、 整備後の開発生産性は向上する 10X, Inc. ALL RIGHTS
RESERVED 22
今後よくするための活動「リアーキテクチャ」 今回のリアーキテクチャの概要 バーコードスキャンの処理を3つのフェーズに分けて整理し直す 1. 読み取りフェーズ:フレームワークを用いてバーコードを読み取る 2. 正規化フェーズ:読み取った内容を統一した形に変換する a. 例)iOSで読み取って1桁目が0の13桁の場合は、12桁に変換 3.
処理フェーズ:正規化したバーコードを用いて一致する商品を探す 10X, Inc. ALL RIGHTS RESERVED 23
リアーキテクチャに対する 品質保証活動手段「Shadow Testing」 実際のデータで新旧比較をする 10X, Inc. ALL RIGHTS RESERVED 24
リアーキテクチャに対する品質保証活動手段「Shadow Testing」 リアーキテクチャのテストは難しい • リアーキテクチャの期待結果は リアーキテクチャ前と挙動が変わらないこと • 「リアーキテクチャ前の挙動」とは何か? ◦ リアーキテクチャ前の挙動を定義する必要がある
• リアーキテクチャ前後の差分比較が王道 ◦ どのように差分比較を行うべきか? 10X, Inc. ALL RIGHTS RESERVED 25
リアーキテクチャに対する品質保証活動手段「Shadow Testing」 Shadow Testingとは何か • 現行バージョンと並行して新しいバージョンのサービスを実行し、 両方に同じトラフィックを送信し、その応答を比較する手法 10X, Inc. ALL
RIGHTS RESERVED 参考元:What Is Shadow Testing? Four Ways to Bulletproof Your APIs 26
リアーキテクチャに対する品質保証活動手段「Shadow Testing」 10XでのShadow Testingの仕組み • Twitter社(当時)が2015年にリリースしたOSS「Diffy」では、 本番のリクエストを現行、現行の複製、新バージョンの3つの サーバーに送信している ◦ 参考:https://blog.x.com/engineering/en_us/a/2015/diffy-testing-services-without-writing-tests
• 10Xの場合、 同一アプリケーション上の プログラム内の関数の中で 分岐してテストしている 10X, Inc. ALL RIGHTS RESERVED 27
リアーキテクチャしたコードを リリースするまでの手順 手順を踏んで安全にリリースをする 10X, Inc. ALL RIGHTS RESERVED 28
リアーキテクチャしたコードをリリースするまでの手順 0. 初期状態 旧ロジックのみ存在している 10X, Inc. ALL RIGHTS RESERVED 29
リアーキテクチャしたコードをリリースするまでの手順 1. 新ロジックを作成 コードはコミットしているが、 プロダクトで呼び出ししていない まだ新ロジック自体は 正常に動作しない(作りかけ) 10X, Inc. ALL
RIGHTS RESERVED 30
リアーキテクチャしたコードをリリースするまでの手順 2. Shadow Testingのフラグを作成 Feature Flagを用いてShadow Testingの 呼び出しフラグを作成する まずはShadow TestingがNoの場合で
本番環境に投入する 10X, Inc. ALL RIGHTS RESERVED 31
リアーキテクチャしたコードをリリースするまでの手順 3. Shadow TestingのフラグをYesに変更する Yesの場合、新ロジックを裏側で実行する 結果の新旧比較は行うが、 ユーザーには旧ロジックの結果を返す 10X, Inc. ALL
RIGHTS RESERVED 32
リアーキテクチャしたコードをリリースするまでの手順 3. Shadow TestingのフラグをYesに変更する Yesの場合、新ロジックを裏側で実行する 新ロジックを呼び出すことで 意図せずにユーザーの振る舞いに 影響が出てしまった場合には、 Feature FlagをNoに切り替える
10X, Inc. ALL RIGHTS RESERVED 33
リアーキテクチャしたコードをリリースするまでの手順 4. Shadow Testingを数週間実行する 実際の本番環境でShadow Testingを実行し データ上の差分が発生しないことを確認する 差分が発生した場合は随時、 新ロジックに修正を加えていく 10X,
Inc. ALL RIGHTS RESERVED 34
リアーキテクチャしたコードをリリースするまでの手順 5. 新ロジックを呼び出すフラグを作成する Feature Flagを用いて新ロジックの 呼び出しフラグを作成する ユーザーにも新ロジックの結果を返す 10X, Inc. ALL
RIGHTS RESERVED 35
リアーキテクチャしたコードをリリースするまでの手順 5. 新ロジックを呼び出すフラグを作成する Feature Flagを用いて新ロジックの 呼び出しフラグを作成する 新ロジックを呼び出すことで 意図せずにユーザーの振る舞いに 影響が出てしまった場合には、 Use
new logic?のフラグをNoに切り替える 10X, Inc. ALL RIGHTS RESERVED 36
リアーキテクチャしたコードをリリースするまでの手順 5. フラグを削除する 一定期間、安定稼働したら、 一連のフラグを削除し、 新ロジックへの載せ替え完了 10X, Inc. ALL RIGHTS
RESERVED 37
リアーキテクチャしたコードをリリースするまでの手順 Shadow Testingを実際に取り入れるために… • 今回紹介した方法は、最も丁寧にステップを踏んだ場合のやり方 • 実際には、途中のステップを省略することもある ◦ 例えば、最初からShadow TestingをYesにして本番環境に投入する
など • いきなりShadow Testingはせず、事前にテストすることが大事 ◦ 事前にテストしないと、差分だらけになってしまう可能性がある ▪ ◦ 「ごくたまに差分が発生してしまう」ぐらいの頻度を期待している 新旧比較のタイミングで現れなかったパターンはテストできない ▪ Shadow Testingはあくまでも実際のユーザーデータを利用する方法 10X, Inc. ALL RIGHTS RESERVED 38
取り組んだ結果 10X, Inc. ALL RIGHTS RESERVED 39
取り組んだ結果 • Shadow Testing中に、旧ロジックと新ロジックで差分発生 ◦ 差分の原因:旧ロジックでの既存バグ ◦ 新ロジックでは修正できていることが確認できた • 新ロジックに載せ替えた後の不具合報告は0件
10X, Inc. ALL RIGHTS RESERVED 40
おわりに 10X, Inc. ALL RIGHTS RESERVED 41
おわりに MONITOR部分の品質保証活動「Shadow Testing」 Shadow Testingは MONITORの話 10X, Inc. ALL RIGHTS
RESERVED Continuous Testing in DevOps… に掲載の画像を元に発表者が翻訳 42
おわりに Shadow Testingは品質マネジメントを実現するための手段の一部 • Shadow Testingだけでは品質保証ができたとはいえない • シフトレフトなテスト活動もシフトライトなテスト活動も 引き続き必要 10X,
Inc. ALL RIGHTS RESERVED 43
おわりに その他のテスト活動は過去の発表資料を見てください https://speakerdeck.com/nihonbuson/processshiftleft https://speakerdeck.com/nihonbuson/quality-assurance-big-picture https://speakerdeck.com/10xinc/shift-left-and-shift-right 10X, Inc. ALL RIGHTS RESERVED
https://speakerdeck.com/nihonbuson/shift-right https://speakerdeck.com/nihonbuson/quality-assurance-big-picture-vol2 44
おわりに 一緒に働いてみませんか? 10Xではソフトウェア エンジニアを募集中! 10X, Inc. ALL RIGHTS RESERVED 副業やってます!
仕事の依頼をお待ちしてます! 45
おわりに Podcast始めました 個人 Podcast 10X, Inc. ALL RIGHTS RESERVED 10Xの
Podcast 46