[RUBY] Une histoire de six élèves du premier et du deuxième cycle du secondaire faisant un service et prenant la première place d'un concours d'école de programmation

Cette fois, un lycéen et cinq lycéens feront tout, de l'idée à la mise en œuvre du service, et la section WEB se déroulera dans le cadre d'un concours d'école de programmation pour les élèves du premier et du deuxième cycle du secondaire appelé Life is Tech!. Je voudrais prendre la première place et parler de ce que j'ai pensé et ressenti.

0. Membres

Les membres sont des élèves des collèges et lycées de la troisième année du collège à la troisième année du lycée, et le développement a été réalisé par une équipe de cinq lycéens avec un lycéen. Il y a 3 filles et 3 garçons, et le ratio de filles est élevé pour une équipe d'élèves ingénieurs, mais tout le monde est généralement très proche les uns des autres, sortant jouer après l'école ou en vacances, mangeant des repas, etc. C'est un ami à faire. (Le favori de l'équipe est la pêche, mais je n'ai pas pu sortir ces derniers temps à cause d'un virus ... Pien ...)

1. Quel genre de service avez-vous rendu?

Le service créé cette fois-ci est un nouveau type de service d'enregistrement du temps de développement qui se bat avec les développeurs appelé Assemble Tempo dans les batailles en équipe. assembletempo_toppage.png

Comment garder votre motivation en vous fixant comme objectif de «créer un service qui vous garde motivé»? Quand j'y ai pensé en équipe, j'ai eu l'idée d'en faire un service de style jeu.

Nous avons discuté du type de jeu à créer ensuite au sein de l'équipe, mais c'est devenu une histoire que si nous étions en compétition pour le temps de développement dans des batailles d'équipe, nous pouvions continuer à nous motiver, nous avons donc décidé de créer un service qui concourt pour le temps de développement dans les batailles d'équipe. Fait.

2. Langage de programmation et services utilisés

Langage de programmation

Langage de programmation: Ruby, Javascript Cadre: Sinatra Environnement de développement DB: sqlite3 DB de production: PostgreSQL

La raison de leur adoption est parce qu'il est adopté dans le cours de service Web de Life is Tech!, Donc la plupart des membres l'ont utilisé, et parce qu'il y a des manuels, etc., j'ai décidé que l'éducation est facile même si je ne le comprends pas. est.

un service

J'ai utilisé divers services pour le développement d'équipe. Tout d'abord, nous avons utilisé Google Hangouts et Slack pour la communication d'équipe. Chez Slack, nous avons posé des questions sur le code, de nouvelles idées et des commentaires sur les pièces finies.

Google Hangouts a été utilisé pour les réunions en ligne afin de prévenir l'infection d'un certain virus. Screen Shot 2020-10-07 at 0.58.54.png

J'ai utilisé Github pour le partage et la gestion de code et Trello pour la gestion des tâches de projet.

Trello s'est entretenu, a discuté de la façon de procéder et a utilisé des étiquettes pour indiquer les priorités, les difficultés, etc. Screen Shot 2020-10-07 at 1.03.34.png

3. À propos de la mise en œuvre.

La mise en œuvre a été divisée en équipes front-end et back-end.

l'extrémité avant

Tout d'abord, les membres ont discuté du type d'écran dont ils avaient besoin et ont créé un cadre temporaire. ios__________.jpg

Ensuite, lorsque j'ai choisi les écrans dont j'avais besoin dans une certaine mesure, j'ai utilisé XD pour créer un cadre. Screen Shot 2020-10-07 at 14.03.25.png

Back end

Comme pour le frontal, les membres ont discuté et mis en œuvre le type de système à utiliser et le type de mise en œuvre à mettre en œuvre.

Principales caractéristiques du backend

Fonction d'authentification utilisateur / confirmation par e-mail Calcul du graphique / mise à jour du graphique en temps réel (événements d'envoi du serveur) Fonction de regroupement Fonction icône Fonction minuterie

Est la fonction principale.

Parmi eux, je voudrais expliquer les événements d'envoi du serveur et la fonction de minuterie, qui ont pris beaucoup de temps à mettre en œuvre.

