Andrew Brookins
Il Dicembre 23, 2021 da adminNel 2017 ho chiesto: “Puoi scrivere codice su un iPad?” Nel 2019 la risposta è fondamentalmente la stessa: non proprio. Ma le cose si fanno interessanti.
Aggiornamento: se scrivi codice su un iPad, dai un’occhiata al mio sguardo dettagliato ai modi per sincronizzare gli appunti di iOS con una macchina remota su SSH. Ho anche esplorato come utilizzare gli strumenti di sviluppo del browser su iPadOS utilizzando l’app Inspect in un recente post.
“Programmazione” su iOS: l’app Shortcuts
L’iPad manca ancora della capacità di fare qualsiasi programmazione nativa. Cioè, non troverete una porta segreta che conduce a una shell UNIX dove potete installare homebrew e un compilatore C. Se solo!
Potete tranquillamente ignorare Swift Playgrounds, a meno che il vostro obiettivo sia imparare Swift. Playgrounds non è un ambiente di programmazione generale; è orientato verso i bambini che imparano a programmare.
Il più vicino alla programmabilità che esiste come funzione nativa di iOS è l’app Shortcuts, che può automatizzare piccoli compiti e collegare le app insieme.
Questa è la versione ribattezzata Apple di Workflow, un’app popolare che faceva più o meno la stessa cosa. Puoi usare Shortcuts per mettere insieme una serie di azioni che potresti fare normalmente, come attivare Do Not Disturb, riprodurre un album specifico (raccomando Brute Force di The Algorithm), e aprire un’app client SSH o un editor di testo.
Shortcuts è probabilmente utile a qualcuno, ma io non lo uso molto ed è troppo limitato per chiamarlo programmazione!
Modifica in editor di testo nativo iOS
Anche se non tutto è completamente perso. Innanzitutto, se ammettete che l’iPad Pro è un potenziale thin client che si accoppia con un server, allora avete delle opzioni. Ci sono ottime app SSH disponibili, come Blink. Ma non dovete necessariamente connettervi direttamente al server per fare tutto. Se preferite modificare nativamente sull’iPad e costruire un sistema di carrucole che sollevano il vostro codice fino ad un server cloud, magari con un sistema di integrazione continua come GitLab, anche questo è possibile. Esploreremo entrambe le opzioni.
Hey, I Wrote a Book!
The Temple of Django Database Performance è il mio nuovo libro che unisce il gioco da tavolo, i database e Django. Esplora un tempio in rovina mentre impari trucchi avanzati sulle prestazioni dei database Django!
Probabilmente non puoi eseguire il tuo codice su iOS a meno che non sia Python
C’è un po’ di spazio per eseguire il tuo codice direttamente su iPad se sei uno sviluppatore Python. L’app Pythonista è cresciuta nel tempo da un editor di testo Python focalizzato sull’automazione di iOS a un ambiente di sviluppo Python hackerabile che viene fornito con i principali pacchetti come NumPy, ha una shell simile a quella di bash implementata in Python e supporta i plugin.
Oltre a Python, non ho trovato nessun interprete o compilatore generalmente utile su iOS.
Aggiornamento: I lettori mi hanno segnalato Continuous, un IDE C# e F# per iOS, e Rescript, un IDE JavaScript/node.js per iOS. Entrambi sembrano promettenti e potrebbero essere equivalenti a Pythonista, ma non li ho usati. C’è anche Replete, un’app per iOS che ti dà un ClojureScript REPL (read-eval-print loop); anche se è divertente, sembra meno ricco di funzionalità degli altri.
Native iOS Editors Are Getting Better
Ci sono sempre più editor di testo decenti che funzionano senza il componente interprete o compilatore. App come GoCoEdit e Textastic offrono esperienze di editing che hanno iniziato a guadagnare alcune delle caratteristiche degli editor desktop che vanno oltre le basi – ad esempio il fuzzy-finding dei file.
Questi editor stanno iniziando a lavorare tra loro e con la potente app Git Working Copy e l’app Files fornita da Apple per produrre effetti interessanti. Working Copy può fare il check out di un repository Git e renderlo disponibile per l’editing ad app come GoCoEdit; le modifiche apportate nell’editor si riflettono automaticamente in Working Copy, dove è possibile commetterle.
Caratteristiche mancanti dagli editor di testo iOS
Nessuno di questi editor fornisce un’esperienza adatta allo sviluppo effettivo di software, però. Stiamo parlando di Dreamweaver, non di Emacs.
Un pezzo mancante attualmente è la ricerca nel progetto; cioè, data una directory o un insieme di directory, permettere all’utente di cercare il testo in tutti i file in esso. Se usate GoCoEdit o iVim, potete ottenere un’approssimazione di questo usando il grande strumento di ricerca di Working Copy, che fornisce questa caratteristica, per trovare i file e poi scegliere ad esempio “apri in GoCoEdit” dal menu di condivisione. Textastic non offre questa funzione per qualche motivo. Comunque, è fattibile in un pizzico, ma probabilmente non otterrete il ricercato “flusso”.
Nota a margine su iVim: è migliorato. Puoi avere un file .vimrc
e scaricare plugin nel filesystem dell’app. Presumibilmente i plugin funzionano finché sono scritti in Vimscript. Inoltre, notate che è Vim 7, quindi niente async.
Mentre lavorate da un editor di testo per iOS, non aspettatevi di applicare il tipico modello di sviluppo delle applicazioni web. A meno che non usiate Pythonista, non c’è un server che esegue il vostro codice sull’iPad, quindi avrete bisogno di un collante per far trasferire il vostro file modificato da qualche parte che effettivamente esegue il codice, come un server o una piattaforma serverless. Ci sono molti modi per realizzare questo nel 2019, possibilmente coinvolgendo qualche uso di Pythonista, Zapier, IFTTT, e/o un comando vocale Siri in Shortcuts. Se la codifica su un iPad è il vostro nuovo hobby, allora potete assecondare tutte le vostre peggiori abitudini di disturbo da deficit di attenzione esplorando questo argomento.
Nessuno di questi editor offre linters o formattatori di codice. Il design di iOS suggerisce che per far funzionare linters e formattatori esterni ad un’app di editor, sarebbe probabilmente necessaria un’app separata che supportasse il linting e la formattazione dei messaggi con il testo come input. Altrimenti, l’editor dovrà fornire il binario, ad esempio gofmt
. Per gli strumenti scritti in linguaggi interpretati, suppongo che l’editor dovrebbe fornire in bundle l’intero linguaggio di programmazione o qualsiasi cosa Pythonista stia facendo.
La natura message-passing di iOS è piuttosto cool
Più usi iOS per fare qualcosa di non banale, più inizi a sentire la sua natura message-passing. Invece delle applicazioni che interagiscono tra loro e con il sistema operativo attraverso file e chiamate di sistema, tutte le applicazioni inviano e ricevono messaggi tra di loro e con il sistema operativo.
Così si trovano i file nell’app Files, ma non è solo una directory di file. È più come un unico posto per inviare e ricevere messaggi sui file in tutte le app del tuo iPad, compreso iCloud Drive.
Le app che fanno qualcosa con i file hanno aggiunto funzioni più avanzate per sfruttare questi nuovi messaggi relativi ai file che altre app supportano, così molte app di editor di testo possono ora fare cose come aprire una directory di file esposti da un’altra app (nel 2019 questo è “avanzato” per iOS). Le directory aperte in questo modo di solito rimangono in qualcosa come una barra laterale nell’app e continuano ad essere accessibili come se fossero locali all’app.
Eventualmente questo inizia a sentirsi abbastanza fresco e naturale; tornando a un computer desktop, ci si potrebbe aspettare un pulsante “condividi” coerente che non esiste. Se solo ci fosse un editor di testo di livello professionale disponibile su iOS – e compilatori, interpreti, server web, ecc.
Ricevi la mia newsletter.
Avrai un’email occasionale quando sono abbastanza entusiasta di una tecnologia da scriverne.
Connettersi a un computer reale con SSH
Se usi Blink o un’altra applicazione SSH per connetterti a un server che può eseguire codice arbitrario ed eseguire Vim o Emacs da lì, allora il tipico schema delle applicazioni web scritte in linguaggi dinamici di modificare un file, aspettare che il server dell’applicazione ricarichi il file modificato, e poi aggiornare una pagina web può ancora funzionare.
Si aggiornerà un browser su iOS, naturalmente. Suggerisco iCab a causa delle sue ampie opzioni di personalizzazione, tra cui a mani basse le migliori scorciatoie da tastiera modificabili che ho visto su iOS.
Dove dovresti eseguire il tuo server nel 2019?
Per le persone che hanno bisogno della potenza e della flessibilità di un server remoto e di un vero editor come Vim, ci sono ancora più opzioni di quelle che c’erano prima.
Digital Ocean è una grande scelta per iniziare rapidamente. Il sito web ha una grande UI/UX, e il supporto è incluso.
Nel frattempo, l’impegno di Google a utilizzare il 100% di energia rinnovabile rende Google Cloud Platform una scelta attraente se non hai bisogno di supporto e vuoi spendere un po’ di più. Il livello “sempre gratuito” di GCP include un’istanza f1-micro, che potrebbe funzionare come vostra VM di sviluppo, a seconda delle vostre esigenze.
Che funziona anche bene è un vecchio Mac che si può impostare come server, perché poi si possono sincronizzare i file tra il server e il vostro iPad utilizzando iCloud Drive, o utilizzare osascript
per inviare messaggi di testo che si collegano in profondità nelle applicazioni iOS. Il mondo è la tua ostrica a quel punto. Apple ha rilanciato il Mac Mini, quindi è una valida coppia di server domestici/computer desktop per l’iPad.
Raggiungere il tuo server web di sviluppo da un browser iOS
Alcuni anni fa, se stavi sviluppando un’applicazione web su un server remoto, avresti dovuto eseguire il server dev dell’applicazione su una porta accessibile pubblicamente. Ora c’è un’applicazione per il tunneling SSH chiamata – aspettate! – SSH Tunnel.
Per raggiungere il tuo server di applicazione (ad esempio il server di sviluppo di Django), prima stabilisci un tunnel verso il server (il computer) su cui il server dell’applicazione è in esecuzione con SSH Tunnel. Vorrai definire un hostname diverso da “localhost” in /etc/hosts
sul server, puntando a 127.0.0.1. Poi segui le istruzioni sul sito web di SSH Tunnel per impostare le giuste impostazioni proxy sulla connessione di rete iOS che stai usando.
Dopo aver eseguito il sacrificio di sangue, puoi digitare l’hostname che hai specificato, ad es. old-faithful
e la porta su cui è in esecuzione il server dell’applicazione nel tuo browser iOS preferito, ad esempio http://old-faithful:4000
per caricare l’applicazione.
Browser Dev Tools, Where Art Thou?
Quando hai bisogno di eseguire il debug della web app, ora c’è un’applicazione di strumenti di sviluppo chiamata Inspect. Funziona abbastanza bene, anche se manca il robusto ambiente di debug JavaScript che si ottiene su un browser desktop. Comunque, a parte un debugger JS, Inspect ha la maggior parte di ciò di cui avete bisogno: Ispezione CSS/HTML e una console JS, in modo da poter almeno fare console.log
debugging.
La mancanza di un’applicazione di strumenti di sviluppo come Inspect era il blocco numero uno per lo sviluppo di applicazioni web su iPad prima del 2018. Utilizzando solo questi strumenti, è possibile fare lo sviluppo di applicazioni web da iPad. Sarà fantastico? Non lo so. Probabilmente no.
So There You Have It
Nel 2019 l’iPad e iOS sono fondamentalmente gli stessi del 2017, per quanto riguarda la programmazione. Ciò che è diverso è il crescente numero di sviluppatori di app per iOS che si occupano di persone che vogliono scrivere codice su iOS.
Dato che iOS è stato rilasciato 12 anni fa e solo ora ha a disposizione editor di testo simili a Dreamweaver, con pochi modi per eseguire il codice oltre alle app “impara a codificare”, propongo che sarete in grado di codificare su un iPad nel 2037.
Lascia un commento