Interview mit Jonas Stubenrauch und Thimo Bess über die Fallstricke in der iOS-Entwicklung

Fallstricke und Toolchain in der iOS-Entwicklung
Kommentare

Apple tut viel, um Entwickler bei Laune zu halten; dennoch ist die Entwicklung für iOS-Devices bisweilen gar nicht so trivial. Doch wo genau liegen die klassischen Fallstricke?

Der Einstieg in die iOS-Entwicklung ist dank ausgefeilter Tools relativ leicht zu bewerkstelligen. Apple bietet eine runde Toolchain, die auch das Thema Continuous Delivers abdeckt.

Dennoch geraten selbst erfahrene Entwickler gerne ab und an in nicht unerhebliche Zwickmühlen. Und so gut das Tooling auch sein mag; hier und da gibt es dennoch Lücken, die man am besten mit externen Tools stopft.

Über diesen spannenden Themenkomplex haben wir uns mit Jonas Stubenrauch und Thimo Bess unterhalten, die beide seit einigen Jahren in der iOS-Entwicklung tätig sind.

Entwicklung für iOS-Devices

Jonas, Thimo – eine erste simple App für iOS-Devices zu entwickeln dürfte die meisten Entwickler vor keine all zu großen Probleme stellen. Wo beginnt es eurer Erfahrung nach, wirklich kompliziert zu werden?

Jonas / Thimo: Sobald asynchrone Prozesse, wie zum Beispiel die Kommunikation mit einem Backend, benötigt werden, steigt die Komplexität einer App stark an. Hierbei ist es besonders wichtig eine gute Architektur zu verwenden.

Das Thema Synchronisierung der Daten zwischen App-Datenbank und Server ist sicherlich einer der komplexesten Aufgaben, die eine App haben kann. Wenn sich Daten sowohl in der App als auch im Backend ändern können, müssen die entstehenden Konflikte gelöst werden.

Auch eine UI mit vielen Animationen und Custom Controls, die auch noch auf den verschiedenen Display-Größen optimal aussehen sollen, stellen einen Entwickler vor Herausforderungen. Das Thema Autolayout kann dabei beliebig komplex werden.

Was sind die „klassischen“ Fallen, in die man selbst nach einiger Zeit und mit etwas Erfahrung immer und immer wieder tappt?

Jonas / Thimo: Bei der klassischen MVC-Architektur wachsen die ViewController oft zu sehr großen Klassen an, die im Laufe eines Projektes immer weiter wachsen und am Ende nur noch schwer wartbar, geschweige denn testbar sind. Auch Memory-Probleme bei der Verwendung von CoreData zählen zu den immer wiederkehrenden Schwierigkeiten.

Die Toolchain im iOS-Umfeld

Continuous Delivery ist eines der Buzzwords, mit dem sich die Entwicklergemeinde schon seit einiger Zeit beschäftigt. Wie funktioniert das im iOS-Umfeld?

Jonas / Thimo: Continuous Delivery ist mittlerweile sehr einfach einzurichten und gehört bei unseren Projekten zum Standard. Es gibt dabei verschiedene Möglichkeiten der Umsetzung.

Apple bietet mit Xcode Server / Bots und TestFlight seine eigene Lösung an, die sich sehr schnell aufsetzen lässt, jedoch nur begrenzt konfigurierbar ist. Auch andere Lösungen sind möglich, beispielsweise durch den Einsatz von Jenkins, für den es mehrere Plugins für iOS-Projekte gibt. Man muss allerdings beachten, dass zum Kompilieren zwingend eine Mac-Hardware erforderlich ist.

Wer nicht selbst ein CI-Server hosten möchte, kann auch auf Cloud-Dienste wie zum Beispiel Travis CI zurückgreifen.

In eurem Workshop auf der MobileTech Conference stellt ihr neben fastlane auch noch CocoaPods vor; einen Dependency Manager für iOS- und Mac-OS-X-Projekte. Welche Tools empfehlt ihr Drumherum sonst noch, um professionell und in Teams an iOS-Projekten zu arbeiten?

