Kesän jälkeen hehkutin Microsoftin Power Platformille tuomaa AI-avusteista sovelluskehitystyökalua (generative pages). Tällä viikolla Microsoft julkaisi App Builderin, joka on samanhenkinen työkalu Microsoft 365 puolelle. Kyse on ns. vibe-koodauksesta. Siinä käyttäjä kertoo kielimallille luonnolliselta kieltä käyttäen, millaisen sovelluksen hän haluaa, ja kielimalli tuottaa tähän tarvittavan koodin.

Aivan taikuutta.

Tutustaan tähän uuteen työkaluun hieman tarkemmin. Verrataan sitä samalla aiemmin esiteltyyn generative pages -toiminnallisuuteen. Idea on kuitenkin pohjimmiltaan sama. Mitä eroa näillä kahdella lopulta on?

Esimerkki – Assettien hallinta

Rakennetaan App Builderin avulla yksinkertainen sovellus, jolla hallitaan assetteja. Esimerkiksi läppäreitä ja puhelimia.

App Builder löytyy M365 Copilotin sisältä (käyttäjällä tulee olla M365 Copilot lisenssi). Se on osa Frontier-ohjelmaa, joka aktivoidaan erikseen M365 hallintakeskuksesta.

Power Platformin Generative pages -toiminnallisuuteen verrattuna toiminnallisuus on huomattavasti helpommin saatavilla. App Builder on tarkoitettu kaikille. Generative pages on suunnattu Power Platform -tekijöille.

Aloitetaan seuraavalla promptilla.

I need an app for managing company assets using two SharePoint lists as data sources:

- Assets — contains all asset details
- Brands — contains brand names used in the Assets list

Each asset should include the following fields:

- Name
- Brand (lookup from the Brands list)
- Model
- Image
- Location (options: Helsinki, Porto, Barcelona, Home)
- Price (in euros, excluding VAT)
- Assigned User (person-type column)
- Status (options: In use, Available, Broken — use color coding for visual clarity)

The app should:

- Display assets as visually appealing cards
- Allow users to create, edit, and delete assets
- Use #003015 as the brand's main color and #E8EFEA as a light green accent

The UI should be clean and modern, optimized for usability and quick access to asset details.

App Builder aloittaa työn. Tällä kertaa se jakaa tehtävän 15 osaan.

Käyttökokemus on yksinkertaisempi kuin generative pagesissa. App Builder ei näytä generoimaansa koodia, kuten ei myöskään tarkempaa tietoa siitä mitä agentti on ajatellut työtä tehdessään. Mutta kyllä sieltä sovellus lopulta ulos tulee.

App Builder kertoo, minne se loi tarvittavat SharePoint-listat. Tämä onkin merkittävä ero verratuna generative pagesiin.

  • Generative pages: Tietovarastona aina Dataverse. Tietomalli (tarvittavat taulut ja niiden sarakkeet) luodaan itse ennen kuin sovellusta aletaan tekemään.
  • App Builder: Tietovarastona aina SharePoint-lista(t). App Builder luo aina uuden SharePoint-sivuston ja sinne tarvittavat listat sarakkeineen.

Käydäänpä kurkkaamassa mitä App Builder on tehnyt. Brändeille on oma lista, aivan kuten pyysimme.

Myös asseteille on oma listansa.

Muutama huomionarvoinen havainto.

  • Assetilta viitataan brandiin käyttäen brandId-sarakkeen arvoa. Brändien nimiä voi siis muokata ilman että ”relaatio” hajoaa. Kielimalli osasi tehdä oman halpis-relaation kahden listan välille.
  • Assetin kuva on pelkkä tekstikenttä. Ei SharePointin kuva- tai hyperlink-kenttä. Eli tämä on käyttökelvoton.
  • Assetin haltija on myöskin tekstikenttä. Vaikka nimenomaan pyysin että se olisi SharePointin Person-kenttä.

Luodun sovelluksen muokkaaminen

Avauspromptilla luotu sovellus harvoin toimii kuten toivomme. Onneksi sovellusta voi jatkojalostaa promptaamalla lisää!

Pyydetään App Builderia päivittämään tuotteen kuva -kenttä oikeaan tietotyyppiin (kuva).

Kaikki ok! Sovellus päivitetty ja nyt voidaan tallentaa myös kuvat.

Paitsi ettemme voi. Uuden assetin tallennus menee virheeseen.

Syykin on selvä. Suurista puheista huolimatta App Builder ei muuttanut kuvasarakkeen tietotyyppiä.

Sovelluksen se kyllä muutti siten että se olettaa SharePointista löytyvän tämän uuden kentän.

