Idrottsapen Slutrapport för projektet Idrottsappen. Projekttitel: Idrottsappen Uppdragstagaren: Sandklef GNU Labs, 710413-5137 1. Inledning Under samtal med olika aktiva personer inom olika idrotter framkom ett behov av stöd för individuell analys och återkoppling under och efter träningar. Efter diskussion med dessa personer togs en skiss för en app och motsvarande server-del fram. Denna ide sökte vi medel till från.se för att kunna implementera en app. 2. Mål och syfte Att ta fram en lösning där vi kan ge stöd åt tränare så att dessa kan ge bättre feedback till sina elever/spelare. Lösningen skall också vara möjlig att använda för att motverka skador på tidigt stadie. Lösningen skall inte medföra stor kostnad för en förening. 3. Projektbeskrivning Projektmedlemmar har varit Henrik Sandklef (projektledare, Android-appen) och Jon Kristensen (web, server). Första delen av projektet gick ut på att specificera krav på lösningen. När väl dessa var på plats påbörjades en implementation. Vi har försökt att ta fram prototyper så tidigt som möjligt för att kunna testa och förändra snabbt. Under projektets gång har studenter från Institutionen för tillämpad IT på GU/CTH bidragit med analyser och tagit fram ett förslag på hur en app skulle kunna implementeras. Projektet har bedrivits genom en agil utvecklingsprocess samt genom löpande tillämpning av lean-principer. Genom att bygga användbar funktionalitet i korta iterationer har vi snabbt kunnat testa våra antaganden och få snabb feedback på vårt arbete. Tekniska stöd under utvecklingen som vi har använt oss av: curl för att verifiera API:er 1
Git (för att hantera kod) GitHub (för att hantera förslag, buggar samt andra diskussioner) samt telefon och möten för att diskutera 4. Leverabler Server Web-frontend Androidapp 5. Resultat Vi har tagit fram de delar som ingick i avtalet med.se. Detta inkluderar: Server Web-frontend Android-app Android-appen används under träningstillfällen och fungerar utan en Internetanslutning (i exempelvis sporthallar där nätverk inte finns tillgängliga). Android-appen kan göra följande: Spela in spelare/utövare som gör en övning Spela in instruktionsfilm (till en övning) Titta på instruktionsfilm (till en övning) Synkronisera inspelat innehåll till servern, då en WiFi-anslutning blir tillgänglig Webbapplikationen används vid förberedelse- och utvärderingstillfällen. kan idag använda web-frontenden till att: Man Lägga till lag i en förening Lägga till spelare i ett lag Lägga till övningar Analysera och utvärdera individuell teknik (per spelare, lag och/eller övning) 2
Se eventuella rörelsemönster som kan ge upphov till framtida skador Vissa delar från den urpsrungliga kravspecifikation har vi strukit: Dela/sälja material mellan klubbar - under intervjuer framkom inget behov av detta Viss funktionalitet har vi lagt till då vi ansåg att dessa behövdes: Logga viktiga händelser i Android-appen samt möjlighet att se dessa loggar Appen måste fungera offline Vi utvecklade även en marknadswebbplats som finns tillgänglig på http://tränarappen.se/. 6. Utvärdering och analys 6.a. Utvärdering av resultat På grund av besvärliga situationer på projektmedlemmarnas arbetsplats fick vi skjuta fram projektet en del. Resultatet som helhet är vi nöjda med och vi går nu in en fas där vi kommer att använda lösningen i två handbollsklubbar med barn i åldrarna 15-16 respektive 11 år. Server Serverkomponenten är en tjänst som exponerar ett REST-gränssnitt och hanterar data i en SQL-databas. Både Android-appen och webbapplikationen använder detta gränssnitt för att kommunicera med servern. En kompositändpunkt skapades för att underlätta synkronisering, vilken används av Android-appen. Gränssnittet är dokumenterat i projektets README-fil. Serverkomponenten använde ursprungligen libav för videohantering, men på grund av tillkortakommanden relaterade till kamerarotation bytte vi senare till en nyare version av FFmpeg. Två externa öppen källkodskomponenter (utvecklade separat och licensierade under en BSD-licens), auth-service och nejla-common, användes för att underlätta autentisering samt implementationen av komponenten. Gränssnittet är tillgängligt via HTTPS. Serverkomponenten utvecklades i det funktionella programmeringsspråket Haskell. 3
Web-frontend Webbapplikationen utvecklades som en rik single-page app -applikation i ramverket AngularJS. Webbapplikationen kan spela upp HTML5-video direkt i webbläsaren, och kan filtrera filmklipp enligt följande kriterier: Samtliga medlemmar och lag, ej instruktionsfilmer Baserat på medlem (med eller utan filtrering på övningstyp) Baserat på lag (med eller utan filtrering på övningstyp) Även webbapplikationen levereras via HTTPS. Bootstrap används för CSS. Androidapp Vissa av ideerna som fanns i början av projektet beslutade vi att inte gå vidare med då dessa antingen inte bidrog till tränaren och/eller försvårade användandet av appen. Vi har valt att (försöka) göra en design som är enkel att använda under träning. Detta har vi gjort genom att: Så få knapptryck som möjligt Så få alternativ som möjligt Sedan Android Studio blev standardverktyget för utvecklingen har arbetet med att ta fram Android-appar blivit enklare. T ex nämnas Bättre integration med debugger samt med emulator och perifer Androidenhet) Enklare att arbeta med Git Enklare att hantera så kallade dependencies Utvecklingen av synkroniseringen (lokal databas för offline mode gentemot central databas) tog betydligt längre tid än beräknat. Detta gjorde även upp- och nedladdning av filmer. Under arbetet med upp- och nedladdning har vi använt programmet curl som en test API:et. När vi tagit fram ett curl-kommando (med argument) har vi gått vidare med att implementera denna i Java. vad gäller test i Androidmiljö tog vi ett tidigt beslut (mer en test egentligen) att göra mer ad-hoc och inte formellt skriva testfall. Detta beslut baserades på att vi förutsåg att vi skulle komma att ändra mycket i utseende på appen. Detta beslut ångrar vi nu. Automatiska Unit-tester had varit ett stöd under utvecklingen. 4
6.b. Förslag på förbättringar På GitHub finns förslag på förbättringar samt dokumenterade buggar. https://github.com/hesa/tranarappen/issues 7. Framtida arbeten Vi kommer testa lösningen i två handbollsklubbar och genomföra en utvärdering av lösnigen därefter vilket säkerligen kommer att medföra förändringar i lösningen. Då det krävs en del CPU, bredband samt diskplats för att hålla igång tjänsten ser vi ett behov att ta betalt för tjänsten framgent. Licensen (GPLv3) på den producerade koden är dock GPLv3. GPLv3 gör att vem som helst kan vidareutveckla koden samt erbjuda tjänster kring koden. 5