Server Send events Les événements d'envoi de serveur sont une technologie qui utilise http pour effectuer une communication en temps réel et peut être utilisée comme une transmission du serveur vers le client. La principale différence avec WebSocket est qu'il ne peut pas envoyer du client au serveur. (J'utilise plutôt Ajax)

Les événements d'envoi de serveur ont pris du temps car il n'y a pas de bibliothèque dans Sinatra et nous devons l'implémenter à partir de zéro.

ruby


set :server, 'thin'
$connections = []

get '/send_message' do
	message = "Ceci est un message."
	$connections.each do |sse|
		sse << "retry: 500\n" +
					"event: event\n" +
					"data: #{message}\n\n" unless sse.closed?
	end
end

get '/sse', provides: 'text/event-stream' do
	stream :keep_open do |sse|
		$connections << sse
		graph_data.callback {
			$connections.delete(sse)
		}
    end
end

Fonction minuterie

La fonction de minuterie prépare un tableau pour la minuterie. Une nouvelle création crée un minuteur s'il n'y a pas de données utilisateur dans la table. Le minuteur expire maintenant si la table contient des données utilisateur.

ruby


#Vérifiez s'il y a déjà des données dans la base de données
if time = Timers.find_by(Identifiant d'utilisateur: session[:Session utilisateur],Heure de début: now_time.all_day,Heure de fin: nil)
    #Économisez le temps de fin du développement et le temps de développement dans DB
	Timers.update(Heure de fin: now_time)
else
	#Créer un nouveau minuteur
    Timers.create(Identifiant d'utilisateur: session[:Session utilisateur],Heure de début: now_time)
end

4. Impressions du développement de l'équipe

Pour la première fois cette fois, j'étais très heureux de pouvoir le publier alors que des membres développaient le backend et que la plupart des membres n'avaient jamais utilisé Git.

Ce que j'ai appris.

Ce que je pensais avoir le plus appris, c'était de diviser les fonctions en parties et de demander aux membres. (PM) Puisque les langues qui peuvent être écrites et les techniques qui peuvent être utilisées diffèrent selon les membres, ce fut un grand apprentissage de les comprendre et de demander aux membres. Est-il possible d'utiliser une technologie que je n'ai jamais utilisée? En y réfléchissant, j'ai demandé aux membres d'implémenter la fonction! !!

De plus, en enseignant aux membres ce qu'ils ne comprenaient pas, j'ai pu produire beaucoup de résultats et apprendre des choses que je ne savais même pas.

C'était difficile.

Il y a beaucoup de choses qui ont été difficiles. Tout d'abord, il était difficile d'enseigner Git car j'étais le seul membre à pouvoir utiliser Git pour la gestion et le partage de code, ce qui est le plus important dans le développement d'équipe.

Ensuite, en ce qui concerne le problème propre aux élèves, c'était difficile parce que tout le monde avait des écoles différentes, donc il y avait peu d'occasions pour tout le monde de discuter de choses comme des discussions parce que le calendrier ne correspondait pas. De plus, en ce qui concerne la période de test, tout le monde a cessé de répondre et j'étais inquiet de pouvoir le publier correctement.

Ce que j'ai pensé des membres.

Je pense que c'était la première fois que je développais une équipe, donc je pense que c'était difficile pour moi de comprendre Git au début. Cependant, j'ai pensé que tout le monde me suivait et faisait un très bon travail.

Au début, les membres qui disaient «Je pourrais déranger les membres» ont aussi dit «Je suis content d'avoir pu le sortir!» Et «C'était amusant!», Donc j'étais content.

En ce qui concerne les compétences en programmation, il y avait des membres qui ont pu écrire Ruby et des membres qui ont dit "Je ne comprends pas du tout Ruby !!" et qui ont pu utiliser DB (ActiveRecord)! !! Il semble que les membres ont également le sentiment que leurs compétences se sont améliorées, et je pense que c'était incroyable qu'ils aient pu grandir au point de le sentir.

5. Enfin

C'était la première fois pour moi et les membres de développer cette équipe, mais j'étais heureux d'être à la première place à temps pour le concours. Il y a eu beaucoup de réflexions sur le PM, l'environnement de développement, le support et la mise en œuvre dans le développement de cette équipe, mais j'espère qu'il pourra être utilisé pour le développement futur.

Nous discutons du type de fonctions à implémenter dans le futur, et nous prévoyons de le mettre à jour, donc ce serait formidable si vous pouviez utiliser le service pour augmenter votre motivation de développement! !!

Recommended Posts

Une histoire de six élèves du premier et du deuxième cycle du secondaire faisant un service et prenant la première place d'un concours d'école de programmation
[Robocon, le plus grand élève du secondaire au monde] À propos du programme FRC ~ À propos des conditions, etc. ~
L'histoire de l'apprentissage de Java dans la première programmation
[Robocon, le plus grand élève du secondaire au monde] À propos du programme FRC ~ Grabber related ~
[Robocon, le plus grand élève du secondaire au monde] À propos du programme FRC ~ Relatif aux ascenseurs ~
[Robocon, le plus grand élève du secondaire du premier et du deuxième cycle du monde]
Programmation et mathématiques au secondaire