Swift – Die eine Programmiersprache für „alles“ ?! – Teil2

Die Evolution von Swift – the next level

Teil1

Es ist gut ein Jahr vergangen (Dezember 2015) seit Swift als Open-Source Programmiersprache das Licht der Welt(-Öffentlichkeit) erblickt hat. So finde ich, dass es mal wieder an der Zeit ist zu schauen, welche Evolution und Resultate diese recht junge Programmiersprache mittlerweile nach meiner ersten Bewertung und Prognose vom April 2016 in der Open-Source Entwickler Community gefunden hat. Um eine Sache vorweg zu nehmen: Mit Swift werden bereits produktive (Web-)Portal-Projekte umgesetzt (wie beispielsweise die Webseite des dänischen Triathlon-Events Ironman; Github-Source). So hat sich Swift tatsächlich in so kurzer Zeit von einer reinen Apple-Plattform Sprache (iOS, macOS, tvOS, watchOS) zu einem Linux-freundlichen Backend/Webframework-tauglichen Gesamtsystem entwickelt. Die aktuelle Version Swift3 genießt zudem große Kompatibilität im Segment der „kleinen ARM-Architektur Computer“ wie beispielsweise dem Raspberry Pi3 und dem dafür verfügbaren Ubuntu 16.04 als Betriebssystem; ergo die Software der Internet-Of-Things (IoT) kann ab jetzt tatsächlich ebenfalls mit dieser hochmodernen und performanten Programmiersprache entwickelt werden.

Weiterlesen

Swift – Die eine Programmiersprache für „alles“ ?! – Teil1

tl;dr

  • Swift eignet sich bereits jetzt zur Entwicklung einer produktiven verteilten mobilen Anwendung (Client-App + Backend-Webservice)
  • Proof-of-Concept Beispiel: verteilte App mit Shared Code
  • Deployment des Webservices via Docker-Container
  • Große Vorteile für Developer, DevOps, CTOs, CIOs und die zentralen Stakeholder/Kunden
  • Update: links und libraries-Empfehlungen

Apples Swift und Open Source

Im Juli 2014 hat Apple der Öffentlichkeit die neue Programmiersprache Swift vorgestellt. Zunächst wurde auf den eigenen Plattformen die Software-Entwicklung mit dieser Sprache realisiert: von der kleinen Smartwatch appleWatch (watchOS), über die Set-Top-Box appleTV (tvOS), auf ihren mobilen Geräten iPhone/iPodTouch/iPad (iOS) bis hin zu ihren Desktop-Geräten MacPro/iMac/MacBookPro/… (OSX).

Vor etwa einem halben Jahr (Dezember 2015) ging Apple dazu über, Swift als Open-Source Projekt der Öffentlichkeit bereitzustellen. Apple war mit diesem Schritt derart entschlossen und überzeugt, dass sie die Vorteile von ihrer aktuellen Programmiersprache Swift -z.B. die Flexibilität und die Skalierbarkeit (von Command-Line-Tools über Software für ‚kleine‘ embedded IoT-Geräte bis hin zu Server-Systemen und Betriebssystemen), die maschinennahe performate Ausführung  der damit erstellten Software (kompilierter/nativer Binär-Code !), sowie die modernen Features und Sprachkonstrukte- der gesamten Developer/IT-Community bereitgestellt haben wollten. Das ausgesprochene Ziel Apples: Durch die verändernden Software/IT-Anforderungen heutiger Systeme und Anwendungen, die in die Jahre gekommene native Programmiersprache C (bzw. auch C++) als de-facto-Standard mittelfristig abzulösen. Ein sehr ehrgeiziges Ziel -wie man ruhig finden darf- das nur durch Offenlegung und die Beteiligung der großen Entwickler-Community überhaupt erst machbar sein kann.

Weiterlesen

iOS 8

Im September ’14 hat Apple seine neue Betriebssystemversion iOS 8 für iPad, iPhone und iPod touch veröffentlicht. Sind 5,8 GByte freier Speicherplatz auf dem Gerät unter iOS 7 vorhanden, so kann man das Update bequem Over-the-Air beziehen, ansonsten heißt es erstmal entweder Platz schaffen oder per iTunes updaten.

Hat man es nun geschafft iOS 8 zu installieren und wirft voller Vorfreude einen ersten Blick auf die Benutzeroberfläche, so stellt man fest, das alles fast so aussieht wie unter iOS 7. Erst auf den zweiten Blick erkennt man Detailverbesserungen im UI und der Benutzerführung. So wurden zum Beispiel die versteckten Einstellungen, um Diagnose und Nutzungsdaten an Apple zu schicken, in die Rubrik Datenschutz verschoben, wo es die meisten Nutzer wohl auch vermuten würden.

