APIs - Meine Vision

APIs - Meine Vision wie uns die Schnittstellen das Leben verbessern können.

APIs - Meine Vision

Eine Vision?

Manche werden sich jetzt denken: Hat der Typ jetzt den Arsch offen? Was ist eigentlich eine API, kann ich das Essen? Ist das wieder so ein Krams aus dem Internet?

Andere Wissende, wahrscheinlich primär Entwickler ;), denken sich jetzt vielleicht - was kommt jetzt? Hat der was geschnupft?

Nun im folgenden soll es darum gehen eine Idee zu teilen, wie mit APIs viel erreicht werden kann. Jedoch kläre ich erst mal alle auf, die unwissend sind und erkläre dann wie ich mir das vorstelle und was es aus meiner Sicht bringt.

Genug des Vorgeplänkel, was ist eine API?

Erst einmal ist API die Abkürzung für Application Programming Interface, also eine Schnittstelle um programmgesteuert etwas anzusprechen. Eine Definiton wie sich eine Software nach außen verhält. Wobei man hier sagen muss, mittlerweile trifft das auch auf physikalische Geräte zu, wie z. B. die heiß geliebte Kaffee-Maschine. Das gängigste was man im Zuge dessen hört sind sogennanten Rest-APIs, sie nutzen die Standards, die wir täglich bewusst oder unbewusst im Browser benutzen, oder vielleicht auch mit der ein oder anderen App.  Sie werkeln im Hintergrund, im Idealfall ohne das der Benutzer davon etwas bemerkt.

Solche Schnittstellen sind nötig, damit z. B. Spiele auf verschiedenen Plattformen und Geräten laufen können, man bekommt eine Grafikschnittstelle. Die wurde standardisiert, damit jede Grafikkarte bzw. Plattform die diese API bereitstellt sich gleich verhält. Dem Entwickler ist hierbei egal was sich hinter den Kulissen abspielt. die API ist nur das Manifest. Einfach ausgedrückt ein "was passiert, wieso und wie".

Ja super, das gibts ja schon?!

Ja es gibt schon zahlreiche APIs, ohne Sie wäre der heutige Stand der Technik noch lange nicht so weit. Das Konzept erleichtert Entwicklern und auch indirekt vielen Anwendern jeden Tag das Leben. Während bei Themen wie Hardwareansteuerung bzw. Betriebssystemen das Ganze schon recht gängig ist, wird man auf der anderen Seite im Dunklen stehen gelassen.

Ein Beispiel: Paketverfolgung.

Jeder Paketversender bietet heutzutage eine Nachverfolgung für Pakete an. Meistens in den Firmenfarben, Stichwort Corporate Design. Das Ganze ist für Endanwender eine schnelle und unkomplizierte Weise um an die Daten zu gelangen. Wenn man allerdings bei den meisten Paketversendern diese Informationen automatisiert abfragen will, um z. B. als Shopbetreiber den Kunden via SMS oder Mail zu kommunizieren wie der aktuelle Stand des Paket ist, wird der Weg schon abteuerlicher. Hier muss man meistens den Weg gehen die Seiten manuell aufzurufen und quasi zu "zerlegen". Hierbei wird sich die Seite in die Bestandteile zerlegt und so viele Informationen wie möglich abgegriffen. Das Ganze ist natürlich nicht standardisiert. Fällt Versender XY auf einmal ein, dass er die Seite gesamtheitlich anders aufgebaut werden haben will ist man als Entwickler schnell aufgeschmissen. Also alles nochmal von vorn. Im schlimmsten Fall bekommt in diesem Zeitraum der Kunde keine Nachrichten. Kein idealer Zustand!

Das Ganze kann aber ziemlich einfach vermieden werden. Was wäre wenn der Paketversender einen standardisierten Weg, ein maschinenlesbares Format anbietet, das kann dann sowohl vom Versender selbst als auch von Drittanbietern genutzt werden. Standardisiert und einfach. Klingt kompliziert, meistens benötigen die Anbieter selbst jedoch auch die Daten um sie zum Beispiel im Browser darzustellen. Also wieso nicht gleich an die eigenen Kunden denken die entsprechend automatisiert auslesen wollen, was man sowieso schon hat?

Entwickler in der Pflicht

Ich sehe hier ganz klar Entwickler in der Pflicht, stabile Schnittstellen bereitzustellen. Den wir selbst profitieren ja auch davon! Wenn es zu einer Selbstverständlichkeit wird, entsprechende Schnittstellen für andere zur Verfügung zu stellen dann ist es Win-Win. Man kann den Endanwendern bequem viele Infos anzeigen, die man von Drittanbietern erhalten kann.

