Formation Formateur Swift
by Apple
Jour #1
Cadre Apple
Accès aux compétences tech pour que chacun qui porte des solutions pour changer le monde puisse le faire à l'aide de la technologie, simplement, facilement.
Quelle est votre App préférée et pourquoi ?
exemple : yuka, shazam
2 piliers
- swift
- ressources
SWIFT
- Syntaxe épurée
- Sécurisé
- Interactif : écran tactile
- Puissant
- Open Source : communauté dev et porté pour d'autres plateforme
Exemple SWIFT épuré
- for count in ..
- ...
Exemple swift sécurisé
- les variables et les constantes
- Billet de concert : warning si on met const car la var peut changer plus tard
- les types
- type lié à une valeur et à une fonction (on ne peut pas mélanger)
Exemple interactif
- Playground : expérimenté dans un env sécurisé,
- temps compilatilation presque 0
- exemple : 4 pendules qui change en fonction du code en visualisant les conséquences
Exemple puissant
- app airbnb ???
- Leaft : concurrent über Etats unis (résultat), avant besoin de 6 mois pour installer leurs services dans une nouvelle ville (6 jours maintenant pour se lancer ailleurs), avec moins de ligne de code et moins d'erreurs à gérer, utilise 38% de moins de batterie et moins lourde
- British Airwaves : gain productivité
- IBM et SAP
Exemple open source
- depuis 2014
- débat, priorisation et décisions transparent : ouvertement
- projet server sur linux avec swift
- chez android et microsoft, ils travaillent la compatibilité (fiche de poste chez microsoft == prérequis swift)
Ressources
- Ecole primaire : 7 ans environ
2 applis partenaires : bloc base coding,
coach part academy (partenaire) et thinker pour 7 à 10 ans, logique comment faire avancer des personnage et on travaille sur le début des fonctions en bloc
- Collège
- Lycée et université
même langage à tout âge == valeur ajouté
nos interventions collège/lycée ect
Ressources primaire
- sur comment introduire swift dans mon programme primaire : livre "?" et "?"
- activités déconnectées puis connectés pour comprendre qu'on utilise dans la vie de tous les jours des concept de prog
Ressources collège
- Playground limite basse : 9-11ans ans car bcp de lecture et de réflexion
- App swift playground : tous les concepts de bases
monde interactif en 3D, caractère 3D, coder pour qu'il puisse réaliser ses épreuve (fonctions, for loop, var...)
collectionner les diamants
Apprendre à coder 1 et 2
Apprendre à coder 3 plus dur
event, interface (on créer son propre monde plus loin du personnage Octet) == 90h gratuite
guides gratuits qui part de 0
concept hors code (attendre feux qui passe vert au rouge, arbitre qui siffle un péon)
Ressources collège 2
- Comprendre concepts de la vie : un arbitre qui siffle pénaltie, les joueurs savent ce qu'il faut faire sans qu'il leur rappel
- Après on traduit dans swift playground
- colle avec ce que le ministère demande
Ressources Lycée et Université
- On passe de l'ipad au mac ici avec xCode
- 2 programme : introduction dev apps et dev apps avec swift , 2 programmes assez séparés
- introduction dev apps : parcours pas futurs dev mais comprendre combien c'est facile et difficile le dev d'apps, comment interagir avec les dev d'apps, ce qu'il manque la traduction (mockup, scrum, UML)
- choses simples pour comprendre swift et xcode
- Parcours 2 (on étudie ici) : pour les futurs dev, à la fin une personne est prête à prendre un job junior, commencer par un debogage (2 fois plus long )
- 1 année (200h)si rien en connaissance et en ingénierie info : quelques jours (?)
Ressources Université
- UI et ??
- Guides étudiants (contenus) et enseignants (plus léger mais plein d'outils, présentation keynotes à utiliser tels quels, construite de manière progressive, idée de comment évaluer les élèves, comment rendre le programme plus facile ou difficile, pleins d'idée selon les niveaux, combiner avec nos propres ressources
47 chapitres : labs, fin d'unité == projets de plus en plus difficiles
Attention
Il faut un mac
2 derniers ouvrages que en anglais
Plus
- Developper aussi des ressources entre swift et iot
- tout objet qui a du bluetooth peut
- la compagnie tierce doivent faire un effort pour le rendre compatible
playground et sphero
Journal de progression de l'apprenant
- documenter son apprentissage
- pour prendre du recul et revenir plus tard
keynote ou slides
même parcours que élève mais suggestions pour animer et encourager les élèves, comment différencier les cours ect
App dev with swift
- 5 grandes parties
- de UiKit à ... puis
- donner accès aux ressources pro pour les apprenants car vous aurez des questions tout le temps donc vous devez connaitre les ressources pro (developer.apple.com)
- on alterne swift puis Xcode pour mettre en pratique ce qu'on a appris dans les 5 unité puis un projet par unité (lampe torche, jeux deviner mots, quizz personnalité random, todolist puis appli d'un restau pour allez sur un server et importer les données) en lien avec marché du travail et difficulté progressive
Première leçon
- séance 3 : Unit 3
- constantes et variables
- différence
- voir guide student et guide teacher pour voir les idées proposées
Start ludo
- On télécharge ressources et keynote à partir des livres
- ressources organiser comme la progression, différents chapitres
- Student materials : on récupères les labs
- Teacher : même orga et ressources et supports keynotes en plus, et on retrouve les labs, et les corrigés (ne pas se planter en donnant les résultats plutôt que les exos)
- coller le plus possible à la realité du dev
swift
- moderne et du petit truc à un énorme systeme
- ça rappelle react (en plus abordable)
- tout un tas de warning avec Xcode == securité
- langage compilé == rapide
- rapide à prendre en main, épuré (ciao les ;), ne se base pas sur l'indentation pour comprendre le code
- expressif et clair
- sécurité : notion de type, fortement typé
- cast,
- mécanisme de déduction, on le voit pas forcémen
swift
- Explicit object type : langage sécurisé car très typé (on peut se servir du cast ou autre)
- inference : mécanisme de déduction, on le voit pas forcément que très typé
- optionals
- Error handling : gestion de null
swift compatibilité
- android : peut compiler pas dev dessus
- raspberry pi
- tensor flow : la semaine dernière on peut l'utiliser dessus (machin learning)
- services web
swift simplicité
- pas de notion de main
- pas de notion class
- pas de notion fonction
- fichier txt avec print hello world donné à un compilateur swift
cmd swift dans le terminal
puis ligne de code ou swift + fichier texte
outil playground
- un type de fichier pour découvrir swift sans besoin de connaissances
- après très vite Xcode : cet après midi
demain première app iOS - Blanck playground hello world : mode REPL
== mode interprété, globalement il y a une compilation qui mouline un petit moment
Plus : service web
- 4 frameworks
- Xcode avec swift package manager
- bench : swift écrase la concurrence (Go ?)
- 3 interprété et 1 compilé en face (A voir avec goland en face), gain par rapport à nodejs
Unit 1.1 : swift
- ....
Unit 1.2 : constants
- let name = value
- exemple pi let pi = 3.14159 (définit déjà dans le langage)
- On ne peut pas réaffecter la const
on a pas tant de variables que ça dans nos programmes
variables
- var score = value
Unit 1.2 : exemple
- trajet
- destination ?
- distance ?
- est ce que l'élément va être amener à changer, si un doute on définit en tant que const, Xcode vous aidera à changer en var (code assist')
Unit 1.2 : convention dommage
- pas opérateur, pas espace et pas de début avec number
- on peut mettre emoji et caractère spéciaux
- respect caml case lower
Unit 1.2 : comments
- //
- /* ... */
Unit 1.2 : types
- définir nos propres types
- s'appuyer types déjà fournis par langage (string ect)
- struc, class, enum, tuple ?
- une fois créé on pourra les instancier avec différentes valeurs requises, pour construire notre objet x puis définir les méthodes liés à l'objet (comportement)
- int, double, bool et string
- commencent par majuscules
Unit 1.2 : types
Unit 1.2 : types safety
- valeur peut changer, pas le type == immuable
- let playerName, var score, var gameOver
- score=playerName compile pas
- y compris double dans un entier ? oui, ne passent pas
- nous nombres, swift == types différents
- utiliser passerelles pont pour convertir les types
- type quasiment jamais visible, compilateur va le voir, on ne l'écrit pas en général, dans certain cas on peut la faire apparaitre, explicite/eviter le type choisi par défaut ( ou à la déclaration sans initialisation)
- let number: Double = 3
Unit 1.2 : types safety
- cas 1 obligatoire quand valeur plus tard, swift vérifie
- let number: Integer
- number = 30
- cas 2 : ???
- cas 3 : quand on créer nos types (comme 1 cas on doit être sur de passer le bon type)
var x: Int
print(x)
marche pas car obligé d'être initialisé
Tips : On peut formater nos nombre avec _ : les littéraux entiers pour améliorer la lecture, lu comme si il n'y en avait pas
Plus loin
- tuple : struck légère pour regrouper données
- key/value
- pas abordé
- list map collection : abordé plus tard
json ?
Exercices
- intro
- allez const var datatype
- certains en exercises et d'autres plus concret en app exercise (contexte de dev app en plus)
-
playground : compiler au fur et à mesure
on peut changer le compilateur en mode manuel
pratique pour les programmes plus lourds/avancés
dans le print toujours double quote
Exercices 1 - Getting started
- start
- const & var (type)
double plus précis que float (que 5 à 6 décimales)
double par défaut (64 bit) - operator
résultat d'une division cast en int toujours inférieur
partie entière
homogène donc div de 2 entier = 1 entier
Sinon forcer les 2 entiers en double donnera un double - control flow
- debugging
Operator
- Attention typage
3 + pi : on ne peut pas le faire
3 en double ou si pas le choix pour entier 3
on converti en double
Double(3) + pi - += existe et ++ -- deprecated (proposition open source), au même moment que boucle for historique a été retirée (for in)
- Notion de priorité (*/ avant +-)
Conditional flow
- exemple auth
- alt + shift + L = |
- alt + n = ~
- if accolades obligatoires mais pas () obligatoires
- break existe mais il est implicite
- pas de finally
- ternaire
- il y a le slide mais il est masqué par défaut
Unit 2 : lesson 6 Boucle
- For comme le for each
- _ si pas besoin d'un index précis
- ...
- for letter in "ABCD".characters {
- }
- .characters n'est plus utile maintenant (implicite)
- scalaires unicodes : unicod scalar
- for loops
- fonction enumerated() pour décomposé une tuple
une variable composé de plusieurs valeurs (le résultat)
Unit 2 :
- concat : +
- attention de pas concat un char avec un string
- par contre method append
- triple quote ouvrante/fermante
"""
texte à la ligne 0
texte à la ligne 1
""" - func String.lowercased()
- func String.hasSuffix()
- func String.contains()
- func String.count
Unit 1 : lesson 5 Xcode
- creation projet (option app name)
com.apple.swift.productname
single view app - git local par défaut (donner le remote)
- naviguer xcode
- configurer xcode
- shortcut
run : cmd+r
compilation/build : cmd+b
Debbugging
- getting started
- lesson 6
- lire 2 erreurs
- comprendre un erreur thread
- lire console réussite
Formation Formateur Swift Jour 1 by Apple
By pierreb4u
Formation Formateur Swift Jour 1 by Apple
- 230