Muutama viikko sitten Microsoft julkaisi mahdollisuuden rakentaa ns hallittuja sovelluksia (Managed Apps) Microsoft Copilot Coworkin sisällä. Tämä onnistuu hyödyntämällä uutta app-skilliä. Aiheesta löytyy oma juttunsa, kannattaa lukea. Lähiaikoina sama kyvykkyys on tulossa myös Copilot Studioon ja aikanaan Copilot Codeen.

Olen tästä vähintäänkin innoissani. Nyt meillä on tapa vibe-ohjelmoida sovelluksia, joissa on Entra ID -tunnistautuminen aina käytössä (Microsoftin tuottamana) ja jotka käyttävät Power Platformin yhdistimiä (connectors) päästäkseen käsiksi eri tietolähteisiin. Eli organisaatio voi hallita, mihin nämä vibe-ohjelmoidut sovellukset pääsevät käsiksi.

Hallituissa sovelluksissa on sisäänrakennettu Git-pohjainen versionhallinta. Oletusarvoisesti lähdekoodi tallennetaan Microsoftin hallinnoimaan repositorioon (voit käyttää myös omaa). Lisäksi IT saa sovelluksiin keskitetyn näkyvyyden ja hallintamahdollisuudet Microsoft 365 -hallintakeskuksessa.

Kuulostaa aika kelvolliselta.

Mutta näitä hallittuja sovelluksia voi tehdä myös Copilot Coworkin ja Copilot Studion ulkopuolella! Katsotaanpa seuraavaksi miten se onnistuu.

Esimerkki – Interaktiivinen Gantt-kaavio

Toteutetaan samanlainen sovellus interaktiivisella Gantt-kaaviolla kuin aikaisemmassa jutussa Copilot Coworkilla. Mutta tällä kertaa tehdään se omilla työkaluilla. Vaihtoehtoina on esimerkiksi

  • GitHub Copilot CLI
  • Claude Code
  • GitHub Copilot -sovellus
  • Visual Studio Code yhdessä GitHub Copilotin tai Claude Coden kanssa

Kaikissa vaihtoehdoissa sinulla tulee olla joku tilaus (GitHub Copilot / Claude Code), joka mahdollistaa kielimallien käytön. Mikäli nämä työkalut eivät ole sinulle vielä tuttuja, suosittelen tutustumaan niihin viimeistään nyt. Ne ovat jo nyt keskeinen osa Power Platform -kehitystöitä ja niiden paino tulee jatkuvasti vain kasvamaan.

Valitaan tällä kertaa työkaluksi GitHub Copilot -sovellus. Hallittujen sovellusten tekemiseksi meillä täytyy olla asennettuna myös

Asennetut pluginit löytyvät GitHub Copilot -sovelluksesta Customize -osion alta. Minulla se onkin jo asennettuna.

Seuraavaksi luomme uuden keskustelun (chat). Uusi hallittu sovellus luodaan /create-app -skillillä. Käytetään samaa kehoitetta ja kielimallia (Sonnet 5), kuin aiemmin Coworkin kanssa samaa sovellusta tehdessä.

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.

GitHub Copilot aloittaa tarkistamalla, että kaikki tarvittava on asennettuna (on). Pian sillä on suunnitelma valmiina.

Edetään samoja latuja kuin Coworkin kanssa. Pyydetään Copilotia tekemään toteutus, joka ei vielä tallenna tietoja minnekään.

Copilot ryhtyy töihin. Näemme että se alustaa sovelluksen automaattisesti minun omaan Power Platform kehitysympäristööni.

Mistä näen (paikallisesti) kaiken tehdyn koodin (GitHub Copilot -sovellusta käytettäessä)? .copilot kansion alta chatti-kohtaisista kansioista.

Aivan muutaman minuutin jälkeen ensimmäinen versio on valmis.

Voimme testata sovellusta paikallisesti selaimessa.

Sovellus näkyy jo nyt (minulle) https://managedapps.cloud.microsoft/ -sivulla. Sitä ei voi käynnistää eikä jakaa, sillä sovellusta ei ole vielä tuotu (deploy) ympäristöön.

Pieniä korjauksia

Sovellus ei kuitenkaan ole aivan mitä haluamme (se on lähtökohtaisesti kuitenkin lähempänä haluamaani kuin Coworkilla luomani). Pyydetään sovellukseen seuraavat muutokset.

Let's make the following changes:
- Appointments should be assigned to an engineer.
- 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.

