Categories
Non classé

Les applications Mac sont elles trop chères ?

À l’annonce du Mac App Store, j’ai pu lire ici et là qu’il s’agissait d’une bonne nouvelle, “les logiciels Mac étant trop chers” (sic). Voici l’avis partial d’un développeur Mac sur la question.

Le prix des applis va-t-il baisser ?

Sachez qu’à ce sujet, les discussions entre développeurs vont bon train sur le forum d’Apple. Un consensus semble pourtant se dégager: que l’application soit vendue au même prix sur l’App Store que sur le site de l’éditeur. C’est à dire que l’éditeur rogne déjà sur sa marge, à cause de la ponction de 30% des gains par Apple. L’App Store iOS est passé par là, et a démontré que l’intuition naïve de vendre à prix plancher en espérant se rattraper sur le volume n’avait fait le succès que de peu d’élus. Pourtant, certains croient encore vendre leurs applis ”sans marketing” du fait de leur seule présence sur l’App Store. L’expérience App Store iOS a totalement démonté cette théorie: il est inconcevable de vouloir vendre une appli iOS aujourd’hui sans avoir un bon plan marketing derrière, avec un site web dédié et de l’affiliation à tout va. Ceci dit, le prix moyen d’une application Mac va baisser: nul doute que nous allons assister à la naissance de nombreux ”crapwares” — ces logiciels aussi mal conçus qu’inutiles, qui pullulent au sein de l’App Store iOS. Même si Apple a durcit ses règles de validation sur cette plateforme.

Le prix d’une appli d’après ses coûts de développement

Fixer le prix d’une application est difficile; d’ailleurs, il existe même des livres qui y sont consacrés. La première approche est de se dire que le coût de développement doit être couvert par les ventes. Ainsi, si vous mettez quatre mois à développer un logiciel, que vous vous payez 2000 € par mois (ce qui coûte réellement autour de 4000 € à la société), et que vous vous attendez à 1000 ventes, le juste prix serait de 4000 € x 4 mois / 1000 ventes = 16 € HT. Evidemment, ce n’est pas aussi simple. Déjà parce que tous les développeurs n’ont pas la même productivité, et surtout parce qu’évaluer le volume de ventes est impossible avant de lancer le produit. Si quelqu’un connaît une méthode d’évaluation valide, qu’il m’en fasse profiter, j’écrirai un bouquin et deviendrai riche.

Ensuite, parce que les logiciels ne se vendent pas tout seuls: j’ai fait moi-même l’erreur de le croire au départ. Votre logiciel aura beau être génial, il faut faire du marketing, sinon il passera inaperçu. Je consacre aujourd’hui un tiers de mon temps à cette activité. Si vous suivez toujours le raisonnement sur le prix de vente, il faudrait donc vendre le logiciel un tiers plus cher, soit 21 € HT.

Le bon prix

Le calcul du paragraphe précédent n’a aucun sens parce qu’il fait abstraction de la première règle du marketing:

Le bon prix est celui que le client est prêt à payer.

En y réfléchissant, cette règle est très logique: le client se fiche du temps passé à programmer l’appli. Il a un besoin (rationnel ou non) à satisfaire. Si le prix ne lui paraît pas déraisonnable, il achètera. De fait, la réflexion doit porter sur la découverte de ce prix raisonnable, pour lequel nombre de paramètres entrent en jeu: les prix de la concurrence, la qualité perçue, les moyens du public visé, etc.

Prenons le problème par l’autre sens: la culture du store iOS est de vendre à prix plancher: à quatre euros, une application paraît déjà chère! De fait, une stratégie adoptée avec succès par certains est de consacrer le minimum de temps au développement et de miser sur le marketing.

En conclusion, on en revient au problème du coût de développement: le prix actuel des logiciels Mac permet la réalisation de logiciels ambitieux en termes de qualité et de fonctionnalité. En ce sens, la baisse des prix ne serait pas forcément une bonne nouvelle pour les utilisateurs.

Categories
Non classé

Mac App Store

Si vous lisez ce blog, vous savez sans doute qu’Apple a annoncé mardi la disponibilité prochaine d’un Mac App Store, qui permettra d’acheter, de télécharger et d’installer automatiquement les logiciels sur son Mac. J’ai l’intention de rendre PortraiMatic disponible par ce canal (qui — ne nous méprenons pas — va vite devenir incontournable), mais qui n’est pas sans poser de questions.

