Bestandteilliste Tablet (Android, evtl. iOS) - welche Programmiersprache?

Toblerowner

Schraubenverwechsler(in)
Hallo zusammen

wir haben einen Paternosteraufzug voller Werkzeuge und Bestandteile für Produkte (sortiert nach Produkt). Wem das anschliessende zu viel Text ist, direkt das Bild unten anschauen ;) )

Ich möchte nun für ein Android Tablet eine App programmieren (evtl. später umsteigen auf iOS), in welcher ich Ordner anlegen kann. Darin sollen alle Bestandteile der Produkte aufgelistet sein(und wo sie zu finden sind). Jedes Bestandteil hat seine aktuelle Menge hinterlegt. Mit anklicken kann nun eingetippt werden wie viele herausgenommen werden. Ebenfalls ist daneben ein PDF verknüpft (Plan mit Explosionszeichnung des Produktes (bereits vorhanden))
Jeder soll selbstständig neue Produkte bzw. Artikel anlegen können.
In einem Untermenü werden sämtliche Artikel aufgelistet die unter ihrem Mindestbestand fallen.

Zur Veranschaulichung habe ich eine grobe Skizze erstellt (entschuldigt wie schrecklich die aussieht):

https://i.gyazo.com/23022be2585cdf4563e365365b1e7d04.png

Zu meiner Frage:

Welche Programmiersprache soll ich dafür nutzen?
Bin ein Anfänger was das angeht. Habe mich bisher lediglich mit Batch-Dateien, Auto-It und mit GameMaker beschäftigt.

Vielen Dank fürs' durchlesen.

Freundliche Grüsse

Tobler
 
Soll/kann/darf/muss es eine native App sein (also verteilt über einen App-Store) oder wird auch eine Bedienung akzeptiert, die nicht zu 100% den nativen Look&Feel des jeweiligen Systems entspricht?

Persönlich würde ich das ganze als Webseite realisieren. Ein Server, der den Bestand und die Teilelisten hält, wird sowieso benötigt, womit es keine rein lokale App sein kann (oder soll es nachher exakt eine Instanz der App auf exakt einem Gerät geben)?

Und egal wie das "Geschrei" hier gleich wieder losgeht, ich würde das eher mit PHP und MySQL wie mit anderen Techniken auf dem Server realisieren. ASP.NET oder JavaScript wären für mich u.A. auch noch denkbar. Ob man das ganze dann auf Clientseite mit reinem HTML5/JavaScript realisiert, entsprechende Bibliotheken (JQuery) nutzt oder gar TypeScript zur "Absicherung" des JS einsetzt, bleibt einem wohl selber überlassen.

Mit einer Webseite kann man zwar (zur Not mit zwei getrennten Layout) das Look&Fell des jeweiligen Systems nachahmen, wird dies aber niemals zu 100% erreichen. Auch Xamarin (=C#, mittlerwiele aber kostenlos, da von MS aufgekauft) schaft das wohl nicht problemlos.

Viele Sachen gehen mit einer Webseite allerdings überhaupt nicht (z.B. Sperren des Tablets, verhindern, dass sich das Tablet automaisch abschaltete oder die Nutzung von sehr vielen HW-Features wie die Abfrage des WLans oder des Akkustandes) oder nur, wenn man das ganze nachher als lokale Seite auf dem Tablet speichert (z.B. automatisches Fullscreen beim Aufruf der Seite).

Falls man mit den Einschränkungen leben kann, hat die (mobile) Webseite für mich (ohne Mac) auch den Vorteil das es quasi die einzige Möglichkeit ist, die Apple nicht aktiv verbieten kann, um für ein iOS-Gerät irgendwas zu programmieren, ohne einen Mac zu besitzen und ohne dort eine Entwickler-Lizenz zu beantragen. Verteilen von Apps geht dort (ohne Rooting) auch nur über den einzig wahren (naja, von Apple halt vollkommen abgeschotteten) Appstore, wenn in der Firma kein eigenere Appstore aufgebaut wird. Ja, ich hasse mein iPhone genau aus diesem Grund, komme aber nicht drum herum, da die Firma mir dieses abgeschottete Teil nunmal zur Verfügung stellt.

Sonst bleibt einem für iOS nur XCode mit Objective-C oder Swift-2 übrig, was aber alles einen einigermaßen aktuellen Mac voraus setzt.

Für Andrroid wäre normalerweise Java, Android Studio und das zugehörige SDK die erste Wahl. Wenn man denn bei Android bleiben möchte oder (bei Erweiterung der Kundschaft) eine komplett neue GUI entwickeln möchte.

Die Web-Oberfläche kann man einfach an jedem Computer unter nahezu jedem OS (XAMPP gibt es für Windows, macOS und Linux, mit ein paar Einschränkungen kann man einen entsprechenden Webserver inkl. DB und PHP aber selbst auf einem Android-Tablet ans Laufen bekommen) entwicklen. Sonst läuft das ganze halt im Emulator und/oder auf dem echten Device ab.

Gerade als Anfänger würde ich mich erst einmal um die Businesslogik kümmern und erst danach eine ansprechende GUI draufsetzen. Das erfordert natürlich etwas Planung, da Du Dir zunächst überlegen musst, was die GUI alles können soll, welche Daten dafür benötigt werden usw. Einen Teil dazu hast Du in dem Bild ja schon getan.

Was mir in dem Bild an Funktionalität noch fehlt ist eine einfache Bestandsübersicht zur Inventur, also:
- Tabelle mit dem Inhalt eines "Faches" im Paternosteraufzug
- Möglichkeit, die Menge manuell zu korrigieren

Und ob es so geschickt ist, die Mindermengen in einem Untermenü zu verstecken anstatt gleich eine Mail an den Materialverantwortlichen zu senden (es muss ja keine automatische Bestellung sein), muss euer Ablauf zeigen. Sowas wird als Untermenü ohne prominente Hinweise im Startbildschirm gerne übersehen.

Interessant wird es dann am Ende, wenn der Paternosteraufzug auch noch durch die App gesteuert werden soll.
 
Ich gebe fotoman da recht. Ich würde es auch als WebApp anlegen. Grundsätzlich würde ich sowieso vieles als WebApp anlegen, wo andere sich um Kopf und Kragen programmiert haben.

Den Aufwand (vor allem, wenn du es noch nie gemacht hast), eine App direkt für die Plattformen zu schreiben, holst du nie wieder rein. WebApp's sind auch viel Pflegeleichter, da die Anpassungen/Updates nur auf einem Server durchgeführt werden müssen und auf die Endgeräte keine neue Appversion aufgespielt werden muss. Außerdem ist es auch Plattformunabhängig. Man kann also auch auf einem PC die Daten verwalten. Ich würde es klar als WebApp machen. PHP und MySQL sind da auch vollkommen ausreichend. Denn ich denke es wird als Intranetlösung angesetzt. Da kommt dann auch PHP hinterher :lol:
 
Vielen Dank für die Antworten!
Als Webseite ist das leider nicht möglich. Das Tablet wird keinen möglichen Internetzugang haben. Das Ganze ist auch nur innerhalb unserer Räumlichkeiten (und somit auf einem einzigen Gerät) zugänglich.

Das mit iOS ist auch erstmal wieder verworfen.

Ich denke ich sollte kurz meine Situation genauet beschreiben:

Ich bin Uhrmacherlehrling in der Schweiz. Die IWC hat fü uns eine extra Lehrwerkstatt. In dieser sind wir allerdings etwas vom Rest abgeschottet. Da wir alle verschiedenen Werke reparieren, benötigen wir von Allem Ersatzteile. In allen anderen Abteilungen ist das alles schon durch SAP geregelt. Zudem in der Produktion nur Teile eines Werkes lagern. Alles in Allem haben wir ein wenig Durcheinander, müssen selbst für Nachschub sorgen usw. Bei vielen Leuten ist da Verwirrung vorprogrammiert (hehe).

Mit meinem Vorhaben möchte ich die Möglichkeit bieten, alle aktuellen Werkzeuge und Ersatzteile, entsprechend sortiert, eintragen zu können. So kann jemand der nun sein Ersatzteil sucht sein Werk eintippen und die Bestandteilliste durchscrollen. (Teilweise sind Ersatzteile bei anderen Kalibern einsortiert, da gleiche Teile).
Unser Lehrmeister soll dann einfach in ein separates Menü schauen können, in welchem ihm gezeigt wird, was nachbestellt werden soll.

Also soll ich auf Java und Android Studio tippen?
 
Ich stelle mal eine Gegenfrage. Muss es denn auf ein mobiles Gerät beschränkt sein? Kann euch da keiner ein altes ausrangiertes Notebook zu verfügung stellen?

Wenn dem nicht so ist, würde ich vielleicht auf Phonegap gehen. Damit hast du immernoch die Möglichkeit, auch iOS zu supporten, ohne alles neu machen zu müssen. Phonegap ist im Grunde eine Art Bibliothek und Build-System für mobile Software, die einem ermöglicht, Apps mit Webtechnologien wie HTML, CSS und Javascript zu schreiben. Der Einstieg in dem Bereich ist also wirklich leicht und man erhält schnell brauchbare Ergebnisse.

Wenn du also nicht privat vorhast, viel zu programmieren, wäre das für dein Vorhaben eigentlich vollkommen ausreichend.
 
Als Webseite ist das leider nicht möglich. Das Tablet wird keinen möglichen Internetzugang haben. Das Ganze ist auch nur innerhalb unserer Räumlichkeiten (und somit auf einem einzigen Gerät) zugänglich.
Das ganze soll also als einzelne App nur auf dem Tablet laufen, inkl. der gesamten Bestandsverwaltung.

Internet wäre nicht nötig, ein kleiner Server (hört sich jetzt viel größer an wie es ist, da genügt auch ein alter Laptop, der sogar eine USV mitbringen würde) und ein einfacher Router würden genügen, um loakl ein WLan zu betreiben.

Wenn das ganze läuft und Akzeptanz findet, sehe ich dort halt sehr schnell mehr wie einen Client (wie von Dir auch schon mit iOS angedeutet, können natürlich auch ein paar Android-Tablets sein). Und dann darfst Du (oder gar sonstwer) das alles von einer molotitischen App mit lokaler Datenspeicherung auf eine serverbasierte Lösung umstellen.

Mit meinem Vorhaben möchte ich die Möglichkeit bieten, alle aktuellen Werkzeuge und Ersatzteile, entsprechend sortiert, eintragen zu können. So kann jemand der nun sein Ersatzteil sucht sein Werk eintippen und die Bestandteilliste durchscrollen. (Teilweise sind Ersatzteile bei anderen Kalibern einsortiert, da gleiche Teile).
Unser Lehrmeister soll dann einfach in ein separates Menü schauen können, in welchem ihm gezeigt wird, was nachbestellt werden soll.
Dir ist bewusst, dass das alles dann auf einem einzigen Gerät ablaufen muss welches erfahrungsgemäß irgendwo in der Werkstatt herum liegt, falls es nicht fest montiert wird, Jeder, der etwas sucht, eintragen möchte oder nachsehen möchte, ob der Bestand zu klein wird, muss exakt dieses eine Gerät nutzen und hoffen, dass der Akku nicht gerade leer oder das Netzteil auffindbar ist.

Also soll ich auf Java und Android Studio tippen?
Ohne iOS ist das fast schon Geschmackssache (Java oder C#). Vermutlich wirst Du für Android und Java die meisten Tutorials im Netz finden, was den Einstieg massiv erleichtern sollte.

Los geht es natürlich hier
Download Android Studio and SDK Tools | Android Studio
Als lokale Datenbank dann SqLite. Bitte kein selber gebasteltes CSV-File zur Datenspeicherung nutzen, so kompliziert ist SQL auch nicht.

Und bevor jemand damit beginnt, mit der ersten Version Deiner App Daten zu erfassen, mache Dir auch Gedanken über ein (möglichst automatisiertes) Backup dieser Daten. Ohne Netzwerkanschluss muss es dann halt genügen, regelmäßig ein automatisiertes Backup der Daten auf die MicroSD Karte zu speichert. Sonst lässt doch mal jemand das Tablet fallen oder Deine App hat einen Fehler, der nur bei gewissen Eingaben auffält, und alle Daten sind weg.
 
Ich stelle mal eine Gegenfrage. Muss es denn auf ein mobiles Gerät beschränkt sein? Kann euch da keiner ein altes ausrangiertes Notebook zu verfügung stellen?.

Dann kann man gleich ueberlegen, den ganzen Kram in Excel (oder ein Tabellenkalkulationsprogramm deiner Wahl) zu packen.
Geht schneller, einfacher und bedarf weniger Einarbeitung (kann man auch Tablett freundlich gestallten).
 
Ich stelle mal eine Gegenfrage. Muss es denn auf ein mobiles Gerät beschränkt sein? Kann euch da keiner ein altes ausrangiertes Notebook zu verfügung stellen?

Leider ja.

Das ganze soll also als einzelne App nur auf dem Tablet laufen, inkl. der gesamten Bestandsverwaltung.

Internet wäre nicht nötig, ein kleiner Server (hört sich jetzt viel größer an wie es ist, da genügt auch ein alter Laptop, der sogar eine USV mitbringen würde) und ein einfacher Router würden genügen, um loakl ein WLan zu betreiben.

Wenn das ganze läuft und Akzeptanz findet, sehe ich dort halt sehr schnell mehr wie einen Client (wie von Dir auch schon mit iOS angedeutet, können natürlich auch ein paar Android-Tablets sein). Und dann darfst Du (oder gar sonstwer) das alles von einer molotitischen App mit lokaler Datenspeicherung auf eine serverbasierte Lösung umstellen.

Problem ist, wir sind Teil einer Grossfirma. Diese wiederum gehört einem Konzern. Jede Hard- und Software die nicht vom Konzern abgenommen wird, ist verboten bzw gesperrt (dürfen nicht einmal eine eigene Maus am Arbeitsplatz haben). Einzige Möglichkeit: eigenes Gerät, eigene Software. Dies muss aber alles Abends abgeschalten und ausgesteckt werden.
Dir ist bewusst, dass das alles dann auf einem einzigen Gerät ablaufen muss welches erfahrungsgemäß irgendwo in der Werkstatt herum liegt, falls es nicht fest montiert wird, Jeder, der etwas sucht, eintragen möchte oder nachsehen möchte, ob der Bestand zu klein wird, muss exakt dieses eine Gerät nutzen und hoffen, dass der Akku nicht gerade leer oder das Netzteil auffindbar ist.

Den Tag durch würde das Tablet dauerhaft am Strom hängen. Keine sorge, das Tablet sollte an einen festen Platz montiert werden.

Ohne iOS ist das fast schon Geschmackssache (Java oder C#). Vermutlich wirst Du für Android und Java die meisten Tutorials im Netz finden, was den Einstieg massiv erleichtern sollte.

Los geht es natürlich hier
Download Android Studio and SDK Tools | Android Studio
Als lokale Datenbank dann SqLite. Bitte kein selber gebasteltes CSV-File zur Datenspeicherung nutzen, so kompliziert ist SQL auch nicht.

Und bevor jemand damit beginnt, mit der ersten Version Deiner App Daten zu erfassen, mache Dir auch Gedanken über ein (möglichst automatisiertes) Backup dieser Daten. Ohne Netzwerkanschluss muss es dann halt genügen, regelmäßig ein automatisiertes Backup der Daten auf die MicroSD Karte zu speichert. Sonst lässt doch mal jemand das Tablet fallen oder Deine App hat einen Fehler, der nur bei gewissen Eingaben auffält, und alle Daten sind weg.


Alles klar. Werde nächste Woche anfangen mich damit zu beschäftigen :)

Vielen lieben Dank an euch! Weiss nun, womit ich mich auseinanderzusetzen hab!
Soll ich den Thread hier irgendwie schliessen? Oder für eventuelle spätere Fragen hier wieder reinschreiben?
 
Einzige Möglichkeit: eigenes Gerät, eigene Software. Dies muss aber alles Abends abgeschalten und ausgesteckt werden.
Bei uns im Betrieb ist schon sowas verboten, ein eigenes (W)Lan ist da auch nur sehr schwierig zu realisieren.

Keine sorge, das Tablet sollte an einen festen Platz montiert werden.
Ich mache mir da keine Sorgen, ich nennen nur die Punkte, mit denen ich bei vergleichbaren Projekten (wenn auch von der Firma beauftragt und finanziert) seit 10 Jahren immer wieder kämpfe.

Ich würde z.B. keine privte HW dauerhaft irgendwo fest montieren. Alleine schon ein normales Tablet so zu montieren, dass es wirklich fest an der Wand/dem zu bedienenden Gerät montiert ist, man aber trotzdem noch an alle Anschlüsse kommt (bzw. Du musst spätestens dann ein zweites, vergleichbares Gerät zur Entwicklung haben), kann eine Herausforderung sein. Dazu sind auch unterschiedliche Körpergrößen zu beachten, u.U. habt ihr auch körperlich behinderte Kollegen oder welche im Rollstuhl), es muss "kompatibel" zu den genutzten Reinigungs- und Lösungsmitteln des Raumes sein (mit Glück lassendie Reinigunsfachkräfte solches Equipment einfach in Ruhe)

EIn einfaches Ankleben des Tablet ist meist nicht zielführend, eine passende Halterung gibt es nur für wenige Geräte. Aber vieleicht habt ihr eine Mechanikwerkstatt und dort findet sich jemand, der Dich bei dem Projekt unterstützt und eine passende Halterung herstellt.

Spätesntes, wenn es dann mal produktiv genutzt wird, kommt irgendwann der Arbeitsschutz :D und äußert seine Bedenken, wenn man sie nicht vorher bedacht hat, z.B. Fluchtwegbreiten (selbst in unseren Werkstätten wird auf sowas geachtet) Brandgefahr oder "hängen bleiben" eines Kollegen, der bei der nächsten Brandschutzübung eilig darn vorbei läuft.

Alles Fragen aus der Praxis, über die Du Dir, falls noch nicht geschehen, m.M.n. Gedanken machen solltest, da es nicht um ein Hobbyprojekt geht, das nachher als Prototyp dem Chef als mögliche Lösung zur Verbesserung der Arbetisabläufe präsentiert werden soll.

Das alles soll Deinen Einsatz oder gar das gesamte Projekt nicht schlecht machen, ganz im Gegenteil. Solche Vorschläge sind immer willkommen, einige Firmen habe für sowas sogar eigene Fördertöpfe. Es sind nur Punkte, die gerade in einer größeren Firma m.M.n. zu bedenken sind, wenn man als Hobby ein System für den produktiven Betrieb entwicklet (und nicht nur einen Prototyp).

Soll ich den Thread hier irgendwie schliessen? Oder für eventuelle spätere Fragen hier wieder reinschreiben?
Konkrete Design-Fragen, die sich auf das Projekt beziehen, würde ich hier posten. Sonst musst Du alles dopelt erklären oder verlinken. "Normale" Fragen zur Android-Programmierung würde ich eher in einem eigenen Beitrag stellen oder mir gar ein Forum suchen, bei dem es ausschließlich darum geht.
 
Zurück