Andrew Brookins
On Dezember 23, 2021 by adminIm Jahr 2017 habe ich gefragt: „Kann man Code auf einem iPad schreiben?“ Im Jahr 2019 ist die Antwort im Grunde die gleiche: nicht wirklich. Aber die Dinge werden interessant.
Aktualisierung: Wenn du auf einem iPad programmierst, sieh dir meinen detaillierten Blick auf Möglichkeiten an, die iOS-Zwischenablage mit einem entfernten Rechner über SSH zu synchronisieren. In einem kürzlich erschienenen Beitrag habe ich auch untersucht, wie man Browser-Entwicklungstools auf iPadOS mit der Inspect-App verwendet.
„Programmieren“ auf iOS: die Shortcuts-App
Das iPad bietet immer noch keine Möglichkeit zur nativen Programmierung. Das heißt, Sie werden keine geheime Tür finden, die zu einer UNIX-Shell führt, auf der Sie Homebrew und einen C-Compiler installieren können. Wenn nur!
Sie können Swift Playgrounds getrost ignorieren, es sei denn, Ihr Ziel ist es, Swift zu lernen. Playgrounds ist keine universelle Programmierumgebung, sondern richtet sich an Kinder, die programmieren lernen wollen.
Der Programmierbarkeit am nächsten kommt die App Shortcuts, mit der sich kleine Aufgaben automatisieren und Apps miteinander verbinden lassen.
Dies ist die umbenannte Apple-Version von Workflow, einer beliebten App, die mehr oder weniger das Gleiche tat. Sie können Shortcuts verwenden, um eine Reihe von Aktionen aneinander zu reihen, die Sie normalerweise ausführen würden, z. B. das Einschalten von Do Not Disturb, das Abspielen eines bestimmten Albums (ich empfehle Brute Force von The Algorithm) und das Öffnen einer SSH-Client-App oder eines Texteditors.
Shortcuts ist wahrscheinlich für jemanden nützlich, aber ich verwende es nicht oft und es ist zu begrenzt, als dass ich es als Programmierung bezeichnen würde!
Bearbeiten in nativen iOS-Texteditoren
Allerdings ist nicht alles verloren. Erstens, wenn Sie zugeben, dass das iPad Pro ein potenzieller Thin Client ist, der mit einem Server gekoppelt werden kann, dann haben Sie Optionen. Es gibt großartige SSH-Apps, wie Blink. Aber Sie müssen sich nicht unbedingt direkt mit dem Server verbinden, um alles zu erledigen. Wenn Sie lieber nativ auf dem iPad editieren und ein System von Flaschenzügen konstruieren möchten, die Ihren Code auf einen Cloud-Server hieven, vielleicht mit einem kontinuierlichen Integrationssystem wie dem von GitLab, ist auch das möglich. Wir werden beide Optionen untersuchen.
Hey, ich habe ein Buch geschrieben!
Der Tempel der Django-Datenbank-Performance ist mein neues Buch, das Tabletop-Spiele, Datenbanken und Django miteinander verbindet. Erkunde einen zerstörten Tempel, während du fortgeschrittene Django-Datenbank-Performance-Tricks lernst!
Du kannst deinen Code wahrscheinlich nicht auf iOS ausführen, es sei denn, es ist Python
Es gibt einen gewissen Spielraum, um deinen Code direkt auf dem iPad auszuführen, wenn du ein Python-Entwickler bist. Die Pythonista-App hat sich im Laufe der Zeit von einem auf iOS-Automatisierung ausgerichteten Python-Texteditor zu einer hackbaren Python-Entwicklungsumgebung entwickelt, die mit wichtigen Paketen wie NumPy ausgeliefert wird, eine in Python implementierte bash-ähnliche Shell hat und Plugins unterstützt.
Abgesehen von Python habe ich keine allgemein nützlichen Interpreter- oder Compiler-Apps auf iOS gefunden.
Update: Leser haben mich auf Continuous, eine C#- und F#-IDE für iOS, und Rescript, eine JavaScript/Node.js-IDE für iOS, hingewiesen. Beide sehen vielversprechend aus und könnten mit Pythonista vergleichbar sein, aber ich habe sie noch nicht benutzt. Es gibt auch Replete, eine iOS-App, die Ihnen eine ClojureScript REPL (Read-Eval-Print-Schleife) zur Verfügung stellt; obwohl sie Spaß macht, scheint sie weniger funktionsreich als die anderen zu sein.
Native iOS-Editoren werden besser
Es gibt zunehmend anständige Texteditoren, die ohne Interpreter oder Compiler-Komponente laufen. Apps wie GoCoEdit und Textastic bieten Bearbeitungserfahrungen, die begonnen haben, einige der Funktionen von Desktop-Editoren zu erlangen, die über die Grundlagen hinausgehen – z. B. Fuzzy-Findung von Dateien.
Diese Editoren beginnen, miteinander und mit der leistungsstarken Git-App Working Copy und der von Apple bereitgestellten Files-App zusammenzuarbeiten, um interessante Effekte zu erzielen. Working Copy kann ein Git-Repository auschecken und es Apps wie GoCoEdit zur Bearbeitung zur Verfügung stellen; Änderungen, die im Editor vorgenommen werden, spiegeln sich automatisch in Working Copy wider, wo man sie dann festschreiben kann.
Features Missing from iOS Text Editors
Allerdings bietet keiner dieser Editoren eine Erfahrung, die für die eigentliche Softwareentwicklung geeignet ist. Wir sprechen hier von Dreamweaver, nicht von Emacs.
Ein fehlendes Element ist die Projektsuche, d.h. die Möglichkeit, in einem Verzeichnis oder einer Reihe von Verzeichnissen nach Text in allen darin enthaltenen Dateien zu suchen. Wenn Sie GoCoEdit oder iVim verwenden, können Sie eine Annäherung an diese Funktion erhalten, indem Sie das großartige Suchwerkzeug von Working Copy verwenden, das diese Funktion bietet, um Dateien zu finden und dann z.B. „in GoCoEdit öffnen“ aus dem Freigabemenü wählen. Textastic bietet diese Funktion aus irgendeinem Grund nicht an. Wie auch immer, in der Not ist es machbar, aber Sie werden wahrscheinlich nicht den gewünschten „Flow“ erreichen.
Nebenbei zu iVim: Es ist besser geworden. Man kann eine .vimrc
-Datei haben und Plugins in das Dateisystem der App herunterladen. Angeblich funktionieren Plugins, solange sie in Vimscript geschrieben sind. Beachten Sie auch, dass es sich um Vim 7 handelt, also kein async.
Wenn Sie mit einem iOS-Texteditor arbeiten, sollten Sie nicht erwarten, dass das typische Muster der Webanwendungsentwicklung gilt. Sofern Sie nicht Pythonista verwenden, gibt es keinen Server, der Ihren Code auf dem iPad ausführt. Sie benötigen also ein Mittel, um Ihre bearbeitete Datei an einen Ort zu übertragen, an dem tatsächlich Code ausgeführt wird, z. B. einen Server oder eine serverlose Plattform. Es gibt viele Möglichkeiten, dies im Jahr 2019 zu erreichen, möglicherweise unter Verwendung von Pythonista, Zapier, IFTTT und/oder einem Siri-Sprachbefehl in Shortcuts. Wenn das Programmieren auf einem iPad Ihr neues Hobby ist, können Sie alle Ihre schlimmsten Angewohnheiten in Bezug auf Aufmerksamkeitsdefizite ausleben, indem Sie dieses Thema erforschen.
Keiner dieser Editoren bietet Linters oder Code-Formatierer an. Das Design von iOS legt nahe, dass für die Verwendung von Linters und Formatierern außerhalb einer Editor-App wahrscheinlich eine separate App benötigt wird, die Linting und Formatierung von Nachrichten mit Text als Eingabe unterstützt. Andernfalls muss der Editor das Binärformat bereitstellen, z. B. gofmt
. Für Tools, die in interpretierten Sprachen geschrieben sind, müsste der Editor vermutlich die gesamte Programmiersprache bündeln oder was auch immer Pythonista macht.
Die Message-Passing-Natur von iOS ist ziemlich cool
Je mehr man iOS benutzt, um irgendetwas nicht-triviales zu tun, desto mehr beginnt man seine Message-Passing-Natur zu spüren. Anstatt dass Anwendungen untereinander und mit dem Betriebssystem über Dateien und Systemaufrufe interagieren, senden und empfangen alle Anwendungen Nachrichten untereinander und an das Betriebssystem.
So finden Sie Ihre Dateien in der App „Dateien“, aber es ist nicht nur ein Verzeichnis mit Dateien. Es ist eher ein einziger Ort, an dem du Nachrichten über Dateien in allen Apps auf deinem iPad senden und empfangen kannst, einschließlich iCloud Drive.
Apps, die mit Dateien arbeiten, haben erweiterte Funktionen hinzugefügt, um diese neuen dateibezogenen Nachrichten zu nutzen, die von anderen Apps unterstützt werden, sodass viele Texteditor-Apps jetzt Dinge tun können wie das Öffnen eines Dateiverzeichnisses, das von einer anderen App freigegeben wurde (im Jahr 2019 ist das „fortgeschritten“ für iOS). Verzeichnisse, die auf diese Weise geöffnet werden, verbleiben in der Regel in einer Art Seitenleiste in der App und sind weiterhin zugänglich, als wären sie lokal in der App.
Schließlich fühlt sich das ziemlich cool und natürlich an; wenn man sich an einen Desktop-Computer zurückerinnert, könnte man eine konsistente „Teilen“-Schaltfläche erwarten, die nicht existiert. Wenn es doch nur einen professionellen Texteditor für iOS gäbe – und Compiler, Interpreter, Webserver usw.
Erhalten Sie meinen Newsletter.
Sie erhalten gelegentlich eine E-Mail, wenn ich von einer Technologie so begeistert bin, dass ich darüber schreibe.
Verbindung zu einem echten Computer mit SSH
Wenn Sie Blink oder eine andere SSH-App verwenden, um sich mit einem Server zu verbinden, der beliebigen Code ausführen kann, und Vim oder Emacs von dort aus starten, dann kann das typische Muster bei Web-Apps, die in dynamischen Sprachen geschrieben sind, nämlich eine Datei zu bearbeiten, darauf zu warten, dass der App-Server die bearbeitete Datei neu lädt, und dann eine Webseite zu aktualisieren, immer noch funktionieren.
Sie werden natürlich einen Browser auf iOS aktualisieren. Ich empfehle iCab aufgrund seiner umfangreichen Anpassungsmöglichkeiten, einschließlich der mit Abstand besten modifizierbaren Tastenkombinationen, die ich auf iOS gesehen habe.
Wo sollten Sie Ihren Server 2019 betreiben?
Für Leute, die die Leistung und Flexibilität eines Remote-Servers und eines echten Editors wie Vim benötigen, gibt es sogar mehr Optionen als früher.
Digital Ocean ist eine großartige Wahl, um schnell loszulegen. Die Website hat eine großartige Benutzeroberfläche, und der Support ist inbegriffen.
Das Engagement von Google, 100 % erneuerbare Energie zu verwenden, macht Google Cloud Platform zu einer attraktiven Wahl, wenn Sie keinen Support benötigen und etwas mehr Aufwand betreiben möchten. Die „always free“-Stufe von GCP umfasst eine f1-micro-Instanz, die je nach Bedarf als Entwicklungs-VM fungieren kann.
Was auch gut funktioniert, ist ein alter Mac, den Sie als Server einrichten können, denn dann können Sie mit iCloud Drive Dateien zwischen dem Server und Ihrem iPad synchronisieren oder osascript
sich selbst Textnachrichten schicken, die sich tief in iOS-Apps einklinken. Die Welt liegt dir zu diesem Zeitpunkt zu Füßen. Apple hat den Mac Mini wiederbelebt, so dass er ein praktikables Heimserver-/Desktop-Computer-Paar für das iPad darstellt.
Erreichen Sie Ihren Entwicklungs-Webserver von einem iOS-Browser aus
Wenn Sie vor ein paar Jahren eine Webanwendung auf einem entfernten Server entwickelt haben, mussten Sie den Entwicklungsserver der Anwendung möglicherweise auf einem öffentlich zugänglichen Port ausführen. Jetzt gibt es eine App für SSH-Tunneling mit dem Namen – warten Sie es ab! – SSH Tunnel.
Um Ihren Anwendungsserver (z. B. den Entwicklungsserver von Django) zu erreichen, bauen Sie zunächst mit SSH Tunnel einen Tunnel zu dem Server (dem Computer) auf, auf dem der Anwendungsserver läuft. Dazu müssen Sie einen anderen Hostnamen als „localhost“ in /etc/hosts
auf dem Server definieren, der auf 127.0.0.1 zeigt. Befolgen Sie dann die Anweisungen auf der Website von SSH Tunnel, um die richtigen Proxy-Einstellungen für die von Ihnen verwendete iOS-Netzwerkverbindung festzulegen.
Nachdem Sie das Blutopfer durchgeführt haben, können Sie den von Ihnen angegebenen Hostnamen eingeben, z.B. old-faithful
und den Port, auf dem Ihr Anwendungsserver läuft, in den iOS-Browser Ihrer Wahl ein, z. B. http://old-faithful:4000
, um die Anwendung zu laden.
Browser Dev Tools, Where Art Thou?
Wenn Sie die Web-App debuggen müssen, gibt es jetzt eine Dev-Tools-App namens Inspect. Sie funktioniert recht gut, auch wenn ihr die robuste JavaScript-Debugging-Umgebung fehlt, die man in einem Desktop-Browser erhält. Abgesehen von einem JS-Debugger bietet Inspect jedoch das meiste, was Sie brauchen: CSS/HTML-Inspektion und eine JS-Konsole, so dass man zumindest console.log
Debugging betreiben kann.
Das Fehlen einer Entwicklungswerkzeug-App wie Inspect war vor 2018 das größte Hindernis für die Entwicklung von Webanwendungen auf dem iPad. Mit diesen Tools können Sie Webanwendungen auf dem iPad entwickeln. Wird es großartig sein? Ich weiß es nicht. Wahrscheinlich nicht.
So you have it
Im Jahr 2019 sind das iPad und iOS im Grunde dasselbe wie 2017, was die Programmierung angeht. Was anders ist, ist die wachsende Zahl von iOS-App-Entwicklern, die sich an Leute wenden, die Code auf iOS schreiben wollen.
Angesichts der Tatsache, dass iOS vor 12 Jahren auf den Markt kam und erst jetzt Texteditoren wie Dreamweaver zur Verfügung stehen und es nur wenige Möglichkeiten gibt, Code auszuführen, abgesehen von „Learn to Code“-Apps, schlage ich vor, dass man im Jahr 2037 in der Lage sein wird, auf einem iPad zu programmieren.
Schreibe einen Kommentar