Ma première question est la part qu’Apple prélèvera sur les transactions. La boutique équivalente pour iOS prélève 30% de commission: c’est élevé, comparé à mon système de paiement actuel, basé sur Kagi, qui prélève environ 15% (et qui est déjà cher). Je serais obligé d’augmenter le prix du logiciel, ma marge étant déjà peu élevée.

Ma seconde question est si le magasin, à l’instar de son homologue sous iOS, permettra les achats ”in-app” (à l’intérieur de l’application). Ceci pourrait ouvrir de nouvelles perspectives commerciales.

Ma dernière question, qui n’en est pas une, est qu’il faudrait que je maintienne deux versions:

  • la version pour l’App Store
  • la version actuelle avec son écran d’accueil pour prévenir que le logiciel n’est pas enregistré, et son débridage par code.

ou alors, si je pouvais faire toutes mes ventes par l’App Store:

  • la version pour l’App Store
  • une version de démonstration

Cette deuxième solution offre l’avantage de la simplicité, mais pose un autre problème: PortraiMatic est compatible avec Mac OS 10.5. Devrais-je abandonner cette compatibilité ? Nous devrions y voir plus clair lors du lancement de la boutique en décembre.

Categories
Non classé

Résultats de BeMyApp octobre 2010

BabySit

J’ai participé ce week-end au deuxième BeMyApp, dont le principe est — rappelons-le — de développer une application mobile en un week-end. Une trentaine de projets furent présentés, et six retenus. Voici les résultats:

Le podium

Première place: Study+

Application à destination des étudiants pour relever ses notes et organiser son emploi du temps.

Deuxième place: HotStop

Le jeu du cache-cache adapté à l’iPhone: il faut trouver une personne ou un objet (géolocalisé), l’iPhone indiquant si vous êtes ”chaud” ou ”froid”.

Troisième place: BabySit by Yooppies

Boîte à outils pour les parents: trouver une baby-sitter à proximité, faire des achats groupés, avoir des réductions sur des sorties avec les enfants.

Les projets qui n’ont pas été récompensés

Aidez-moi

Une assistance aux personnes dépendantes: permet de suivre leurs déplacements et prévenir les proches si elles s’éloignent trop du domicile ou si elles sont tombées.

Better accent

Améliorer son accent dans les langues étrangère en s’enregistrant et en comparant avec une phrase de référence.

Mais T où ?

Une application “pour nous les filles”: permet de marquer l’emplacement de points d’intérêts (où on se trouve, une petite robe sympa, où on a garé la voiture, etc.) et de l’envoyer à ses amies par SMS ou e-mail.

Pour ma part, j’ai participé au projet BabySit. Je suis un peu déçu qu’Aidez-moi n’ait pas décroché une meilleure place: l’équipe a vraiment travaillé très dur pour pondre une appli iPhone et un web-service. Le projet n’a pas de business-modèle, le but étant de céder gratuitement l’application, ce qui explique sans doute le classement (il s’agissait d’un des critères d’évaluation).

Bravo à toutes les équipes qui ont toutes réussi à produire une application fonctionnelle en deux jours.

Categories
Non classé

Présentation sur les bitmaps

EffetsBitmap

Comme je l’indiquais sur ce blog, j’ai fait, le jeudi 14 octobre, une présentation sur l’utilisation des Bitmaps avec Core Graphics.

Les graphismes bitmaps sont omni-présents: l’écran lui-même est une bitmap, les formats d’images les plus courants sont bitmaps (jpeg, png, gif, tiff…) et toutes les images issues des appareils photo numériques et des scanners, ainsi que les images de synthèse sont des bitmaps. Cette présentation est découpée en trois parties:

  • la première explique l’organisation en mémoire d’une bitmap, ce qui va permettre de connaître l’adresse d’un pixel de la bitmap d’après ses coordonnées.
  • la seconde expose la création, avec Core Graphics, d’une bitmap vierge, et comment écrire dans la bitmap pour générer des images.
  • la troisième montre comment appliquer des effets sur une bitmap qu’on a chargé: désaturation de l’image, bruit monochromatique, et matrices de convolution (effets de flou, accentuation, détection de contours, bas-relief…)

Tous le contenu de cette présentation s’applique aussi bien à Mac OS qu’à iOS; en particulier, elle n’expose pas l’utilisation de Core Image. Vous trouverez les diapos de la présentation, ainsi que les programmes d’exemple qui l’accompagnent sur cette page. Faites tourner.