Oft sehen hier entsprechende Projektleiter und andere Entscheider die Vorteile nicht gleich, deshalb ist jeder einzelne Entwickler gefragt, entsprechend das in seinem Umfeld voranzutreiben. Ich weiß, nicht immer einfach, gerade wenn man es so betrachtet für was man noch so alles werben muss ;).

Vision

Die Digitalisierung ist nun schon, gerade in Deutschland, ein jahrzehntelang anhaltendes (einschlafendes?) Thema. Doch es ist nicht so leicht alles digital vorzuhalten, wenn wir es nicht mal schaffen Daten an andere Entwickler/Plattformen, Anwendungen oder whatever automatisiert bereitzustellen.

Man bedenke nur einmal, was es für ein Mehrwert wäre, wenn sich der Home-Assistant beim Streaming-Dienst der Wahl nach der neuesten Lieblingsserie umsehen kann und mir das Ganze gleich für die Tagesplanung vorschlägt?

Gerade mit Wettervorhersagen bieten zahlreiche digitale Assistenten bereits heute einen Mehrwert. Schnell aufs Handy geguckt, oder den Assistent nach dem Wetter gefragt und man bekommt eine schnelle und präzise Auskunft.

Wie cool wäre es wenn ich meine Küchenlampe via Netzwerk ansteuern kann? Und das Ganze ohne propiertären Krams für jedes Gerät. Mit einer Smartphone-App, die sich durch standardisierte Schnittstellen mit jedem beliebigen Gerät im Haushalt verbinden kann!

Zack, schon kann ich von der Couch meinen Fernsehr anknippsen während ich noch schnell den Rollo für die Ganze Etage runterlasse und meine Decken-LED anschmeisse? - Ja wir reden von Smart Home, aber auch das entfaltet seine Wirkung auch nur durch gute Standards. Aktuell hat man ein breites Spektrum von Sonderlösungen, im Besten Falle gibts sogar noch ne (eigenentwickelte) App dazu! Natürlich nur für die Gerät einer bestimmten Marke. Warum braucht alles eine Cloud-Anbindung? - Wäre es nicht leichter lokale APIs bereitzustellen um Bastlern zu ermöglich autonom zu bleiben? - Oder für die Non-Techies ein Gerät was ich mir kaufen kann, dass entsprechend alle Geräte im Netzwerk erkennt? - Klar, aber natürlich nur mit einer standardisierten API.

Die Möglichkeiten werden dadurch gerade zu gigantisch. Das mag vielleicht etwas paradox klingen, aber hier sorgt Einheitlichkeit für große Vielfalt. Standards und Schnittstellen ermöglichen eine einheitliche Anbindung, ohne die Geräte selbst einzuschränken. So muss nicht jeder Hersteller erst eine eigene Lösung erarbeiten, die dann nur für eine handvoll erlesener Geräte zum Einsatz kommt.

Das Ganze wäre auch eine Chance Privatsphäre zu bewahren, ohne sich digital Abzuschirmen. Überlassen wir nicht der Blackbox "Cloud" das Feld. Standards schaffen Vertrauen und einfache technische Möglichkeiten. Einfache Manifeste stoßen Türen auf und eröffnen dadurch neue Möglichkeiten!

Schlusswort

Das Ganze mag jetzt alles sehr abstrakt oder gar unnötig wirken. "Ich krieg doch meine Sendungsinfos", oder große Firma XY macht das doch schon soooo lange. Doch genau darum geht es, das hier mehr ausgebaut wird, mehr Möglichkeiten erschlossen werden. Gerade abseits der weit bekannten Technik-Riesen, meist aus Amerika, dem Land der (un)begrenzten Möglichkeiten. Es geht nicht darum, die Technik-Welt zu revolutionieren, sondern sie nur offener zu gestalten und damit auch näher zum End-User zu befördern. Denn was helfen die besten technischen Möglichkeiten wenn der Mensch am Ende hinten dran bleibt?

Und vielleicht denkst du als Entwickler bei der nächsten App, Homepage oder whatever auch mal an das Gelesene. Aber auch als Non-Dev, wenn du das nächste Mal etwas umständlich suchen musst ;) oder dir eine zu teuere Smart-Home-Einrichtung ansiehst.

Kleiner Teaser an alle Devs

Passend zu dem Thema kommt demnächst auch nochmal ein etwas technischerer Post zu API-Design. Der ist dann interessant für alle Devs und Techies, stay tuned! ;)