UX の定量的な計測方法を調べていて、SUS(System Usability Scale) というものを知りました。
10問の固定の質問をスコア化して、定量的にウェブサイトユーザビリティ評価 を行うもので 用途として幅広く使用できそうでしたので、Google スプレッドシートから使う想定で、スコア計算のためのfunction を作成しました。
調べたこと、作成したfunction について記載します。
SUS(System Usability Scale) とは?
以下のスライドの説明がわかりやすかったです。
以下、スライドから SUS の特徴を引用します。
SUSの特徴
- ジョン・ブルックにより1986年に開発。
- ユーザビリティの受け止められ方を測定 & 指標化。
- 10の質問に対して、5段階で評価する。
- 最終的に0-100 でスコアリング。
- 質問のテンプレートが公開されている。
- 幅広いユーザーから聞くことができる。
- 少ないサンプル数でも信用できる。
- NPSと高い相関関係がある。
SUS のアンケートの内容
以下の記事にアンケートの内容の日本語訳が記載されています。
SUS のスコアの計算方法
上記の記事から、スコアの計算方法を引用します。
【集計方法】 奇数項目 : 回答番号から1を引く
偶数項目 : 5から回答番号を引く
すべての項目は0から4で評価し、足しあわせた合計数値を2.5倍して0から100のスケールへ変換する。
※質問を見ての通り、奇数項目がポジティブな質問、偶数項目がネガティブな質問となっているため。
標準的な SUS スコアについて
How to Measure Product Usability with the System Usability Scale (SUS) Score
に以下のような記載があります。
the standard average of SUS score is 68.
SUSスコアの標準平均は68です。
以下は、記事に記載されているスコアごとのグレートを示す表です。
| SUS score | Grade | Adjective Rating |
|---|---|---|
| > 80.3 | A | Excellent |
| 68 - 80.3 | B | Good |
| 68 | C | Okay |
| 51-68 | D | Poor |
| < 51 | E | Awful |
Google Apps Script の function
Google フォーム のフォーマット
以下のような SUS score を計測するためのGoogle フォームを作成しました。
System Usability Scale Template - Google フォーム
Google Apps Script の function は この Google フォームを エクスポートしてできる Google スプレッドシートに組み込むことを想定しています。
JavaScript function
-
前提
Simple Statistics の CDN版をGoogle Apps Script 内に 作成して使用しています。
Google Apps Script の名称はsimple-statistics.min.gsとして作成しました。 -
main.gs
以下、作成したスクリプトになります。
setSUSScoreを実行すると、SUS スコアを計算して結果をスプレッドシートに設定します。
setOutfitterを実行すると、SUS スコアの4分位範囲を元に外れ値を検出します。
function setSUSScore() { var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var lastRow = spreadsheet.getLastRow(); var range = spreadsheet.getRange(2, 2, lastRow - 1, 10); var values = range.getValues(); var calcResults = calcSUSScore_(values); for (var i = 0; i < calcResults.length; i++) { var scoreRange = spreadsheet.getRange(2 + i, 12, 1, 1); scoreRange.setValue(calcResults[i]); } } function setOutfitter() { var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var lastRow = spreadsheet.getLastRow(); var scoresRange = spreadsheet.getRange(2, 12, lastRow - 1, 1); var scores = scoresRange.getValues(); var results = findOutfitter_(scores); for (var i = 0; i < results.length; i++) { spreadsheet.getRange(2 + i, 13, 1, 1).setValue(results[i]); } } function calcSUSScore_(values) { var calcResults = new Array(); for (var i = 0; i < values.length; i++) { var score = 0; for (var j = 0; j < values[i].length; j++) { // index が 0 から始まるので、2で割った余りが0の場合は、奇数、1の場合は偶数とする。 if(j % 2 == 0) { score += values[i][j] - 1; } else if (j % 2 == 1) { score += 5 - values[i][j]; } else { throw new Error('Illegal argment.'); } } calcResults.push(score * 2.5); } return calcResults; } function findOutfitter_(scores) { var interquartileRange = ss.quantile(scores, 0.75) - ss.quantile(scores, 0.25); var min = Number(ss.quantile(scores, 0.25)) - Number(interquartileRange) * 1.5; var max = Number(ss.quantile(scores, 0.75)) + Number(interquartileRange) * 1.5; var results = new Array(); for (var i = 0; i < scores.length; i++) { var value; if (scores[i] < min) { value = "Outfitter"; } else if (scores[i] > max) { value = "Outfitter"; } else { value = ""; } results.push(value); } return results; }
計算後のスプレッドシートのイメージ
以下のようになります。
黄色がSUSスコア、緑が外れ値で外れ値の場合Outfitter という文字列が設定されます。
参考
以下、参考にした記事になります。
- System Usability Scale (SUS) | Usability.gov
- ウェブサイトユーザビリティ評価のためのSUS(System Usability Scale)
- 定量的なユーザーテストをしたい – とうふの温床
以上です。
コメント