Microsoft julkaisi (Power Platform näkökulmasta) yhden vuoden mielenkiintoisimmista ominaisuuksista sopivasti suomalaisten ollessa lomalla. Nimittäin sovelluksen rakentamisen tyhjästä luonnollista kieltä käyttäen. Tästä tuli mielestäni samantien yksi Power Platformin hyödyllisimmistä AI-ominaisuuksista.
Käytännössä kyseessä on paljon puhutun vibe-koodauksen tuonti Power Platform ympäristöön. Vibe-koodauksessa käyttäjä ei kirjoita perinteiseen tapaan ohjelmakoodia. Käyttäjä vain kertoo kielimallille mitä hän haluaa ja kielimalli kirjoittaa tämän pohjalta tarvittavan ohjelmakoodin.
Mutta tämä kaikki aukeaa parhaiten esimerkin avulla.
Esimerkki – Interaktiivinen Gantt-kaavio
Mikä on minulta eniten kysytty ominaisuus, jota ei canvas Power Appsilla voi toteuttaa (ilman PCF-komponenttien käyttöä)? Käyttöliittymässä esitettävien elementtien muokkaaminen raahaamalla (drag and drop). Tehdäänkin tällä kertaa sovellus, jolla voi aikatauluttaa työkohteilla (Work Order) tehtäviä vierailuja (Work Appointment). Siten että vierailut esitetään visuaalisesti Gantt-kaaviossa. Vierailuja voi aikatauluttaa uudelleen raahamalla niitä aikajanalla paikasta toiseen. Jotain mikä tähän asti on ollut hankalaa toteuttaa alustan omilla työkaluilla.
Rajoitukset
Esimerkissä hyödynnettävä ominaisuus (generative page) on vielä preview-vaiheessa. Näin ollen siihen liittyy erilaisia rajoituksia:
- Mahdollista ainoastaan US alueelle luoduissa ympäristöissä (kuten kaikki uudet AI ominaisuudet).
- Tietolähteenä voi käyttää ainoastaan Dataverseä. Sovellus voi käyttää enintään kuutta taulua. Käytettävät taulut tulee kertoa ensimmäisessä kehoitteessa.
- Luotua koodia ei voi muokata itse.
- Ominaisuudella voi rakentaa ainoastaan sovelluksia, joita käytetään osana model-driven appsia. Samaan tapaan kuin mukautettuja sivuja (custom page).
Tietomalli
Aloitetaan luomalla Dataverseen kaksi taulua.
- Työkohde (Work Order)
- Nimi
- Työkohteelle tehtävä vierailu (Work Appointment)
- Nimi
- Alkuaika
- Loppuaika
- Työkohde, johon vierailu liittyy

Sovelluksen tekeminen
Luodaan model-driven app, jolla voidaan perinteiseen tapaan muokata työkohteita sekä niihin liittyviä vierailuja.

Siirrytään muokkaamaan sovellusta. Valitaan sivut (pages) -osiosta Uusi (New) ja sen alta löytyvä kuvaile sivu (Describe a page).

Aluksi kerromme millaisen sovelluksen haluamme rakentaa. Kehoite voi olla peräti 50000 merkkiä pitkä. Voit pyrkiä kuvaamaan kaiken haluamasi tarkasti jo ensimmäiseen kehoitteeseen. Tai voit tehdä kuten minä, kuvaat ensin ylätasolla mitä haluat ja alat tämän jälkeen sitten pikkuhiljaa lisäämään ominaisuuksia.

Esimerkissä käytämme seuraavaa kehoitetta:
Make page for user to schedule work appointments. I like to have Gantt style view showing work appointments. by default view should show appointments for next 7 days. User can easily add new appointments and edit existing ones (clicking appointment opens the edit form). But user should also be able to drag appointments on gantt view. whole appointment to new location or just drag from the beginning or the end of appointment.
Lisätään kehoitteeseen vielä käytettävät taulut (Add data -> Add table).

Listalta voi valita ainoastaan sovellukseen lisättyjä tauluja.

Voit lisätä tauluja myös suoraan kehoitteessa aloittamalla / merkillä ja jatkamalla taulun nimellä.

Samassa yhteydessä voit lisätä kehoitteeseen myös kuvia. Esimerkiksi hahmotelman käyttöliittymästä. Alla olevasta videosta näet miten tekoäly ensin analysoi mitä siltä pyydettiin ja tämän jälkeen se alkaa kirjoittamaan koodia.
Hypnoottista.
Lopputulos ei ole vielä aivan julkaisukelpoinen. Unohdin mainita että vierailut pitäisi näyttää kaaviossa per työkohde.

