🍼

エンジニアの育休日記:ミルク選びとユーザーリサーチ・テストケース作成手法

に公開

この記事は「Hacobell Developers Advent Calendar」5日目の記事です。


最近育休をとってました @na9amura です。毎日いろいろな初めての経験、試行錯誤をしていて大変ですが刺激のある毎日をおくっています。

育児中に試行錯誤したことの1つに、ミルクを必要量飲み切ってくれないことがたまにあるという悩みを解消したい、ということがありました。その中でプロダクト開発、ソフトウェアエンジニアリングでも使う探索手法を応用できたのが面白かったので紹介してみます。

身近な例で手法を学び、皆さんの仕事に応用する学びになれば嬉しいです

状況

ミルクをあげる際の要素としては以下の2つ、バリエーションがありました

  • ミルク: 10種類(各2本のお試しセット、個別で買った少量のものなど)
  • ほ乳瓶: 3種類

愚直に全部試そうとすると 10 × 3 = 30パターン。新生児の食事1日8回を全てミルクにしたとしても、全パターン試すと4日間かかります。飲みが悪いと心配なので早く解決したい、飲み切るまでに時間がかかると大人も心労がたまる、お試し1セットでは網羅できない、などの問題があります。

やってみた内容

パターン数を減らす

全パターン試さずともミルク、ほ乳瓶の好みの傾向は見つけられます。各1回ずつ登場させるだけであればミルクの種類分の10回の試行にランダムにほ乳瓶を登場させればカバーできます。

例としてはこんな感じになります

パターン ミルク ほ乳瓶
1 ミルクA ほ乳瓶1
2 ミルクB ほ乳瓶2
3 ミルクC ほ乳瓶3
4 ミルクD ほ乳瓶1
5 ミルクE ほ乳瓶3
6 ミルクF ほ乳瓶2
7 ミルクG ほ乳瓶1
8 ミルクH ほ乳瓶3
9 ミルクI ほ乳瓶2
10 ミルクJ ほ乳瓶1

この方法により、30パターンから10パターンへと大幅に削減できます。

試す順番を工夫する

さらに工夫したポイントとして、単にパターンを減らすだけでなくダメなケースを早く見つけられるよう、動的に順序を決めていくよう想定していました

最初の計画

パターン数を減らす計画を作った上で、各ミルク・各ほ乳瓶を前半に登場させるよう順番を調整しておきます

  • 最初の10パターンで全10種類のミルクを1回ずつ試す
  • 最初の3パターンで全3種類のほ乳瓶を登場させる

NGが出たら即座に切り分ける

パターン1の「ミルクA × ほ乳瓶1」がダメだった場合、予定の順序を入れ替えて「ミルクA × ほ乳瓶2」を試します。それにより

  • 「ミルクA × ほ乳瓶2」もダメなら「ミルクAそのものがNG」の可能性が高い
  • 「ミルクA × ほ乳瓶2」がOKなら「ほ乳瓶1がNG」の可能性が上がる

のような判断をしていけます。

実施イメージ

挙げた要素を取り込んで実施をしていくと、以下のように進行していきます。

  • パターン1: ミルクA × ほ乳瓶1 → NG判定
  • パターン2: ミルクA × ほ乳瓶2 → OK判定(→ ほ乳瓶1に問題ありと特定)
  • パターン3: ミルクB × ほ乳瓶3 → OK判定
  • パターン4: ミルクC × ほ乳瓶1 → NG判定
  • パターン5: ミルクC × ほ乳瓶2 → NG判定(→ ミルクCに問題ありと特定)
  • ...

この「NGが出たら片方を変えて再テスト」という方式により、どちらに原因があるのかを早期に絞り込めるようにしました。

結果

結果としてうちの子は

  • キューブタイプだと飲み切ってくれないことがある
  • 粉ミルクの好みは多少あるが必要量は飲んでくれる
  • ほ乳瓶はあまり影響しない

という好みでした。