Categories
Non classé

Cocoa Heads Paris — Session d’octobre

La prochaine séance de Cocoa Heads Paris se tiendra ce jeudi (14 octobre) à 19h00. Comme d’habitude désormais, les locaux sont ceux de l’IESA multimédia, 5 rue des Augustins, Paris IIème.

Guillaume Cerquant commencera la séance par une présentation sur la distribution automatique d’applications. J’interviendrai ensuite pour une longue présentation sur l’utilisation des graphismes bitmaps: génération et effets. Certains vont peut-être se lasser de m’entendre presque à chaque fois (mais la dernière fois, ce sont les gens de BeMyApp qui ont insisté). Promis, cette fois-ci ce sera assez technique, et sur un sujet que je maîtrise totalement. À jeudi !

Categories
Non classé

Traduction d’une appli Cocoa

Lorsque l’on propose son application dans plusieurs langues, comme c’est mon cas pour PortraiMatic, la traduction (terme que je préfère au vilain anglicisme “localisation”) est plus complexe que ce qu’Apple laisse entendre. En gros, trois aspects doivent être gérés:

  • Ne pas utiliser de chaînes de caractères ”en dur”.
  • Il faut les écrire dans un fichier .strings et les charger avec une fonction ou méthode adéquate (NSLocalizedString() ou -NSBundle localizedStringForKey:value:table).
  • Adapter la saisie et la présentation des nombres, monnaies et dates (NSNumberFormatters et compagnie)
  • Traduire les fenêtres, vues et boites de dialogue, habituellement contenus dans des .xib.

Comme nous allons le voir, ce dernier aspect est délicat.

Solution 1: Traduire les XIB à la mano

Apple propose un concept simple: le bundle de l’application contient un dossier par langue (french.lproj, english.lproj, deutsch.lproj, etc.) qui contient les éléments d’interface utilisateur spécifiques à cette langue. Pour traduire un XIB anglais en français, il suffit donc de copier le .xib de english.lproj dans french.lproj et de le traduire. Cette manière fonctionne bien… la première fois.

Imaginons que vous vouliez ajouter une case à cocher dans votre logiciel:

  • vous ajoutez la case dans le xib anglais
  • vous créez ses connexions (outlets, actions et bindings)
  • et vous refaites le même boulot pour le xib français !

En dehors des risques d’erreur sur les connexions, qui ne peuvent être détectées qu’à l’exécution, c’est un travail rébarbatif, à tel point qu’il vaut mieux repartir des xib anglais et tout retraduire. C’est ce que je faisais jusqu’à récemment.

Un autre problème est que si vous voulez faire traduire le logiciel, vous ne pouvez pas demander au traducteur d’utiliser Interface Builder pour modifier le xib lui-même. Non seulement, c’est compliqué, mais il risque de casser quelque chose. Vous devez lui fournir un simple fichier texte, ce qui nous amène à la…

Solution 2: Extraire les chaînes

C’est la solution que j’utilise actuellement pour PortraiMatic. Je me suis inspiré de la technique exposée par Philippe Casgrain:

1) un outil en ligne de commande, ibtool, extrait les chaînes de caractères du xib anglais et les écrit dans un fichier .strings.

ibtool --export-strings-file English/MainMenu.strings ../English.lproj/MainMenu.xib

Voici un extrait du fichier .strings produit:

/* Class = "NSMenuItem"; title = "About PortraiMatic"; ObjectID = "58"; */ "58.title" = "About PortraiMatic"; /* Class = "NSMenu"; title = "File"; ObjectID = "81"; */ "81.title" = "File";

2) le traducteur traduit le fichier .strings

/* Class = "NSMenuItem"; title = "About PortraiMatic"; ObjectID = "58"; */ "58.title" = "À propos de PortraiMatic"; /* Class = "NSMenu"; title = "File"; ObjectID = "81"; */ "81.title" = "Fichier";

3) ibtool recompose le xib français en remplaçant les chaînes traduites:

ibtool --import-strings-file French/MainMenu.strings --write ../French.lproj/MainMenu.xib ../English.lproj/MainMenu.xib

