Anzeige
Anzeige
UX & Design
Artikel merken

Erfahrungsbericht zu Ruby on Rails beim Rapid-Prototyping: In zehn Tagen von Null auf Startup

Ruby on Rails ist in aller Munde. Das schnelle und vor allem strukturierte Vorgehen bei der Entwicklung eignet sich hervorragend zur Unterstützung des Rapid-Prototypings. Beim „Startup Weekend 2“ in Hamburg konnte sich Rails bei der Entwicklung der Location-Datenbank indawo.de beweisen. Warum Rails für dieses Projekt hervorragend geeignet war und wie das Team vorgegangen ist, beschreibt dieser Erfahrungsbericht.

6 Min. Lesezeit
Anzeige
Anzeige

Die 140 Teilnehmer des zweiten Startup Weekends in Hamburg hatten nur ein Ziel vor Augen: In 48 Stunden zum eigenen Startup [1]. Cem Basman und Jason Frankling-Stokes hatten die Veranstaltung organisiert.

Anzeige
Anzeige

Dieses Vorhaben war eine Gratwanderung zwischen organisatorischer Effizienz und sinnvoller Zuordnung von Ressourcen. Die 140 Individuen galt es so zu organisieren, dass paralleles Arbeiten möglich war. Dabei kannten sie sich größtenteils nicht und hatten noch nie zusammen gearbeitet.

Ausgangslage: Darum ging’s

Eines der beiden Projekte des Weekends war Indawo: Eine Plattform, auf der Nutzer Orte („Locations“) anlegen und suchen können, die für besondere Anlässe und Ereignisse geeignet sind. Die Anwendung besteht aus drei zentralen Anwendungsfällen:

Anzeige
Anzeige
  1. Anlegen von Locations. Locations sollen Kategorien zugeordnet werden, die auch Überschneidungen zulassen: Eine Bar kann beispielsweise sowohl für eine Firmenfeier als auch für die Entspannung geeignet sein. Außerdem werden zahlreiche Attribute gespeichert, die einen Vergleich der Features zulassen. Dazu gehören u. a. Preisniveau, technische Ausstattung und Anzahl der Plätze.
  2. Suche innerhalb der Daten. Diese soll einen Wizard-ähnlichen Prozess anbieten, in dem sich der Nutzer die Daten zusammenstellen kann, die er sucht. Wenn der Nutzer fündig geworden ist, kann er sich die Location anzeigen lassen.
  3. Ausgabe der Daten.

Darüber hinaus waren weitere Funktionen umzusetzen: Registrierung, User-Management, Administration, Uploads und Geo-Codierung.

Anzeige
Anzeige

Überlegungen: Vorteile von Ruby on Rails

Fogende Faktoren waren dabei wichtig:

  • Der Prototyp musste noch am selben Wochenende fertiggestellt sein, weil sich danach die Gruppe auflöste.
  • Frühzeitiges Feedback war gefordert, damit sich Produktentwicklung, IT, Marketing und Recht untereinander koordinieren und die Einzelmaßnahmen besser planen konnten.
  • Vorgehen in Iterationen (Entwicklungszyklen) wurde angestrebt, weil ständig Verbesserungsvorschläge bearbeitet werden mussten.

Ruby on Rails eignet sich perfekt, um schon in einer frühen Phase des Projekts klickbare Prototypen zur Verfügung zu stellen. Mit Hilfe eines „Scaffold“ lassen sich zu einem Datenbank-Model sämtliche Methoden generieren, die für die Eingabe und Bearbeitung von Daten benötigt werden (die so genannten CRUD-Operationen). Zudem werden „Views“ erzeugt, die sich im Browser anzeigen lassen.

Anzeige
Anzeige

Die Einhaltung von Konventionen und Prinzipien (wie DRY = „Don’t repeat yourself“), die saubere Schichtenarchitektur und die Möglichkeit „Migrations“ zu benutzen helfen dem Entwickler dabei, dass er zu einem späteren Zeitpunkt problemlos Änderungen vornehmen und somit iterativ vorgehen kann. Vorteilhaft an Rails ist auch die Lernkurve: Beim Startup Weekend konnten Leute mit Programmiererfahrung angelernt werden.

In Ruby arbeitet man typischerweise weniger mit Klassenhierarchien. Stattdessen integriert man Module in den eigenen Code (auch „mixen“ genannt). Das ist wesentlich flexibler. Besonders beliebt sind die Plugins, deren Integration sich mit dem Prinzip "Don’t repeat others" beschreiben lässt. Anders gesagt: Man muss nicht für jeden Anwendungsfall das Rad neu erfinden, wenn es bereits tragfähige Lösungen gibt. Plugins lassen sich per Script-Aufruf aus dem Internet laden und installieren.

Ablauf: das Wochenende

Das indawo-Entwicklungsteam bestand während des Wochenendes aus zehn Leuten: sechs Rails-Entwickler, davon vier mit Erfahrung und zwei „Angelernte“, sowie vier Designer. Der erste Tag lief bereits sehr produktiv ab. Neben der Produktidee und den Screendesigns wurde der erste Prototyp entwickelt und auf dem Server bereitgestellt ("Deployment"). Schon gab es eine lauffähige Version, die alle Teilnehmer testen konnten, um Verbesserungsvorschläge zu machen. Den zweiten Tag verwendete man, um Features auszubessern und zu erweitern. Zudem wurden Texte geschrieben und rechtliche Aspekte geprüft. Nach den zwei Tagen waren mit der Ein- und Ausgabe von Locations zwei der drei zentralen Anwendungsfälle implementiert. Das Layout basiert auf Grids und entspricht somit dem aktuellen Trend. Das Video der Abschlusspräsentation dokumentiert die Ergebnisse des Wochenendes und zeigt den damaligen Stand der Entwicklung [2].

Anzeige
Anzeige

Nach dem Wochenende

Nach dem Wochenende wurde noch acht weitere Tage an indawo entwickelt, wobei sich die Ressourcen erheblich reduziert haben, zumal alle Entwickler ihren normalen Jobs nachgehen mussten. Die Entwicklungssprints wurden über Skype, die aufgesetzte Mixxt-Plattform und tägliche Abstimmungen („Daily-Scrum-Meetings“) organisiert. Ein Tagessprint dauerte wegen der zeitlichen Engpässe in der Regel nicht länger als drei Stunden. Trotz aller Beschränkungen reichte die Zeit aus, um mit der Suche den dritten zentralen Anwendungsfall umzusetzen. Zudem konnte das Team zahlreiche Detailverbesserungen vornehmen, die während der Entwicklung aufgekommen waren. In Anbetracht der knappen Ressourcen wurde in den zehn Tagen Entwicklungszeit sehr viel erreicht. Das Ergebnis lässt sich auf indawo.de betrachten.

Sicherlich hätte die Entwicklung länger gedauert, wenn nicht so viele Plugins zur Verfügung gestanden hätten. Deshalb stellt der folgende Abschnitt die verwendeten Plugins vor und beschreibt ihren Einsatzzweck bei indawo.

Praxis: Plugins in indawo

Folgende Plugins wurden bei indawo verwendet:

Anzeige
Anzeige
Plugin Einsatzzweck
acts_as_ratable Bewertung von Locations
acts_as_taggable_on_steroids Kategorisierung der Locations mittels Tags
attachment_fu Bilder-Uploads und nachträgliche Bearbeitung (Cropping)
exception_notification Aufgetretene Fehler per Mail erhalten
headliner Title-Tag und h1 festlegen (für SEO)
lightbox Bilder-Slideshow erzeugen
permalink_fu Sprechende, permanente URLs für SEO
restful_authentication Authentifizierung, Login, Registrierung von Nutzern
role_requirement Rollensystem für Nutzer
simple_localization Lokalisation von Modellen
will_paginate Effizientes Blättern in Daten mittels Pagination
geokit Geocoder, der Adressen von Locations in Geokoordinaten umwandelt
ym4r_gm Darstellung von Geokoordinaten auf Karte

Die Installation und Einbindung eines Plugins ist sehr einfach. Das folgende Beispiel illustriert dies anhand von Geokit.

Beispiel: zum Geocoder in 10 Minuten

Mit Geokit [3] werden bei indawo zu Adressen die zugehörigen Geo-Koordinaten ermittelt. Das Beispiel geht davon aus, dass in einem Rails-Projekt ein Location-Model vorhanden ist, das die Felder name, street, zip, city, lng und lat enthält:

User Model erzeugen
ruby script/generate model location name:string street:string zip:string city:string lng:float lat:float

Listing 1

Danach die Migration ausführen, damit die Datenbanktabelle angelegt wird:

Anzeige
Anzeige
Migration ausführen
rake db:migrate

Listing 2

Um Geokit zu installieren, muss man folgendes Skript im Projektordner ausführen. Danach muss man zum Beispiel einen Google-Map-Key in der Datei environment.rb eintragen:

Installation von Geokit
ruby script/plugin install svn://rubyforge.org/var/svn/geokit/trunk

Listing 3

Als letztes verändert man das User-Model:

User.rb
class Location < ActiveRecord::Base
	before_save :geocode_address # Callback, welches die Methode geocode_address vor dem Speichern aufruft
	acts_as_mappable # Einbindung des Plugins
	def geocode_address
		geo=GeoKit::Geocoders::MultiGeocoder.geocode(self.street.to_s << ", " << self.zip.to_s << " " << self.city.to_s << " Germany") # Aufruf, um Koordinaten abzufragen
		self.lat, self.lng = geo.lat,geo.lng if geo.success # Die Werte für lat und lng werden dem User-Objekt hinzugefügt
	end
end

Listing 4

Nach diesen wenigen Schritten werden beim Anlegen einer Location die Koordinaten der Adresse in der Datenbank mitgespeichert. Aus Vereinfachungsgründen wurde der Umfang des Beispiels auf das Wesentliche reduziert und deckt sich somit nicht mit der Implementierung von indawo. Was aber deutlich wird: Die Umsetzung einer solchen Aufgabe geht sehr schnell von der Hand.

Anzeige
Anzeige

Fazit

Mit Ruby on Rails konnte die Plattform indawo in sehr kurzer Zeit entwickelt werden. Rapid Prototyping und die Möglichkeit des schnellen Feedbacks sowie der Einsatz von Plugins haben dazu beigetragen, dass beim Startup Weekend bereits ein Prototyp vorgestellt werden konnte. Gewiss lassen sich an der Plattform noch einige Dinge verbessern – beispielsweise die Usability, die Suchmaschinenfreundlichkeit und die Beschreibungstexte. Dennoch sind alle Beteiligten davon überzeugt, dass es sich um ein erfolgreiches Experiment handelt. Vor Jahren hätte man sich nicht vorstellen können, dass man in zehn Tagen ein Startup-Projekt aufsetzen kann. Wenn man bedenkt, dass sich die Entwickler vorher noch nicht kannten und noch nie zusammen gearbeitet haben, kann man sich vorstellen, wie produktiv und schnell ein eingespieltes Rails-Team sein kann.

Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
Schreib den ersten Kommentar!
Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!
Hallo und herzlich willkommen bei t3n!

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team von mehr als 75 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Anzeige
Anzeige