ソフトウェアの品質を学びまくる

ソフトウェアの品質、ソフトウェアテストなどについて学んだことを記録するブログです。

なわとびから考える情報の仕分けとソフトウェアテスト

 レビューの難しさの一つに、「レビューする側とされる側で、感じる重みにギャップのある指摘」問題があります。
 特に、「レビューする側は大事な問題だと思っているのだけれど、される側はそう思っていない」ものが厄介です。このような場合、される側は「そんな重箱をつつくようなことを言わなくても・・」と感じているので、小手先の修正に終わってしまい、次回もまた同じことをやってしまいがち。

 その種の指摘の例として、「列のタイトルとデータが整合していない表」があります。

 「いやそんなことある?」って思われるかもしれませんが、「最初に列タイトルをつけてからデータを入れていったところ、タイトルとあまり関係ない情報も出てきた、でも列を分けなかった」みたいなものはちょいちょい見かけます。この手の表は、書き手が思っている以上に、読み解きの難易度が上がると感じます。

 ちょっと例がアレですが、イメージはこんな感じ。

メトリクス 計算式
テストケース密度 テストケース数 / 開発規模
欠陥密度 欠陥数 / 開発規模
※n件/ks以上を目標値とする

 「計算式」の列に、計算式以外の情報を入れんでくれ~
 目標値を書きたいなら、「目標値」って列を作ってくれ~

 でふと思ったのですが、「たくさんの情報があるときに、それを仕分けして、適切な列名を定めて表に落とし込む」って、実はそこまで簡単なことではないんだよなと。

突然のなわとび

ということで今日は、「情報の仕分け」を考えてみましょう。お題はこれです!

ジャーン

 これはわたしの次男が学校からもらってきた、「なわとびけんてい」の表。各「種目」で何回飛べたかに応じて色塗りをしていくことで、自身の成果と成長を見える化する、素敵なプリントです。

 この表自体に特に問題があるわけではない(ただし通番と種目の列は分けてほしい、通番の数字は半角にしてほしい、数字は右揃えにしてほしい)のですが、種目を眺めていると、「なわとびの種目は、いろんな概念が組み合わせられている」と感じませんか? これを紐解いていきましょう。なわとびだけに。

1. 要素に分解する

 名前からしてすでに組み合わせが発生している種目を、要素に分解していきます。

  • 前とび → 前
  • かけ足とび → かけ足
  • 後ろとび → 後ろ
  • あやとび(前) → あや × 前
  • 交差とび(前) → 交差 × 前
  • かけ足あやとび → かけ足 × あや
  • あやとび(後ろ) → あや × 後ろ
  • かけ足交差とび → かけ足 × 交差
  • 前ふりとび → 前ふり
  • 交差とび(後ろ) → 交差 × 後ろ
  • 二重とび → 二重
  • 二重とび(後ろ) → 二重 × 後ろ
  • あや二重とび → あや × 二重
  • 交差二重とび → 交差 × 二重
  • 三重とび → 三重

 以下のような要素がそろいました。意外に少ないですね。

前、かけ足、後ろ、あや、交差、前ふり、二重、三重

2. 要素を仕分けする

 集まった要素を仕分けて、カテゴリーにしていきます。
 仕分けの一つの手がかりとして、「似ているもの」があります。たとえば「前」と「後ろ」は真逆ですが、「回転の方向」を語っているという意味で似ています。

 結果として、以下の4つのカテゴリーとなります。

  • 回転の方向: 前、後ろ
  • 足の動き: かけ足、前ふり
  • 腕の動き: あや、交差
  • 回転の回数: 二重、三重

 表の話に戻ると、「回転の方向」などのカテゴリーが列名となり、「前」「後ろ」といった要素がデータの種類になります。

3. 要素の過不足をチェックする

 さて、要素はこれで十分でしょうか?
 いいえ、足りていないものがありますね。最初の「仕分け」は名前を元に行ったので、名前に明示的に現れない要素が抜けているのです。たとえば「足の動き」は「ノーマル」、つまり単純にジャンプ→着地するものがありますよね。

 これらを加えると、以下のようになります。

  • 回転の方向: 前、後ろ
  • 足の動き: ノーマル、かけ足、前ふり
  • 腕の動き: ノーマル、あや、交差
  • 回転の回数: 一重、二重、三重

 以上の要素を組み合わせることで、最初の種目すべてを表現できるようになりました。

# 種目 回転の方向 足の動き 腕の動き 回転の回数
10 交差とび(後ろ) 後ろ ノーマル 交差 一重
01 前とび ノーマル ノーマル 一重
16 さいきょう 後ろ 前ふり 交差 三重

 いや~ このように整理できると気持ちがいいですね! ぼくの考えたさいきょうのなわとび種目もすぐ作れるわけです。

4. 新しい要素を考えてみる

 さて、この整理をすると、もう少しできることがあります。

 確かに、最初に提示した種目はこれですべてカバーできるのですが、各列に足せる要素はないでしょうか?
 そうですねー、たとえば「腕の動き」。
 あやとびではジャンプのたびに腕の交差と解放を繰り返しますが、「1回のジャンプで交差と開放をする”ダブルあや”ができないか?」みたいな感じです。
 これは、「腕の動き」というカテゴリーで列名が付いていることにより、考えやすくなっています。

 「回転の回数」なら、単純には「四重」が考えられますし、「1回ごとに回転の回数が変わる飛び方」というのも発想できるかもしれません。

5. 新しいカテゴリーを考えてみる

 さらに、カテゴリーに何か追加できないか考えてみます。
 「足の動きと腕の動きがあるから・・・腰の動きってどうだ? ジャンプごとに、腰を左右に捻る!これは腹筋に効くぜ・・・!」みたいに。

 これも、カテゴリーの名前が適切に付けられていることが、発想の源となります。

おわりに

 最初の話からだいぶズレてきました。

最初に言いたかったこと

 表を作るなら、列名とデータの内容を整合させよう。

今言いたいこと

 適切なカテゴリー名を付けて分類することは、要素だけでなく、そもそもの分類の軸であるカテゴリーの過不足を検討するためにも、とっても大事なプロセスである。

 QAエンジニアの方なら、「何か、デシジョンテーブルテストとか組み合わせテストやるときに似てるな」と感じたかもしれません。
 その通りです! これらの表を作る時も、軸と選択肢の洗い出しと仕分けが重要なんですよね。実は最初は「なわとび直交表」を作ろうと思ったのですが、いつの間にか全然違う話になってしまいました。

 無理やりテストの話に持ち込んだところで、今日の雑談は以上です。今年の目標「三重とびをマスターする」を掲げて、今日も練習してきます。

Generated By Dalle