---
title: 'Kullanıcı Profilleri'
source: 'https://academia.sh/tr/kurslar/kullanici-deneyimi/kullanici-profilleri'
course: 'Kullanıcı Deneyimi ve Davranış Tasarımı'
language: tr
updated: '2026-08-17T18:09:38+00:00'
license: 'CC BY-SA 4.0'
---

# Kullanıcı Profilleri

Profilin uydurulmuş bir kişi değil, veriden türetilmiş bir davranış kümesi olması; katılımcıların kümelemesi, rol tabanlı gruplamanın açıklama gücünün hesaplanması ve profilin etik sınırı.

Önceki ders on iki görüşmeden on kod çıkardı, ama katılımcıları hâlâ `K01`–`K12` biçiminde
bir liste olarak bıraktı. Bu listeyle tasarım kararı verilemez: on iki ayrı kişiye ayrı
arayüz tasarlanmaz. Karar verebilmek için listenin yapısını görmek gerekir — kimler
birbirine benziyor, benzerlik hangi eksende ve bu eksen tasarımı değiştiriyor mu?

Bu sorunun yaygın yanıtı yanlıştır. Katılımcılar çoğu zaman rollerine göre gruplanır:
lisans öğrencisi, lisansüstü öğrenci, akademisyen, kütüphane çalışanı, dışarıdan üye. Bu
gruplama yönetilebilir görünür, çünkü roller zaten kayıtlıdır. Bu ders, aynı veri üzerinde
iki gruplamayı karşılaştırır ve rolün davranışı ne kadar açıkladığını hesaplar.

## Profil Nedir, Ne Değildir

**Kullanıcı profili (persona)**, araştırma verisinden türetilmiş ve bir davranış kümesini
temsil eden bir tanımdır. Üç parçası vardır:

- **Amaç:** kişinin arayüzü kullanma nedeni. "Kaynak taramak" ile "bilinen bir kitabı
  bulmak" ayrı amaçlardır ve ayrı arayüz kararları doğururlar.
- **Davranış:** amacın gözlenmiş biçimi. Oturum süresi, arama türü, ödünç alma sıklığı,
  hangi ekrandan girdiği.
- **Kısıt:** kişinin değiştiremediği koşullar. Zaman, ekran, dil, erişilebilirlik gereksinimi.

Profil bu üçünün dışında bir şey içerdiğinde tasarım kararı üretmeyi bırakır. Uydurulmuş bir
ad, bir yaş, bir fotoğraf ve bir yaşam öyküsü profili "canlı" göstermeye çalışır ama hiçbir
karar bu ayrıntılara dayandırılamaz. Katalog arayüzünde sonuç listesinin kaç satır
göstereceği kararı, kullanıcının otuz iki mi kırk beş mi yaşında olduğuna değil, oturumunun
dört mü yirmi iki dakika mı sürdüğüne bağlıdır.

Ölçüt şudur: profilde yazan her satırın karşılığında bir tasarım kararı gösterilebilmelidir.
Karşılığı olmayan satır profilden çıkarılır.

## Katılımcıları Ölçülene Göre Kümelemek

Gözlem oturumlarından dört ölçü çıkarıldı: konu taramasıyla geçen oturum oranı, ortalama
oturum süresi, aylık ödünç alma sayısı ve dar ekrandan girilen oturum oranı. Bu ölçüler
farklı birimlerde olduğu için önce ortak bir aralığa taşınır, sonra katılımcılar arası
uzaklık hesaplanır ve birbirine yakın olanlar birleştirilir.

