Andrew Brookins
On december 23, 2021 by adminI 2017 frågade jag: ”Kan man skriva kod på en iPad?” År 2019 är svaret i princip detsamma: inte riktigt. Men det börjar bli intressant.
Uppdatering: Om du kodar på en iPad kan du kolla in min detaljerade titt på hur du kan synkronisera iOS-utklippbordet med en fjärrmaskin via SSH. Jag undersökte också hur man använder webbläsarutvecklingsverktyg på iPadOS med hjälp av appen Inspect i ett nyligen publicerat inlägg.
”Programmering” på iOS: appen Genvägar
Ipad saknar fortfarande möjligheten att göra någon form av inbyggd programmering. Det vill säga, du kommer inte att hitta en hemlig dörr som leder till ett UNIX-skal där du kan installera homebrew och en C-kompilator. Om bara!
Du kan lugnt ignorera Swift Playgrounds, om inte ditt mål är att lära dig Swift. Playgrounds är inte en allmän programmeringsmiljö; den är inriktad på barn som lär sig koda.
Den närmaste programmerbarhet som finns som en inbyggd funktion i iOS är appen Shortcuts, som kan automatisera små uppgifter och koppla ihop appar.
Detta är den omgjorda Apple-versionen av Workflow, en populär app som gjorde mer eller mindre samma sak. Du kan använda Shortcuts för att sätta ihop en serie åtgärder som du normalt skulle kunna utföra, som att slå på Do Not Disturb, spela ett visst album (jag rekommenderar Brute Force av The Algorithm) och öppna en SSH-klientapp eller en textredigerare.
Shortcuts är förmodligen användbar för någon, men jag använder den inte så mycket och den är för begränsad för att jag ska kunna kalla den för programmering!
Redigering i infödda iOS-textredigerare
Det är dock inte helt kört. För det första, om du medger att iPad Pro är en potentiell tunn klient som kan paras ihop med en server, så har du alternativ. Det finns bra SSH-appar tillgängliga, till exempel Blink. Men du behöver inte nödvändigtvis ansluta direkt till servern för att göra allting. Om du hellre redigerar nativt på iPad och konstruerar ett system av remskivor som lyfter upp din kod till en molnserver, kanske med ett system för kontinuerlig integration som GitLabs, är det också möjligt. Vi kommer att utforska båda alternativen.
Hej, jag har skrivit en bok!
The Temple of Django Database Performance är min nya bok som blandar ihop bordsspel, databaser och Django. Utforska ett förstört tempel medan du lär dig avancerade knep för Django-databasprestanda!
Du kan förmodligen inte köra din kod på iOS om det inte är Python
Det finns ett visst svängrum kring att köra din kod direkt på iPad om du är en Python-utvecklare. Appen Pythonista har med tiden vuxit från en Python-texteditor med fokus på iOS-automatisering till en hackbar Python-utvecklingsmiljö som levereras med större paket som NumPy, har ett bash-liknande skal som är implementerat i Python och har stöd för plugins.
Andra än Python har jag inte funnit några generellt användbara tolk- eller kompilatorappar på iOS.
Uppdatering: Läsare hänvisade mig till Continuous, ett IDE för C# och F# för iOS, och Rescript, ett IDE för JavaScript/node.js för iOS. Dessa ser båda lovande ut och kan vara likvärdiga med Pythonista, men jag har inte använt dem. Det finns också Replete, en iOS-app som ger dig en ClojureScript REPL (read-eval-print loop); även om den är rolig verkar den mindre funktionsrik än de andra.
Nativa iOS-redigerare blir bättre
Det finns alltmer anständiga textredigerare som körs utan tolk- eller kompilatorkomponenten. Appar som GoCoEdit och Textastic erbjuder redigeringsupplevelser som har börjat få några av funktionerna hos skrivbordsredigerare som går utöver det grundläggande – t.ex. fuzzy-finding-filer.
Dessa redaktörer börjar samarbeta med varandra och med den kraftfulla Git-appen Working Copy och Apples tillhandahållna Files-app för att ge intressanta effekter. Working Copy kan kolla in ett Git-arkiv och göra det tillgängligt för redigering i appar som GoCoEdit. Ändringar som görs i editorn reflekteras automatiskt tillbaka i Working Copy, där du sedan kan lägga in dem.
Funktioner som saknas i iOS-textredigerare
Ingen av dessa redaktörer ger dock i sig själva en upplevelse som lämpar sig för verklig programvaruutveckling. Vi talar om Dreamweaver, inte Emacs.
En del som för närvarande saknas är projektsökning, det vill säga, med en katalog eller en uppsättning kataloger kan användaren söka efter text i alla filer i den. Om du använder GoCoEdit eller iVim kan du få en approximation av detta genom att använda Working Copys fantastiska sökverktyg, som ger denna funktion, för att hitta filer och sedan välja t.ex. ”öppna i GoCoEdit” från delningsmenyn. Textastic erbjuder inte denna funktion av någon anledning. Hur som helst, det går att använda i en nödsituation, men du kommer förmodligen inte att uppnå det eftertraktade ”flödet”
Sidnotis om iVim: det har blivit bättre. Du kan ha en .vimrc
fil och ladda ner plugins till appens filsystem. Förmodligen fungerar plugins så länge de är skrivna i Vimscript. Observera också att det är Vim 7, så ingen async.
När du arbetar från en iOS-texteditor ska du inte förvänta dig att det typiska mönstret för utveckling av webbapplikationer ska gälla. Om du inte använder Pythonista finns det ingen server som kör din kod på iPad, så du behöver något lim för att få din redigerade fil att överföras någonstans som faktiskt kör kod, som en server eller en serverlös plattform. Det finns många sätt att åstadkomma detta under 2019, eventuellt med någon användning av Pythonista, Zapier, IFTTT och/eller ett Siri-röstkommando i Genvägar. Om kodning på en iPad är din nya hobby kan du hänge dig åt alla dina värsta vanor med uppmärksamhetsstörningar när du utforskar det här ämnet.
Ingen av dessa redaktörer erbjuder heller några linters eller kodformatörer. Utformningen av iOS tyder på att för att få linters och formatörer som är externa till en redaktörsapp att fungera skulle det förmodligen krävas en separat app med stöd för linting och formatering av meddelanden med text som indata. I annat fall måste redaktören tillhandahålla det binära formatet, t.ex. gofmt
. För verktyg som är skrivna i tolkade språk antar jag att redaktören skulle behöva paketera hela programmeringsspråket eller vad Pythonista nu gör.
The Message-Passing Nature of iOS is Pretty Cool
Desto mer du använder iOS för att göra något som inte är trivialt, desto mer börjar du känna av dess meddelandepassande karaktär. Istället för att programmen interagerar med varandra och med operativsystemet genom filer och systemanrop skickar och tar emot meddelanden mellan varandra och operativsystemet.
Så hittar du dina filer i appen Filer, men det är inte bara en katalog med filer. Det är mer som en enda plats för att skicka och ta emot meddelanden om filer i alla appar på din iPad, inklusive iCloud Drive.
Appar som gör något med filer har lagt till mer avancerade funktioner för att dra nytta av dessa nya filrelaterade meddelanden som andra appar har stöd för, så många textredigeringsappar kan nu göra saker som att öppna en katalog med filer som exponerats av en annan app (år 2019 är det ”avancerat” för iOS). Kataloger som öppnas på detta sätt stannar vanligtvis i något som ett sidofält i appen och fortsätter att vara tillgängliga som om de vore lokala för appen.
Till slut börjar detta kännas ganska coolt och naturligt; om du går tillbaka till en stationär dator kan du förvänta dig en konsekvent ”dela”-knapp som inte finns. Om det bara fanns en professionell textredigerare tillgänglig på iOS – och kompilatorer, tolkar, webbservrar osv.
Få mitt nyhetsbrev.
Du kommer att få ett e-postmeddelande då och då när jag är tillräckligt entusiastisk över en teknik för att skriva om den.
Ansluta till en riktig dator med SSH
Om du använder Blink eller en annan SSH-app för att ansluta till en server som kan exekvera godtycklig kod och köra Vim eller Emacs därifrån kan det typiska mönstret med webbapplikationer som är skrivna i dynamiska språk, dvs. att redigera en fil, vänta på att appservern laddar in den redigerade filen på nytt och sedan uppdatera en webbsida, fortfarande fungera.
Du uppdaterar förstås en webbläsare på iOS. Jag föreslår iCab på grund av dess omfattande anpassningsmöjligheter, inklusive de bästa modifierbara tangentbordsgenvägar som jag har sett på iOS.
Var ska du köra din server 2019?
För personer som behöver kraften och flexibiliteten hos en fjärrserver och en riktig redigerare som Vim finns det ännu fler alternativ än tidigare.
Digital Ocean är ett bra val för att komma igång snabbt. Webbplatsen har bra UI/UX och support ingår.
Men Googles åtagande att använda 100 % förnybar energi gör Google Cloud Platform till ett attraktivt val om du inte behöver support och vill anstränga dig lite mer. Den ”alltid kostnadsfria” nivån av GCP inkluderar en f1-micro-instans, som skulle kunna fungera som din VM för utveckling, beroende på dina behov.
Vad som också fungerar bra är en gammal Mac som du kan konfigurera som server, eftersom du då kan synkronisera filer mellan servern och din iPad med hjälp av iCloud Drive, eller använda osascript
för att skicka textmeddelanden till dig själv som djuplänkar till iOS-appar. Världen är ditt ostron vid den tidpunkten. Apple har återupplivat Mac Mini, så det är ett livskraftigt hemserver/skrivbordsdatorpar för iPad.
Att nå din utvecklingswebbserver från en iOS-webbläsare
För några år sedan år om du utvecklade en webbapplikation på en fjärrserver kunde du ha varit tvungen att köra applikationens utvecklingsserver på en port som var allmänt tillgänglig. Nu finns det en app för SSH-tunnling som heter – vänta på det! – SSH Tunnel.
För att nå din applikationsserver (t.ex. Djangos utvecklingsserver) etablerar du först en tunnel till servern (datorn) på vilken applikationsservern körs med SSH Tunnel. Du vill definiera ett annat värdnamn än ”localhost” i /etc/hosts
på servern som pekar mot 127.0.0.0.1. Följ sedan instruktionerna på SSH Tunnels webbplats för att ställa in rätt proxyinställningar på den iOS-nätverksanslutning du använder.
När du har utfört blodoffret kan du skriva in det värdnamn du har angett, t.ex. old-faithful
och den port som din applikationsserver körs på i din iOS-webbläsare, t.ex. http://old-faithful:4000
för att ladda applikationen.
Browser Dev Tools, Where Art Thou?
När du behöver felsöka webbapplikationen finns det nu en app för utvecklingsverktyg som heter Inspect. Den fungerar ganska bra, även om den saknar den robusta JavaScript-debuggningsmiljön som du får i en stationär webbläsare. Ändå har Inspect, förutom en JS-debugger, det mesta du behöver: CSS/HTML-inspektion och en JS-konsol, så du kan åtminstone göra console.log
felsökning.
Misslyckandet med en app för utvecklingsverktyg som Inspect var det främsta hindret för utveckling av webbapplikationer på iPad före 2018. Med bara dessa verktyg kan du utveckla webbapplikationer från iPad. Kommer det att bli bra? Jag vet inte. Förmodligen inte.
So There You Have It
Under 2019 är iPad och iOS i princip samma som de var 2017, när det gäller programmering. Det som är annorlunda är det växande antalet iOS-apputvecklare som vänder sig till personer som vill skriva kod på iOS.
Med tanke på att iOS släpptes för 12 år sedan och att det är först nu som textredigerare liknande Dreamweaver finns tillgängliga, med få sätt att köra kod utöver ”lära sig att koda”-appar, föreslår jag att du kommer att kunna koda på en iPad år 2037.
Lämna ett svar