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
Made with Slides.com