```js
// profil.mjs — davranisa gore gruplama ile role gore gruplamanin karsilastirilmasi

// Gozlem oturumlarindan cikan olculer (ders icin kurulmus veri).
// kesif: konu taramasi ile gecen oturum orani, sure: ortalama oturum dakikasi,
// odunc: aylik odunc alma sayisi, darEkran: dar ekrandan girilen oturum orani.
const K = [
  { ad: "K01", rol: "lisans",      kesif: 0.15, sure: 4,  odunc: 6, darEkran: 0.10 },
  { ad: "K02", rol: "lisansustu",  kesif: 0.85, sure: 22, odunc: 2, darEkran: 0.20 },
  { ad: "K03", rol: "lisans",      kesif: 0.45, sure: 6,  odunc: 2, darEkran: 0.85 },
  { ad: "K04", rol: "lisans",      kesif: 0.80, sure: 19, odunc: 3, darEkran: 0.15 },
  { ad: "K05", rol: "akademisyen", kesif: 0.20, sure: 5,  odunc: 8, darEkran: 0.05 },
  { ad: "K06", rol: "disaridan",   kesif: 0.50, sure: 7,  odunc: 1, darEkran: 0.90 },
  { ad: "K07", rol: "calisan",     kesif: 0.40, sure: 5,  odunc: 3, darEkran: 0.80 },
  { ad: "K08", rol: "calisan",     kesif: 0.10, sure: 3,  odunc: 7, darEkran: 0.15 },
  { ad: "K09", rol: "akademisyen", kesif: 0.90, sure: 25, odunc: 2, darEkran: 0.10 },
  { ad: "K10", rol: "lisansustu",  kesif: 0.48, sure: 8,  odunc: 2, darEkran: 0.88 },
  { ad: "K11", rol: "disaridan",   kesif: 0.78, sure: 20, odunc: 1, darEkran: 0.25 },
  { ad: "K12", rol: "lisansustu",  kesif: 0.18, sure: 5,  odunc: 6, darEkran: 0.12 },
];
const OLCU = ["kesif", "sure", "odunc", "darEkran"];

// Olculer farkli birimlerde; her birini 0-1 araligina tasi.
const enAz = {}, enCok = {};
for (const o of OLCU) {
  enAz[o] = Math.min(...K.map((k) => k[o]));
  enCok[o] = Math.max(...K.map((k) => k[o]));
}
const vektor = (k) => OLCU.map((o) => (k[o] - enAz[o]) / (enCok[o] - enAz[o]));
const V = K.map(vektor);
const uzaklik = (a, b) => Math.hypot(...a.map((v, i) => v - b[i]));

// Tam bag ile birlestirmeli kumeleme: en yakin iki kumeyi birlestir, k kumede dur.
function kumele(hedef) {
  let kumeler = V.map((_, i) => [i]);
  while (kumeler.length > hedef) {
    let enIyi = [0, 1], enKucuk = Infinity;
    for (let i = 0; i < kumeler.length; i++)
      for (let j = i + 1; j < kumeler.length; j++) {
        let d = 0;
        for (const a of kumeler[i]) for (const b of kumeler[j]) d = Math.max(d, uzaklik(V[a], V[b]));
        if (d < enKucuk) { enKucuk = d; enIyi = [i, j]; }
      }
    const [i, j] = enIyi;
    kumeler = kumeler.filter((_, x) => x !== i && x !== j).concat([kumeler[i].concat(kumeler[j])]);
  }
  return kumeler.map((c) => c.sort((a, b) => a - b)).sort((a, b) => a[0] - b[0]);
}

// Grup ici kare toplami: her uyenin grup ortalamasina uzakliginin karesi
const kareToplam = (gruplar) =>
  gruplar.reduce((t, g) => {
    const ort = OLCU.map((_, d) => g.reduce((s, i) => s + V[i][d], 0) / g.length);
    return t + g.reduce((s, i) => s + uzaklik(V[i], ort) ** 2, 0);
  }, 0);

const TUMU = kareToplam([K.map((_, i) => i)]);
const rolGruplari = [...new Set(K.map((k) => k.rol))].map((r) =>
  K.map((k, i) => [k, i]).filter(([k]) => k.rol === r).map(([, i]) => i)
);
const davranisGruplari = kumele(3);

console.log("davranisa gore kumeler (k = 3)");
for (const g of davranisGruplari) {
  const ort = OLCU.map((_, d) => g.reduce((s, i) => s + K[i][OLCU[d]], 0) / g.length);
  console.log(
    `  ${g.map((i) => K[i].ad).join(" ").padEnd(20)} n=${g.length}  ` +
      `kesif ${ort[0].toFixed(2)}  sure ${ort[1].toFixed(1)} dk  odunc ${ort[2].toFixed(1)}  dar ekran ${ort[3].toFixed(2)}`
  );
  console.log(`     roller: ${[...new Set(g.map((i) => K[i].rol))].sort().join(", ")}`);
}

console.log("\nrole gore gruplar");
for (const g of rolGruplari) {
  console.log(`  ${K[g[0]].rol.padEnd(12)} ${g.map((i) => K[i].ad).join(" ").padEnd(16)} n=${g.length}`);
}

const rolK = kareToplam(rolGruplari), davK = kareToplam(davranisGruplari);
console.log("\ngruplama          grup sayisi  grup ici kare toplami  aciklanan degisim");
console.log(`role gore         ${String(rolGruplari.length).padStart(11)}  ${rolK.toFixed(3).padStart(21)}  ${((1 - rolK / TUMU) * 100).toFixed(1)}%`);
console.log(`davranisa gore    ${String(davranisGruplari.length).padStart(11)}  ${davK.toFixed(3).padStart(21)}  ${((1 - davK / TUMU) * 100).toFixed(1)}%`);
console.log(`toplam degisim (tek grup): ${TUMU.toFixed(3)}`);

// Her kumenin en temsili uyesi: kume icindeki uzaklik toplami en kucuk olan
console.log("\nkume  temsili katilimci  kume ici uzaklik toplami");
for (const g of davranisGruplari) {
  const puanlar = g.map((i) => [i, g.reduce((s, j) => s + uzaklik(V[i], V[j]), 0)]);
  puanlar.sort((a, b) => a[1] - b[1]);
  console.log(`${g.map((i) => K[i].ad).join("+").padEnd(20)} ${K[puanlar[0][0]].ad}  ${puanlar[0][1].toFixed(3)}`);
}
```