Ei hätää. Voin jatkaa sovelluksen työstämistä yhdessä tekoälyn kanssa. Pyydetään se lisäämään työkohteet mukaan visualisointiin.

Ja näin työ jatkuu. Pienissä (tai suurissa) erissä. Jokaisen korjauspyynnön jälkeen tekoäly kirjoittaa koko sovelluksen uudelleen. Välillä sitä ei meinaa millään saada toteuttamaan haluamiaan toimintoja. Esimerkiksi vierailun luonti- ja muokkauslomake oli sille aivan ylivoimaista. Syyksi paljastui tapahtuman alku- ja loppuajan määrittelyyn tarvittava kontrolli. Se meni niiden kanssa solmuun. Ratkaisu oli jättää aikojen muokkaus lomakkeelta kokonaan pois. Aikoja muokataan raahaamalla tehtäviä uuteen paikkaan. Uudet tehtävät luodaan aina näkymän ensimmäiselle päivälle.
Tein sovellukseeni (tai en minä mitään tehnyt, ainoastaan pyysin tekoälyä tekemään) seuraavat muutokset:
- Näytetään työnumeroista myös ne, joilla ei ole vierailuja
- Työnumeroita voi suodattaa vapaasti haulla
- Vierailuja pystyy raahaamaan myös työnumerolta toiselle
- Raahaamisen aikana näytetään käyttäjälle tämänhetkinen alku- ja loppuaika
- Alku- ja loppuajat ovat aina 15min tarkkuudella
- Näkymää voi selata eteen- ja taaksepäin
- Käyttäjä voi valita tarkasteleeko 7 vai 30 päivän vierailuja
- Ulkoasuviilauksia
Lopuksi vielä tuttu julkaisu ja tältä se sitten lopulta näyttää:
Yhteenveto
Vibe-ohjelmoinnin ympärillä on tällä hetkellä aivan valtava hype. Joidenkin mielestä koodareita ei enää kohta tarvita. Toisten mielestä vibe-koodaaminen tuottaa niin hirveää kuraa, ettei kenekään tulisi koskea siihen pitkällä tikullakaan.
Totuus lienee siellä siellä välimaastossa. Loppuun vielä muutama oma ajatus. Nimenomaan tästä Power Platformin toteutuksesta.
- Esimerkkimme tapaisen pienen sovelluksen tekeminen on näppärää. Lopputulos on toimiva ja voisin hyvin käyttää sitä osana isompaa kokonaisuutta muokatun sivun (custom page) tavoin.
- Käytännössä moni Canvas Power Apps on toiminnallisuuksiltaan huomattavasti laajempi. Sillä tehdään useita eri asioita, joiden välillä voi olla monimukaisia riippuvuusuhteita. Myös käyttöliittymälogiikka voi olla hyvin monimutkaista. Aika näyttää miten sellaisten rakentaminen sujuu nyt esitellyllä tavalla.
- Nykyiset rajoitukset rajaavat käyttöä aika lailla (esim. max 6 taulua).
- Power Platform (Dataverse) + vibe-koodaus on mainio yhdistelmä. Alusta tuo mukanaan autentikoinnin ja Dataversen käyttöoikeusroolit varmistavata ettei vibe-koodauksella voi vaikuttaa siihen mitä tietoja käyttäjät näkevät, mitä voivat lisätä, muokata jne.
- Julkaistua sovellusta pääsee muokkaamaan (=pyytää tekoälyä muokkaamaan sitä). Voit palata taaksepäin tiettyyn versioon sovelluksesta (=tilanteeseen jonkun tietyn kehoitteen jälkeen).
- Testaamani versio käyttää GPT-4.1 kielimallia. Mutta aivan pian pääsee hyödyntämään GPT-5:ttä, jolloin homma toimii taas pykälää paremmin ja nopeammin.
On tämä jo nyt aivan huikea peli. Tekisinkö sillä kokonaisen monimutkaisen liiketoimintakriittisen järjestelmän? En todellakaan. Mutta moneen hieman kevyempään käyttökohteeseen tulen sitä varmasti käyttämään.
Canvas Power Appsin lupaus oli aikanaan seuraava
- sovellusten tekeminen tulee mahdolliseksi yhä useammalle
- voidaan tehdä sovelluksia käyttötarkoituksiin, joihin se ei ollut aiemmin taloudellisesti järkevää (jopa kertakäyttöisiä sovelluksia)
Lupaukset ovat edelleen samat. Nyt ne vain toteutuvat toiseen potenssiin.