Einsatz von WebGL zur Erstellung von Websites mit indexierbaren
Transcription
Einsatz von WebGL zur Erstellung von Websites mit indexierbaren
Einsatz von WebGL zur Erstellung von Websites mit indexierbaren Inhalten Christian Gerhards MASTERARBEIT eingereicht am Fachhochschul-Masterstudiengang Interactive Media in Hagenberg im September 2015 © Copyright 2015 Christian Gerhards Diese Arbeit wird unter den Bedingungen der Creative Commons Lizenz Namensnennung–NichtKommerziell–KeineBearbeitung Österreich (CC BYNC-ND) veröffentlicht – siehe http://creativecommons.org/licenses/by-ncnd/3.0/at/. ii Erklärung Ich erkläre eidesstattlich, dass ich die vorliegende Arbeit selbstständig und ohne fremde Hilfe verfasst, andere als die angegebenen Quellen nicht benutzt und die den benutzten Quellen entnommenen Stellen als solche gekennzeichnet habe. Die Arbeit wurde bisher in gleicher oder ähnlicher Form keiner anderen Prüfungsbehörde vorgelegt. Hagenberg, am 28. September 2015 Christian Gerhards iii Inhaltsverzeichnis Erklärung iii Vorwort vii Kurzfassung viii Abstract 1 Einleitung 1.1 Motivation . . . . 1.2 Problemstellung . . 1.3 Zielsetzung . . . . 1.4 Inhaltlicher Aufbau ix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 2 3 2 Verwandte Arbeiten 2.1 Probleme und Lösungsmöglichkeiten 2.1.1 Performanz . . . . . . . . . . 2.1.2 Ontologien . . . . . . . . . . 2.2 WebGL . . . . . . . . . . . . . . . . 2.2.1 Geschichte . . . . . . . . . . . 2.2.2 Browser Plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 5 5 6 6 6 3 Grundlagen 3.1 Ursprung von WebGL . . . . . . . 3.2 User-Experience und UI’s . . . . . 3.3 Suchmaschinenoptimierung . . . . 3.3.1 SEO Analyse . . . . . . . . 3.3.2 Onsite Optimierung . . . . 3.3.3 Offsite Optimierung . . . . 3.3.4 Controlling und Anpassung 3.3.5 Bekannte SEO Tools . . . . 3.3.6 Über Google . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 8 11 12 13 17 19 20 23 4 Stand der Technik . . . . . . . . . 26 iv Inhaltsverzeichnis 4.1 4.2 Frameworks und API’s für WebGL 4.1.1 Auflistung der Technologien 4.1.2 Unity . . . . . . . . . . . . 4.1.3 Unreal . . . . . . . . . . . . 4.1.4 Three.js . . . . . . . . . . . 4.1.5 X3DOM . . . . . . . . . . . Weitere Technologien . . . . . . . . 4.2.1 Server Sent Events . . . . . 4.2.2 WebSockets . . . . . . . . . 4.2.3 WebRTC . . . . . . . . . . v . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 26 26 29 29 30 30 30 30 31 5 Konzept 32 5.1 Gewähltes Szenario . . . . . . . . . . . . . . . . . . . . . . . . 32 5.2 Identifizierte Anforderungen und Funktionen . . . . . . . . . 33 6 Realisierung 34 6.1 Technologieentscheidung . . . . . . . . . . . . . . . . . . . . . 34 6.2 Konzept zur Implementierung des Szenario . . . . . . . . . . 35 7 Implementierung 7.1 Implementierung in Unity . . . . . . 7.1.1 Scene Manager . . . . . . . . 7.1.2 Article Information Manager 7.1.3 UI Manager . . . . . . . . . . 7.1.4 Helper . . . . . . . . . . . . . 7.2 Implementierung in JavaScript . . . 7.3 Screenshots des Prototyps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Ergebnisse 8.1 Responsive Webdesign . . . . . . . . . . . . . . . . 8.2 Mobile Devices . . . . . . . . . . . . . . . . . . . . 8.2.1 Akkulaufzeit . . . . . . . . . . . . . . . . . 8.2.2 Allgemeine Probleme . . . . . . . . . . . . . 8.3 User Experience . . . . . . . . . . . . . . . . . . . 8.3.1 Look . . . . . . . . . . . . . . . . . . . . . . 8.3.2 Feel . . . . . . . . . . . . . . . . . . . . . . 8.3.3 Usability . . . . . . . . . . . . . . . . . . . 8.4 Indexierungskriterien . . . . . . . . . . . . . . . . . 8.4.1 Geschwindigkeit . . . . . . . . . . . . . . . 8.4.2 Bereitstellung der Inhalte durch JavaScript 8.4.3 Crawling von Links . . . . . . . . . . . . . . 8.4.4 Gesamtergebnis . . . . . . . . . . . . . . . . 8.5 Besonders geeignete Inhalte . . . . . . . . . . . . . 8.6 Vergleich der Techniken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 37 37 39 39 40 41 42 . . . . . . . . . . . . . . . 47 47 48 48 49 49 49 50 50 50 50 51 52 53 54 54 Inhaltsverzeichnis vi 9 Resümee 56 9.1 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 A Technische Informationen A.1 Aktuelle Dateiversionen . . . . . . . . . . . . . A.2 Details zur aktuellen Version . . . . . . . . . . A.2.1 Allgemeine technische Voraussetzungen A.2.2 Verwendung unter Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 59 59 59 59 B Inhalt der DVD 60 B.1 Masterarbeit (PDF) . . . . . . . . . . . . . . . . . . . . . . . 60 B.2 Projekt Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Quellenverzeichnis 61 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Online-Quellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Vorwort Diese Masterarbeit ist während des Studiengangs Interactive Media an der Fachhochschule Oberösterreich - Campus Hagenberg entstanden. Danken möchte ich vor allem meiner Freundin Lisa Müller, welche mir mit Ratschlägen, Tipps und vielen Korrekturlesungen sehr geholfen hat. Auch für das große Maß an Geduld möchte ich mich bei ihr bedanken. Weiterhin möchte ich meiner Familie für Ihr Verständnis und ihre Geduld danken, die sie mir während der Arbeit entgegengebracht hat. Zudem danke ich FH-Prof. Mag. DI Dr. Andreas Stöckl für die Betreuung während der Arbeit und seine investierte Zeit. vii Kurzfassung In dieser Masterarbeit, werden unterschiedliche Möglichkeiten untersucht, Inhalte die mit WebGL dargestellt werden, für Suchmaschinen indexierbar zu machen. Ziel ist es, aufzuzeigen welche Technologien für diesen Zweck sinnvoll eingesetzt werden können und wie effektiv, effizient und zufriedenstellend diese Ansätze sind. Hierzu werden Informationen zu Frameworks, API’s und Technologien aus dem Bereich WebGL und anderen 3D-Web-Bibliotheken recherchiert und untersucht. Dadurch soll ein erster grober Einblick in den aktuellen Stand der Technik und die Möglichkeiten, die diese Technologien bieten, aufgezeigt werden. Anschließend wird mit ausgewählten Technologien aus diesem Bereich, eine beispielhafte Prototypen-Anwendung zu dem Szenario eines Online Shops, mit WebGL umgesetzt. Anhand dieser Umsetzung soll gezeigt werden, welche Möglichkeiten die gewählten WebGL Technologien bieten, um die Indexierung von WebGL Inhalten zu ermöglichen. Nach einer Einführung in den Bereich der SEO1 Grundlagen, User Experience im Bereich 2D, 3D und der zugrunde liegenden Technologie von WebGL, werden einzelne WebGL Frameworks vorgestellt. Dann wird ein Konzept der umzusetzenden Beispielanwendung erstellt und die Implementierung dieser beschrieben. Die Ergebnisse aus dem umgesetzten Szenario werden anschließend, in Bezug auf wichtige Aspekte der heutigen Webentwicklung, erläutert. 1 Search Engine Optimization. viii Abstract In this master thesis different possibilities are going to be tested, how to make content indexable for search engines which is generated by WebGL. Finally it should be shown which technology is the best and how effective, efficent and satisfying these possibilities are. Therefore information about frameworks, API’s and technologies around the topics WebGL and other 3D-web-libraries is going to be collected and tested. This should show the state of the art and the possibilities of these technologies. Moreover one technologie of the researched ones is going to be chosen to develop an example application for a different scenario of an online shop with WebGL. On the basis of these example it should be shown what the WebGL technologies offer to index WebGL content. After a short excursion to the basics of SEO, user experience in the field of 3D and WebGL, different WebGL frameworks are going to be presented. Afterwards a concept of the example application should be created and the implementation described. The results of the example scenario are finally going to be evaluated depending on important aspects of todays web development. ix Kapitel 1 Einleitung 1.1 Motivation In der heutigen Zeit müssen Websites nicht nur ansprechend aussehen, sondern auch semantisch gut ausgezeichneten Inhalt enthalten. Die Anforderungen des Web 3.01 spielen bereits eine wichtige Rolle. Diese Art von Content ist aber nicht nur hierfür relevant, sondern ist auch ein wichtiger Bestandteil einer guten Suchmaschinenoptimierung. Weiterhin nimmt die Zahl der Nutzer von mobilen Endgeräten immer weiter zu und somit auch die Nutzung von mobilen Websites. Um Websites auch auf diesen Geräten effektiv und effizient zur Verfügung zu stellen, ist Responsive Webdesign eine beliebte Herangehensweise. Der Nachteil ist jedoch, dass Websites mit einem flexiblen Raster, oft 12spaltig, sich häufig sehr ähneln und die gestalterische Einzigartigkeit, Individualität und Wiedererkennbarkeit daher verloren gehen. Mit WebGL besitzt das Web eine vollwertige Grafikpipeline, die ein starkes Werkzeug sein kann, um Websites auf ein neues interaktives Niveau zu heben und zudem innovative gestalterische Möglichkeiten erlaubt, welche zuvor nur mit externen Plugins möglich waren. Ein Problem, stellt hier jedoch der Inhalt dar, der mit einer solchen Grafik-API dargestellt wird. Der Inhalt wird nach außen hin gekapselt und ist somit nicht maschinenlesbar, was an alte Flash Zeiten erinnert, da auch hier die Inhalte für Suchmaschinen uneinsehbar waren. Ein konkretes Szenario, für einen interessanten Einsatz dieser Technologie, könnte beispielsweise ein Online-Store bieten. In der Regel geben Kunden auf einem solchen Portal einen Suchbegriff ein und erhalten eine Auflistung mit verschiedenen Artikeln mit Bildern und Preisen, und entscheiden sich dann ob sie diesen Artikel kaufen möchten. Ein spielerischer EchtzeitEinkauf, in einem 3-dimensional gerenderten Einkaufszenario würde eine interessante und neue Alternative darstellen. Zudem gibt es mit neuartiger Hardware, wie beispielsweise der Oculus Rift, die Möglichkeit in diese neuen 1 Semantic Web. 1 1. Einleitung 2 Einkauflandschaften durch virtuelle Realität, vollständig einzutauchen. So könnten neue interaktive, virtuelle, themenbasierte Einkaufslandschaften geschaffen werden, welche atmosphärisches einkaufen ermöglichen. Interessant sind auch die Fortschritte im Bereich der Augmented Reality, welche durch Technologien, wie der HoloLens oder der MagicLeap, das erweitern der Realität um virtuelle Gegenstände, auf ein völlig neues Level heben. Beispielsweise könnten Möbelstücke somit für den Benutzer sichtbar in den Raum projiziert werden, um so einen optischen Vergleich mit der Realität zu erlauben und einen realeren Eindruck zu vermitteln. 1.2 Problemstellung Inhalte in WebGL werden durch die GPU2 gerendert und sind dadurch nicht interpretierbar für externe Ressourcen. Suchmaschinen-Roboter benötigen die Informationen in Form von HTML, um diese indexieren zu können. Daher befinden sich grundsätzlich alle Inhalte in WebGL in einer Blackbox, die nach außen keine Möglichkeiten zur Interpretation bereitstellt. Weiterhin tritt das Problem auf, dass mobile Endgeräte eine relativ schwache GPU aufweisen und daher Probleme mit dem rendern von WebGL Szenen aufweisen. 1.3 Zielsetzung Ziel dieser Arbeit ist es, Möglichkeiten und Ansätze von Technologien, für die Bereitstellung der relevanten Informationen einer WebGL Szene, zu untersuchen und zu erläutern. Hierzu wird ein Szenario, mit einer vorher spezifizierten Technologie, umgesetzt. Diese Beispielanwendung wird anschließend nach aktuellen Kriterien der Webentwicklung bewertet. Hierdurch können die Möglichkeiten, die diese Technologie bietet, aufgezeigt und auf ihre Vorzüge und Defizite, für die Bereitstellung von indexierbaren Informationen für WebGL, evaluiert werden. Das gewählte Szenario befasst sich mit der Umsetzung eines prototypischen Online-Shops in WebGL. Hierbei sollen die typischen Möglichkeiten, die eine Standard Webanwendung bietet, in einer WebGL Umgebung umgesetzt werden, um dann überprüfen zu können, welche Informationen und Inhalte von einer Suchmaschine erfolgreich indexiert werden können. Konkret untersucht wird: • Welche aktuellen Technologien für die Darstellung von 3D Inhalten im Web existieren? • Welche aktuellen Frameworks, API’s, Engines, Bibliotheken existieren für WebGL? 2 graphics processing unit – Grafikprozessor. 1. Einleitung 3 • Welche allgemeinen Features und Nachteile bieten diese Technologien? • Welche Technologien, Technologie Stacks/Kombinationen eignen sich für die Bereitstellung von indexierbaren Informationen in Verbindung mit WebGL am besten? • Evaluierung der Technologien in Bezug auf aktuelle Aspekte der Webentwicklung. • Wie ist die Zukunft von WebGL einzuschätzen? Konkret umgesetzt wird: Eine WebGL Anwendung mit einer spezifizierten Technologie für einen prototypischen Online Shop. 1.4 Inhaltlicher Aufbau Die Arbeit unterteilt sich in 4 Abschnitte. Angefangen mit einer Einleitung und den Grundlagen. Gefolgt von der Umsetzung des Szenario. Zuletzt erfolgt die Erläuterung der Ergebnisse, sowie ein Resümee und Ausblick. Kapitel 1, enthält die Motivation, Problemstellung und konkrete Zielsetzungen der Arbeit. Welche Vorteile könnte WebGL dem Web bieten? Welche Probleme existieren bei dem Einsatz von WebGL und wie sieht die konkrete Zielsetzung dieser Arbeit aus? Kapitel 2, erläutert bekannte Probleme und Lösungsmöglichkeiten und gibt einen kurzen Überblick zu WebGL. Kapitel 3, erklärt die Grundlagen zu Suchmaschinenoptimierung, den 3D Technologien in Bezug auf WebGL und Grundwissen zu Usability in Bezug auf 2D - 3D User Interfaces. Kapitel 4, werden aktuell existierende Frameworks, API’s, Bibliotheken und Engines für die Entwicklung von WebGL Anwendungen vorgestellt. Hier werden bereits erste Features der Technologien und Unterschiede genannt. Kapitel 5, erläutert das Szenario, das mit der gewählten Technologie umgesetzt wird. Anschließend werden hieraus die benötigten Funktionalitäten, konkret für die benötigte Anwendung, abgeleitet. Kapitel 6, erklärt wie das konzipierte Szenario umgesetzt werden soll. Hier wird dargestellt, welche Technologie zum Einsatz kommt und warum diese gewählt wurde. Kapitel 7, zeigt die einzelnen Implementierungen des Szenario. Weiterhin werden die Kernfunktionalitäten und deren Funktionsweise erläutert. Zudem enthält es Abbildungen, welche die umgesetzte Anwendung zeigen. Anhand kurzer Erläuterungen werden diese erklärt. 1. Einleitung 4 Kapitel 8, beschreibt die Ergebnisse des Szenarios. Hier werden die Vorteile und Nachteile aufgezählt, die in Bezug auf die aktuellen Aspekte der Webentwicklung, auftreten. Zudem wird erklärt, als wie effektiv und effizient sich die Lösungsmöglichkeiten, erweisen. Kapitel 9, enthält das Resümee der gesamten Arbeit und einen Ausblick auf zukünftige Möglichkeiten für WebGL. Kapitel 2 Verwandte Arbeiten Dieses Kapitel behandelt Ansätze zur semantischen Auszeichnung von 3D Szenen, erklärt kurz bekannte Probleme und Lösungsmöglichkeiten und gibt einen kurzen Überblick zu WebGL. 2.1 2.1.1 Probleme und Lösungsmöglichkeiten Performanz WebGL wird von der GPU der Grafikkarte ausgeführt. Berechnungen erfolgen demnach durch die Grafikkarte und nicht durch die CPU des Rechners. Dies ist gleichzeitig ein Vorteil und ein Nachteil. Auf schnellen Rechnern mit einer guten Grafikkarte wird hier die CPU entlastet und die Ressourcen können anderweitig verwendet werden. Jedoch führt dies auf Systemen mit schwächeren Grafikkarten zu Performanz Einbußen. Besonders die mobilen Geräte sind hiervon betroffen. Smartphones und Tablets besitzen meist eine deutlich leistungsschwächere GPU, als moderne Desktopsysteme. Das führt dazu, dass Webanwendungen, die WebGL nutzen, meist nicht ordnungsgemäß auf dem mobilen Gerät funktionieren oder überhaupt nicht ausführbar sind. Hierzu kommt noch hinzu, dass JavaScript durch einen Just-in-Time Compiler kompiliert wird. Diese Technik ist grundsätzlich langsamer bei der Ausführung, als eine Ahead-over-Time Kompilation. Lösungsmöglichkeiten bietet hier bereits ein JavaScript Subset namens asm.js. Ein asm.js Programm verhält sich identisch, egal ob es in einer existierenden JavaScript Engine oder einer ahead-of-time kompilierenden Engine für optimierte Geschwindigkeit ausgeführt wird [19]. 2.1.2 Ontologien Durch den Einsatz von Ontologien1 für die Beschreibung einer WebGL Szene, könnten sich effizient, semantische Informationen, über die 3D-Szene 1 Eine Ontologie ist ein formales Wissensmodel. 5 2. Verwandte Arbeiten 6 bereitstellen lassen. Um diese Informationen jedoch nutzen zu können, müssen Crawler existieren, die diese Inhalte auch interpretieren können. Da die vorhandenen Suchmaschinen ein solches Feature nicht unterstützen, ist das anbieten einer Ontologie aus Gründen der Suchmaschinenindexierung relativ irrelevant. Mit dem Wachsen des Web 3.0 – Semantic Web, gewinnen diese Technologien jedoch immer weiter an Relevanz. Siehe die Rich Snippets unter Abschnitt 3.3.2 von Google. Eine interessante Ontologie stellt die Multilayered Ontology von Walzcak dar [8]. Diese Ontologie ist in verschiedene Schichten unterteilt, die je nach Art der 3D Szene, nur teilweise oder gesamt genutzt werden. Einfache Szenen mit statischen Modellen benötigen hierbei nur die untersten Schichten der Ontologie, während komplexere Szenen mit Animationen alle Beschreibungsschichten beanspruchen. Eine weitere relevante Ontologie für diesen Bereich stellt der MPEG-7 ISO Standard dar, dessen Erweiterung für die Annotation von komplexen Web 3D Szenen in [13] beschrieben wird. 2.2 2.2.1 WebGL Geschichte WebGL ist eine Grafik-Bibliothek und Programmierschnittstelle für 2D- und 3D Elemente. Sie wurde für die Nutzung im Webbrowser entwickelt. Die ersten Anfänge fanden bei Mozilla 2006 statt, mit ersten Canvas-Experimenten [20]. Seit 2009 besteht die Khronos Group, welche sich um die Weiterentwicklung und Festlegung der Standards zu WebGL kümmert. Mitglieder sind unter anderem Mozilla, Pixar, Apple und Google. WebGL nutzt das HTML Canvas Element um Inhalte darzustellen. Da die Grafikschnittstelle JavaScript als Programmiersprache verwendet, besitzt sie ebenfalls einen Garbage Collector, der die Arbeit erleichtern kann. 2.2.2 Browser Plugins Unity WebPlayer Plugin Das Unity Webplayer-Plugin ist noch aus der Zeit vor WebGL und wurde entwickelt um Programme, die mit der Unity Engine entwickelt wurden, im Browser anzuzeigen. X3DOM Browser Plugin Das X3DOM Plugin für den Browser, ist mittlerweile veraltet und sollte nicht mehr verwendet werden, da die aktuelle Version bereits WebGL verwendet. Kapitel 3 Grundlagen In diesem Kapitel werden die Grundlagen zu SEO, WebGL zugrunde liegenden Technologien und Historie, sowie relevante User Experience Aspekte näher erläutert. 3.1 Ursprung von WebGL In den Anfängen des Web bestand die einzige Möglichkeit darin, die GPU mit dem rendern von 3D Inhalten zu beauftragen, in dem Einsatz von Java Applets. Hierzu wurde die Java Bibliothek JOGL1 genutzt. Da Java jedoch eine Virtuelle Maschine nutzt, worüber der Browser keine Kontrolle hat, nahm die Nutzung über die Jahre ab. Eine neue Möglichkeit für die Darstellung von 3D Inhalten bot hier die Technologie Flash von der Firma Adobe. Mit der Bibliothek Stage3D war es ebenfalls möglich die GPU mit dem rendern von Inhalten zu adressieren. Ein von Anfang an vorhandenes Problem bei Flash war jedoch, dass die Software keine offene und freie Lösung war, sondern ein geschütztes Produkt der Firma Adobe. Das diese Technologie als valider Standard für das Web 2.0 akzeptiert werden würde, war daher sehr unwahrscheinlich. Java und Flash waren demnach nicht geeignet als Standard 3D-Technologie für das Web 2.0 [23]. Die ersten Experimente, die den Grundstein für das spätere WebGL darstellten fanden 2006 statt. Damals entwickelte Vladimir Vukićević von der Firma Mozilla einen ersten 3D Canvas Prototypen, der OpenGL ES 1.1 nutzte [20]. Nach diesem ersten Erfolg gründete die Khronos Group 2009 die WebGL Working Group. Die Khronos Group ist ein nicht-profitorientiertes Industriekonsortium, das sich mit der Erstellung von Open-Standard kostenfreien API’s für den Multimedia Bereich beschäftigt [28]. Unter anderem gehören zu dessen Mitgliedern Mozilla, Apple, Google und Opera. Im Jahr 2011 wurde die erste Version von WebGL released [29]. Zum Zeitpunkt der Arbeit stellt WebGL 2.0, basierend auf OpenGL ES 3.0, die aktuellste Ver1 Java OpenGL. 7 3. Grundlagen 8 sion dar. Diese Version befindet sich jedoch noch in der Entwicklungsphase. Daher wird WebGL 1.0 bisher noch von mehr Browsern unterstützt. Ein Unterschied zwischen diesen Beiden Versionen besteht beispielsweise in der Anzahl an gleichzeitig renderbaren Texturen. WebGL 1.0 ist nur in der Lage 8 Texturen gleichzeitig zu rendern, wohingegen WebGL 2.0 diese Anzahl auf 32 erhöht [43]. 3.2 User-Experience und UI’s Usability2 ist ein wichtiger Faktor in der Entwicklung von Software-Anwendungen jeglicher Art und spielt heutzutage eine wichtigere Rolle als je zuvor. Das Ergebnis von guter Usability beeinflusst direkt die User-Experience3 . Die Abbildung 3.1 zeigt, dass sich UX in 3 Bestandteile unterteilen lässt. Jeder der Bestandteile besitzt unterschiedliche Kriterien, die bei der Erzeugung positiver UX eine entscheidende Rolle spielen [41]. • Look Ist das Anwendungs-Design ästhetisch ansprechend und wirkt es vertrauensvoll? • Feel Wie angenehm ist es für den Nutzer die Anwendung zu nutzen? • Usability Ist die Bedienung intuitiv (Effizienz)? Kann das gewünschte Ziel mit der Funktionalität erreicht werden (Effektivität)? Verhält sich die Anwendung wie vom Nutzer erwartet (Zufriedenheit)? UX spielt besonders bei Anwendungen auf mobilen Geräten eine entscheidende Rolle, da der Nutzer hier nur begrenzte Möglichkeiten hat mit der Anwendung zu interagieren, i.d.R. antippen und wischen mit den Fingern. Zudem sollen auch Nutzer diese Apps bedienen können, die keinerlei Erfahrung mit Informationstechnologien besitzen. D.h. die Bedienung der Software sollte soweit wie möglich intuitiv erfolgen können. Dieser Effekt kann meistens erzeugt werden, indem bereits bekannte Bedienkonzepte aus der Realität abgeleitet werden, um diese dann in der Software nachzubilden. Besonders im Bereich der User-Interfaces4 von Software-Anwendungen spielt die UX eine konkrete Rolle. User-Interfaces werden in den meisten Fällen im 2-dimensionalen Raum dargestellt, also vollständig mit 2D Elementen (siehe Abb. 3.2). Bessere Möglichkeiten könnte jedoch das Einsetzen von 3D Elementen bieten, da diese die Wirklichkeit unserer 3-dimensionalen Welt genauer widerspiegeln. Wir lernen in unserem Leben, wie sich gewisse Dinge verhalten 2 Das Ausmaß, in dem ein Produkt durch bestimmte Benutzer, in einem bestimmten Nutzungskontext, genutzt werden kann, um bestimmte Ziele effektiv, effizient und zufriedenstellend zu erreichen. 3 Auch Nutzererlebnis, umschreibt alle Aspekte der Erfahrungen eines Users bei der Interaktion mit einem Produkt, Dienst, einer Umgebung, Software oder Einrichtung, kurz UX. 4 Die Abkürzung lautet UI. 3. Grundlagen 9 Abbildung 3.1: User-Experience Bestandteile [22]. Abbildung 3.2: Android Lollipop Desktop. 3. Grundlagen 10 Abbildung 3.3: Beispiel für 2.5D auf einer Portfolio Website [16]. und funktionieren und können dieses Wissen so gezielter in Anwendungen nutzen. Hierzu gibt es bereits erste Ansätze, jedoch stellen diese meist nicht einen vollständigen 3-dimensionalen Raum dar, sondern das User Interface besteht hier meistens aus 2.5D5 Komponenten. Ein Beispiel eines 2.5D Interface wird in Abbildung 3.3 dargestellt. Ein Video6 auf der Plattform Youtube zeigt, wie die Navigation und Interaktion durch den Nutzer auf einem Tablet mit einem 2.5D UI aussehen kann. Erste Ansätze und Ideen wie ein vollständiges 3D Interface die Benutzerführung und die User-Experience, im Gegenzug zu normalen 2D Interfaces verbessern kann, wird in einem Vortrag von Erik Mansson gezeigt. Hier werden unter anderem 3 Säulen genannt, die die Vorteile von 3-dimensionalen Inhalten gegenüber 2-dimensionalen Inhalten verdeutlichen sollen [17]. Nach Mansson lauten diese 3 Säulen, die sogenannten „Pillars of 3D Quality“ wie folgt: • Flexible Information Visualization (FIV): – skalierbare UI’s zum organisieren von kleinen bis riesigen Datensätzen (dots, cloud UI’s), – umfangreichere Übersichtsmöglichkeiten, nutzen von intuitiven, erlernten Navigationsmöglichkeiten/Metaphern, 5 6 2D Elemente die sich in einem 3D Raum befinden und sich 3-dimensional bewegen. https://www.youtube.com/watch?v=FtR_zA9elrM 3. Grundlagen 11 – Inhalt selbst als UI. • Naturalized Interaction (NI): – baut auf dem menschlichen Verständnis von Raum und physikalischer Beschaffenheit von Objekten auf, – Intuitive und leicht verständliche Interaktions Möglichkeiten, – Kognitive Belastung des Nutzers wird reduziert, Nutzen und Verstehen ist intuitiver. • Visual Style & Feedback (VSF): – mehr Möglichkeiten für Design und Layout, – stärkere Produktdifferenzierung und stärkere visuelle Ausdruckskraft, die funktionale Möglichkeiten und ästhetische Reize bieten. Bei dem Einsatz von 3D Elementen im Interface sollte darauf geachtet werden, bei welchen Interaktionen es Sinn macht diese durch 3-dimensionale Komponenten zu ermöglichen. Zudem spielt es auch eine Rolle, ob es für die Anwendung überhaupt sinnvoll ist von einem 2-dimensionalen Interface wegzugehen. Als schwierig erweist sich die Steuerung eines Objektes in einem 3-dimensionalen Raum, wenn diese nur mit Hilfe von Touchgesten durchgeführt werden kann. Auf einem Tablet und Smartphone sind dies die Einzigen primären Interaktionsmöglichkeiten. Die Abbildung 3.4 zeigt eine Anwendung, die bereits etwas über das 2.5D Konzept hinaus geht und dessen Bedienung durchaus intuitiv erfolgt. Durch das Verwenden von Shadern, Texturen und Bumpmaps7 entsteht eine realistische, visuelle Repräsentation von Interaktionselementen. Hierdurch und zusammen mit der 3-dimensionalen Darstellung, weiß der Nutzer direkt wie diese zu bedienen sind, da die Elemente aus der Realität sehr genau nachgebildet werden. Die Erfahrung, die der User in der Realität mit physischen Bedienelementen bereits gemacht hat, kann somit einfacher wiederverwendet werden. Zudem fällt es dem Nutzer auch leichter, die Funktion einer unbekannten Komponente zu erkennen, wenn diese sich visuell und vom erwarteten Verhalten, in Bezug zur Realität weniger unterscheidet. 3.3 Suchmaschinenoptimierung Bei der Optimierung einer Website für gängige Suchmaschinen sind mehrere Dinge zu beachten. Der Google Algorithmus berücksichtigt mehr als 200 Kriterien, die für die Bewertung einer Website und die damit verbundene Darstellung in den SERPS8 eine Rolle spielen [9]. Nur zu einigen Kriterien hat sich Google bisher aktiv geäußert, dass diese der Google-Bot wirk7 Bumpmaps ist ein Sammelbegriff für Texturen, die Höhen und Tiefen auf 2dimensionalen Strukturen simulieren. 8 Search Engine Result Pages. 3. Grundlagen 12 Abbildung 3.4: 3D Zylinder mit 3D Interaktions-Komponenten [17]. lich berücksichtigt. Über die Restlichen können nur Vermutungen angestellt werden. Im Folgenden wird genauer auf den Prozessablauf und die einzelnen Phasen einer SEO-Kampagne eingegangen und die damit verbundenen Optimierungsmöglichkeiten, die für den Google-Algorithmus durchaus ein Bewertungskriterium darstellen. 3.3.1 SEO Analyse Es wird mit der Ermittlung der Zielgruppen begonnen, indem jede potenzielle Zielgruppe mehrere Ziele erhält, um anschließend jeder einzelnen Gruppe eine Priorität zuordnen zu können. Bei der Wahl der Zielgruppen spielt die Customer Journey ebenfalls eine wichtige Rolle. Darunter versteht man die fünf Phasen die jeder Kunde durchläuft bis er sich zum Kauf eines Produktes entscheidet. Customer Journey [9]: • • • • • Phase Phase Phase Phase Phase 1: Awareness – Das Bewusstsein für das Produkt wird geweckt, 2: Favorability – Das Interesse für das Produkt wird verstärkt, 3: Consideration – Der Kunde erwägt den Kauf des Produktes, 4: Intent to purchase – Die Kaufabsicht wird konkret, 5: Conversion – Das Produkt wird gekauft. Für jede einzelne Zielgruppe sollten ebenfalls Teilziele festgelegt werden, die den einzelnen Phasen der Customer Journey entsprechen [9]. Anschließend kann mit der Ermittlung der Keywords begonnen werden. Nach welchen Wörtern und Phrasen suchen unsere potenziellen Zielgruppen? Für diese Aufgabe kann das Tool Keyword-Planer von Google AdWords verwendet 3. Grundlagen 13 werden. Jenes gibt Aufschluss darüber, welche Suchwörter wie häufig in die Google Suchmaschine eingegeben werden und gibt ebenfalls Vorschläge zu verwandten Suchanfragen. Ergänzend kann das Tool Google Trends verwendet werden, um die Keywords hinsichtlich des Suchaufkommens für bestimmte Regionen, Kategorien und Zeiträume zu ermitteln. 3.3.2 Onsite Optimierung Wenn die Keywords bekannt sind, hinsichtlich denen unsere Website optimiert werden soll, kann mit der Onsite Optimierung begonnen werden. Hierunter wird größtenteils die Optimierung der Inhalte verstanden, die sich direkt auf dem Webserver befinden. XML Sitemap Die XML-Sitemap stellt eine strukturierte Auflistung aller Webpages der Website dar. Sie ermöglicht es Suchmaschinen die Website mit allen vorhandenen Unterseiten schnell zu indexieren. Auch Änderungen an der WebsiteStruktur können Google so schneller mitgeteilt werden. Hierfür bietet Google in der Anwendung Webmaster-Tools, die Möglichkeit an, die entsprechende Sitemap per URL einzulesen, auf Fehler zu überprüfen und direkt an den Index zu übermitteln. robots.txt Die robots.txt Datei ist ein Textfile, das angibt, welche Inhalte von Suchmaschinen indexiert werden dürfen. Hierbei können genaue Angaben dazu gemacht werden, welche Suchmaschine welche Ordner oder Dateien durchsuchen darf oder welche nicht durchsucht werden dürfen. Hierbei ist zu erwähnen, dass die Suchmaschinen sich keinesfalls verpflichtend an diese Angaben halten. Zu Google ist jedoch bekannt, dass diese durchaus die Angaben der robots.txt beachtet. Beispielsweise sollte das Crawlen von Dateien wie 404Pages, Impressen und Ergebnis-Seiten von Formularen verneint werden. Keywords Eine Landing-Page, zu einem bestimmten Keyword, sollte dieses in der URL, in der Überschrift ersten Grades, sowie in den Meta-Tags und Title-Tag enthalten sein. Hierbei sollte das Keyword im Title-Tag direkt am Anfang stehen. Die Überschrift ersten Grades, sollte pro Seite nur einmal verwendet werden und ebenfalls das Keyword enthalten. Das Meta-Tag für die description sollte den Inhalt der Webpage kurz beschreiben und keinesfalls für alle Unterseiten gleich sein [6]. Die Website-Description wird auch auf der SERPS unter den jeweiligen Ergebnissen angezeigt. 3. Grundlagen 14 Images Den Bildern auf Websites sollten entsprechende Namen vergeben werden, die den Inhalt des Bildes beschreiben. Zusätzlich sollte zwingend ein alt-Attribut vergeben werden, das kurz beschreibt, was auf dem Bild dargestellt wird. Dieser beschreibende Text wird von Screenreadern gelesen und angezeigt wenn die Bilder nicht dargestellt werden. Ajax Ajax kann für Suchmaschinen ein Problem darstellen, weil der Request durch die Ajax-Engine ausgeführt wird und kein normaler Pageload stattfindet. W3C Validität Ob die W3C Validität eine der 200 Kriterien von Google ist, die für die Platzierung der Website in den Suchergebnissen eine Rolle spielen, ist seitens Google noch nicht bestätigt worden. Aber eine Fehlerfreie Website, die HTML konformen Code nach dem W3C Standard enthält, trägt dazu bei, dass Suchmaschinen die Inhalte einwandfrei indexieren können [9]. Duplicate Content Webpages die unter mehreren URLs erreichbar sind sollten vermieden werden, da Google z.b. eine Webpage die unter mehreren URL’s erreichbar ist als Täuschung wertet, weil der gleiche Inhalt mehrmals angeboten wird. Um den gleichen Effekt bei der Verwendung von mehreren Domains zu vermeiden, sollten sogenannte canonical-links eingesetzt werden. Hierdurch wird Google mitgeteilt, welche URL zu Anzeige auf der SERP verwendet werden soll. Link Namen Für die interne Verlinkung von internen oder externen Webpages sollten immer aussagekräftige Link-Namen vergeben werden, die den Inhalt der Zielseite beschreiben. Links wie hier oder klick mich sollten vermieden werden, da Google den Namen und den Inhalt der Zielseite versucht miteinander in Beziehung zu setzen. Das Keyword hier wird beispielsweise mit dem Adobe Reader assoziiert, da viele Websites unter diesem Schlüsselwort den Adobe Reader zum download anbieten [9]. NoFollow für Links Matt Cutts hat 2009 bekannt gegeben, dass das Nutzen des rel-Attributes mit NoFollow nicht länger zur Umverteilung des Linkwertes auf die übrigen ausgehenden Links führt, sondern das der Wert für diese Links und der 3. Grundlagen 15 Ankertext einfach verworfen wird [21]. Dennoch sollte bei Kommentarfunktionen und inhaltsfernen Verlinkungen, für die der Website-Inhaber keine Verantwortung übernimmt, dieses Attribut verwendet werden. Domain Trust Je älter der Domain Name ist, desto höher ist der Trust den Google der Website entgegen bringt. Der Trust-Wert spielt für die Platzierung einer Website, in den Ergebnisseiten also eine Rolle. Daher brauchen auch optimierte Websites mit einer neuen Domain einiges an Zeit, bis diese in den SERPs auf entsprechender Platzierung auftauchen. Strukturierte Daten Es gibt zwei Möglichkeiten wie Google mitgeteilt werden kann, das die Website strukturierte Daten enthält. Die einfache und schnelle Variante ist, die Markierung der Inhalte auf der Website mithilfe des Data-Highlighter in den Webmaster-Tools. Hier können die Textabschnitte direkt gewählt und entsprechend gekennzeichnet werden. Die andere Variante besteht darin den Inhalt im HTML-Code direkt mit Microdata9 oder RDFa10 auszuzeichnen. Zum Zeitpunkt dieser Arbeit hat Google gerade den neuen Typ JSON-LD eingeführt, mit dem jetzt ebenfalls die Website mit strukturierten Daten angereichert werden kann [26]. JSON-LD muss hierbei nicht, wie die anderen Formate, mit dem HTML-Code verzahnt sein, sondern kann auch dynamisch mittels JavaScript in die Seite integriert werden. Die Stelle an dem JSON-LD ausgegeben wird, spielt dabei keine Rolle. Google nutzt die strukturierten Daten unter anderem um Informationen direkt im Knowledge-Graph11 anzuzeigen und um die SERPs mit semantischen Informationen anzureichern. Load Time Zu lange Ladezeiten können das indexieren und crawlen der Seite verlangsamen und dazu führen, dass Google die Website niedriger rankt [11]. Um ein schnelles Laden von Websites, vor allem für mobile Geräte zu ermöglichen, kann auf folgende Dinge geachtet werden [38]: • Lade device-spezifische Images mithilfe des Background properties und css-media-queries. • Verringere externe Style-Sheet Requests, besser ein großes externes CSS-File. 9 Microdata ist eine WHATWG HTML Spezifikation um Metadaten in existierende Websites zu platzieren. 10 Das Resource Description Framework in Attributes ist eine W3C Empfehlung, um Metadaten in HTML, XHTML und xml einzubinden. 11 Stellte aufbereitete und kompilierte Suchergebnisse zu bestimmten Themengebieten in den SERP’s dar. 3. Grundlagen • • • • • • • 16 CSS3 Effekte anstatt Bilder nutzen. Nutze die Möglichkeit von DATA-URI12 . Nutzen von Inline-SVG’s13 . Nutzen von CSS-Sprites. Nutzen von Font-Icons. Verringern der Anzahl an Redirects. Reduziere Client-seitige Prozesse mit JavaScript. Themenrelevanter Content Inhalt, der direkt mit dem Thema bzw. den Keywords der Webpage zu tun hat, ist die stärkste und effektivste Maßnahme der Onsite-Optimierung. Je mehr Inhalt die Webpage zu einem bestimmten Thema oder Keyword bereitstellt, desto wahrscheinlicher ordnet Google die Website diesem Keyword zu. Hierbei spielt die relative Termgewichtung eine wichtige Rolle [42]. Die Gleichung für die Berechnung sieht wie folgt aus, TW (𝑖) = WDF (𝑖) · IDF (𝑖), (3.1) und gibt an, zu welchem Verhältnis ein Wort innerhalb einer Website, in Bezug zu allen indexierten Webpages, gewichtet wird. Generell berechnet die Gleichung 3.1 also, in wie weit ein Wort in einem Dokument vorkommt und wie relevant dieses zu dem Gesamtkorpus aller indexierten Dokumente ist. Die Gleichung für die relative Termgewichtung setzt sich dabei aus zwei Teilen zusammen. Die Within Document Frequency (Gl. 3.2), WDF (𝑖) = log2 (Freq(𝑖, 𝑗) + 1) , log2 (𝐿) (3.2) gibt an, wie häufig ein Term 𝑖 innerhalb eines Dokumentes 𝑗 vorkommt. Demnach gibt der Ausdruck Freq(𝑖, 𝑗) die Häufigkeit des Wortes 𝑖 in Dokument 𝑗 an. Dieser Wert wird ins Verhältnis zum Vorkommen aller übrigen Terme des Dokumentes gesetzt. Hierbei gibt 𝐿 die Gesamtzahl aller Wörter im Dokument an. Somit erhält man die dokument-spezifische Wortgewichtung, mit Bezug auf alle im Dokument verwendeten Wörter. Die Inverse Document Frequency (Gl. 3.3), IDF (𝑖) = log 𝑁 , 𝑛𝑖 (3.3) stellt ein Korrektiv dar, indem es die Häufigkeit an Dokumenten, zu einem bestimmten Term miteinbezieht [42]. Sie setzt die Anzahl aller bekannten Dokumente 𝑁 ins Verhältnis zur Zahl der Dokumente 𝑛, welche den Term 𝑖 12 13 Erlauben das einbinden von Bildern als Text. Das Einbinden von SVG’s direkt als Text. 3. Grundlagen 17 enthalten. Beide Gleichungen miteinander multipliziert ergeben die relative Termgewichtung eines Dokuments zu einem Wort, im Verhältnis zu allen weiteren Dokumenten [42]. Ergänzend ist zu beachten, dass eine KeywordDensity von 2%–5% als optimal angesehen wird [9]. Höhere Werte können als Keyword-Spaming angesehen werden und zum Abstrafen der Website führen. 3.3.3 Offsite Optimierung Bei der Offsite Optimierung geht es nicht mehr darum, die eigenen Quellcode Dateien zu optimieren, sondern den externen Linkaufbau zu verbessern. Es geht darum, dass möglichst viele Links von externen Websites auf die Zielwebsite verweisen. Dabei spielt der Kontext, in dem diese sogenannten Backlinks auf den externen Websites auftauchen, eine wichtige Rolle. Der Inhalt, der verweisenden Webpages, sollte für den Nutzer einen Mehrwert bzw. inhaltliche oder Themen relevante Überschneidungen mit der Zielseite aufweisen. Websites, die keinerlei inhaltliche Relevanz zu der verlinkten Website haben, wirken kontraproduktiv und es besteht die Möglichkeit einer Abstrafung seitens Google. Im Folgenden werden Einige interessante Möglichkeiten aufgezählt, die einen sinnvollen Linkaufbau darstellen und die auch für den Benutzer einen tendenziellen Mehrwert aufweisen. Die sinnvolle Benennung der Links spielt auch hier wieder eine entscheidende Rolle. Die Linknamen sollten den verlinkten Inhalt beschreiben. Page-Rank Bei der Offsite Optimierung spielt der Page-Rank von Google eine wesentliche Rolle. Dieser gibt an, wie viele Websites auf die Zielseite verweisen und wie wertvoll jeder einzelne Link dieser Seiten einzuschätzen ist. Hieraus wird ein Rang errechnet, der die Relevanz einer Website allgemein wiedergeben soll. Zwar wird der Page-Rank, nicht mehr von Google nach Außen kommuniziert, dennoch aber von Google angewendet. Die folgende Gleichung PR(𝑖) = (1 − 𝑑) + 𝑑 ∑︁ PR𝑗 𝑐𝑗 (3.4) 𝑗∈𝑀 stellt die Berechnung für den PageRank dar. Hierbei gibt die Variable 𝑀 , der Gl. 3.4, die Menge aller Websites an die auf 𝑖 zeigen. Demnach stellt 𝑖 die Zielwebsite des zu ermittelnden Pages-Ranks dar und 𝑗 eine Website aus der Menge 𝑀 . Die Anzahl aller ausgehenden Links einer spezifischen Website 𝑗 wird durch 𝑐 dargestellt und PR𝑗 stellt den PageRank von der Website 𝑗 dar. Die Variable 𝑑 stellt einen Dumping Faktor zwischen 0 und 1 dar. 3. Grundlagen 18 Externe Landingpages Neben den Landingpages auf dem eigenen Webserver, besteht auch die Möglichkeit der Nutzung von externen Landingpages. Social Media Plattformen stellen eine kostenlose Möglichkeit dar, eine effektive Landingpage zu erstellen. Eine weitere Möglichkeit bieten die kostenlosen Blogsysteme. Jedoch müssen diese externen Websites regelmäßig mit Inhalt gefüllt werden, der auch Themen relevant ist. Google News Google News ist ein System, indem Inhalte nicht von Redakteuren gepflegt werden, sondern das automatisiert Informationen aus News-Seiten pullt, um diese dann auf den eigenen Plattformen anzubieten. Hierzu besteht die Möglichkeit, dass ein Website-Betreiber Google die URL seiner Website mitteilen kann und Google dann entscheidet, ob diese Website in den Website-Pool aufgenommen wird. Hierzu stellt der Konzern jedoch bestimmte Richtlinien bereit die eingehalten werden müssen. Dadurch, dass die News auf den Google Plattformen einen Link zu der Original Website enthalten, entsteht so eine effektive Backlink Struktur. Weiterhin rankt Google die Websites automatisch höher, wenn die News auf der Website qualitativ hoch sind und häufig geklickt werden. Linkbaits Der Begriff Linkbait bezeichnet einen Zustand oder eine Aktion, in dem eine Website mehrmals von anderen Websites verlinkt wird, ohne dass die Zielwebsite wiederum auf diese Websites verweist. Dieser Zustand kann erreicht werden, indem die Zielwebsite, den anderen Websites etwas anbietet und diese dadurch auf die Zielwebsite verweisen. Beispielsweise monatliche Auszeichnungen oder Prüf- und Testsiegel. Linkwheels Linkwheels gehören zu der Kategorie der Black-Hat Maßnahmen für SEO Optimierungen und können daher zu der Entfernung der Website aus dem Index führen. Hierbei werden mehrere Websites aufgebaut, die mit ihrer Gegenseitigen Verlinkung eine Art kreisförmige Verkettung bilden. Website A verlinkt auf Website B und Website B auf Website C usw. bis Website F wiederum auf Website A verlinkt. Zusätzlich verlinken alle Websites auf die eigentliche Zielseite. SEO-Pyramiden Diese Möglichkeit der Suchmaschinenoptimierung gehört ebenfalls zu den Black-Hat Maßnahmen. Die zu optimierende Website steht hierbei an der 3. Grundlagen 19 Spitze der Link-Pyramide. Das Fundament der Pyramide bilden hierbei primitivere Inhaltstypen, wie beispielsweise Blog-Kommentare, Twittereinträge, Facebook-Kommentare usw. Diese unterste Ebene verlinkt auf eine mittlere Ebene von Websites, welche wiederum auf die Spitze, der eigentlichen Zielseite verlinken. 3.3.4 Controlling und Anpassung SEO ist ein fortwährender Prozess und muss daher permanent kontrolliert werden. Hierzu können allgemeine Fragen gestellt werden. • • • • • • Welche Auswirkungen hatten die einzelnen Maßnahmen? Welche Ziele wurden erreicht? Was kann verbessert werden? Wie ist das Content-Quellcode-Verhältnis? Wie ist die Keyword-Dichte? Wie sind die internen Links und title-tags eingebunden? Google Analytics Google Analytics erlaubt das Kontrollieren wichtiger Indikatoren in Hinsicht auf den Website Erfolg. Diese sind die Benutzerquellen, Verhalten, Zielgruppen und Conversions. Unter anderem können folgende Informationen festgestellt werden. • Aus welchem Standort haben die Nutzer auf die Website zugegriffen? • Von welcher Quellseite greifen die Nutzer zu? • Mit welcher Technologie/Device/Provider greifen die Nutzer auf die Website zu? • Wie hoch ist die Anzahl der neuen und wiederkehrenden Besucher? • Eingegebene Keywords der Nutzer? • Zielvorhaben/Converions definieren und messen, • Websitegeschwindigkeit, • Zielseiten und Ausstiegsseiten, Verweildauer. Google Alerts Um Mitbewerber und potenzielle neue Konkurrenten im Auge behalten zu können, kann das Tool Google Alerts verwendet werden. Dies ermöglicht die Benachrichtigung per E-Mail, falls eine neue Webpage mit vorher definierten Keywords von Google indexiert wird. 3. Grundlagen 20 Kontrollen automatisieren Da eine manuelle Kontrolle des Rankings für alle Keywords relativ zeitaufwändig ist, sollte dieser Prozess automatisiert werden. Hierzu existieren ebenfalls einige Tools, die das Anlegen von Keywords ermöglichen und diese auf Suchmaschinenplatzierungen automatisiert überprüfen und protokollieren. Unter anderem existieren hier die Tools Free Monitor for Google und cuteRank. Weiterhin sollte die Überprüfung der Keyword-Dichte mithilfe eines Programmes erfolgen. Hierzu kann das Tool Ranks.nl verwendet werden. Eine Plattform, die die Features mehrere Tools vereint, ist Sistrix. 3.3.5 Bekannte SEO Tools Sistrix Sistrix vereint mehrere Techniken, die für SEO genutzt werden können. Unter anderem, wie viele Links, Domains oder Class-C Netze auf die eigene Seite verweisen. Weiterhin kann die Toolbox ermitteln, zu wie vielen Keywords der Webauftritt im organischen Index steht. Es kann auch ermittelt werden zu wie vielen gekauften Webanzeigen, mit vorkommenen Keywords, die Website im Index von Google steht. Weitere Features stellen die Social Signals dar. Diese geben an, wie stark die Domain in den sozialen Medien geteilt oder geliked wurde. Das wichtigste Feature ist jedoch der Sichtbarkeitsindex [37]. Dieser Index gibt an, zu welchem Grad die Website in der Suchmaschine Google sichtbar ist. Hierzu werden die Top 100 Ranks, zu einem vordefinierter Pool an 250.000 Keywords14 , wöchentlich untersucht. 10% dieser Keywords sind abhängig von saisonalen Faktoren oder Ähnlichem. Bei einer Fussball Weltmeisterschaft beispielsweise, werden entsprechende Keywords durch Wörter wie „WM“ ersetzt. Jede Webpage des eigenen Webauftritts wird anschließend auf Position und potenziellem SearchTraffic bewertet. Steht die Seite zu einem Wort mit hohen Suchvolumen im Index, ergibt dies eine höhere Punktzahl, als zu einem Wort mit niedrigerem Suchvolumen. Hinzu kommt noch die Punktzahl für die Position zu dem Keyword auf der SERP. Je weiter die Webpage vorne liegt, desto mehr Punkte erhält diese. Die resultierende Punktzahl wird anschließend für alle Webpages der Website summiert und ergibt den Sistrix Sichtbarkeitsindex [36]. Die Abbildung 3.5 zeigt einen Ausschnitt des Sistrix Dashboards, am Beispiel für den Online-Händler Amazon15 . SEOlyze SEOlyze ist ein Tool für die Inhalts-Optimierung [34]. Zwar sind auch Features, wie die automatisierte Rangverfolgung zu den Google Suchergebnis14 15 Nur in Deutschland 250k, in anderen Ländern sind es 1.000.000 Keywords [36]. http://www.amazon.de. 3. Grundlagen 21 Abbildung 3.5: Sistrix Dashboard. sen möglich, jedoch ist dies kein Alleinstellungsmerkmal. Interessanter sind hier die Möglichkeiten für die WDF*IDF Analyse und einige LesbarkeitsAnalysen. Die Abbildung 3.3.5 zeigt ein Diagramm der genannten Analyse, für gegebene Keywords. Zu sehen sind hier die maximalen Werte, die durchschnittlichen Werte und die Werte des Referenzprojektes. Dieses Referenzprojekt, dient als Keyword-Quelle und um Vergleichswerte zu erhalten. Die Grundidee ist, somit einen Leitfaden zu erhalten, in welche Richtung der Text verbessert werden muss, um ähnliche Ergebnisse wie das Referenzprojekt zu erzielen. Die Lesbarkeits-Analyse verwendet unter anderem den Flesch-Grade und die Wiener Sachtextformel. Der Flesch-Grade ist für mehrere Sprachen anwendbar und nutzt hierbei die Anzahl an Wörtern, die Silbenlängen und die Satzlängen, um einen Wert zu ermitteln [7]. Dieser Wert kann zwischen 0 – 100 liegen. Hierbei wird je nach Punktzahl dem Text ein Alter in Jahren zugeordnet, welches der Nutzer haben sollte, um den Text zu verstehen, siehe Tabelle reftab:flesch. Die Gleichung FRE 𝑑𝑒 = 180 − ASL − (58, 5 · ASW ). (3.5) zeigt die Berechnung des Flesch-Grades. Hier steht die Variable 𝐴𝑆𝐿 für die ∅-Satzlänge (gesamt Anzahl Wörter/Gesamt Anzahl Sätze) und die Variable 𝐴𝑆𝑊 für die ∅-Silben Anzahl per Wort (gesamt Anzahl Silben/Gesamt Anzahl Wörter). Die Wiener-Sachtextformel hingegen ist nur für deutsche 3. Grundlagen 22 Tabelle 3.1: Flesch Grade. Punkte Lesbarkeit akademisches Jahr 0 – 30 sehr schwer 30 – 50 schwer 50 – 60 mittel schwer 60 – 70 mittel 70 – 80 mittel leicht 80 – 90 leicht 90 – 100 sehr leicht akademisch 13 - 15 Jahre 11 Jahre Abbildung 3.6: Diagramm von seolyze.com zur Word Document Frequency und Inverse Document Frequency Analyse mit dem zusätzlichen Korrekturfaktor 𝑝. . Texte geeignet und teilt Texte in akademische Jahre ein, die der Nutzer haben sollte [7]. onpage.org Onpage.org stellt eine reines Tool für die Onsite-Optimierung dar. Es ermittelt eine Vielzahl an Key-Performance-Indikatoren und stellte diese übersichtlich dar [32]. Hierbei werden die KPI’s in 4 verschiedene Kategorien eingeteilt. Die folgende Auflistung stellt diese mit einem Auszug von jeweiligen beispielhaften Indikatoren dar: 3. Grundlagen 23 • easy to implement KPI’s, – – – – Header-Status, Title Länge, Robots.txt, Meta-Tags, • evaluation options, – – – – Duplikate, Kompression, Sitemap, css, js, • structure and architecture, – – – – img-Tags, first-byte-time, Ladezeit, url-Länge, • advanced optimization, – Genutzte Links, – Canonical. Die Abbildung 3.7 zeigt einen Ausschnitt des onpage.org Dashboards, am Beispiel für die Website16 der Fachhochschule Oberösterreich. 3.3.6 Über Google Um einen optimalen Prozess der Suchmaschinenoptimierung zu gewährleisten müssen auch allgemeine Informationen über Google beachtet werden. Hierzu gehören auch Informationen aus der Vergangenheit, um zukünftiges Verhalten abschätzen zu können. Google Updates Google hat im Laufe der Zeit mehrere Updates zur Optimierung der Suchmaschine veröffentlicht. Größere Updates erhalten dabei immer einen Namen als Bezeichner. Im folgenden sind die wichtigsten aufgeführt [9, 11, 35]. Diese Updates werden ständig aktualisiert, wobei in der folgenden Tabelle nur die erstmaligen Updates und nicht deren Aktualisierungen aufgeführt sind. 16 http://www.fh-ooe.at/. 3. Grundlagen 24 Abbildung 3.7: onpage.org Dashboard. 3. Grundlagen 25 Tabelle 3.2: Google Updates. Update Florida-Update Austin-Update Brandy-Update Allegra-Update Bourbon-Update Jagger Update Big Daddy Update Anti Google Bomben Update Buffy-Update Subdomain-AktualitätUpdate Brand-Update Mayday-Update Panda-Update Venice-Update Penguin-Update Hummingbird-Update Mobile-Update Phantom-Update Jahr 2003 Änderung Einführung der LocalRanks, Trustranks 2004 PageRank erhält themenrelevanten Aspekt 2004 Erkennung Doppelter Inhalte, MirrorPages 2005 Verbesserung der Verarbeitung von 302-Redirects 2005 Neusortierung des Google Index 2005 Erkennung von Linknetzwerken, Spamseiten, Werbeseiten 2006 Problembehebung von CanonicalURLs, Hijacking 2007 Filter für Google Bomben 2007 Einführung verwandte Suchvorgänge, Änderung der Gewichtung von Einwort Anfragen 07/08 Subdomains werden wie Verzeichnisse behandelt, Aktuelle Inhalte werden bevorzugt 2009 Suchverbesserung nach Markennamen 2010 Longtail-Keyword Ranking Veränderung 2011 Abstrafung von kopiertem Content 2012 Berücksichtigung lokaler/regionaler Ergebnisse (durch GPS, IP) 2012 Abstrafung von Keywordspaming, auffälligen Linkstrukturen 2013 Verständnis von komplexen Sätzen, Sprachsteuerung 2014 Index für mobile Sites 2015 unbekannt, Vermutung ContentUpdate Kapitel 4 Stand der Technik In diesem Kapitel werden vorhandene Frameworks, API’s und technische Ansätze für die Umsetzung von WebGL Anwendungen erläutert. Weiterhin spielen auch Technologien eine Rolle, welche die Kommunikation von Server zum Client ermöglichen. 4.1 4.1.1 Frameworks und API’s für WebGL Auflistung der Technologien Die Tabelle 4.1 zeigt eine Auflistung von WebGL Frameworks welche für die Umsetzung von unterschiedlichen Anwendungsszenarien verwendet werden können. 4.1.2 Unity Die Unity Engine, von der Firma Unity Technologies mit Sitz in San Francisco, Amerika, ist eine vollwertige Game Engine. Sie nutzt ein Entity-System. Diese Entities, können um vordefinierte oder selbst entwickelte Komponenten, ergänzt werden. Mit ihr können Anwendungen für die Plattformen Windows, Mac, iOS, Linux, Android, Blackberry, Tizen, Wii, WiiU, Xbox360, XBox One, PS3, PS4, PSVita, Oculus Rift, Gear VR, Android TV, Samsung SMART TV, sowie für den eigenen Unity Webplayer und Standalone Anwendungen für WebGL im Browser entwickelt werden. Neben digitalen Spielen eignet sich die Engine auch für Anwendungen aus dem Bereich der digitalen Medien. Durch die große Asset Pipeline, die sehr viele gängige 3D-Package Formate aus den bekannten Modelierungsanwendungen, wie 3D Studio Max, Maya, Cinema 4D, Lightwave, Blender, Cheetah 3D etc. unterstützt, wird das Nutzen und Importieren komplexer 3D Modelle ermöglicht. Die Benutzeroberfläche besteht aus einem Editor, in dem die aktuelle Szenerie betrachet und bearbeitet werden kann. Als Skriptsprachen können Javaskript, C# oder Boo verwendet werden. Da Unity hauptsächlich auf 26 4. Stand der Technik 27 Tabelle 4.1: WebGL Frameworks. Kriterien Beschreibung Realismus Physik Editor Sprache Limitation Doku, Comm Lernaufwand Features Unity Unreal X3Dom Three.js copperlicht Crossplattform GameEngine hoch ja ja C#, js, boo nicht source-code offen super Crossplattform GameEngine hoch ja ja c++ optimal für AAA-titel WebGL Framework für x3d mittel nein nein x3d funktionsarm JS Framework für WebGL mittel nein teils js funktionsarm JavaScript GameEngine mittel nein teils js funktionsarm schwach schwach mittel schwach mittel hoch gering mittel mittel asm.js asm.js HTML js library / Anwendungen abzielt, die etwas im 3-dimensionalen Raum darstellen, werden die Positions- und Rotationsdaten durch 3-dimensionale Vektoren und Quaternionen repräsentiert. Die Einstellungen der Gameobjekte und Assets innerhalb des Projektes, können durch den Inspector erfolgen. Dieses Toolkit stellt eine grafische Benutzeroberfläche zur Verfügung, um Konfigurationen an allen Elementen der Objekte vornehmen zu können [5]. Generell können alle Einstellungen auch durch Skripte erfolgen, wodurch auch eine Manipulation der Objekte zur Laufzeit ermöglicht wird. Das Konzept der Prefabs1 erlaubt es GameObjects mit den entsprechenden Komponenten und der benötigten Programmlogik als wiederverwendbares Objekt abzuspeichern. Dies ermöglicht eine automatisierte Instanzierung von Kopien dieses Objektes. Die Spiellogik wird in der Regel in Klassen implementiert, die von der Klasse „MonoBehaviour“ abgeleitet sind. Neben einer Kerninteraktionsschleife stellt diese Klasse auch Methoden für die Verwaltung von Gameobjekten und weiteren Operationen bereit. Zudem existieren sogenannte Event– Funktionen, die in einer festgelegten Reihenfolge von dem System aufgerufen werden [18]. Abbildung 4.1 zeigt den Lifecycle und die Reihenfolge der Aufrufe, der unterschiedlichen Event-Funktionen. 1 Prefabrication. 4. Stand der Technik Abbildung 4.1: Unity Lifecycle Flowchart [18]. 28 4. Stand der Technik 4.1.3 29 Unreal Die Unreal Engine von der Firma Epic Games, mit Sitz in Raleigh, North Carolina, Amerika, ist eine Crossplatform für die Entwicklung von Computerspielen. Hauptsächlich wurde diese Engine für die Entwicklung von AAAGames2 genutzt. Mittlerweile kann für die Systeme Windows PC, Mac OS X, iOS, Android, Oculus Rift, Gear VR, Linux, SteamOS, HTML5, XBox One und PS4 entwickelt werden. Der Source Code der Engine ist komplett quelloffen und kann nach Bedarf angepasst werden. Unreal Programmlogik wird in C++ geschrieben. Eine alternative Möglichkeit bietet jedoch der Einsatz von sogenannten Blueprints, die in Unreal für visuelles Scripting verwendet werden. Hierdurch ist es auch möglich ohne Programmierkenntnisse eigene Logik zu erstellen oder bestehende C++ Klassen zu erweitern. Eine Besonderheit durch die Quelloffenheit stellt die Möglichkeit dar, die eigenen GameEngine Komponenten zu erweitern [40, 15]. Das bedeutet die Grundlogik von Actors, welche primitive Objekte in Unreal darstellen, selbstständig nach den Projektbedürfnissen anpassen zu können. Dies stellt zu der Unity Engine ein großen Unterschied dar, da hier die GameObjects nur um zusätzliche Komponenten erweitert werden können, aber die Grundstruktur unveränderbar ist. Blueprint-Classes implementieren in Unreal das Konzept von wiederverwendbaren Objekten, ähnlich dem Konzept der Prefabs in Unity. Actors können um spezifische Komponenten erweitert werden und dann als Blueprint-Class gesichert werden. 4.1.4 Three.js Three.js ist ein JavaScript Framework für die Erstellung von WebGL Inhalten. Für das darstellen der 3D-Szenen bietet das Framework hierzu verschiedene Renderer an. Der WebGLRenderer stellt die 3D Inhalte mithilfe von WebGL dar. Der CanvasRenderer nutzt kein WebGL, sondern die Canvas 2D Context API. Dieser kann als Fallback verwendet werden, falls der Browser kein WebGL unterstützt. Ein weiterer Render ist der CSS3DRenderer. Dieser stellt die 3D-Objekte mithilfe von CSS3 Properties dar. Hier wird das Property transform verwendet, um die Inhalte entsprechend mithilfe von CSS3 zu skalieren, rotieren, translieren und die Perspektive entsprechend anzupassen. Es besteht die Möglichkeit der Kombination von einzelnen Rendern, um spezifische Inhalte unterschiedlich darstellen zu können [1, 2]. Komplexere 3D-Elemente können mithilfe des WebGLRenderers dargestellt werden, wie das Model eines Bildschirms. Dieses kann dann durch ein Element überlagert werden, das durch den CSS3DRenderer dargestellt wird, wie beispielsweise der Inhalt, der auf dem Bildschirm dargestellt werden soll 2 Klassifikation für Videospiele mit hohem Entwicklungsbudget bzw. hohe Bewertung durch professionelle Redakteure. 4. Stand der Technik 30 [24]. Das ermöglicht das Darstellen von texturellen Informationen in HTML, welche auch von Suchmaschinen aufgefunden werden können. 4.1.5 X3DOM X3Dom ist ein open-source Framework für die Darstellung von WebGL Inhalten im Browser. Hierbei wird deklarativer 3D Inhalt in HTML5 integriert, der dann durch das Framework und WebGL dargestellt werden kann. Das Ziel des Frameworks ist es, die HTML5 Spezifikationen das W3C für deklarativen 3D Inhalt zu erfüllen. Hierbei werden die Informationen für die 3D-Szenen und Objekte als X3D Elemente im HTML5 DOM Tree hinterlegt. Hierbei soll die Manipulation des 3D-Inhaltes durch hinzufügen, verändern und löschen von DOM Elementen erfolgen [25]. 4.2 Weitere Technologien Die folgenden Technologien stellen verschiedene Funktionalitäten bereit, die sich bei der Verwendung von WebGL als sinnvoll erwiesen haben. Besonders in Bezug auf den Einsatz von Game-Engines zur Erstellung des WebGL Contents, da diese den Inhalt weitaus stärker kapseln, als reine JavaScriptEngines. Technologien, wie Websockets, Server-Sent-Events, WebRTC ermöglichen Echtzeit Kommunikation mithilfe eines zwei-Wege request-response Mechanismuses. In Single–Page–Anwendungen wird realtime-communicaton dazu verwendet, Daten zwischen Server und Client auszutauschen. Anstelle eines pollings auf der Clientseite können Push-Updates vom Server verwendet werden, um die Anwendungsdaten zu synchronisieren [10]. 4.2.1 Server Sent Events Server-Sent-Events erlauben das automatische Erhalten von Updates des Clients durch den Server, ohne das Senden eines Requests durch den Client. Beispiele für die Anwendung bieten Twitter, Facebook usw. Die EventSorce API ist standartisiert als Teil der HTML5 Spezifikation durch das W3C. 4.2.2 WebSockets Websockets ermöglichen eine bidirektionale, full-duplex Übertragung von Daten zwischen Client und Server, über eine einzelne TCP Verbindung. Hierbei startet der Client eine Anfrage an den Server, wobei nach der Datenübertragung jedoch die TCP-Verbindung bestehen bleibt. Damit sind weitere Übertragungen in beide Richtungen möglich. Die Websocket API ist durch das W3C standardisiert. 4. Stand der Technik 4.2.3 31 WebRTC Web Real-Time Communication ist ein offener Standard, der sich noch in der Standardisierungsphase durch das W3C befindet. Diese Technologie soll Videokonferenzen, Filetransfer, Chat und Desktopsharing von Browser zu Browser umfassen. Dadurch soll es auch ermöglicht werden, dass Daten zwischen Smartphones, PCs und Smart-TVs über eine einzelne Plattform ausgetauscht werden können. Die Übertragung von Dateien kann hierbei Peer-to-Peer3 erfolgen. 3 Auch P2P genannt, dezentrales Konzept eines Rechnernetzes in dem alle Teilnehmer gleichberechtigt sind, ohne zentralen Server. Kapitel 5 Konzept In diesem Kapitel wird das Konzept des gewählten Szenarios aufgeführt. Anschließend werden hieraus die benötigten Funktionalitäten für die umzusetzende Anwendung abgeleitet. 5.1 Gewähltes Szenario Für die Technologie wird ein Szenario für einen Möbel Online Shop gewählt. Die Produkte sollen hierbei auf einer Webpage durch HTML Text und als 3D-Objekt in einer WebGL Szene dargestellt werden. Statt nur einem Bild zu dem Produkt, steht dem Nutzer zusätzlich eine interaktive 3D-Szene zur Verfügung, mit der interagiert werden kann. Dabei sollen die jeweiligen Szenen zu den gegebenen Kategorien, Living, Sleep, Bath, Cook und Other fertig eingerichtete Räume mit den jeweiligen Möbeln darstellen. Der Aufbau einer Szene erfolgt durch das animierte hinaus bewegen von Objekten der vorherigen Szene und dem anschließendem hinein bewegen, aller 3DObjekte, der aktuellen Szene. Die Artikel werden ergänzend zu HTML auch in WebGL dargestellt. Der Nutzer soll die Möglichkeit haben, entweder über den WebGL Kontext mit der Website zu interagieren oder durch den HTML5 Inhalt. Hierbei soll gezeigt werden, dass Kernfunktionalitäten der Standard Web-Technologien, auch mit WebGL umgesetzt werden können. Da die Indexierung der Inhalte durch Suchmaschinen nur über HTML erfolgen kann, müssen der aktuell sichtbare HTML-Content und WebGL-Content synchron gehalten werden. Navigiert der Nutzer innerhalb von WebGL zu einer bestimmten Kategorie, wird eine Szene dieser Kategorie geladen. Diese Informationen müssen dann auch im HTML Kontext der WebPage angezeigt werden, indem der aktuelle Inhalt aktualisiert wird. Umgekehrt soll ein Kategorie-Wechsel, im HTML Teil der Webpage, ebenfalls eine Aktualisierung des WebGL Kontext erzeugen. Innerhalb der WebGL Szene soll ein Interface existieren, welches den 32 5. Konzept 33 Wechsel zwischen den Kategorien Living, Bath, Sleep, Cook und Other erlauben soll. Zudem existiert ein Button, der innerhalb einer aktuellen Kategorie die aktuelle Szene austauscht und durch eine neue Szene, der selben Kategorie, ersetzt. Hierzu werden die 3D-Modelle dynamisch aus dem Viewport1 des Nutzers bewegt und die neuen Objekte wieder hineinbewegt. Ein weiterer Button des Interfaces erlaubt das Wechseln zwischen einer fixen Kamera-Perspektive und einer First-Person-Kamera Perspektive. Letztere erlaubt das erkunden der Szene aus der Sicht einer Person. 5.2 Identifizierte Anforderungen und Funktionen Im folgenden werden die identifizierten Funktionen dargestellt: • • • • • • • • • 1 WebGL soll Kernfunktionalität beinhalten, Kategorie-Navigation innerhalb von WebGL, Kategorie-Navigation innerhalb von HTML, Kommunikation zwischen WebGL und HTML zur Synchronisation, Kategoriewahl stellt entsprechende Produkte der Kategorie in einer Szene dar, Szenen innerhalb einer Kategorie können gewechselt werden, Fixe Kamera Perspektive, First-Person-Camera Perspektive zur Erkundung der Szene, Auswahl eines Produktes öffnet Label mit Produkt-Informationen. Beschreibt das aktuelle Sichtfeld des Nutzers. Kapitel 6 Realisierung Im vorherigen Kapitel wurde das Konzept für das Anwendungsszenario, zum WebGL System erstellt. Anschließend wurden die wichtigsten Funktionalitäten der Anwendungen herausgefiltert und aufgeführt. Nun wird gezeigt, wie die Anwendung realisiert wurde, welche Technologie hierfür verwendet wurde und die Gründe für die Technologieentscheidung werden erläutert. 6.1 Technologieentscheidung Die Umsetzung des WebGL Teils des Prototyps erfolgt mit der Unity Engine. Die aktuelle Version der Crossplatform erlaubt die Verteilung der entwickelten Anwendung auch auf WebGL. Der C# Sourcecode wird zunächst in .NET Bytecode kompiliert. Während des Unity Build Prozesses compiliert der IL2CPP-Compiler den .NET bytecode dann in C++ Code, welcher wiederum durch den emscripten-Compiler in asm.js compiliert wird. Asm.js hat den Vorteil, dass es nahezu mit nativer Geschwindigkeit im Browser läuft. JavaScript Engines AoT1 -kompilieren diesen Code in sehr performanten nativen Code. Dieser ist somit erheblich schneller, als normales JavaScript [31, 39]. Unity wurde vor allem gewählt, weil die Entwicklung von Anwendungen sehr effizient möglich ist. Der Unity Editor ermöglicht das Betrachten der aktuellen 2D oder 3D Szene während der Programmierung, wodurch wiederum sehr zielgerichtetes Debugging möglich ist. Weiterhin besitzt die Engine Hilfmethoden, die u. a. nicht in Bibliotheken wie Three.js zu finden sind. Ein Beispiel ist die Methode für Veränderungen von Vektoren, Float-Werten und Rotationsdaten durch eine LERP-Smooth2 Funktion. Dies erlaubt das schnelle Animieren von weichen Bewegungen und Rotationen ohne unnötige Neuerfindungen des Rads. Für die Umsetzung des HTML-Teils wurde kein spezielles PHP-Framework 1 2 Ahead-of-time-Compiler lineare Interpolation durch eine weichere Kurve. 34 6. Realisierung 35 verwendet. Für die Frontend Entwicklung wurde allerdings Gulp3 mit npm4 und bower5 genutzt, da dies in manchen Fällen eine schnellere Entwicklung ermöglicht hat. Besonders die BrowserSync-Funktionalität hat sich als nützlich erwiesen, da diese ein direktes streamen des veränderten Inhaltes auf einen zweiten Bildschirm erlaubt. Bootstrap6 wurde verwendet um ein grundlegendes flexibles Layoutverhalten für den Prototypen zu erzeugen. 6.2 Konzept zur Implementierung des Szenario Da der WebGL Teil einige Zeit brauch bis er von der Browser Engine geladen wurde, wurde hier die Entscheidung getroffen, den Prototypen als SPA7 umzusetzen. Dies hat den Vorteil, dass die JavaScript Bibliotheken, sowie der in asm.js kompilierte Code nur ein einziges mal geladen werden muss. Einen Pageload bei jeder Nutzeraktion zu initiieren, würde die User-Experience sehr stark negativ beeinträchtigen. Dennoch muss darauf geachtet werden, dass Google alle Inhalte indexieren kann. Es ist bekannt, dass ein wichtiges Kriterium, für das Ranking auf Google’s SERP8 , die Ladezeit einer Website ist. Websites, die zulange zum Laden benötigen, werden dementsprechend im Ranking weiter unten eingestuft. Braucht der Ladevorgang extrem lange, kann der Inhalt unter anderem nicht indexiert werden. Seit 2014 ist Google in der Lage nicht nur den Quellcode zu analysieren, sondern auch den JavaScript-Teil selbstständig zu interpretieren und somit den veränderten Inhalt zu rendern und zu indexieren [33]. Die Verwaltung der Szenen bzw. die Repräsentation einer Website wird durch States realisiert. Für jede Seitenart gibt es einen State. Die benötigte State-Maschine wird in C# implementiert und sorgt für den Wechsel der einzelnen Szenen in dem WebGL Teil der Anwendung. Die Daten sollen per Json9 String bereitgestellt werden und werden von einem externen Server geladen. Durch, von dem Unity Framework initiierte Aufrufe von JavaScript Funktionen, auf der Website und umgekehrte Aufrufe von Unity Funktionen durch das JavaScript der Website, wird die Anwendung synchron gehalten. Damit die Browser History aufrecht erhalten werden kann, wird die HTML5 History API genutzt. Die Anwendung pusht neue State’s automatisch zum Browser oder lädt diese gegebenenfalls aus dem Browser Cache. Somit kann die Browser Navigation genutzt werden, obwohl keine neuen Seiten geladen 3 Streaming- und Build-Tool für die Entwicklung mit Web Technologien. node-package-manager. 5 Package Manager für das Web. 6 HTML, CSS, JS Framework für mobile Websites mit Responsive Webdesign. 7 Single Page Application. 8 Search Engine Result Pages. 9 Die JavaScript Object Notation, ist ein kompaktes Datenaustauschformat in Textform, das auch vom Menschen leicht verständlich interpretiert werden kann. Vergleichbar mit Xml. 4 6. Realisierung 36 wurden und die User Experience ist identisch zu einer Website, die nur durch statische Seiten repräsentiert wird. Kapitel 7 Implementierung In diesem Kapitel wird die Implementierung der identifizierten Anforderungen und Funktionen aus Kapitel 5 erläutert, sowie des Konzept aus Kapitel 6 im Detail erklärt. 7.1 Implementierung in Unity Die Implementierung erfolgte komplett in C#, da diese im Gegenzug zu JavaScript, eine strengere Typisierung aufweist. Vorteile strengerer Typisierung sind u. a. frühzeitige Fehlererkennung, beispielsweise schon zur Übersetzungszeit. 7.1.1 Scene Manager Der Kern der Anwendung stellt der SceneManager dar, der als StateMaschine implementiert wurde und nutzt das State-Pattern1 . Dieser enthält als Komponente die Klasse SceneManager. Diese Klasse SceneManager enthält eine Referenz auf die aktuelle Szene. Diese Szene ist eine Klasse, die von der abstrakten Klasse SceneState erbt und Methoden zum wechseln der States und laden von Objekten bereitstellt. Die State-Klasse enthält wiederum eine Referenz auf den SceneManager. Die Model Methoden befinden sich in der Klasse SceneManager und werden von den jeweiligen States aufgerufen. Hierdurch werden die Methodenaufrufe durch den State gekapselt und das Verhalten des Systems hängt von dem jeweiligen State ab. Der SceneManager enthält zu jeder Kategorie Art, Bath, Bed, Kitchen, Living und Other, ein Array mit serialisierten Assets der Klasse Scene. Die Klasse Scene enthält die aktuelle Kamera-Position und Rotation als Objekt der Klasse CameraPosition, sowie ein Array, das Objekte der Klasse ObjectPosition beinhaltet. Die Klasse ObjectPosition speichert die Position, 1 Das State Pattern stellt die Implementierung eines endlichen Automaten dar, der sein Verhalten abhängig vom aktuellen State ändern kann [3, 4, 12]. 37 7. Implementierung 38 Abbildung 7.1: Klassendiagramm des SceneManagers ohne AnimationsMember. Rotation und den Prefab-Namen eines einzelnen Objektes in der 3D-Szene. Somit enthält ein Objekt der Klasse Scene alle relevanten Information für den Aufbau einer 3D-Szene zu einer bestimmten Kategorie. Das Ändern einer Szene bewirkt auch das Senden eines Json String zur JavaScript Engine des Browser, damit dieser den HTML-Inhalt entsprechend anpassen kann. Wird nun eine neue Szene initiiert, werden die Informationen hierzu aus dem Objekt der entsprechenden Szene extrahiert und bei einem Object-Pooler die benötigten 3D-Modelle aktiviert. Die Benutzung eines Object-Pools hat den Vorteil, dass die 3D-Modelle nicht für jeden Wechsel einer Szene zerstört und neu instanziert werden müssen. Stattdessen werden sie deaktiviert und in einer Liste im Pool abgelegt. Werden nun neue Objekte benötigt, kann beim Pool angefragt werden, ob dieser noch genügend besitzt, ansonsten entscheidet dieser über eine neue Instanzierung von den gefragten Objekten. Dies ist wesentlich performanter, als reine Aufrufe von Destroy() und Instantiate(). Abbildung 7.1 zeigt ein Klassendiagramm des SceneManagers ohne AnimationsMember. 7. Implementierung 39 Abbildung 7.2: Klassendiagramm des ArticleInformationManagers. 7.1.2 Article Information Manager Die Klasse ArticleInformationManager wurde als Singleton2 implementiert und enthält eine Liste von Objekten der Klasse ArticleInformation. Die Klasse ArticleInformation beinhaltet alle relevanten Informationen über einen Artikel. Der ArticleInformationManager stellt eine Verbindung zum Zielserver her, der die Daten für die Artikel als Json-String bereitstellt. Der String wird dann deserialisiert und mit den erhalten Informationen wird ein neues ArticleInformation Objekt angelegt und in die Liste eingefügt, falls dieser Artikel nicht bereits schon in der Liste vorhanden ist. Zudem besitzt der ArticleInformationManager eine Methode zum serialisieren von Objekten zu einem Json-String. Diese Methode wird benötigt um dem Browser mitzuteilen, welche Artikel aktuell als HTML angezeigt werden müssen, um den HTML und WebGL Kontext synchron halten zu können. Sind alle Objekte deserialisiert worden und in die Liste eingefügt, werden die Informationen als Json-String an eine entsprechende JavaScript Funktion des Browsers gesendet, welche wiederum dafür sorgt, dass der Inhalt in HTML dargestellt wird. Abbildung 7.2 zeigt ein Klassendiagramm des ArticleInformationManagers. 7.1.3 UI Manager Die Klasse UIManager verwaltet die grafische Benutzeroberfläche und ist als Singleton implementiert. Die Klasse beinhaltet Referenzen zu allen UIElementen, sowie dem Ladebildschirm und dem Produkt-Panel. Beim Start der Anwendung aktiviert der SceneManager über den UIManager den Ladebildschirm und teilt dem UIManager mit, wie lange das Laden der Ob2 Das Singleton Pattern stellt sicher, dass es zu jeder Zeit nur eine Instanz der Klasse gibt und diese einen globalen Zugriffsmodifizierer bereitstellt [4]. 7. Implementierung 40 Abbildung 7.3: Der sichtbare Bereich einer Kamera, zwischen Near-Plane und Far-Plane. jekte dauern wird. Somit kann der UIManager nach Ablauf dieser Zeit die FadeOut-Animation des Ladebildschirm starten. Zu einem Zeitpunkt kann immer nur ein Button einer Kategorie aktiv sein. Weiterhin kümmert sich der UIManager um das Austauschen der Sprites von Buttons, die Ihren Zustand ändern können. Beim Klick des linken Mausbuttons wird ein Raycast3 von der Position der Maus aus gesendet, welcher senkrecht stehend von der Near-Plane der Kamera aus, in Blickrichtung, in die Szene gesendet wird. Trifft dieser Raycast auf ein Objekt und es handelt sich um einen Artikel, wird der Name des getroffenen Objektes ausgelesen und dem Produkt-Panel mitgeteilt. Die Abbildung 7.3 verdeutlicht den Aufbau eines Kamerasichtfeldes. Der getroffene Artikel enthält eine Komponente der Klasse ProductPanel. Die Klasse ProductPanel überprüft jedes Frame daraufhin, welchen Artikel es anzeigen muss und besorgt sich die entsprechenden Informationen vom ArticleInformationManager über eine statische Referenz. Anschließend werden die Informationen über referenzierte UI-Elemente dargestellt. Trifft der Raycast auf kein Objekt wird das Product-Panel deaktiviert falls es aktiviert sein sollte. Abbildung 7.4 zeigt ein Klassendiagramm des UIManagers. 7.1.4 Helper Damit schnell 3D Szenen aufgebaut und die relevanten Informationen über eine Szene schnell gespeichert werden konnten, wurde ein Unity-Plugin ge3 Aussenden eines Strahls zur Kollisionserkennung. 7. Implementierung 41 Abbildung 7.4: Klassendiagramm des UIManagers. schrieben, in Form einer AssetCreator-Klasse, welche die Objekte einer Szene traversiert und daraus automatisch ein Asset erstellt. Dieses Asset wird im Resources Ordner abgespeichert und kann anschließend noch manuell bearbeitet werden, falls Informationen, wie Position usw. angepasst werden müssen. Die folgende Auflistung zeigt die Informationen, die innerhalb des Assets zur Szene gespeichert werden: • Kamera-Position, • Kamera-Rotation, • Objekte der Scene, – Objekt-Position, – Objekt-Rotation, – Objekt-Name. 7.2 Implementierung in JavaScript Die Anwendung wird vom JavaScript des Browsers beim Aufruf einer URL und Laden der Website initialisiert. Hierbei teilt das JavaScript des Browsers der WebGL-Logik mit, welche Szene diese laden soll bzw. auf welcher Unterseite sich der Nutzer gerade befindet. Zudem wird der aktuelle State in den Cache des Browsers, mithilfe der HTML5-History API gepusht. Für die Navigation, durch normales HTML werden an den Link-Elementen Listener angemeldet, die entsprechende C# Methoden in WebGL aufrufen und die Szene aktualisieren. Jede Benachrichtigung der Listener sorgt auch für das pushen eines weiteren States in den Browser Cache, damit die History konsistent bleibt. Da es sich um eine SPA handelt, ist es notwendig das 7. Implementierung 42 Abbildung 7.5: Klassendiagramm der Anwendung. Standart-Event der Link-Elemente zu unterdrücken, da es sonst zu einem neuen Pageload kommen würde und dadurch der komplette WebGL Teil erneut geladen werden müsste. Ein weiterer Listener muss an dem Window-Element des Browsers angemeldet werden. Dieser wird benachrichtigt sobald, ein PopState-Event auftritt und sendet den entsprechenden State der Seite an die WebGL-Logik. Der WebGL Teil löst dann wieder eine Aktualisierung der Szene aus. Durch dieses Vorgehen muss die Seite nur ein einmal komplett geladen werden, was eine erhebliche Reduzierung der Ladezeit mit sich bringt und der Nutzer ein positiveres UX Erlebnis hat. Zudem wird die Usability-Experience auch nicht eingeschränkt, da durch die Nutzung der HTML5-History API das normale Verhalten der Website erhalten bleibt, als wäre es keine SPA. Die gesamte Anwendung wird vereinfacht im Klassendiagramm der Abbildung 7.5 dargestellt. 7.3 Screenshots des Prototyps Im folgenden Kapitel werden einige Bildschirmauszüge dargestellt, um einen Eindruck von dem Prototypen zu erhalten. 7. Implementierung 43 Abbildung 7.6: Screenshot des ersten Prototyps. Auf Abbildung 7.6 ist zum Vergleich der erste Prototyp zu sehen, der noch eine stark experimentelle und düstere Szenerie beinhaltet. Abbildung 7.7 zeigt eine Szene der Kategorie Living4 nach Klicken auf ein Möbel mit aufgeklappten Label. Der obere Bereich der Navigation stellt HTML dar, während der untere Teil sich im WebGL Bereich befindet. Der linke Button aktiviert/deaktiviert die 3D Umsicht. Der rechte Button wechselt die Szene im aktuellen State bzw. der Kategorie. Die Button und Links im mittleren unteren bzw. oberen Bereich, wechseln in die entsprechende Kategorie. Die Abbildung 7.8 zeigt eine Szene der Kategorie Living in der die FirstPerson-Kamera aktiviert ist und die Szene erkundet werden kann. Abbildung 7.9 zeigt den HTML Teil der Website, der sich unterhalb des WebGL Canvas befindet. Dieser Teil ändert sich je nach aktueller Szene. 4 Die 3D Modelle (Couch, Tisch, etc.) der gezeigten Szene stammen von der Firma Unity Technologies und können frei verwendet werden. 7. Implementierung Abbildung 7.7: Sceneview des zweiten Prototyps mit Product-Panel. 44 7. Implementierung Abbildung 7.8: Sceneview des zweiten Prototyps mit aktivierter FirstPerson-Kamera. 45 7. Implementierung Abbildung 7.9: HTML Teil des zweiten Prototyps. 46 Kapitel 8 Ergebnisse Im folgenden Kapitel sollen die Erfahrungen mit dem Prototyp und die daraus resultierenden Ergebnisse aufgezeigt werden. Weiter noch, werden generelle Probleme erläutert, die sich aus der Fragestellung der Arbeit ergeben haben. Die Erfahrungen sollen anhand von bestimmten Punkten aufgezeigt werden, die sich als wichtig herausgestellt haben. 8.1 Responsive Webdesign Responsive Webdesign ist ein Standard im Bereich der Webentwicklung geworden und sollte bei jedem Web-Projekt eine Rolle spielen. Mittlerweile vertreten einige Webentwickler auch die Meinung, dass wenn Websites kein flexibles Verhalten aufzeigen, auch nicht mehr von Webdesign gesprochen werden kann. Templates wie Bootstrap erlauben eine schnelle und einfachere Integration von responsive Features innerhalb einer Website durch HTML, CSS und JavaScript. Inhalte werden in vordefinierte Spalten unterteilt, die sich je nach Größe des Endnutzergerätes verändern und anpassen. Auch Schriftgrößen, Bilder und Grafiken können so passend skaliert werden, damit der Nutzer ein hohes Maß an UX erfährt. Das selbe Ergebnis innerhalb eines WebGL Blockes zu erreichen erweist sich jedoch als wesentlich schwieriger. Da im Laufe der Jahre die Technologien für die Webentwicklung ständig weiterentwickelt wurden, können Features, wie automatische Anpassung von Breite und Höhe eines Containers innerhlab eines Browserfenster, sehr einfach durch CSS realisiert werden. Die Browser-Engines interpretieren diese Layoutsprache und setzen das gewollte Verhalten des Webdesigners um. Soll nun das selbe Verhalten von Containern, 3D-Elementen, Modellen und weiteren WebGL Inhalten sich ebenfalls entsprechend ideal verhalten, muss dieses Verhalten vom Entwickler programmiert werden. Auf ein mächtiges Werkzeug, wie CSS und die jahrelang verbesserte Browserinterpretation dieser Sprache, muss verzichtet werden. Als ein starkes Werkzeug hat sich hier 47 8. Ergebnisse 48 Abbildung 8.1: Akkulaufzeit bei WebGL Anwendungen im Vergleich. jedoch die Unity Engine erwiesen. Das UI System der Engine verfügt über ein ähnliches Boxmodel, integriert float-Eigenschaften von Containern und automatisches ausrichten in einem Layout. Hierdurch kann ein ähnliches Verhalten, wie durch CSS Formatierung erzeugt werden. Dennoch bleibt der Aufwand und die Testphase wesentlich aufwändiger, als es mit reinen Standard Webtechnologien der Fall ist. 8.2 8.2.1 Mobile Devices Akkulaufzeit Getestet wurde auf den Geräten Nexus 4 und Nexus 9. Bei voll geladenem Akku wurde auf den Geräten eine Standard Website geöffnet ohne WebGL Inhalte und solange laufen gelassen bis sich die Geräte wegen dem geringen Akkustand selbst ausschalteten. Diese Zeit wurde als normale Referenzzeit genommen. Im zweiten Test wurde auf diesen Geräten bei selben Bedingungen eine WebGL Website geöffnet und erneut bis zum automatischen ausschalten der Geräte, die Zeit gemessen. Somit kann die Akkulaufzeit gegenüber einer Standard Website und einer Website mit WebGL Inhalten, in Referenz gesetzt werden. Abbildung 8.1 zeigt die errechnete durchschnittliche Akkulaufzeit der verwendeten Geräte, für die Browser Firefox und Chrome. 8. Ergebnisse 8.2.2 49 Allgemeine Probleme Tablet und Smartphones haben momentan noch große Schwierigkeiten mit dem korrekten darstellen von WebGL Inhalten. Getestet wurden Anwendungen von Three.js, Unity sowie Standard WebGL ohne Bibliotheken oder Frameworks. Verwendet wurden die Browser Firefox und Chrome. In allen Fällen konnten die Geräte die Websites und Anwendungen nicht fehlerfrei darstellen. Ein Unterschied zwischen der mobilen Version von Chrome und Firefox konnte nicht festgestellt werden. Bei Unity Anwendungen, die in WebGL dargetellt werden und auf einem mobilen Gerät geöffnet werden, meldet Unity direkt, dass die Engine noch nicht für mobiles WebGL ausgelegt ist. Texturen, Shader und Modelle werden nicht korrekt dargestellt, sodass das es zu Effekten wie Transparenz, fehlenden Polygonen, Löschern in Modellen und fehlenden Lichteffekten kommt. 8.3 User Experience Im Folgenden wird die Prototypen Anwendung und allgemeine WebGL Funktionen im Hinblick auf die 3 Kriterien der User-Experience erläutert. Welche Vor- und Nachteile konnten hier im Hinblick auf diese Punkte festgestellt werden? 8.3.1 Look In Bezug auf die Prototypen Anwendung erhält der Nutzer eine genaue Vorstellung von dem Aussehen des Möbelstücks bzw. des Accessoires. Die Darstellung als 3D-Model ermöglicht dem Nutzer das Objekt aus frei wählbaren Perspektiven zu betrachten, mit jeweils unterschiedlichen Vergrößerungsstufen. Bilder zeigen stehts nur eine unveränderbare Perspektive. Auch bei mehreren Bildern zu einem Produkt kann es vorkommen, dass dem Nutzer gerade eine bestimmte Ansicht fehlt. Durch die Möglichkeit, dass sich der Nutzer frei in der Szene bewegen kann, herrscht eine stärkere Immersion. Hierdurch kann sich der User die Produkte besser vorstellen, was wiederum das Vertrauen und die Glaubwürdigkeit stärkt. Die Stimmung der Szenarien können durch die Art der Beleuchtung in 3D-Szenen schnell geändert werden. Bei Fotografien müssen hier ganz neue Fotos aufgenommen werden und der Aufwand ist um einiges größer. Eyecatcher können durch WebGL wesentlich interessanter wirken, wodurch die Aufmerksamkeit des Nutzers schneller auf bestimmte Inhalte gelenkt werden kann. Allgemein bestehen größere Möglichkeiten visuelle Reize zu kreieren. Neue Technologien, wie Physical-Based-Shader, ermöglichen das Darstellen von real aussehenden Texturen. Objekte mit unterschiedlichen Ausführungen, Designs und Materialien können so einfach erstellt werden, ohne jede Produktvariante einzeln neu fotografieren zu müssen. 8. Ergebnisse 8.3.2 50 Feel Durch die freie Bewegungsmöglichkeit und freie Rundumsicht erhält der Nutzer einen ersten Eindruck der Möbel und kann bereits mit ihnen interagieren. Das Anklicken der Objekte und das darauffolgende Erscheinen eines Informationslabels wirkt intuitiv. WebGL Anwendungen erlauben dem Nutzer eine größere Möglichkeit an Interaktionen und brechen aus dem normalen Web-Interaktionselementen aus. Mit Hilfe der Darstellung von Inhalten im 3-dimensionalen Raum kann der User auf bereits erlernte Navigationsmöglichkeiten zurückgreifen. So erfolgt die Navigation intuitiver. 8.3.3 Usability Die Navigation in einem 3-dimensionalen Raum kann sich als ineffizienter erweisen, als innerhalb eines reinen 2D User Interfaces. Wenn die Bedienung eines 2D UI bereits erlernt wurde, ist die Interaktion meistens recht effizient. Durch die Verfügbarkeit der dritten Dimension können mehr Elemente auf einem Bildschirm gleichzeitig platziert werden. Dies kann besonders bei der Visualisierung von Daten hilfreich sein, wenn diese Verbindungen unter einander besitzen, die dargestellt werden sollen. Zudem kann diese Art der Visualisierung auch dazu genutzt werden, um Muster in bestimmten Datensätzen sichtbar zu machen. 8.4 8.4.1 Indexierungskriterien Geschwindigkeit Dadurch, dass WebGL Inhalte durch den Browser in der Regel eine längere Ladezeit benötigen, weil eine Szene aus komplexen 3D Modellen besteht, eine komplexere Programmlogik bereitgestellt oder das Framework einer Engine erst vollständig geladen werden muss, ergeben sich einige Probleme. Normale Ressourcen, wie HTML, CSS, JavaScript und PHP, können vom Browser relativ schnell initiiert werden und stehen dann allen Nutzern und Agents, die auf diese Inhalte zugreifen möchten, zur Verfügung. Durch eine länger andauernde Verzögerung der Bereitstellung der Inhalte bei einem Ladevorgang der Website, könnten Suchmaschinen Probleme beim Auffinden und Indexieren von Informationen haben. Dies kann vorallem dann auftreten, wenn es sich bei der Website um eine Single-PageApplication handelt. Hier werden die Inhalte in der Regel durch Ajax oder ähnliche Technologien geladen. Hierbei wird eine HTTP Anfrage, in der Regel durch eine JavaScript-Engine, an den Server gesendet. Diese Engine stellt eine Zwischenschicht zwischen Server und User dar und ermöglicht die asynchrone Datenübertragung ohne einen kompletten reload der Website zu initiieren [14]. 8. Ergebnisse 51 Tabelle 8.1: Ergebnisse: Start bei 1000 ms mit Intervall von 500 ms. Timeout in ms 1000 1500 2000 2500 3000 3500 4000 4500 5000 ... 10000 Rendered Indexed ja ja ja ja ja ja ja ja nein ... nein ja ja ja ja ja ja ja ja nein ... nein Das Verhalten der Suchmaschinen-Crawler bei solchen Inhalten wurde durch 2 Testszenarien untersucht. 8.4.2 Bereitstellung der Inhalte durch JavaScript In den folgenden Testszenarien wurden verschiedene Inhalte als HTML bereitgestellt. Diese Inhalte wurden nach bestimmten Zeitintervallen durch JavaScript asynchron geladen und der Website hinzugefügt. Hier konnten verschiedene Beobachtungen gemacht werden, betreffend der unterschiedlichen Zeitintervalle zwischen dem Einfügen der Inhalte und der Dauer der Gesamtverzögerung beim Ladevorgang eines Inhaltes. Die Tests sind immer bis 10000 ms gelaufen und wurden dann beendet. Aus Gründen der Übersicht werden nicht immer alle Zeitschritte tabellarisch dargestellt. Die Tabelle 8.1 zeigt die Ergebnisse bei einer Startverzögerung von 1000 ms und anschließendem Einfügen von Testinhalt alle 500 ms. Die Tabelle 8.2 zeigt die Ergebnisse bei einer Startverzögerung von 1000 ms und anschließendem Einfügen von Testinhalt alle 1 ms. Hier zeigt sich, dass das Rendern durch Google und die Indexierung der Inhalte vollständig ausbleibt. Dies kann daran liegen, dass Google der Zeitintervall, indem der Inhalt auf der Website hinzugefügt wird, zu kurz ist und dann auf das interpretieren des JavaScript-Teils verzichtet wird oder es zu viele Methodenaufrufe gibt. Die Tabelle 8.3 zeigt die Ergebnisse bei einer Startverzögerung von 1000 ms und Ende der Aufrufe bei 1460 ms mit Einfügen von Testinhalt alle 1 ms. Nun zeigt sich, dass der Zeitintervall in dem Inhalt durch JavaScript eingefügt wird, keine Rolle spielt. Die Anzahl der Methodenaufrufe scheinen jedoch begrenzt zu sein. Bei einem Aufrufende von 1461 ms, also 462 Methodenauf- 8. Ergebnisse 52 Tabelle 8.2: Ergebnisse: Start bei 1000 ms mit Intervall von 2 ms. Timeout in ms 1000 1001 1002 ... 10000 Rendered Indexed nein nein nein ... nein nein nein nein ... nein Tabelle 8.3: Ergebnisse: Start bei 1000 ms mit Intervall von 1 ms. Timeout in ms 1000 1001 1002 ... 1460 Rendered Indexed ja ja ja ... ja ja ja ja ... ja Tabelle 8.4: Ergebnisse: Start bei 4979 mit Intervall von 1ms. Timeout in ms ... 4979 4980 ... 10000 Rendered Indexed ... ja nein ... nein ... ja nein ... nein rufen, werden keinerlei JavaScript Inhalte indexiert und gerendert. Dies gilt auch für Inhalte die vor dem 462. Methodenaufruf bereitgestellt werden. Die Tabelle 8.4 zeigt wann der Google-Bot aufhört den Inhalt zu interpretieren. Nach 4979 ms wird kein Inhalt, der durch JavaScript bereitgestellt wird, mehr gerendert und indexiert. 8.4.3 Crawling von Links Weiterhin wurde ein Test aufgesetzt mit dem Ziel festzustellen, ob Google Links zu Websites folgt, die wie oben gezeigt durch JavaScript erst mit einer Verzögerung in die Website eingefügt werden. Hierzu wurden 2 Testszenarien mit unterschiedlichen Einstiegsseiten erstellt, welche beide dynamisch nach 2000 ms einen Link zu einer jeweils weiteren Unterseite hinzugefügt 8. Ergebnisse 53 bekommen. Diese Unterseiten enthalten wiederum einen Link, der jeweils zu einer weiteren Unterseite führt. Dieser Vorgang wurde bis zu einer Tiefe von 10 wiederholt. Jede Startseite besaß also 10 weitere Unterseiten, von denen jeweils nur der Vorgänger auf den Nachfolger verwies. In Testszenario 1 wurden jedoch relative Links verwendet und in Testszenario 2 absolute URL’s mit einer vollständigen URL aus Scheme und Scheme-Specific-Part. Zunächst wurden jeweils nur die Einstiegsseiten von Google indexiert und aufgefunden. Nach 4 Tagen befanden sich auch die Unterseiten aller beiden Testszenarios vollständig im Index. 8.4.4 Gesamtergebnis Alles was nach 4979 ms erst durch JavaScript eingefügt wird, rendert und indexiert der Google-Bot nicht. Weiterhin hat sich gezeigt, dass der Zeitintervall in dem die Inhalte geändert werden relativ bedeutungslos ist, da bei einem Änderungsintervall von 1ms immer noch alles gerendert wird. Die Anzahl an Methodenaufrufen scheint jedoch begrenzt zu sein. Es wurde in einer Schleife alle 1ms eine JS-Funktion zum Einfügen von Inhalt aufgerufen. Werden <=461 Methodenaufrufe durch die JavaScript-Engine getätigt, rendert Google die Inhalte nach wie vor. Bei >=462 Methodenaufrufen werden jedoch keinerlei Inhalte, die durch JavaScript bereitgestellt werden, durch den Google-Bot gerendert. Jedoch werden auch JQuery Aufrufe zum Erfassen des Containers für den Inhalt, zuvor getätigt, sodass nur von einer ungefähren Grenze gesprochen werden kann, die bei ∼ 461 Methodenaufrufen liegt. Es wurde zusätzlich auch getestet wie lange der WebGL Inhalt braucht bis er bereit ist und vollständig geladen wurde. Hierzu wurde der Zeitunterschied zwischen dem kompletten Laden des DOM und dem ersten Aufruf einer JavaScript-Methode durch den WebGL Teil der Website gemessen. Da hier von einer unmittelbaren Bereitstellung des kompletten DOM auszugehen ist, wird die erste JavaScript Methode direkt aufgerufen, sodass der Zeitunterschied zwischen den beiden Aufrufen die ungefähre Zeit angibt bis der komplette WebGL Teil zur Verfügung steht. Beim erstmaligen Laden der Website ist der WebGL Teil erst nach ∼ 72945 𝑚𝑠 vollständig geladen. Bei weiteren Reloads der Website beträgt diese Zeit nur noch ∼ 10131 𝑚𝑠. Hier wurde der WebGL Teil untersucht, der durch die Unity Engine bereitgestellt wird. Dies bedeutet, dass auch das komplette Unity Framework in WebGL bzw. asm.js zur Verfügung gestellt wird. Das Laden von Inhalten durch andere WebGL Bibliothen oder Framworks, wie beispielsweise Three.js fällt entsprechend kürzer aus, da hier der Funktionsumfang des Frameworks wesentlich geringer ist. Durch weitere Testszenarien wurde festgestellt, dass der Google-Crawler durch JavaScript generierte Links, ebenfalls folgt und diese Seiten indexiert. Auch Links die mit einer Verzögerung durch JavaScript generiert werden, 8. Ergebnisse 54 kann Google erfolgreich interpretieren und indexieren. Voraussetzung hierfür ist jedoch, dass der Timeout bis zur Generierung der Links nicht die oben genannte Zeitspanne überschreitet. 8.5 Besonders geeignete Inhalte Theoretisch lassen sich alle Inhalte als 3D Elemente darstellen. Besonders geeignet sind jedoch die Inhalte, die durch ihre Darstellung einen direkten Mehrwert für den Nutzer bereithalten. Dieser Mehrwert kann durch die Art der Navigation in der Szene oder durch den zusätzlich verfügbaren Platz, der durch die Darstellung in 3 Dimensionen zu Verfügung steht, entstehen. Eine weitere Möglichkeit des Mehrwerts kann durch die reine Darstellung des Contents in 3D entstehen. Als Beispiel sei hier die Visualisierung eines Auto’s auf einer Internetseite eines Automobilherstellers oder Händler genannt. Potenzielle Kunden könnten hier jedes Detail des Auto in einem interaktiven Model betrachten. Dieses Model, stellt im Gegenzug zu normalen Bildern, keine spezifischen Ausschnitte bereit, sondern stellt das Objekt als Ganzes dar. So erhält der Kunde einen besseren Eindruck und kann sich besser mit dem Auto identifizieren. Details, wie Armaturen, können ihre Features direkt simulieren und der Kunde kann diese direkt ausprobieren. Abbildung 8.2 zeigt eine Darstellung von identifizierten Features einer WebGL Anwendung. 8.6 Vergleich der Techniken WebGL Inhalte können nur durch Google und andere Suchmaschinen indexiert werden, wenn ihre Inhalte gleichzeitig auch in HTML zur Verfügung stehen. Hier gibt es zahllose Varianten, wie dies technisch genau realisiert werden kann. Im Fall des umgesetzten Prototypen wurde bereits in Kapitel 7 gezeigt, wie die Umsetzung als SPA aussehen kann. Die Umsetzung als SPA hat sich als sinnvoll erwiesen, weil so das Framework nur einmal geladen werden muss, siehe Abschnitt 8.4.4. In dieser Variante wurde die Verhaltenslogik komplett in asm.js gekapselt, welche für die komplette Steuerung der Inhalte verantwortlich ist. Der Nachteil besteht darin, dass ohne aktiviertes JavaScript oder WebGL Unterstützung des Browsers, die Website nicht funktionieren kann. Zudem müssen die Inhalte, da sie durch JavaScript bereitgestellt werden, innerhalb von 4,9 sec zur Verfügung stehen, da ansonsten keine Indexierung durch Google erfolgt. Dies stellt somit ein großes Problem dar, was eine Bereitstellung der Inhalte durch JS so gut wie unmöglich macht. Das liegt daran, dass die Inhalte zu lange benötigen, bis sie initialisiert sind, wenn sie durch komplexere Frameworks, bereitgestellt werden sollen. Kleinere Frameworks die keine große Ladezeit und einen ge- 8. Ergebnisse 55 Abbildung 8.2: Identifizierte WebGL Features. ringeren Funktionsumfang besitzen, wären hierzu jedoch durchaus in der Lage. Three.js nutzt kein asm.js und besitzt einen deutlich geringeren Funktionsumfang, als beispielsweise das Unity Framework. Hierdurch erfolgt die Initialisierung der Inhalte nicht erst, wenn das komplette Framework zur Verfügung steht und geladen wurde, da der Nutzer hier durch reines JavaScript genaue Kontrolle hat, wann er Features von Three.js nutzt bzw. wann er die Inhalte mit JS initialisieren möchte. Da momentan jedoch nur der Google-Bot in der Lage ist JS zu interpretieren und zu rendern, bleiben diese Inhalte für andere Suchmaschinen verborgen. Daher sollten die Inhalte steht’s auch ohne JS zur Verfügung gestellt werden. Dies ist auch deshalb sinnvoll, weil einige Nutzer JavaScript deaktiviert haben könnten. Prinzipiell bedeutet dies, dass somit serverseitige Technologien zum Einsatz kommen sollten. Kapitel 9 Resümee In dieser Arbeit wurden die Grundlagen von SEO und die Möglichkeiten von WebGL dargestellt. Es wurde ein WebGL Prototyp umgesetzt, um die momentanen Möglichkeiten aufzuzeigen die diese Technologie bietet. Es wurden Möglichkeiten erläutert, wie Inhalte, die in WebGL dargestellt werden, am effektivsten durch Suchmaschinen auffindbar gemacht werden können. Auf Desktop Systemen mit aktuellem Browser kann WebGL ohne große Probleme Einsatz finden. Jedoch haben sich Firefox und Chrome, als die Browser erwiesen, bei denen es am wenigsten zu Problemen kommt. Dies liegt unter anderem daran, dass sich die Mozilla Corporation und Google Inc. sehr stark an der Entwicklung dieser Technologie beteiligen und auch Unternehmen wie Unity Tehnologies, durch die Bereitstellung von Entwicklern, aktiv unterstützen. Zudem sind diese beiden Firmen Mitglieder der Khronos Group und tragen damit zur Festlegung der Standards, dieser 3D Technologie, bei. Es wurden gängige Frameworks und Engines betrachtet, die in der Lage sind WebGL Inhalte zu erzuegen. Die Unity Engine stellt zu diesem Zeitpunkt das mächtigste Entwicklungswerkzeug für WebGL dar. Vorteilhaft gegenüber anderen Frameworks ist, dass der komplette Funktions-Stack des Unity-Frameworks auch in WebGL Anwendungen verwendet werden kann. Dies macht die Entwicklung wesentlich effizienter, weil sich der Entwickler gezielt auf die Anwendung konzentrieren kann, da fehlende Features so gut wie nicht vorhanden sind. Weiterhin wird der JavaScript Code in schnelles asm.js kompiliert, das die Performance zur Laufzeit gegenüber normalen JavaScript enorm verbessert. Die große Feature Palette ist jedoch zugleich auch ein Nachteil. Da das gesamt Framework in WebGL zur Verfügung gestellt wird, benötigt auch die einfachste Anwendung eine beträchtliche Ladezeit. Besonders im Bereich des Webs stellt dies ein großes Problem dar. Der Google-Bot kann die Inhalte, welche durch JavaScript bereitgestellt werden, nicht indexieren und Nutzer wandern in der Regel nach wenigen Sekunden ab, wenn die Initialisierung der Website zu lange benötigt. 56 9. Resümee 57 Reine JavaScript Framewokrs wie Three.js sind in der Lage auch relativ schnell WebGL Inhalte zur Verfügung zu stellen, wenn diese relativ einfach gehalten werden. Die Ladezeit ist hier wesentlich geringer. Three.js besitzt nicht die gleiche Performanz, wie das Unity Framework, da es nicht in asm.js läuft. Weiterhin ist der Funktionsumfang, den das Framework von Haus aus mit bringt, auf das Nötigste begrenzt. So stellt das Framework beispielsweise keine eigenen Methoden zum Rendern einer Szene zur Verfügung. Entwickler müssen direkt mit dem Methoden-Stack der Browser-Engine arbeiten. Ein Vorteil stellt jedoch der CSS3-Renderer von Three.js dar. Dieser Renderer nutzt die CSS-Transforms, um einfache geometrische Figuren zu erstellen. Die so transformierten HTML Inhalte sind in der Lage komplexere Modelle, die durch WebGL dargestellt werden, zu ergänzen. Dabei bleibt der volle Funktionsumfang der HTML-Elemente erhalten. Diese Inhalte können von dem Google-Bot auch problemlos indexiert werden. Jedoch ist WebGL aus der momentanen Sicht noch sehr experimentell. Der Firefox Browser und Google Chrome kommen bereits sehr gut mit den Inhalten zurecht, während andere Browser noch mehr Probleme haben. Die mobilen Browser versagen bei WebGL Inhalten jedoch noch völlig. Hierbei spielt es auch keine Rolle, ob der Inhalt mit einer komplexen Engine oder mit einem kleineren JavaScript Framework erstellt wurde. Momentan existierende kommerzielle Websites, die auf WebGL aufbauen, kommen aus dem Bereich Werbung und Marketing. Ergänzend zu normalen Werbemaßnahmen, können solche interaktiven Werbebotschaften ebenfalls in Kampagnen im Online Bereich eingesetzt werden. WebGL sollte momentan daher nur als Ergänzung zu den Standard Webtechnologien betrachtet werden. Die Indexierung von Inhalten in WebGL ist nur möglich, wenn diese parallel auch in Form von HTML bereitgestellt werden. Sinnvollerweise sollten Websites die WebGL Inhalte anbieten, auch in der Lage sein ohne entsprechende Browser Unterstützung, die relevanten Informationen in HTML darstellen zu können. 9.1 Ausblick Das Potenzial, von im Browser laufenden 3D Anwendungen ist relativ groß. Da momentan der Trend bei Softwareanwendungen immer weiter zu Cloudbasierten Diensten geht, werden auch die Anwendungen immer mehr als reine Webanwendungen, direkt über das Internet bereitgestellt. Beispiele hierfür sind Cloud-Dienste wie, Drive1 von Google, Office Online2 und OneDrive3 von Microsoft. Momentan stellen diese Webanwendungen jedoch nur das Pondon zu ihren existierenden Client-basierten, nativen Anwendungen dar. Dementsprechend ist auch der Funktionsumfang bei den Online1 https://www.google.com/intl/de/drive/ https://www.office.com/ 3 https://onedrive.live.com/about/de-de/ 2 9. Resümee 58 Varianten noch etwas eingeschränkt. Ein interessante Entwicklung könnte jedoch lauten, dass es in der Zukunft keine solchen installierbaren oder portable Anwendungen mehr gibt. Alle Anwendungen würden über den Browser laufen und gleichzeitig eine direkte Authentifizierung des Nutzer durch eine vorherige Registrierung im entsprechenden Dienst verlangen. Hierdurch würden auch die finanziellen Verluste der Firmen, durch raub-kopierte Software, verringert werden. Aktuell sind jedoch noch keine großen Varianten von 3D Anwendungen aus dem Tools Bereich vorhanden. Beipielsweise ein Version von Autodesk Maya oder 3DsMax als Online Version. Dies könnte WebGL jedoch durchaus ermöglichen. Momentan ist eine starke Entwicklung von Technologien aus dem Hardwarebereich zu beobachten, die sich mit Augmented Reality und Virtual Reality beschäftigen. Als Beispiel seien hier die beiden Datenbrillen Oculus Rift aus dem Hause Oculus und die HoloLens von Microsoft genannt [27, 30]. Erstere erlaubt das Eintauchen in virtuelle Welten und zweitere erweitert die Realität um virtuelle Inhalte. Viele weitere Firmen, u.a. HTC, Sony, MagicLeap, Samsung u.v.w. forschen und entwickeln in diese Richtung. Erste Prototypen sollen 2016 auf den Markt kommen. Erweist sich das Interesse der Nutzer an diesen neuen Hardwaregeräten als äußerst groß, ist die Entstehung eines neuen Marktes im Bereich Virtual Reality und Augmented Reality sehr wahrscheinlich. WebGL könnte dann genau die Technologie sein, die die Nutzung solcher Geräte auch am Browser ermöglicht und demnach jedem Webnutzer es erlauben würde, in virtuelle Welten, durch das einfache aufrufen einer Website, einzutauchen. Anhang A Technische Informationen A.1 Aktuelle Dateiversionen Datum 2015/09/27 2015/06/19 A.2 A.2.1 Datei Masterarbeit.pdf Projektdateien Details zur aktuellen Version Allgemeine technische Voraussetzungen Getestet unter einer aktuellen Windows-7 Installation mit • xampp oder gleichwertige Serverumgebung, • WebGL fähigem Browser, empfohlen wird Firefox in aktuellster Version. A.2.2 Verwendung unter Windows Im folgenden wird die Vorgehensweise für eine lokale xampp Serverumgebung erläutert. Der Ordner gerhards wird im Ordner htdocs abgelegt, womit sich folgende Pfad-Struktur ergibt. htdocs/gerhards/spa/ Dies ist notwendig da die WebGL Logik nach dem Json-String unter http://127.0.0.1/gerhards/spa/json/index.html sucht. 59 Anhang B Inhalt der DVD Format: DVD-ROM, Single Layer, ISO9660-Format B.1 Masterarbeit (PDF) Pfad: / Masterarbeit.pdf . . . . Einsatz von WebGL zur Erstellung von Websites mit indexierbaren Inhalten B.2 Projekt Dateien Pfad: /Projektdateien Source-Prototyp.rar . . Website-Prototyp.rar . . Gulp-Umgebung.rar . . Enthält alle Assets und Source-Dateien des Unity Projektes. Enthält den kompilierten Prototypen als lauffähige Website. Enthält die Gulp-Umgebung. 60 Quellenverzeichnis Literatur [1] Jos Dirksen. Learning Three.js: The JavaScript 3D Library for WebGL. Livery Place: Packt Publishing Ltd., 2013 (siehe S. 29). [2] Jos Dirksen. Three.js Essentials. Livery Place: Packt Publishing Ltd., 2014 (siehe S. 29). [3] Eric Freeman u. a. Head First Design Patterns. Sebastopol: O’Reilly, 2008 (siehe S. 37). [4] Erich Gamma u. a. Design Patterns – Elements of reusable ObjectOriented Software. 2. Aufl. Reading, MA: Addison Wesley, 2009 (siehe S. 37, 39). [5] Will Goldstone. Unity 3.x, Game Development Essentials. 2. Aufl. Packt, 2011 (siehe S. 27). [6] Google Inc. Einführung in die Suchmaschinenoptimierung. 2015. url: http://static.googleusercontent.com/media/www.google.de/de/de/ webmasters/docs/einfuehrung-in-suchmaschinenoptimierung.pdf (siehe S. 13). [7] Karl-Albrecht Immel. Regionalnachrichten im Hörfunk: Verständlich schreiben für Radiohörer. Springer-Verlag, 2014 (siehe S. 21, 22). [8] Krzysztof Walczak Jakub Flotynski. „Semantic multi-layered design of interactive 3d presentations“. In: Proceedings of the Federated Conference on Computer Science and Information Systems (FedCSIS) (2013), S. 541–548 (siehe S. 6). [9] Weinand Kim. Top-Rankings bei Google und Co. 2. Aufl. Bonn: Galileo Press, 2014 (siehe S. 11, 12, 14, 17, 23). [10] Sandeep Kumar Patel. Responsive Web Design with AngularJS. Livery Place: Packt Publishing Ltd., 2014 (siehe S. 30). [11] Erlhofer Sebastian. Suchmaschinen-Optimierung - Das umfassende Handbuch. 5. Aufl. Bonn: Galileo Press, 2011 (siehe S. 15, 23). [12] Florian Siebler. Design Patterns mit Java. München: Carl Hanser, 2014 (siehe S. 37). 61 Quellenverzeichnis 62 [13] Patti Spala u. a. „Extending MPEG-7 for efficient annotation of complex web 3D scenes“. In: Multimedia Tools and Applications 59.2 (2012), S. 463–504 (siehe S. 6). [14] Maximilian Vollendorf und Frank Bongers. JQuery – Das umfassende Handbuch. Bonn: Galileo Press, 2012 (siehe S. 50). [15] Sherif William. Learning C++ by Creating Games with UE4. Livery Place: Packt, 2015 (siehe S. 29). Online-Quellen [16] url: https://www.artefactgroup.com/content/3d-ui-useful-usable-ordesirable/ (besucht am 09. 09. 2015) (siehe S. 10). [17] url: http://people.csail.mit.edu/kapu/EG_09_MGW/EG2009_3D_ User_Interfaces.pdf (besucht am 09. 09. 2015) (siehe S. 10, 12). [18] url: http://docs.unity3d.com/Manual/ExecutionOrder.html (besucht am 08. 02. 2015) (siehe S. 27, 28). [19] asmjs.org. url: http://asmjs.org/faq.html/ (besucht am 01. 01. 2015) (siehe S. 5). [20] Canvas 3D: GL power, web-style. url: http://wayback.archive.org/ web/20110717224855/http://blog.vlad1.com/2007/11/26/canvas-3dgl-power-web-style/ (besucht am 09. 09. 2015) (siehe S. 6, 7). [21] Matt Cutts. PageRank sculpting. url: https://www.mattcutts.com/ blog/pagerank-sculpting/ (besucht am 15. 04. 2015) (siehe S. 15). [22] Datei:User-Experience. url: https://de.wikipedia.org/wiki/Datei:Userexperience.svg (besucht am 09. 09. 2015) (siehe S. 9). [23] Johan Dorland und Willem den Besten. De opkomst van WebGL. url: http : / / www . students . science . uu . nl / ∼3685632 / content / history. html (siehe S. 7). [24] Jerome Etienne. Mixing HTML Pages Inside Your WebGL. url: http: //learningthreejs.com/blog/2013/04/30/closing-the-gap-between-htmland-webgl/ (besucht am 15. 04. 2015) (siehe S. 30). [25] Fraunhofer IGD. x3dom - instant 3D the html way. url: http://www. x3dom.org/?page_id=2 (besucht am 15. 04. 2015) (siehe S. 30). [26] Google Inc. Structured Data. url: https : / / developers . google . com / structured-data/ (besucht am 15. 04. 2015) (siehe S. 15). [27] holoLens. url: https://www.microsoft.com/microsoft- hololens/en- us (besucht am 09. 09. 2015) (siehe S. 58). Quellenverzeichnis 63 [28] Khronos Details WebGL Initiative to Bring Hardware-Accelerated 3D Graphics to the Internet. url: https://www.khronos.org/news/press/ khronos-webgl-initiative-hardware-accelerated-3d-graphics-internet (besucht am 09. 09. 2015) (siehe S. 7). [29] Khronos Releases Final WebGL 1.0 Specification. url: https://www. khronos.org/news/press/khronos-releases-final- webgl- 1.0-specification (besucht am 09. 09. 2015) (siehe S. 7). [30] Oculus Rift. url: https : / / www . oculus . com / en - us/ (besucht am 09. 09. 2015) (siehe S. 58). [31] On the future of web publishing in unity. url: http://blogs.unity3d. com/2014/04/29/on-the-future-of-web-publishing-in-unity (besucht am 01. 01. 2014) (siehe S. 34). [32] onpage.org. url: https : / / de . onpage . org/ (besucht am 09. 09. 2015) (siehe S. 22). [33] Orun Bhuiyan. Googles Crawler Now Understands JavaScript: What Does This Mean For You? url: http : / / www . business2community. com/seo/googles- crawler- now- understands- javascript- mean- 0898263 (besucht am 15. 06. 2014) (siehe S. 35). [34] SEOlyze Tool. url: https : / / www . seolyze . com/ (besucht am 09. 09. 2015) (siehe S. 20). [35] Sistrix. Google Updates und Algorithmus-Änderungen. url: http : / / www.sistrix.de/frag- sistrix/google- algorithmus- aenderungen/ (besucht am 15. 04. 2015) (siehe S. 23). [36] Sistrix. Was ist der SISTRIX Sichtbarkeitsindex? url: http://www. sistrix.de/frag-sistrix/was-ist-der-sistrix-sichtbarkeitsindex/ (besucht am 15. 04. 2015) (siehe S. 20). [37] Sistrix Toolbox. url: http://www.sistrix.de/ (besucht am 09. 09. 2015) (siehe S. 20). [38] Smashing Magazine. How To Make Your Websites Faster On Mobile Devices. url: http://www.smashingmagazine.com/2013/04/03/buildfast-loading-mobile-website/ (besucht am 15. 04. 2015) (siehe S. 15). [39] The future of scripting in unity. url: http://blogs.unity3d.com/2014/ 05/20/the-future-of-scripting-in-unity (besucht am 01. 01. 2014) (siehe S. 34). [40] Unreal Engine 4 For Unity Developers. url: https://docs.unrealengine. com/latest/INT/GettingStarted/FromUnity/ (besucht am 28. 04. 2015) (siehe S. 29). [41] Usability vs. User Experience – Hauptsache Spaß!? url: http://www. usabilityblog.de/2012/06/usability-vs-user-experience-hauptsache-spas/ (besucht am 09. 09. 2015) (siehe S. 8). Quellenverzeichnis 64 [42] WDFIDF. url: https://de.onpage.org/wiki/WDF*IDF (besucht am 09. 09. 2015) (siehe S. 16, 17). [43] WebGL Unterschiede. url: https : / / blog . mozilla . org / futurereleases / 2015/03/03/an-early-look-at-webgl-2/ (besucht am 09. 09. 2015) (siehe S. 8). Messbox zur Druckkontrolle — Druckgröße kontrollieren! — Breite = 100 mm Höhe = 50 mm — Diese Seite nach dem Druck entfernen! — 65