Philippe Casgrain propose d’extraire les chaînes à chaque build (en ajoutant une ”Script Build Phase” à la ”Target” sous XCode). C’est une bonne idée car votre logiciel de gestion de version va vous alerter d’une modification des fichiers .strings, qu’il faudra renvoyer au traducteur.

Par contre, il suggère aussi de recomposer les XIB traduits à chaque build: je ne le fais pas, car le build s’en trouve allongé, alors que ça n’agit que quand le fichier .strings vient d’être traduit.

Cette technique a l’avantage d’être simple à mettre en œuvre, mais pose encore deux problèmes:

  • les objets de l’IHM ne sont pas redimensionnés; or on sait que l’Anglais est souvent plus concis que le Français ou l’Allemand. Il faut donc prévoir de la marge dans les dimensions lors de l’élaboration des XIB anglais. Ce n’est pas toujours esthétique: il reste deux ou trois boutons que je redimensionne à chaque livraison.
  • les XIB sont volumineux, et l’application prend de l’embonpoint à chaque langue ajoutée. C’est particulièrement pénalisant pour une appli iPhone.

Solution 3: Traduire au chargement du NIB

Cette solution a été exposée par Axel Péju, l’auteur de Squirrel (et accessoirement gagnant d’un Apple Design Awards pour la version Mac), lors de sa présentation au dernier Cocoa Heads parisien. L’idée est simple: il suffit de mettre toutes les chaînes de caractères qui apparaissent à l’écran dans des fichiers .strings. Quand on charge un NIB, on remplace alors le texte de chaque objet par le code.Pour redimensionner les objets, on appelle leur méthode -sizeToFit pour que leur taille s’adapte au texte affiché.

Cette technique résout tous les problèmes exposés précedemment: il n’y a plus qu’un seul XIB, et les chaînes peuvent être fournies directement aux traducteurs. Elle possède aussi un avantage: le traducteur peut essayer lui-même l’application traduite: il n’a qu’à glisser les fichiers .strings traduits dans le dossier .lproj qui correspond à sa langue.

Ceci dit, le travail est important, puisqu’un objet contrôleur doit posséder des outlets vers tous les objets qui affichent du texte, même si ce sont de simple libellés, et faire les appels correspondant.

Solution 4: Traduire (automatiquement) au chargement du NIB

Voici une solution à laquelle j’avais pensé; Guillaume Cerquant m’a dit qu’il l’utilisait. L’idée est que chaque élément d’IHM du XIB à traduire a son titre qui commence par un astérisque (par exemple). Lors du chargement du XIB, on parcourt la hiérarchie des vues en entier: si le titre de la vue commence par “*”, on va chercher le titre dans un fichier .strings et on remplace le titre. Il me semble que cette technique est un bon compromis: à la fois assez légère à mettre en œuvre, tout en conservant les qualités de la solution 3.

Categories
Non classé

Kagi: Bienvenue au XXè siècle

  • Il faut attendre un mois pour être payé.
  • Ils envoient un chèque en dollars. Par défaut, l’ordre du chèque est le gérant, pas la société.
  • Le compte est en dollars: il faut refaire les calculs de TVA !
  • L’interface du site date du siècle dernier: peu d’options mais laborieux.
  • Pas de liste des dernier paiements, il faut faire une recherche. Il faut rechercher le nom exact.
  • La boutique en ligne est moche, et dans un français approximatif.
Categories
Non classé

Box e-commerce La Poste

Je me suis rendu la semaine dernière au salon du e-commerce à Paris, Porte de Versailles. J’étais accompagné d’un ami qui veut monter un site de vente de luminaires. Voilà des mois qu’il recherche une plateforme de vente correcte et dans ses moyens. Jusqu’alors, on lui a proposé soit d’installer la boutique en ligne pour 4000 €, ou des forfaits à 200 € par mois. La seconde offre inclut l’hébergement, mais on comprend vite qu’on va être pieds et poings liés.

Pendant le salon, nous avons peu assister à la présentation de l’offre de la Poste, de la Box e-commerce. Je dois dire que mon impression est très positive:

  • les options de personnalisation du site sont nombreuses
    Une vingtaine de thèmes sont proposés, mais il est aussi possible de personnaliser la disposition, les couleurs et les images des pages. La Poste peut aussi vous mettre en relation avec un sous-traitant qui créera votre charte graphique.
  • l’ergonomie est très correcte
  • Rien n’est parfait, mais il n’y a pas trop de bizarreries, et l’organisation est claire.
  • l’assistance téléphonique est gratuite
  • Il me semble que c’est un gros point fort.
  • le prix est imbattable: 39,90 € / mois