Tällä kertaa muutoksissa menee peräti 6 minuuttia ja 19 sekuntia! Mutta lopputulosta kannatti odottaa. Kaikki toimii odotetusti.

GitHub Copilot osaa käyttää Playwrightia testaamiseen. Eli se kykenee avamaan sovelluksen selaimessa ja testaamaan sitä myös siten. Huippua!

Tietojen tallennus SharePointiin

Tiedot eivät tallennu mihinkään. Olen tehnyt SharePointiin valmiiksi listat johon tapaamiset, työntekijät ja asiakkaat voi tallentaa. Pyydetään Copilotia muuttamaan lopuksi sovellusta siten että se käyttää näitä listoja sovelluksen tietovarastona.

i created the lists for this app (Appointments, Employees, Customers) on https://forwardforever.sharepoint.com/sites/TimoDevEnv/​‌

Can you now update the app so that it uses those lists as datasources?

GitHub Copilot löytää nopeasti tarvittavan skillsin (microsoft-managed-apps:add-data-source) ja ryhtyy lisäämään tietolähteitä. Minulla on usea yhteys valmiina kyseisessä ympäristössä ja Copilot varmistaa mitä niistä käytetään.

Copilotin kyselemät yhteydet ovat siis nämä täällä:

Toimivuutta testataan jälleen huolella Playwrightin avulla.

Lopputulos on juuri sellainen kuin toivoinkin. Sama sovellus, mutta nyt tiedot tallentuvat SharePoint-listalle.

Sovellus:

Tapaamiset SharePointissa:

Sovelluksen julkaiseminen Copilot Managed Runtimeen

Tähän asti sovellus on majaillut omalla työasemallamme. Sen valmistuttua siirrämme ja julkaisemme sen Microsoft Copilot Managed Runtimeen, jonka jälkeen voimme jakaa sovelluksen muiden käyttäjien käyttöön.

We are ready, could you deploy and publish the app

Siirron yhteydessä GitHub Copilot kysyy millä kommenteilla suoritetaaan commit Git:iin

Kun build / git commit + push / deploy humppa on valmista, sovellus voidaan jakaa halutuille käyttäjille.

Jatkokehitys

Herää tietenkin kysymys, voimmeko muokata näin tehtyjä sovelluksia Coworkilla? Ja/tai toisinpäin?

No se on nopeasti kokeiltu.

Olen tehnyt Coworkilla sovelluksen.

Pyydetään GitHub Copilotia tekemään siihen muutoksia

Hetken miettimisen jälkeen GitHub Copilot haki Managed Apps Gitistä sovelluksen lähdekoodit ja teki niihin tarvittavat muutokset ja vei päivitetyn sovelluksen takaisin.

Lopputulos näyttää tältä. Juuri sitä mitä pyysin.

Yritetään seuraavaksi tehdä Coworkilla muutoksia GitHub Copilotilla tehtyyn sovellukseen. Sovellus ei tee muuta kuin tervehtii kaikkia Timoja.

Sovelluksen esikatselu ei tunnu heräävän, mutta pyydetään Coworkia tekemään muutos siitä huolimatta. Jatkossa sovellus tervehtii kaikkia Lasseja.

Selviää ettei muualla rakennettuja sovelluksia voi muokata Coworkilla. Ainakaan vielä.

Yhteenveto

Uusia uljaita hallittuja sovelluksia voi siis tehdä todella helposti sekä Coworkilla, mutta myös itse valitsemillaan työkaluilla (GitHub Copilot, Claude Code).

Mutta miksi minä olen näistä niin innoissani? Teen päivätyökseni kuitenkin Code Appseja, Model-driven appseja ja (kyllä edelleen myös) Canvas Power Appseja.

Olen innoissani sillä näiden hallittujen sovellusten käyttö on tarvittaessa täysin kulutuspohjaista ja se maksetaan Copilot Crediteillä. Mikäli loppukäyttäjällä on Power Apps Premium -lisenssi, käytetään sitä (eikä käytetä Copilot Credittejä).

Yksi Copilot Credit maksaa 0.01$ ja managed sovelluksen on sanottu kuluttuvan niitä 0.1 kappaletta yhtä API-kutsua kohden. On siis hyvinkin mahdollista että managed appsilla voi vihdoin tehdä koko organisaation käyttöön Dataverseä käyttävän harvakseen käytettävän sovelluksen järkevällä hinnalla. Tätä on odotettu.