```
davranisa gore kumeler (k = 3)
  K01 K05 K08 K12      n=4  kesif 0.16  sure 4.3 dk  odunc 6.8  dar ekran 0.11
     roller: akademisyen, calisan, lisans, lisansustu
  K02 K04 K09 K11      n=4  kesif 0.83  sure 21.5 dk  odunc 2.0  dar ekran 0.17
     roller: akademisyen, disaridan, lisans, lisansustu
  K03 K06 K07 K10      n=4  kesif 0.46  sure 6.5 dk  odunc 2.0  dar ekran 0.86
     roller: calisan, disaridan, lisans, lisansustu

role gore gruplar
  lisans       K01 K03 K04      n=3
  lisansustu   K02 K10 K12      n=3
  akademisyen  K05 K09          n=2
  disaridan    K06 K11          n=2
  calisan      K07 K08          n=2

gruplama          grup sayisi  grup ici kare toplami  aciklanan degisim
role gore                   5                  4.885  22.3%
davranisa gore              3                  0.261  95.8%
toplam degisim (tek grup): 6.286

kume  temsili katilimci  kume ici uzaklik toplami
K01+K05+K08+K12      K01  0.538
K02+K04+K09+K11      K02  0.605
K03+K06+K07+K10      K03  0.450
```

## Rol Bir Profil Değildir

Karşılaştırmanın sonucu tek satırda okunur. Role göre gruplama **beş** grup üretiyor ve
davranıştaki değişimin %22.3'ünü açıklıyor; davranışa göre gruplama **üç** grupla %95.8'ini
açıklıyor. Bu karşılaştırma rolün lehinedir, çünkü daha çok grup her zaman daha küçük grup
içi değişim üretme eğilimindedir. Daha az grupla daha yüksek açıklama, farkın veriden
geldiğini gösterir.

Bunun nedeni kümelerin bileşiminde görünüyor: üç davranış kümesinin her birinde dört ayrı
rol var. Aynı rolden iki kişi birbirine benzemiyor, farklı rollerden dört kişi benziyor.
Lisans öğrencisi K01 ile akademisyen K05 aynı kümede — ikisi de bilinen bir kaydı bulup
çıkmak istiyor. Lisans öğrencisi K04 ile akademisyen K09 başka bir kümede — ikisi de konu
tarıyor. Rol, kütüphane kaydında yazılı olduğu için ölçülmesi ucuzdur; davranışı
açıklamadığı için tasarımda karşılığı yoktur.

Üç kümenin ortalamaları profillerin çekirdeğini veriyor.

- **Bilinen kaydı arayan.** Konu taraması oranı 0.16, oturum 4.3 dakika, ayda 6.8 ödünç. Bu
  profil için sonuç listesinin ilk satırı belirleyicidir; kullanıcı listeyi taramaz, ilk
  eşleşmeyi doğrular ve çıkar.
