Viime viikolla rysähti ja Microsoft julkaisi Copilot Coworkin sisään kyvykkyyden sovellusten tekoon. Samalla ilmestyi ilmoitus Vibe Power Appsia käsittelevälle Microsoftin learn sivulle.

Voimme varmaan pian hyvästellä vibe Power Appsit. Enkä kyllä näe tämän jälkeen oikein tulevaisuutta App Builderillakaan.
Miksi sovellusten luominen Copilot Coworkilla pyyhkii näillä pöytää?
- Generoinnissa käytettävän kielimallin voi valita itse (rajatusta joukosta, mutta on siellä ihan kivoja). Tämä on mahdollista, sillä sovelluksen generointi kuluttaa Copilot Credittejä.
- Sovellus käyttää Power Platformin yhdistimiä (connector). Ei App Builderin / Vibe Power Appsin tapaan rajoituksia tietojen tallennuspaikoille.
- Sovellukset majailevat Power Platform ympäristössä aivan kuten Code Appsit.
- Sovelluksen lähdekoodi on Gitissä
- Muodostuneet sovellukset ovat ns hallittuja sovelluksia (managed apps). Ne löytyvät kaikki osoitteesta https://play.managedapps.cloud.microsoft/ ja niiden hallintaan on omat työkalunsa
Lyhyesti. Näin sovellusten tekeminen on tehokasta ja toimivaa, sekä niitä voidaan hallita organisaatioiden edellyttämällä tavalla.
Jotain huonoa / epäilyttävää?
Näiden sovellusten käyttäminen kuluttaa Copilot Creditejä. Tosin tästä mekanismista ei ole julkaistu juurikaan yksityiskohtia.
Mutta kokeillaan miten näitä tehdään!
Esimerkki – Interaktiivinen Gantt-kaavio
Käytetään samaa esimerkkiä, kuin edellisessä vibe-jutussa. Eli pyydetään Coworkia rakentamaan sovellus, jolla voi aikatauluttaa tapaamisia (work appointment). Käytetään promptina seuraavaa.
Make app 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.
Valitaan käytettäväksi kielimalliksi Claude Sonnet 5.

Cowork ryhtyy töihin. Näemme että se aktivoi App skillin (1). Klikkaamalla muodostettavan sovelluksen nimeä (2), meille aukeaa esikatselunäkymä.

Muutaman minuutin päästä sovelluksen ensimmäinen versio on valmis. Eikä lainkaan huono.
Sovelluksella voi luoda tapaamisia. Kullakin tapaamisella on
- Otsikko
- Luokka
- Päivämäärä
- Alku- ja loppuaika
- Asiakas
- Sijainti
- Kuvaus
Haluamme kuitenkin muutamia muutoksia.
- Tapaamiset voivat olla usean päivän mittaisia.
- Tapaamiseen liittyy aina tekijä.
- Gantt-kaaviossa tulisi näyttää aika sarakkeina ja kullakin rivillä joko tekijä tai asiakas
Pyydetään Coworkia tekemään nämä muutokset.
Let's make the following changes:
- Appointments can span multiple days, so an end date is also required.
- Appointments should be assigned to an engineer.
- In the Gantt view, the columns should represent time, allowing users to see the entire timeline.
Users should be able to choose whether they want to view appointments by day, week, or month.
- The rows should represent either engineers or customers. Users should be able to choose which view they want.

Muutosten teossa menee tovi. Tämän jälkeen sovellus toimii kuten haluamme.
Tein saman esimerkin reilu vuosi sitten generative pagesilla. Silloin toimivan sovelluksen promptaamiseen meni yli tunti. Nyt paremman lopputuloksen sai aikaiseksi vartissa.
Sovellus ei kuitenkaan tallenna vielä tietoja minnekään. Haluan käyttää tietovarastona SharePointia ja pyydän Coworkia kertomaan minulle millaiset listat sovelluksen käyttöön tulee luoda.
I'd like to use SharePoint lists as the data source for appointments, customers, and employees.
Can you propose a data model and recommend the SharePoint lists and columns that I should create?

Cowork antaa tarkat ohjeet millaiset SharePoint listat tulee tehdä.

Coworkilla ei ole oikeuksia luoda SharePointiin näitä listoja, joten tein ne itse. Coworkin antamilla hyvillä ohjeilla.

Seuraavaksi pyydetään Coworkia muuttamaan sovellusta siten, että se käyttää luotuja listoja sovelluksen tietovarastona.
i created the lists you proposed (Appointments, Employees, Customers) on
https://forwardforever.sharepoint.com/sites/TimoDevEnv/
Can you now update the app so that it uses those lists as datasources?
Cowork lähtee suunnittelemaan muutosta. Cowork pyytää luvan luoda SharePoint yhteys (connection). Yhteyden avulla sovellus lukee tietoja SharePointista ja kirjoittaa niitä takaisin.

Cowork suunnittelee ja koodaa jälleen aikansa, jonka jälkeen työkalu näyttää tiedot SharePoint-listalta. Vaikuttavaa!

Tosin juhlat olivat ennenaikaiset. Sovellusta testatessa huomaan, että
- Tapahtumia ei voi enää raahata henkilöltä toiselle.
- Tapaamisten raahaamisen jälkeen uudet ajat tallentuvat, mutta sovellus näyttää palkin alkuperäisen ajankohdan kohdalla.
- Lomakkeella kummittelee vanhat esimerkkityöntekijät.
Pyydetään Coworkia korjaamaan nämä. Pienen odottelun jälkeen bugit on korjattu. Olen tyytyväinen lopputulokseen.
Mutta mitä tämän rakentaminen nyt maksoi? Kirjoittamalla /cost se selviää. ~1600 Copilot-creditiä eli 16 euroa.

Julkaistaan sovellus (publish).

Ja lopuksi jaetaan kollegoiden käyttöön

Käyttäjän avatessa sovelluksen ensimmäistä kertaa, kysytään häneltä lupa SharePoint-yhdistimen käyttöön. Aivan kuten Canvas Power Appsien kanssa.

Ja ei kuin kovaa käyttöä!

Navigoimalla osoitteeseen https://managedapps.cloud.microsoft/ näet kaikki tekemäsi ja sinulle jaetut sovellukset.

Tehtyjä sovelluksia voi hallita M365 Admin centeristä. Mutta siitä lisää joskus myöhemmin.
Yhteenveto
App skills toimii uskomattoman hyvin, vaikka kyseessä on aivan uusi ominaisuus. Yhtenä syynä on varmasti se, että sen käytöstä maksetaan token-pohjaisesti, jolloin se voi käyttää tehokkaita kielimalleja. Lasku kun ei lankea Microsoftille vaan käyttäjän organisaatolle.
App Builderin ja Vibe Power Appsin ei ole mitään mahdollisuutta kilpailla tämän kanssa.
Kaiken lisäksi syntyneiden sovellusten takana olevat hallintaominaisuudet ovat jo nyt aivan kelvolliset. Microsoft on rakentamassa vauhdilla varsin mainiota isoillekin organisaatioille kelpaavaa vibe-koodaus alustaa kansalaiskehittäjille. Rinnalla on sitten edelleen Power Apps Code appsit, Model-driven appsit ja Generative pagesit meille muille.
Oma kokemukseni mukaan monilla vanhoilla projekteilla tämä työkalu ei ole ollut yhtä helppo hallita.
TykkääTykkää