Pyydetään App Builderia seuraavaksi luomaan uusi kuva-tyyppinen sarake (Product Image) ja käyttämään sitä. Sama lopputulos. App Builder muuttaa kyllä sovelluksen ja sen lomakkeen, mutta mikään ei toimi koska sovellus ja sen takana oleva tietomalli eivät enää vastaa toisiaan.

Eikä auta vaikka tarvittavan sarakkeen luo listalle itse.

HUOM: Tällä kertaa ongelma on todennäköisesti halutun kentän tietotyyppi. Perus tekstikenttiä pystyy itse lisäämään listoille ja ohjeistaman App Builderia käyttämään niitä.

Generative pages on tässä suhteessa silti vakaampi. Tosin sen tehtävä on helpompi, siinä sovelluksen ja tietomallin tekeminen on pidetty toisistaan erillään.

Testataan vielä perustoiminnallisuudet. Assetin muokkaus puuttuu kokonaan, eikä uuden assetin lisääminen toimi. Muutaman pyynnön jälkeen sovellus kuitenkin oikeasti toimii ja näyttää seuraavalta.

Uuden assetin lisäys.

Vastaavilla prompteilla tehty generatives pages taas näyttää seuraavalta.

Sovellusten ulkoasuja ei kannata liikaa tuijottaa. Jokainen yritys tuottaa molemmilla työkaluilla erinäköisen sovelluksen. Sitä sitten promptaamalla ohjataan haluttuun suuntaan.

Sovelluksen jakaminen, käyttö ja muokkaaminen

Valmiin sovelluksen voi jakaa kollegalle. Jakaminen antaa käyttöoikeuden myös sovelluksen takana olevaan SharePoint-sivustoon.

Valitaan käyttäjä ja lähtetään hänelle linkki.

Huomaa että myös kollegalla tulee olla M365 Copilot lisenssi. Jaettu linkki nimittäin avaa sovelluksen M365 Copilotin sisällä.

Kollegan käyttäessä sovellusta toimenpiteet tehdään hänen yhteydellään, juuri kuten pitääkin.

Sovellukseni löytyvät kätevästi App Builderin alta, mistä niitä pääse myöhemmin muokkaamaan.

Muokkaamisessa suurimmat erot generative pagesiin ovat

  • generoitua koodia ei näe, sitä ei voi muokata eikä iteraatioiden välisiä eroja voi vertailla
  • et voi palata edelliseen vaiheeseen (peruuttaa edellistä promptia)

Missä ne sovellukset oikeasti ovat?

Minne App Builderilla luodut sovellukset tallentuvat?

Ensimmäistä sovellusta tehdessä tenanttiin luodaan automaattisesti uusi Power Platform -ympäristö (Microsoft 365 Copilot App).

Kaikki App Builderilla tehdyt sovellukset tallentuvat sinne.

Sovelluksen lisätiedoista löytyy normaaliin tapaan suora linkki sovellukseen.

Linkkiä käyttämällä App Builderilla luotu sovellus avautuu tuttuun tapaan Power Appsina. Teknisesti sovellusta voi ajaa ilman M365 Copilot -lisenssiä. Eiköhän pian selviä mitä lisenssiä App Builderilla tehtyjen sovellusten käyttö oikeasti vaatii.

Turvallinen veikkaus on, että App Builderilla tehdyt sovellukset ovat käytännössä Power Apps code appseja.

Täältä löytyy jopa versiohistoria, josta voi myös palata eri versiohin.

Yhteenveto

Mitä App Builderista jäi nopean koeajon jälkeen käteen?

Vielä hieman raakile, mutta niin oli myös generative pages 3 kuukautta sitten.

Maailma on täynnä SharePoint-listan päälle canvas Power Appsilla (default ympäristöön) tehtyjä yksinkertaisia sovelluksia. App Builder on niiden seuraava sukupolvi. Generative pages tarjoaa samankaltaisen työkalun, mutta se on nyt (ja veikkaan sen olevan myös jatkossa) pidemmälle viety:

  • Tietovarastona Dataverse
  • Undo / redo prompteissa
  • Tuotetun koodin näkee ja sitä voi muokata
  • Sovelluksen voi tehdä kehitysympäristössä ja viedä sieltä ratkaisupaketin avulla testin kautta tuotantoon
  • jne

Myös kaikenlaista pientä hässäkkää on alussa luvassa.

Mitäs jos käyttäjällä ei ole oikeuksia luoda uusia SharePoint sivustoja? Tyssääkö leikki siihen? Kuka siivoaa kaikki App Builderin luomat sivustot? Jokainen kokeilu generoi uuden sivuston, joka ei poistu automaattisesti kun sovellus poistetaan.

Olisi mahtavaa jos sovelluksen voisi rakentaa olemassaolevan SharePoint-listan päälle. Näin jo kerätyn tiedon päälle saisi tehtyä suoraan sen puuttuvan sovelluksen.