- **Konu tarayan.** Konu taraması oranı 0.83, oturum 21.5 dakika, ayda 2.0 ödünç. Bu profil
  listeyi gerçekten okur, karşılaştırır ve çoğu oturumda ödünç almadan ayrılır. Onun için
  değerli olan işlem değil, listeye geri dönebilmektir.
- **Dar ekrandan bakan.** Oturumların 0.86'sı dar ekranda, süre 6.5 dakika. Bu profilin
  kısıtı ekrandır: aynı sonuç listesi ona daha az satır gösterir, aynı eylem şeridi ona
  sığmaz.

Üçüncü tablo her kümenin **temsili katılımcısını** veriyor: küme içindeki uzaklık toplamı en
küçük olan üye. Profil metni yazılırken bu katılımcının notları kullanılır, çünkü kümenin
ortasında duran gerçek bir kayıttır. Ortalama bir kişi değildir; ortalamaya en yakın kişidir.

## Profilin Etik Sınırı

Profil, araştırma verisinden türetildiği için katılımcı verisinin taşıdığı bütün
yükümlülükleri devralır.

**Tek kişilik küme profil değildir.** Bir küme tek üyeye inerse, o profil bir kişinin
davranış kaydıdır; adı silinmiş olsa bile ekipteki biri onu tanır. Kural şudur: bir profil
en az üç katılımcının davranışını temsil etmiyorsa profil olarak yazılmaz, gözlem olarak
kalır. Yukarıdaki kümelerin üçü de dört üyelidir.

**Temsili katılımcının alıntısı da kimliksizleştirilir.** Profil metnine katılımcı sözü
alınırken kişiyi tanımlanabilir kılan ayrıntılar çıkarılır. Önceki derste konan ölçüt burada
da geçerlidir: veriden kimliğe geri gidilememelidir.

**Profil, onayın kapsamı içinde kalır.** Katılımcı araştırmaya katıldığında verisinin
tasarım kararlarında kullanılmasına onay verdi; adının bir profil kartında görünmesine değil.
Profillere uydurma ad verilmesinin tek savunulabilir gerekçesi budur, ama uydurma ad da
gerçek adı çağrıştırmayacak biçimde seçilir.

**Profil bir dışlama aracına dönüşmemelidir.** "Bu profil bizim kullanıcımız değil" cümlesi
kapsam kararı olarak yazılabilir, ama kimin ölçülmediğiyle birlikte yazılır. Üç profilin
hiçbiri ekran okuyucu kullanan bir katılımcıdan türemediyse, bu bir bulgu değil örneklem
eksikliğidir ve profil belgesine böyle geçer.

## Özet

- Kullanıcı profili amaç, davranış ve kısıt üçlüsüdür; profildeki her satırın karşılığında
  bir tasarım kararı gösterilebilmelidir.
- Katılımcılar ölçülen davranışa göre kümelenir; ölçüler ortak aralığa taşınır ve uzaklık
  üzerinden birleştirilir.
- Örnek veride role göre gruplama beş grupla değişimin %22.3'ünü, davranışa göre gruplama
  üç grupla %95.8'ini açıkladı; rol ucuz ölçülür ama davranışı açıklamaz.
- Her kümenin temsili üyesi, küme içi uzaklık toplamı en küçük olan gerçek katılımcıdır;
  profil metni ortalama bir kişiden değil bu kayıttan yazılır.
- Bir profil en az üç katılımcıyı temsil etmiyorsa yazılmaz; profil, katılımcıyı yeniden
  tanımlanabilir kılmamalı ve örneklemin dışında kalanları bulgu gibi göstermemelidir.

## Sonraki Adım

Üç profil elde edildi, ama profil tek başına bir yapılacak listesi değildir. "Konu tarayan"
profilinin oturumu yirmi bir dakika sürüyor — bu sürede tam olarak ne yapıyor, hangi adımları
sırayla izliyor ve hangi adımda ne beklemesi gerekiyor? Sonraki ders ihtiyacı eyleme çevirir:
kullanıcı hikâyesinin hangi biçimde yazıldığını, içine çözümün nasıl sızdığını ve görevlerin
sıklık ile başarısızlık verisine göre nasıl sıralandığını ele alır.