Kontakte in der Multitasking Ansicht anzeigen.

Wird die Home-Taste zweimal gedrückt, so zeigt sich die Multitasking-Ansicht. Dabei werden jetzt neben den geöffneten Apps auch die letzten Kontakte angezeigt.

Benachrichtigungen direkt beantworten.

Mit iOS 8 ist es nun möglich auf Benachrichtigungen direkt über Ihren Mitteilungsbanner oben bei der Statusleiste zu reagieren ohne die gerade geöffnete Anwendung zu verlassen.

Spotlight sucht kontextsensitiv.

Je nach Begriff sucht Spotlight nun nicht mehr nur auf meinem Gerät nach einer passenden Antwort, sondern zeigt auch Treffer direkt von Webseiten wie Wikipedia, oder Newsseiten an. Sucht man beispielsweise nach einem Restaurant so werden auch Vorschläge aus meiner näheren Umgebung angezeigt.

Hinweis: Wer an dieser Stelle nicht möchte, dass Spotlight meinen Standort für Suchvorschläge verwenden soll, da dies dafür an Apple gesendet wird, kann dies in der Einstellungs-App unter „Allgemein -> Spotlight Suche bzw. Datenschutz -> Ortungsdienste -> Systemdienste -> Spotlight Vorschläge“ deaktivieren.

Tastatur bietet mehr Möglichkeiten.

Was bei Android schon seit vielen Jahren State-of-the-Art ist, funktioniert nun auch unter iOS. So kann nun die Apple eigene iOS-Tastatur gegen eine Tastatur eines Drittanbieters ausgetauscht werden.

Hinweis: Tastaturen von Drittanbietern benötigen oftmals einen Vollzugriff, damit alle Funktionen genutzt werden können. Hierbei können aber alle über die Tastatur eingegebenen Daten an den Drittanbieter übermittelt werden. Dies ist allerdings aus  datenschutzrechtlichen Gründen und der Privatsphäre kritisch zu beurteilen. Um den Vollzugriff zu deaktivieren, gehen Sie wie folgt vor. Einstellungs-App öffnen -> Allgemein -> Tastaturen -> Tastatur des Drittanbieters aussuchen und antappen -> „Vollen Zugriff erlauben“ deaktivieren.

Mit „QuickType“ hat Apple eine Technologie eingeführt, welche mir automatisch Vorschläge für das nächste zu schreibende Wort anhand einer Analyse meines Schreibstils anzeigt.

Hinweis: Wer Quicktype nicht verwenden möchte, kann dies über die Einstellungs-App -> Allgemein -> Tastatur -> „Vorschläge: ein“ deaktivieren.

Kamera mit neuen Funktionen aufgewertet.

Neben Zeitlupenvideos können jetzt auch Zeitraffervideos erstellt werden. Weiterhin verfügt die Kamera über eine automatische Bildstabilisierungs-Funktion, eine verbesserte Gesichtserkennung und neben dem Fokus, kann auch die Belichtungszeit direkt direk im Bild eingestellt werden.

Hinweis: Bildstabilisierung ist ab iPhone 5S verfügbar und die verbesserte Gesichtserkennung für iPhone 6 Modelle.

Audio-Nachrichten versenden.

Die Nachrichten-App wurde ebenfalls überarbeitet. So ist es nun möglich anstatt nur Text auch aufgenommene Töne, bzw. Sprache direkt in einer iMessage zu versenden.

Health – das iPhone ist mein Fitnesscoach.

Die im iPhone verbauten Sensoren sammeln kontinuierlich Informationen über unser tägliches Bewegungsprofil. Diese Informationen – bspw. Schritte pro Tag, hoch und runter gelaufene Stockwerke – werden nun übersichtlich in der Health-App angezeigt. Weiterhin haben Entwickler die Möglichkeit eigene Anwendungen oder Accessories anzubieten, welche Health integrieren. Somit können der Health-App zusätzliche Daten bereitgestellt werden, um mir einen ganzheitlichen Blick auf meinen Gesundheitszustand zu ermöglichen. Anwendungen von Drittanbietern kann ebenfalls der Zugriff auf die Health-Daten ermöglich werden, um mir bspw. Tipps für eine bessere Ernährung zu geben.

Datenschutz:

Ein zentraler Zugang zu meinen gesammelten Gesundheitsdaten ist für mich als Nutzer zwar praktisch, da ich alle Daten auf einem Blick habe ohne vorher selbst erst verschiedene Apps/Portale pflegen zu müssen. Allerdings können diese Daten auch Begehrlichkeiten bei Dritten wecken, welche eventuell nicht in meinem Sinne sind. Um dies zu verhinden, hat Apple verschiedene Sicherheitsstufen eingebaut. So hat der Nutzer die Kontrolle darüber, welche Informationen in Health abgelegt und wie die Daten mit Apps von Drittanbietern geteilt werden. Weiterhin wird von Drittanbietern, welche auf Health-Daten zugreifen wollen, eine entsprechende Datenschutzstrategie verlangt. Ist das iPhone per Code oder Touch ID gesperrt, so werden die Daten zudem verschlüsselt auf dem Gerät gespeichert. Sollen die in der Health-App gespeicherten Daten in der iCloud gesichert werden, so erfolgt die Übertragung und Speicherung ebenfalls verschlüsselt.

Auch wenn Apple verschiedene Vorkehrungen getroffen hat, um Missbrauch vorzubeugen, so ist dies keine Garantie, wie die jüngsten Ereignisse mit geleakten Promi-Bildern aus Apples iCloud gezeigt haben. Die Frage, ob ich Health verwenden soll oder nicht, bleibt somit am Ende eine Vertrauensfrage gegenüber Apple und meiner eigenen Vernunft, wem ich Zugang zu meinen Daten erlaube.

Continuity – nahtlose Verwendung verschiedener Apple Geräte.

Mit iOS8 und Mac OSX 10.10 Yosemite ist es einfacher geworden, verschiedene Apple Geräte (iPhone, iPad, Mac) miteinander zu verbinden und nahtlos zu verwenden.

So ist es mittels Handoff zum Beispiel möglich, auf einem Mac über die Kartenanwendung eine Route zu planen und diese sofort auf einem iPhone zur Verfügung zu haben, oder Dokumente auf dem iPad zu beginnen und auf dem Mac zu Ende zu schreiben.

Erhält man einen Anruf auf seinem iPhone, so erlaubt es Phone Calling diesen auf einem iPad oder Mac über den entsprechenen Audioeingang-/ausgang entgegen zu nehmen oder Anrufe vom Mac bzw. iPad aus zu initiieren. Weiterhin ist es auch möglich Textnachrichten per SMS direkt an Personen ohne iPhone vom iPad oder Mac aus zu versenden oder zu beantworten.

Per Instant Hotspot erscheint ein verbundenes iPhone automatisch in der Liste verfügbarer WLAN-Netzwerke auf dem Mac oder iPad. Mit einem Klick kann das iPhone dann für eine Internetverbindung verwendet werden, ohne dass erst ein Hotspot eingerichtet werden muss.

Hinweis: Auf den Apple Geräten muss entweder  iOS 8 oder Mac OSX 10.10 Yosemite installiert sein, für Textnachrichten und Instant Hotspot wird mindestens iOS 8.1 benötigt. Weiterhin müssen alle Geräte mit dem gleichen iCloud-Konto angemeldet sein, sich im gleichen WLAN-Netzwerk befinden und Bluetooth aktiviert haben.

iCloud Drive

Mit iCloud Drive bietet Apple einen Service ähnlich zu Dropbox an, um eigene Dokumente, Bilder, Präsentationen, Videos, usw. in der iCloud zu speichern und vom iPad, iPhone, Mac oder gar Windows PC aus abzurufen und zu verwalten.

Nutzen Apps iCloud um Dateien zu speichern, so können diese nun vom Nutzer über iCloud Drive ebenfalls verwaltet werden. Dies war bis iOS 7 nicht möglich, da nur die App selbst Zugriff auf die Dateien hatte.

Familienfreigaben

Mit der neu eingeführten Familienfreigabe können bis zu 6 Familienmitglieder mit jeweils eigenem Account gekaufte Inhalte aus iTunes, iBook und dem App Store nutzen, vorausgesetzt die Anbieter haben dies für ihre Inhalte erlaubt. Einkäufe können gemeinsam über eine Kreditkarte bezahlt und Ausgaben von Kindern von den Eltern vorher genehmigt werden. Weiterhin können Familienmitglieder untereinander den Standort, Fotos und Kalender teilen.

Zusammenfassung

Auch wenn sich auf den ersten Blick iOS 8 optisch gegenüber seinem Vorgänger iOS 7 kaum verändert hat, so hat sich doch unter der Oberfläche einiges getan. Vor allem die Möglichkeit nahtlos zwischen einzelnen Apple Geräten zu wechseln, Anrufe direkt vom Mac oder iPad aus zu führen oder seinen Fitnesszustand jederzeit abfragen zu können, stellen interessante Technologien dar, an welche sich viele Nutzer bestimmt schnell gewöhnen werden. Leider kommt der Nutzer nur dann in den Genuß aller neuen Technologien, wenn er einen homogenen Gerätepool von Apple besitzt, den eine Schnittstelle für Apps auf Apple-fremden Plattformen wie Android fehlt.