探索方法を工夫したのと実施順の運もあり、3〜4回目くらいにはキューブタイプの飲みが悪い可能性が高いと把握できました。また苦手パターンが限定的だったこともあり、飲まない回が連続しなかったというのも必要量の摂取と好みの探索を両立できたのが良かったです。

今回使った手法

今回使ったアプローチは色々な分野で似たような考え方が使われています。

ソフトウェア開発: ペアワイズ法・直交表

ソフトウェア開発の世界では、ペアワイズ法直交表 という手法があります。

複数のパラメータ(例: OS、ブラウザ、画面サイズ、ユーザー権限など)の組み合わせをテストする際、全パターン試していたら時間が足りません。例えば5つのパラメータで各3選択肢あったら、3^5 = 243パターンになります。そこでパターンを減らすためにペアワイズ法を使います

ペアワイズ法は全てのパラメータのペア(2つ組)を最低1回ずつテストすれば効率良くバグを発見することが可能という考え方です。一方で複数要素が独立ではなく、組み合わせによる影響が大きい場合は注意が必要です。

直交表は実験計画法に基づいて、少ないテストケースで効率的に組み合わせをカバーする手法です。

具体例: ペアワイズ法による削減

例えば、以下の3つのパラメータをテストする場合:

  • OS: Windows / Mac / Linux (3種類)
  • ブラウザ: Chrome / Firefox / Safari (3種類)
  • 画面サイズ: 小 / 中 / 大 (3種類)

全組み合わせは 3 × 3 × 3 = 27パターン

ペアワイズ法を適用すると、全てのペアを最低1回カバーする 9パターン まで削減できます

テストNo OS ブラウザ 画面サイズ
1 Windows Chrome
2 Windows Firefox
3 Windows Safari
4 Mac Chrome
5 Mac Firefox
6 Mac Safari
7 Linux Chrome
8 Linux Firefox
9 Linux Safari

この表では、例えば「Windows × Chrome」「Chrome × 小」「Windows × 小」などの全てのペアが最低1回は登場しています。

例えば「Windows × Safari × 小」は実施しないパターンですが、各2要素の組み合わせはチェックしているのでリスクは軽減できます。全網羅ではないものの効率を上げる、投機的な探索方法です。

こういった方法についてさらに知りたい場合は、以下のようなペアワイズ法の紹介記事や、ソフトウェアテストの手法についての書籍をあたると良いでしょう

https://www.veriserve.co.jp/helloqualityworld/media/20240125003/

https://www.juse-p.co.jp/products/view/934

UX設計・ユーザーインタビュー: コンジョイント分析

ユーザーリサーチやUXデザインの際に使うものとしては コンジョイント分析ペルソナ・コンジョイント法 という手法があります。

例えば新しいアプリの機能を設計するとき、「価格」「機能の豊富さ」「デザイン」「サポート体制」など、複数の要素の組み合わせでユーザーがどれを好むか知りたいことがあります。でも全パターンをユーザーに見せて評価してもらうのは現実的ではありません。

コンジョイント分析では、統計的に設計された少数の組み合わせをユーザーに提示することで、各要素の重要度や好みを効率的に把握できます。

こちらについても単体の解説記事や体系的な書籍をあたると深掘りできると思います

https://freeasy24.research-plus.net/blog/c175

https://www.sekigakusha.com/publications/detail/1st_31

まとめ

これらの手法に共通するのは以下の点です

  • 実行回数に制限がある: テスト時間、予算、ユーザーの負担など
  • 要素や組み合わせが多い: 全パターンを試すのは非現実的
  • 効率的に情報を得たい: 限られた試行回数で最大限の知見を得る

今回のミルク選びもこの状況と似て、時間やリソース、同時に実行可能な数も限られていました。

こういった状況はプロダクト開発では高頻度で遭遇します。制約がある中で上手く可能性を絞り込み情報収集をするのは創造性が求められ面白いですし、上手くいった時の達成感もある要素だと思います。仕事でもプライベートでもこういった方法を活用してみてください

Hacobell Developers Blog

Discussion