La generazione di grandi moli di dati fittizi può tornare utile in svariati contesti. Si pensi, ad esempio, alla necessità di verificare il funzionamento di un modello di machine learning, in cui alla mancanza di dati si può temporaneamente sopperire con dati (realistici) generati automaticamente. O ancora, si pensi allo sviluppo di un'applicazione prototipale, in cui si vuole mostrare ad un cliente in che modo i form di un sito web potrebbero essere utilizzati dagli utenti, mostrando come tali dati avrebbero ripercussioni sul backend, il database, o altri moduli software.
Potremmo andare avanti con altri esempi, ma probabilmente ciò risulterebbe superfluo, vista l'evidente importanza dei dati al giorno d'oggi. Per questo motivo, molti programmatori (più o meno indipendenti) hanno deciso di sviluppare diverse librerie e soluzioni adatte a vari linguaggi di programmazione, che permettono proprio di generare dati fittizi in maniera automatica. Faker.js è una libreria JavaScript adibita proprio a tale scopo, che può tornare utile in vari ambiti applicativi. Si possono generare indirizzi postali, date, valori finanziari, nomi e molto altro.
Nel seguito vedremo alcuni semplice esempi che mostrano come utilizzare Faker.js, rimandando poi al sito ufficiale per ogni ulteriore approfondimento.
Installazione
Per prima cosa, vediamo come installare Faker.js. A tale scopo, ci affideremo a Node.js, sfruttando come al solito npm:
npm i faker
Questo è tutto ciò di cui abbiamo bisogno per iniziare a usare Faker.js: vediamo quindi subito come sfruttarlo per generare alcuni dati di esempio.
Generare dati di persone con Faker.js
Il frammento di codice che vediamo mostra come ottenere una serie di informazioni relative ad una persona (ovviamente fittizia):
const faker = require('faker');
let firstName = faker.name.firstName();
let lastName = faker.name.lastName();
let jobTitle = faker.name.jobTitle();
let prefix = faker.name.prefix();
let suffix = faker.name.suffix();
let jobArea = faker.name.jobArea();
let phone = faker.phone.phoneNumber();
console.log(`Employee: ${prefix} ${firstName} ${lastName} ${suffix}`);
console.log(`Job title: ${jobTitle}`);
console.log(`Job area: ${jobArea}`);
console.log(`Phone: ${phone}`);
Il risultato di questo esempio potrebbe essere simile al seguente:
Employee: Mrs. Vernice Abernathy III
Job title: Customer Data Associate
Job area: Program
Phone: 1-516-716-9832
Come si può intuire, questo tipo di dati, seppur finti, hanno un formato molto verosimile, e si prestano bene ad essere usati in svariate situazioni. Aggiungendo a questi dati anche un'immagine (altra funzionalità supportata da Faker.js) potremo aumentare ulteriormente il realismo di questi dati. Precisiamo, però, che le immagini utilizzate da Faker.js fanno parte di un insieme di contenuti inclusi nella libreria (a differenza di altri servizi che le generano tramite intelligenza artificiale).
Generare date e valori casuali
Sia le date che i valori casuali sono tipi di dati che fanno spesso comodo in ambito di test. Il codice che segue ci permette di generare alcune date fittizie, con la possibilità di scegliere se tali date debbano essere future o recenti:
const faker = require('faker');
let futureDate = faker.date.future();
let recentDate = faker.date.recent();
Per quello che riguarda i valori casuali, Faker.js offre diverse opzioni. Con questa libreria, è infatti possibile non soltanto generare numeri casuali (cosa peraltro già assolta dai costrutti standard offerti da JavaScript), ma anche stringhe formattate secondo precisi standard, come UUID o parole casuali (ma comunque di senso compiuto):
const faker = require('faker');
let number = faker.random.number();
console.log(number);
let uuid = faker.random.uuid();
console.log(uuid);
let word = faker.random.word();
console.log(word);
let words = faker.random.words(6);
console.log(words);
Il risultato del codice appena visto potrebbe essere simile al seguente:
630
1470356a-1197-4955-b3c1-30302fd1db10
Facilitator
dot-com connect Practical Checking Account Mandatory real-time
Generare dati un funzione della localizzazione
I dati visti fin qui consentono di generare dati che, in linea di massima, sono abbastanza realistici. Tuttavia, in certi contesti essi potrebbero non essere molto adatti. Se, ad esempio, abbiamo bisogno di generare dati realistici per un sito web italiano, potremmo voler preferire che i nomi somiglino a quelli più comunemente diffusi in Italia. A tale scopo, possiamo procedere come segue:
const faker = require('faker/locale/it');
let firstName = faker.name.firstName();
let lastName = faker.name.lastName();
let prefix = faker.name.prefix();
console.log(`${prefix} ${firstName} ${lastName}`);
La prima riga ci permette di specificare un'opzione di localizzazione, tramite cui potremo generare dati meglio contestualizzati. Eseguendo il codice appena visto, si può ottenere un risultato analogo al seguente:
Sig. Sigfrido Santi
L'idea appena vista si applica anche agli altri dati, per cui possiamo generare date formattate con il formato tipico italiano, americano, russo o di qualsiasi altra nazione.
Chiunque fosse interessato ad approfondire il funzionamento di Faker.js, può fare riferimento al sito ufficiale del progetto, che include moltissimi altri esempi.