Unter diesem Gesichtspunkt lässt sich auch die Familienfreigabe betrachten. So ist es zwar möglich die gleichen Inhalte/Apps mit seiner Familie zu teilen ohne erneut zur Kasse gebeten zu werden, sowie die Ausgaben seiner Kinder für Einkäufe im App Store zu steuern, allerdings setzt dies natürlich auch einen homogenen Gerätepool innerhalb der eigenen Familie vorraus. Somit wird nicht nur die Bindung des Nutzers an das Apple Universum erhöht sondern auch gleich seiner ganzen Familie mit.

Mit iOS 8 sollten Nutzer dem Thema Datenschutz und Privatsphäre eine stärkere Aufmerksamkeit schenken und vorher genau überlegen welchem Anbieter Sie bei Tastatur-Apps einen Vollzugriff erlauben oder welche App Zugriff auf die in der Health-App gesamelten Daten erhält. So verlangt Apple zwar von den Anbietern die Einhaltung bestimmter Richtlinien, doch was tatsächlich mit den einmal übermittelten Daten passiert, wird auch für Apple schwer überprüfbar sein.

CoreData’s not SQL – requests by example

CoreData’s not SQL – dieser Slogan begegnet dem iOS-Entwickler, der in die CoreData-Welt einsteigt, an vielen Stellen – vor allem wenn es um die Selektion von Objekten/Entitäten geht. Zurück bleibt oft die Frage: Und was ist nun CoreData? Oder wie selektiere ich die Objekt, die mich interessieren?

Weiterlesen

Continuous Integration für iOS mit Jenkins – Ein Erfahrungsbericht

Seit gut 3 Jahren verwenden wir Jenkins als Plattform für eine Continuous Integration Umgebung für iOS-Projekte.

Zu den Hauptaufgaben des Systems gehören die ständige Überprüfung der Baubarkeit von Projekten nachdem Quellcode in ein Source-Control-Management (SCM) System eingecheckt wurde und die Verteilung der Build-Produkte an eine interne Over-the-Air (OTA) Distribution Plattform sowie direkt an unsere Kunden.
Darüber hinaus unterstützen wir verschiedene Build-Job Konfigurationen zur automatischen Quellcode-Dokumentation und Code-Analyse:

  • Ausführung von OCUnit-Tests und Messen der Testabdeckung,
  • Statische Code-Analyse,
  • Erstellung von Code-Metriken,
  • Copy-Paste-Detection,
  • Appledoc und Headerdoc.

Weiterlesen

iOS/MacOS: moderne Objective-C Syntax für besser leserlichen Code

Den Themenschwerpunkten
„einfach zu lesender Objective-C Code“ und „neue Features des llvm Clang Compilers „ reiht sich auch dieser Artikel ein und geht dabei kurz auf die Neuerungen der aktuellen Clang-Compiler Versionen 3.1 (Xcode 4.3) und 4.0 (Xcode 4.4) im Hinblick auf die Erweiterungen der Programmiersprache Objective-C ein. Auch das demnächst offiziell verfügbare Xcode 4.5 bringt einige nennenswerte Source-Code relevante Neuerungen mit sich.

In dem folgenden „zusammenhangslosen“ Code-Schnipsel habe ich versucht ausschließlich auf die Neuerungen einzugehen ohne eine sinnhafte Code-Sematik zu präsentieren. Weiterlesen

iOS/MacOS: Guten, wiederverwendbaren Code schreiben durch einfach zu lesende Objective-C Klassen APIs

Heute widmen wir uns einem Thema, das tagtäglich jeden iOS-und MacOS-Entwickler betrifft: Das Erstellen und Lesen von Code. Genauer gesagt die Erstellung von Objective-C Klassen und deren „Aufteilung“ in Header bzw. Implementations-Dateien (.h/.m). Hierbei befindet sich jeder Entwickler sowohl in der Rolle eines „API-Nutzers“, also durch Nutzung/Einsatz von Klassen anderer Entwickler im Team oder anderen externen Libraries (OpenSource oder ClosedSource-Binary). Zugleich ist man als Entwickler durch Generierung von eigenen Klassen auch immer in der Rolle eines „API-Erstellers“ (also für die anderen Entwickler oder gezielt zur Publizierung einer Library/Framework).

Naturgemäß fällt der erste Blick eines Entwicklers, wenn er zum ersten mal mit fremdem (aber auch eigenem) „C-basierten“ Code umgehen muss, auf die Header-Dateien der einzelnen Klassen. Diese .h-Dateien dienen hierbei als „Schnittstelle zur Aussenwelt“ und geben dem Entwickler einen ersten Eindruck über Funktionsweise der Klasse und eine erste Idee, wie diese am besten in den bisherigen eigenen Code zu integrieren ist. Weiterlesen