On peut se demander que vient faire la Poste dans le secteur de l’e-commerce; en fait c’est très malin de leur part. Tout est fait dans leur offre pour que vous privilégiez leurs services ! Par exemple, l’intégration avec Colissimo est très poussée. Quand on sait que le volume du courrier a tendance à baisser, mais que jamais autant de colis n’ont été livrés, c’est le moment pour la Poste de s’installer sur le marché avant que les concurrents étrangers viennent prendre leur part du gâteau.

Vous pouvez vous faire votre propre opinion en essayant la plateforme de vente gratuitement pendant un mois. Je crois que mon ami a enfin trouvé l’offre qu’il recherchait.

Categories
Non classé

iOS et les comptes utilisateurs

Un élément de iOS qui semble faire bondir nombre de développeurs est l’absence de comptes utilisateurs. Évidemment, iOS est un Unix BSD comme l’est Mac OS X, les comptes au sens Unix y existent donc bien, simplement l’utilisateur n’y a pas accès: il n’existe qu’un seul compte, lancé au démarrage. Tout le propos de mes homologues est que si un téléphone mobile est un objet personnel, il n’en n’est pas de même pour l’iPad, qui peut être partagé par toute la famille (cette affirmation est déjà à prouver). Chaque utilisateur devrait donc disposer de son propre espace personnel, privé et ajusté à son goût. Ils pensent donc qu’à terme les comptes utilisateurs seront intégrés à iOS. Je n’y crois pas un instant.

Je comprends tout à fait l’intérêt des comptes utilisateurs; sur mon Mac se trouvent trois comptes. Je travaille au quotidien sur un compte non-administrateur, pour deux raisons:

  • pour des questions de sécurité
  • parce que les utilisateurs de mes logiciels ne sont pas forcément administrateurs de leur machine. Je dois m’assurer du bon fonctionnement de mes logiciels dans cette circonstance.
  • Par ailleurs, ma compagne dispose de son propre compte, ce qui m’évite qu’elle m’impose son fond d’écran avec des poneys !

Si je n’y crois pas, c’est parce que je constate que le grand public n’à que faire de plusieurs comptes. Cette affirmation est étayée par mon expérience personnelle, en rendant visite à mes amis non-spécialistes de l’informatique, dont la machine se ”logge” automatiquement sur le compte par défaut. Une autre preuve est que j’ai inclus dans PortraiMatic la possibilité de déplacer la galerie des portraits. Mon intention était de permettre le partage de la galerie entre plusieurs comptes utilisateurs. Or, je n’ai jamais reçu de plaintes de clients à son propos. Vous pouvez penser que l’utilisation de cette fonction est limpide et qu’elle marche impeccablement… Je reste persuadé qu’elle n’est quasiment pas utilisée, les utilisateurs n’ayant qu’un seul compte.

Mais si je ne crois vraiment pas que les comptes utilisateurs arriveront sous iOS, c’est à cause de la philosophie d’Apple: ils ont déjà décidé que les utilisateurs n’avaient pas accès au système de fichier pour des questions de simplicité. Avoir plusieurs comptes utilisateurs crée des problèmes au quotidien. Par exemple, chez moi, les bibliothèques iPhoto et iTunes sont placées dans le compte Partagé pour que ma compagne puisse y accéder. Il faut donc régler les autorisations Unix. C’est déjà rébarbatif pour un programmeur qui sait jouer du ”chmod”, mais pour un utilisateur moyen, c’est un obstacle. Malgré tous les avantages des comptes utilisateurs, ils créent des difficultés dans l’utilisation.

Ne projetons pas nos désirs d’informaticiens sur l’utilisateur moyen: il ne veut pas savoir comment marche la machine. Même s’il devra changer régulièrement la photo de fond d’écran.

Categories
Non classé

XCode 3.2.4 et documentation Mac

J’ai mis à jour XCode hier et la documentation pour le Mac (Mac Doc Set), n’apparaissait plus dans la liste des docs disponibles. Seule était présente celle du SDK iPhone 4.1. En fait, il faut aller voir dans la rubrique Documentation des Préférences, où on peut demander le rapatriement de la doc. Pour suivre l’avancement du téléchargement, affichez la fenêtre Activity du menu Window.