Upgrade to Pro — share decks privately, control downloads, hide ads and more …

シフトライトなテスト活動を適切に行うことで、無理な開発をせず、過剰にテストせず、顧客をビックリ...

nihonbuson
January 09, 2025

シフトライトなテスト活動を適切に行うことで、無理な開発をせず、過剰にテストせず、顧客をビックリさせないプロダクトを作り上げているお話 / Shift Right

nihonbuson

January 09, 2025
Tweet

More Decks by nihonbuson

Other Decks in Technology

Transcript

  1. ©2025 10X, Inc. 2 自己紹介 • 風間裕也(ブロッコリー) • 株式会社10X 品質管理チーム

    • 副業:B-Testing(個人事業主)として ◦ 株式会社MonotaRO (テストコンサルタント) ◦ グロース・アーキテクチャ&チームス株式会社  他数社でお手伝い • 社外活動 ◦ JaSST Review(ソフトウェアレビューシンポジウム)実行委員長 ◦ WACATE(テストの合宿型ワークショップ形式勉強会)実行委員長 ◦ Developers Summit 2025 コンテンツ委員
  2. ©2025 10X, Inc. 9 はじめに アジェンダ • はじめに • 複数のテスト活動を組み合わせてプロダクトを作り上げる

    • 継続的テストモデル • 事業概要 • 現場リサーチ • フィーチャーフラグと活用例の紹介 • フィーチャーフラグ活用時の注意点 • 継続的テストモデルとの関係性 • おわりに
  3. ©2025 10X, Inc. 予告標識は出口の手前に複数回表示される • もしも予告標識が無く、出口が突然現れると… ◦ 急な車線変更をする車がたくさん出てくる ◦ きっと出口周辺で事故が多発する

    ◦ 減速をして通過する必要が出てくる • 予告標識があるので、 出口に行こうと思っている車両はスムーズに向かえる ◦ 左車線に寄っておくことができる ◦ 急な減速をせずに済む 14 複数のテスト活動を組み合わせてプロダクトを作り上げる
  4. ©2025 10X, Inc. 価値を届けるまでにテスト活動も複数回行う • リリース直前のみにテスト活動があると… ◦ 沢山のバグが見つかる ◦ 修正に時間がかかるので、開発のスピードが落ちる

    • リリース前やリリース後に複数回テスト活動をすると… ◦ 小刻みにバグが見つかる ◦ 修正に時間がかからないので、スムーズに価値を届けられる 15 複数のテスト活動を組み合わせてプロダクトを作り上げる
  5. ©2025 10X, Inc. 継続的テストモデル 18 継続的テストモデル Continuous Testing in DevOps…

    に掲載の画像を元に発表者が翻訳 テストの 範囲に なりがち
  6. ©2025 10X, Inc. シフトレフトなテスト活動 19 継続的テストモデル Continuous Testing in DevOps…

    に掲載の画像を元に発表者が翻訳 早い段階 に行う テストがある
  7. ©2025 10X, Inc. シフトライトなテスト活動 20 継続的テストモデル Continuous Testing in DevOps…

    に掲載の画像を元に発表者が翻訳 リリース後 に行う テストがある
  8. ©2025 10X, Inc. シフトレフトなテスト活動とシフトライトなテスト活動 22 継続的テストモデル シフトレフトなテスト活動例 • リファインメントでの 受け入れ基準作成

    • リリースフラグの活用 シフトライトなテスト活動例 • ログ仕込み • 現場リサーチ • 運用フラグの活用
  9. 26

  10. 27

  11. ©2025 10X, Inc. ネットスーパーのサービスの一連の流れ 29 事例紹介をより理解してもらうための前提知識:ピッキング・パッキングとは何か? お客様 店舗 スタッフ 配達

    スタッフ 注文実行 注文変更 締め切り ピッキング パッキング 配達 売り場から 商品を集める 注文ごとに 商品を梱包する
  12. ©2025 10X, Inc. ネットスーパーのサービスの一連の流れ 30 事例紹介をより理解してもらうための前提知識:ピッキング・パッキングとは何か? お客様 店舗 スタッフ 配達

    スタッフ 注文実行 注文変更 締め切り ピッキング パッキング 配達 売り場から 商品を集める 注文ごとに 商品を梱包する 注文実行 注文変更 締め切り
  13. ©2025 10X, Inc. ネットスーパーのサービスの一連の流れ 31 事例紹介をより理解してもらうための前提知識:ピッキング・パッキングとは何か? お客様 店舗 スタッフ 配達

    スタッフ 注文実行 注文変更 締め切り ピッキング パッキング 配達 売り場から 商品を集める 注文ごとに 商品を梱包する ピッキング 売り場から 商品を集める
  14. ©2025 10X, Inc. ネットスーパーのサービスの一連の流れ 33 事例紹介をより理解してもらうための前提知識:ピッキング・パッキングとは何か? お客様 店舗 スタッフ 配達

    スタッフ 注文実行 注文変更 締め切り ピッキング パッキング 配達 売り場から 商品を集める 注文ごとに 商品を梱包する パッキング 注文ごとに 商品を梱包する
  15. ©2025 10X, Inc. 注文ごとに 商品を梱包する ネットスーパーのサービスの一連の流れ 34 事例紹介をより理解してもらうための前提知識:ピッキング・パッキングとは何か? お客様 店舗

    スタッフ 配達 スタッフ 注文実行 注文変更 締め切り ピッキング パッキング 配達 売り場から 商品を集める 注文ごとに 商品を梱包する 配達
  16. ©2025 10X, Inc. 事例紹介をより理解してもらうための前提知識まとめ • チェーンストアECに特化したEC/DXプラットフォーム 「Stailer」を開発している • 今回は店舗スタッフ向けアプリの事例 •

    ピッキング…実店舗の陳列棚から、       注文のあった商品を選ぶこと       →選んだ商品はバックヤードへ運ぶ • パッキング…商品を注文ごとに梱包すること 35 事例紹介をより理解してもらうための前提知識
  17. ©2025 10X, Inc. 現場リサーチの様子 • 店舗スタッフが ピッキングやパッキングを 行っている様子を、 すぐそばから観察 •

    気になった点をメモする ◦ 時には録画・録音もする • 使い方を教えない 38 現場リサーチ ←10X社員 ↑店舗スタッフ
  18. ©2025 10X, Inc. 現場リサーチで気付いた例 40 現場リサーチ • 一方のダンボールには「大型」が貼られていた ◦ 大型…配達用のコンテナに入らないような大きな商品の区分

    • もう一方のダンボールには「常温」が貼られていた。 ◦ 常温…冷やす必要のない、コンテナに入る大きさの商品の区分
  19. ©2025 10X, Inc. 現場リサーチで気付いた例 42 現場リサーチ • 「大型」…お茶1ケースを注文した • 「常温」…お茶6本を注文した

    ◦ 1ケースと同じため、配達ではダンボールごと運ぶ Stailerのデータだけでは 気付けない運用時の工夫だった
  20. ©2025 10X, Inc. 現場リサーチで見えてくるもの • 運用でカバーしている点 ◦ アプリでは解決が難しいものも含む ◦ プロダクトの仕様やプロダクトに残るin/outのデータだけ

    見ても、極めて断片的な理解・情報にしかならない • リサーチした店舗特有の課題点 ◦ 同じパートナーであっても、店舗によって課題は異なる • 自分たちが開発した機能がどのように使われているか 43 現場リサーチ
  21. ©2025 10X, Inc. フィーチャーフラグとは何か • フィーチャーフラグ ◦ Feature Flag、もしくはFeature Toggle

    ◦ コードを変更せずにシステムの振る舞いを変更できる手法 46 フィーチャーフラグ
  22. ©2025 10X, Inc. 4種類のフィーチャーフラグ 記事「Feature Toggles (aka Feature Flags)」の中で フィーチャーフラグを4種類に分類して説明している

    • アクセス許可フラグ(Permissioning Toggles) • 実験フラグ(Experiment Toggles) • 運用フラグ(Ops Toggles) • リリースフラグ(Release Toggles) 47 フィーチャーフラグ
  23. ©2025 10X, Inc. アクセス許可フラグ • ユーザーの状態によって アクセスの許可を切り分ける際に利用するフラグ • 具体的なプラクティス例 ◦

    有料会員のみ表示されるメニュー • リクエスト毎にフラグが変更される ◦ 毎回、判定が行われる • 機能が廃止になるまで半永久的に利用する 50 フィーチャーフラグ
  24. ©2025 10X, Inc. 実験フラグ • 新機能の有効性を確かめるために 試験的に機能を導入する際に利用するフラグ • シフトライトなテスト活動と見なすことができる •

    具体的なプラクティス例 ◦ A/Bテスト • リクエスト毎にフラグが変更される ◦ 毎回判定が行われる • 有効性の確認が終わるまで利用する ◦ 新機能を全ユーザーに適用する or 新機能を破棄する 52 フィーチャーフラグ
  25. ©2025 10X, Inc. 運用フラグ • 運用が劇的に変わった時に発生する 負荷を軽減するために利用するフラグ ◦ 問い合わせの急増 ◦

    パフォーマンスの急増 • シフトライトなテスト活動と見なすことができる • 具体的なプラクティス例 ◦ カナリアリリース ▪ 段階的かつ計画的なリリース • リクエスト毎や再構成毎にフラグが変更される ◦ 決まったタイミングで判定が変わる • フラグの切り替えの必要性がなくなるまで利用する 54 フィーチャーフラグ 後ほど 詳しく紹介
  26. ©2025 10X, Inc. リリースフラグ • 大規模なソースコードの変更とならないように 制御するために利用するフラグ • 機能リリースとコードデプロイの分離が可能になる •

    シフトレフトなテスト活動と見なすことができる • 具体的なプラクティス例 ◦ リリース戦略への活用 • デプロイ毎にフラグが変更される ◦ 日々のリクエストの中で判定が変わることは基本的にない • 実際にリリースするまで利用する 56 フィーチャーフラグ 次ページから 詳しく紹介
  27. ©2025 10X, Inc. リリースフラグ活用なしの場合のリリース戦略例 58 リリースフラグの活用 今までの開発した コードをいっぺんに マージ 開発中にマージ

    しないため 差分が溜まり続ける feature main マージ ※mainブランチに入っているものを本番環境にデプロイ
  28. ©2025 10X, Inc. 本番環境での リリース フラグをOFF リリースフラグ活用ありの場合のリリース戦略例 63 リリースフラグの活用 本番環境での

    リリース フラグをON feature main マージ 検証環境でリリースフラグをONにすることで 細かい差分でテスト可能
  29. ©2025 10X, Inc. リリースフラグがシフトレフトなテスト活動と考える理由 • リリースフラグなしの場合 ◦ 必要な変更が全て入ったタイミングでテスト実施 ▪ 開発終了後、リリース直前にテストすることになる

    ▪ 差分も大きくなる • リリースフラグありの場合 ◦ mainブランチに変更が入るタイミングでテスト実施 ▪ リリースフラグなしの場合に比べて早い段階でテスト可能 • シフトレフトしていると言える ▪ 1回の差分が小さいため、テスト対象範囲も小さい 64 リリースフラグの活用
  30. ©2025 10X, Inc. 運用フラグ(再掲) • 運用が劇的に変わった時に発生する 負荷を軽減するために利用するフラグ ◦ 問い合わせの急増 ◦

    パフォーマンスの急増 • シフトライトなテスト活動と見なすことができる • 具体的なプラクティス例 ◦ カナリアリリース ▪ 段階的かつ計画的なリリース 69 運用フラグの活用
  31. ©2025 10X, Inc. 運用フラグ(再掲) • 運用が劇的に変わった時に発生する 負荷を軽減するために利用するフラグ ◦ 問い合わせの急増 ◦

    パフォーマンスの急増 • シフトライトなテスト活動と見なすことができる • 具体的なプラクティス例 ◦ カナリアリリース ▪ 段階的かつ計画的なリリース 70 運用フラグの活用
  32. ©2025 10X, Inc. カナリアリリース • 利用者の一部にリリースして、 状況を見て全体に対象を広げるかどうかを判断する方法 • 計画例 ◦

    リリース初日 → 全体の10%に適用 ◦ リリース2日目 → 全体の30%に適用 ◦ リリース3日目 → 全体の50%に適用 ◦ リリース4日目 → 全体の80%に適用 ◦ リリース5日目 → 全体(100%)に適用 73 運用フラグの活用 少 多
  33. ©2025 10X, Inc. カナリアリリース • 利用者の一部にリリースして、 状況を見て全体に対象を広げるかどうかを判断する方法 • 計画例 ◦

    リリース初日 → 全体の10%に適用 ◦ リリース2日目 → 全体の30%に適用 ◦ リリース3日目 → 全体の50%に適用 ◦ リリース4日目 → 全体の80%に適用 ◦ リリース5日目 → 全体(100%)に適用 74 運用フラグの活用 不具合多発! 切り戻し
  34. ©2025 10X, Inc. カナリアリリースの設定方法 • Androidアプリの場合 ◦ 段階的な公開(Staged rollout)機能を用いて設定可能 ▪

    適用するユーザーの割合は自由に設定可能 • iOSアプリの場合 ◦ Phased Releases機能を用いて設定可能 ▪ 適用するユーザーの割合は固定 75 運用フラグの活用
  35. ©2025 10X, Inc. 運用フラグ(再掲) • 運用が劇的に変わった時に発生する 負荷を軽減するために利用するフラグ ◦ 問い合わせの急増 ◦

    パフォーマンスの急増 • シフトライトなテスト活動と見なすことができる • 具体的なプラクティス例 ◦ カナリアリリース ▪ 段階的かつ計画的なリリース 76 運用フラグの活用
  36. ©2025 10X, Inc. 段階的かつ計画的なリリース • カナリアリリースの一種 • 適用する利用者のグループをより具体的に指定する方法 • 計画例

    ◦ 第1弾 → 利用者数が少ないパートナー ◦ 第2弾 → 利用者数が第1弾よりは少し多いパートナー ◦ 第3弾 → 利用者数が多いパートナーのうち、店舗面積が小さめの店舗 ◦ 第4弾 → 利用者数が多いパートナーのうち、店舗面積が大きめの店舗 ◦ 第5弾 → 利用者数が多いパートナーのうち、運用が特殊な店舗 77 運用フラグの活用 少 多
  37. ©2025 10X, Inc. なぜ利用者数が少ないパートナーから適用するのか • 我々が取り扱っている店舗スタッフ向けアプリは 毎日のピッキングやパッキングの業務をサポートしている • リリースによってアプリが劇的に変化してしまうと… ◦

    全利用者が混乱する ◦ 相当数の問い合わせが届く • 利用者数が少ないパートナーから適用していくと… ◦ 運用上の問題を既に踏み抜いておける ◦ 新機能に対する問い合わせが少ない状態を保てる 78 運用フラグの活用
  38. ©2025 10X, Inc. フラグが正しく取得できると過信しない • 通信環境に依存される ◦ 特にクライアント側 • フラグがOFFで動くことをデフォルトとして開発する

    ◦ 例)アクセス許可フラグとしての有料会員のフラグ ▪ 「有料会員の場合にON」となるようにする • フラグを取得できなかった時に無料会員扱いにする • 逆の設定(無料会員の場合にON)だと、 フラグを取得できなかった時に有料会員の機能が使えてしまう 81 フィーチャーフラグ活用時の注意点
  39. ©2025 10X, Inc. トラブルなどがあればOFFにできるように設計する • トラブルが発生したらフィーチャーフラグをOFFにする ◦ リリース前の状態にすぐに戻せる形にする • フィーチャーフラグで分岐させる箇所は

    コピペ上等で実装する ◦ 分岐先のコードで本来のやりたいこと以外も 色々と変更するのは避ける ▪ 特にデータ構造の変更は極力避ける ◦ フィーチャーフラグをONにしてトラブルが発生した時に OFFに戻せなくなる 82 フィーチャーフラグ活用時の注意点
  40. ©2025 10X, Inc. フィーチャーフラグのONとOFFの両方をテストする • フィーチャーフラグを用いて開発していると、 フィーチャーフラグがONのことばかり考えてしまいがち • フィーチャーフラグがOFFの場合のテストも実施する •

    リリースフラグでの開発時には特に注意! ◦ フラグOFFの時に不具合が発生してしまうと、利用者にとっては 「何も機能追加されていないのに不具合が起きた」と 感じてしまう 83 フィーチャーフラグ活用時の注意点
  41. ©2025 10X, Inc. ログなどで操作やフラグ適用の様子を追えるようにする • 期待した効果が得られない、問い合わせが発生した場合 どのような操作をしているのか見えるようにしておく • フラグが適用されているか分かるようにしておく ◦

    問い合わせが発生してないぞ!(←実は誰にも適用してない) • 操作内容を追えないと… ◦ 何か良く分からないけどうまくいってないみたい ◦ この機能って提供しない方が良いのでは? 84 フィーチャーフラグ活用時の注意点
  42. ©2025 10X, Inc. 利用者はテスターではない • 制限した上で適用された利用者はあくまでもお客様 ◦ テスターではない • シフトライトなテスト活動の目的は

    「機能としては動くが、運用上不便である」 (妥当性確認)の発見 ◦ 「不具合をお客様に見つけてもらう」(検証)が目的ではない ◦ 不具合は従来のテスト活動で発見する必要がある 86 フィーチャーフラグ活用時の注意点
  43. ©2025 10X, Inc. 継続的テストモデル(再掲) 89 継続的テストモデルとの関係性 Continuous Testing in DevOps…

    に掲載の画像を元に発表者が翻訳 リファインメントでの 受け入れ基準作成
  44. ©2025 10X, Inc. 継続的テストモデル(再掲) 92 継続的テストモデルとの関係性 Continuous Testing in DevOps…

    に掲載の画像を元に発表者が翻訳 従来のテストや システムテスト
  45. ©2025 10X, Inc. 継続的テストモデル(再掲) 96 継続的テストモデルとの関係性 Continuous Testing in DevOps…

    に掲載の画像を元に発表者が翻訳 今回の紐付けはあくまでも一例 自組織に合わせて シフトレフト・シフトライトな テスト活動は何か考えよう!
  46. ©2025 10X, Inc. まとめ • プロダクトを作り上げるために 複数のテスト活動を組み合わせる • シフトライトなテスト活動として現場リサーチがある •

    シフトレフトなテスト活動および シフトライトなテスト活動として フィーチャーフラグがある • フィーチャーフラグは4種類に分類できる • フィーチャーフラグ適用時には注意点がある 98 おわりに