Jonas / Thimo: Mit Xcode, fastlane und CocoaPods kommt man schon recht weit.

Ein kleines nützliches Tool um Icons in allen benötigten Größen zu skalieren ist Prepo. Bei der Verwendung des iOS-Simulators unverzichtbar ist außerdem simPholders2, das es erlaubt, direkt in das Sandboxverzeichnis der App zu springen und auch die installierten Apps zu löschen oder zurückzusetzen.

Für die Arbeit in Teams ist Git unverzichtbar. Zur Verwaltung des Repositories verwenden wir SourceTree oder Tower.

VIPER … und Swift

Eine weitere Rolle wird die VIPER-Architektur spielen, die der Gefahr der „Massive View Controllers“ begegnen soll. Was genau kann man sich unter VIPER vorstellen?

Jonas / Thimo: VIPER ist ein Architektur-Ansatz bei dem die Zuständigkeit der ViewController reduziert wird. Der ViewController kümmert sich ausschließlich um die Darstellung der Daten im UI. Die anderen Aufgaben, die in einer klassischen MVC Architektur von ihm übernommen werden, werden auf weitere Schichten verteilt. Die Aufteilung der einzelnen VIPER Stacks ist Use Case spezifisch.

Durch die genauer spezifizierten Zuständigkeiten und daraus resultierenden kleineren Klassen und Methoden erreicht man eine wesentlich bessere Wartbarkeit und Modularisierung. Insgesamt wird die App einfacher zu Testen, da jede Schicht für sich losgelöst getestet werden kann.

Hat dieser Architekturstil auch Nachteile, die man beachten sollte?

Jonas / Thimo: Wie bei jeder Architektur gibt es auch bei VIPER gewisse Nachteile: Da die Struktur recht komplex ist, wirkt sie bei kleinen Projekten bzw. einfachen Use Cases schnell wie Overengineering. Wenn man nicht richtig aufpasst, führt die Kommunikation zwischen den Stacks zu starker Kopplung, was eine Wiederverwendung erschwert. Eine mögliche Lösung für dieses Problem werden wir in unserem Workshop auf der MTC thematisieren.

Vor einiger Zeit hatten wir über das damals noch neue Swift gesprochen; vor allem Sprachfeatures wie das Operator-Overloading sorgten Anfangs für etwas Irritation … gibt es nun ausreichend Best Practices, die für Klarheit sorgen?

Jonas / Thimo: Es hat sich gezeigt, dass kaum jemand Unfug mit dem Operator-Overloading betreibt. Für neue Projekte sind wir mittlerweile komplett von Objective-C auf Swift umgestiegen. Auch die Tool-Unterstützung wird stetig verbessert. Es kamen neue interessante Sprachfeatures dazu, wie zum Beispiel das guard-Statement, welche die tägliche Arbeit mit Swift vereinfachen. Nun, da Swift Open Source ist, werden sicherlich noch viele weitere Verbesserungen folgen. Wir sind gespannt …

Jonas Stubenrauch

Jonas StubenrauchJonas Stubenrauch arbeitet seit 2010 bei der arconsis IT-Solutions GmbH in Karlsruhe. Sein Schwerpunkt liegt in der nativen iOS-Entwicklung. Er hat Informatik am KIT in Karlsruhe studiert und sammelte schon während seines Studiums viele Erfahrungen in der agilen Entwicklung für mobile Geräte.

 

Thimo Bess

Thimo BessThimo Bess ist seit 2013 bei der arconsis IT-Solutions GmbH als Entwickler im iOS-Umfeld tätig. Davor sammelte er bereits mehrjährige Erfahrungen bei der Implementierung und dem Betrieb von High-Traffic-Websites.

 

 

Aufmacherbild: Business concept, Blindfolded businessman is walking to the cliff. von Shutterstock / Urheberrecht: AeChan

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -