[JAVA] Le processus par lequel le SE du SIer de Gorigori s'est efforcé jusqu'à la sortie du premier développement personnel

Gorigori SIer SE a créé un service Web par développement personnel C'est comme la suite de.

La dernière fois que j'ai écrit l'histoire "J'ai essayé de créer un service Web". En regardant celui que j'ai écrit, j'ai pensé, mais la plupart des introductions de services Web n'incluent pas beaucoup d'éléments SIer. Quant à l'intention précédente, plutôt que de faire appel au service Web lui-même, j'entends parfois une voix dire "SIer le lance juste à BP et ne programme pas", donc SE qui n'a qu'une expérience SIer programme et c'est comme un service Web Je voulais vous montrer un résultat expérimental qui ressemblerait à ceci lorsque vous le ferez.

Mettez de côté si c'était un succès ou un échec.

Cependant, je pense que je n'ai écrit que "j'ai fait ceci", donc je vais décrire approximativement le processus de développement, donc j'espère que cela sera utile.

C'est vraiment difficile. Pas moderne. Cela ressemble à un matériel de lecture. C'est une balise "poème".

1. Motivation

Cette fois, «ce que je veux faire» a été le catalyseur de mon développement. Il est bon d'apprendre systématiquement à partir de zéro en traçant, mais quelles sont les fonctions requises pour «ce que vous voulez faire» et la technologie requise pour ces fonctions? Au fur et à mesure que j'y réfléchissais, j'oubliais l'heure et elle prenait de plus en plus forme. Cependant, je ne pense pas que "ce que je veux faire" sort si facilement, alors je pense qu'il est bon de demander simplement à différentes personnes "ce que je veux". Si vous faites "ce que vous voulez faire", je pense que vos mains bougeront librement.

2. Environnement de développement

Dans cet esprit, par quoi devrions-nous commencer ... J'ai imaginé un environnement de production. Je n'ai aucune expérience moderne. "Eh bien, c'est mon premier développement personnel, est-ce que c'est correct d'avoir un serveur? Donc, Apache Tomcat pour le serveur Web / AP et MySQL pour la base de données, mais cette fois c'est MariaDB qui n'y a pas touché!" Comme. Le reste est la langue. Comme je l'ai déjà écrit, j'ai choisi Vue pour l'avant et Java (Spring Boot) pour l'arrière avec l'intention d'apprendre de manière bien équilibrée avec Vue inexpérimentée et Java expérimenté. Et l'éditeur. J'ai de l'expérience avec C # et Java, et je l'ai utilisé dans mon travail avec Visual Studio et Eclipse. Je n'ai pas de licence Visual Studio. D'après mon expérience, je crains qu'Eclipse soit lourd et parfois mousseux au démarrage. J'ai choisi VS Code parce que VS Code, que je vois souvent, est léger et semble facile à utiliser pour Java. Il n'y a pas de contrôle de version source particulier. Il n’existe pas de conteneur.

3. Commencez le développement avec Java

Tout d'abord, j'ai commencé à créer à partir de l'écran de connexion. Tout d'abord, l'écran de connexion ... n'est pas très intéressant. Je l'ai implémenté en utilisant la fonction de Spring Boot.

Ensuite, les bases de SIer, l'écran principal de maintenance. La première chose que SIer crée pour apprendre le développement est l'image d'un écran de masse. Depuis que j'ai de l'expérience, la mise en œuvre est terminée pour le moment. Pour le moment, je n'ai encore rien décoré. J'ai montré à Yome l'écran de connexion et l'écran des hommes de masse, en disant "Je pourrais le faire." La réaction a été quelque chose comme "Combien d'heures passez-vous comme ça?" Il semble que l'impact de l'apparence était plus fort que la fonction. Cela a réduit ma motivation. Donc, à ce stade, j'ai présenté Vue,

Je suis une personne Vue inexpérimentée. (Je gère le JavaScript brut tel quel) C'est une bibliothèque, et vous avez l'impression de mettre un fichier quelque part et de vous y référer? C'est ce que j'ai pensé. C'est peut-être comme ça pour apprendre, mais lorsque j'ai installé Node.js et Vue CLI et créé un projet à partir de Vue CLI, quelque chose de différent de mon imagination est sorti. Se sentir bouger seul ... Mon niveau Vue.

4. Flux de développement

Dans mon travail, j'écris des spécifications, je les fais réviser, puis je les réexamine ... mais cette fois je ne l'ai pas fait en détail. En tant que SIer, j'ai tout expérimenté, de la "définition des exigences-> conception externe-> conception interne-> implémentation-> tests divers-> version", donc j'ai peut-être fait diverses choses dans mon esprit. Le flux cette fois est pour chaque fonction ・ Mémo de l'image à l'écran ・ Mémo du diagramme de transition d'écran ・ Mémo de conception de table DB Je l'ai fait. Et ils ne sont pas à portée de main pour le moment. C'est perdu. Lors de la reprise de l'entreprise, il faut dire "Il n'y a pas de spécification. Veuillez consulter la source." Même si l'image de l'écran ou la transition de l'écran changeait, elle était fermée dans la fonction, donc l'effet était petit, mais lorsque l'élément de table a changé, l'effet sur les autres fonctions était grand et c'était beaucoup de problèmes, alors j'y ai pensé un peu plus correctement. J'aurais dû le faire ... maintenant je pense.

5. Soudainement API

Maintenant, nous avons deux environnements d'exécution, Node.js et Tomcat. De nos jours, l'image de la conversion du backend en API REST s'est solidifiée. Au moment du développement, j'ai mis le projet Vue dans le projet Java et lancé à la fois Node.js et Tomcat. Dans l'environnement de production, j'ai créé le fichier Vue construit inclus dans le fichier war et je l'ai tout mis sur Tomcat.

6. Démarrez le développement avec Vue + Java (Spring Boot)

Recréez l'écran de connexion et l'écran de masse des hommes avec Vue + Spring Boot (API REST). Quand j'ai cherché ici, il y avait différentes façons de le faire, donc je ne suis pas resté coincé là-bas.

J'ai utilisé Element pour la validation au début, mais lorsque j'ai essayé de gérer les erreurs côté serveur, cela ne fonctionnait pas, alors je suis passé à Vee Validate. Je fais quelque chose avec Vee Validate.

Le flux de mise en œuvre était généralement routinier. Création d'écran (Vue) → Création de table (DB) → Création de classe de référentiel (Java) → Création de classe de service (Java) → Création de classe de contrôleur (Java) → Création de partie d'accès API REST (Vue) → Réglage de l'écran (Vue) C'est comme répéter pour chaque fonction.

D'ailleurs, d'après mon expérience en tant que SIer, je ne travaille qu'avec un designer depuis un certain temps, et j'ai peu de connaissances en design. La finition est donc indescriptible en matière de design.

7. Création d'autres fonctions

La création de chaque fonction était basée sur une expérience et des services pleins du monde. Le contrôle exclusif s'est fait finement ... De plus, de nombreux sites m'ont appris à mettre en œuvre le chat sans faire référence aux services qui débordent dans le monde. Cependant, comme il existe de nombreux chats simples, je me suis demandé si les membres étaient en ligne, la fonction de suppression et l'affichage des icônes.

Lorsque j'ai essayé d'implémenter la fonction de suppression du message de discussion plus tard, il s'est avéré qu'il ne pouvait pas être supprimé en raison de la structure de la table. À ce stade, j'ai revu la structure de la table liée au chat, donc la gamme d'influence était grande. J'ai pensé qu'il serait correct de supprimer le message plus tard, mais j'ai également pensé que la structure du tableau aurait dû être prise en considération dans une certaine mesure.

Je l'ai souvent montré à Yome, mais il a dit quelque chose d'assez dur. Surtout la conception et l'opérabilité. Vous en dites autant? Sur. Eh bien, c'est ce qui est important pour les utilisateurs. Je suis reconnaissant que certaines parties se soient améliorées tout en étant endommagées en soulignant qu'il n'y a pas de corps ou de couvercle de Yome.

8. Approche du négatif

Pendant le développement, il vient de temps en temps. "Qui utilisera ce service ...?" Cela devient une grande ombre et enveloppe la vue dans l'obscurité. Revoir "C'est un putain de service" Avis "ne peut pas être utilisé" Examinez "trop de bogues" Des évaluations négatives courent dans ma tête. Et je veux m'arrêter et tout jeter. Les applications inachevées qui ont été arrêtées à mi-chemin et laissées sans surveillance dormiront partout.

Dans un tel cas, il peut être nécessaire de retrouver la récompense du point de vue de l'utilisateur, mais j'ai échappé au plaisir de la programmation. Ensuite, lorsque je me sentirai calme, je reviendrai au point de vue de l'utilisateur. J'ai réussi à garder ma motivation en la répétant.

9. Gestion des tâches pour synchroniser entre les utilisateurs qui ont un petit problème

J'ai pensé que j'aimerais ajouter une fonction pour synchroniser les écrans des utilisateurs avec WebSocket comme le chat à la gestion des tâches, alors j'ai pensé le réaliser avec Vue.Draggable + WebSocket, mais une subtile, non, assez inquiétante S'est produit.

Quelque chose à propos des mouvements étranges de Vue.Draggable avec une thérapie symptomatique

Le mouvement est subtil. Après tout, j'étais inquiet pendant deux jours et j'ai réussi à m'en débarrasser avec un traitement symptomatique.

10. Préparation de la publication

Le serveur a utilisé AWS EC2. Au début, j'ai utilisé une instance du niveau gratuit, mais comme la mémoire était trop petite et que cela affectait les performances, je l'ai fait un peu mieux, même si c'était payant. Frais d'études, frais d'études ... Configurez simplement le serveur DB et Web / AP ici et placez le module intégré dessus.

Après avoir créé toutes les fonctions, j'ai commencé à acquérir le domaine requis pour la publication et à le convertir en HTTPS. Je me demandais si quelque chose serait difficile, mais l'acquisition du domaine et la conversion en HTTPS se sont déroulées facilement sur AWS. Il semble que le domaine .com coûte environ 1000 yens par an ... Nous avons privilégié la commodité par rapport à la gratuité.

Lorsque vous êtes prêt, faites-le nous savoir. Cette fois, je l'ai annoncé sur le SNS où j'ai un compte. Quand je pensais qu'appuyer sur ce bouton me préviendrait, c'était plutôt un état de tirage au doigt.

11. Après publication

Il n'y a pas beaucoup de différence. Parfois, je reçois un commentaire amer et je m'enfonce ... Je pense qu'il est assez difficile de les amener à l'utiliser. Je n'ai pas décidé quoi faire à l'avenir. Je pense que c'est le plus important après sa sortie.

12. Enfin

Je vais le développer! C'est à peu près comme ça de la décision de libérer. Il y a peu d'éléments techniques, mais c'est un poème. Ce que j'en ai pensé, c'est que même si je pensais: "Oh, ça ne va certainement pas être résolu!", Ça sera géré dans une semaine au plus. Il sera résolu de manière inattendue. C'est solide, mais je peux y penser dans le bain ou les toilettes.

La question "Qui utilisera ce type de service ...?" Revient toujours. Je ne pense pas que quiconque l'utilise réellement. Mais je pense qu'il est important d'en faire l'expérience jusqu'à sa sortie une fois. Si cela ne fonctionne pas, vous pouvez simplement le refaire. Je ne suis pas une personne forte mentalement avec un cœur fragile, mais je suis bosselé mais disposé à aller de l'avant. Donc, même si vous n'avez jamais créé d'application publique, pourquoi ne pas l'essayer?

Recommended Posts

Le processus par lequel le SE du SIer de Gorigori s'est efforcé jusqu'à la sortie du premier développement personnel
Gorigori SIer SE a tenté de créer un service web par développement personnel