Si les bons outils ne font pas nécessairement les bons développeurs, ils peuvent par contre les aider à gagner en efficacité. C’est l’objectif de cet article qui présente une liste d’outils qui viennent enrichir efficacement le couteau suisse du développeur !
La liste d’outils présentée ici ne se veut pas exhaustive, ni d’ailleurs objective : le choix d’un outil plutôt qu’un autre ne se faisant pas dans l’absolu mais dans un contexte particulier, et pour une personne en particulier. Nous essayons néanmoins de proposer un palette d’outils suffisamment large pour couvrir des besoins divers au cours de la vie d’une application, le développeur étant souvent amené à revêtir différentes casquettes (architecte, administrateur système, designer, …). Les outils présentés se veulent dans la mesure du possible légers, et complémentaires d’un IDE (souvent plus lourd).
L’édition de code source
Pour cette tâche, les IDE modernes sont tout indiqués car ils intègrent bien plus que le simple éditeur de code (gestion de versions, transfert de fichiers, refactoring, debug…). Pourtant leur poids n’en fait un pas un outil pratique pour l’édition rapide ou pour un simple coup d’oeil sur un fichier. Voici deux outils qui permettent d’épauler efficacement un IDE pour des cas d’utilisation bien précis.
Notepad++
La concurrence fait rage sur ce secteur mais ce petit éditeur de texte sous licence GPL sait tirer son épingle du jeu. Il est léger, gère la coloration syntaxique de nombreux formats de fichiers, et propose beaucoup de fonctionnalités complémentaires qui peuvent par ailleurs être étendues par l’ajout de plugins. De plus son interface est entièrement configurable par l’utilisateur. Difficile de lui trouver des points faibles !
Alternatives : dans ce domaine, il y en a pour tous les goûts. Notepad2 (Windows, Licence BSD) et SciTE (Linux et Windows) utilisent le même moteur que Notepad++ (SCIntilla). Sous Linux, les différents environnements graphiques proposent des éditeurs complets à l’image de Gedit (également disponible pour Windows et OS X) sous Gnome. Au croisement du simple éditeur de texte et de l’IDE très léger, on peut citer Geany (Windows, OS X, Linux, sous licence GPL et basé sur SCIntilla) et PSPad (Windows uniquement, Freeware). Pour les irréductibles Linuxiens de la première heure, nous ne pouvons pas ne pas évoquer les incontournables Vi et Emacs (nous ne nous risquons pas à tenter de donner une préférence ici !). Sous OS X une très bonne alternative est TextWrangler, ou encore Smultron, qui s’intègrent bien à l’interface d’OS X.
Codiad
Il s’agit d’un éditeur de code source sous forme d’application web sous licence MIT. Il est donc accessible depuis n’importe quel support connecté, comme une simple tablette munie d’un clavier bluetooth. Très simple à utiliser, Codiad gère la coloration syntaxique, l’auto-complétion, plusieurs utilisateurs et plusieurs projets. Il lui manque cependant des fonctionnalités de collaboration un peu plus poussées que l’on s’attend pourtant à trouver sur ce type d’outils en ligne.
Alternatives : Il existe de nombreux éditeurs de code source en ligne en mode SAAS (Software As A Service), regroupant plus de fonctionnalités notamment sur l’aspect collaboratif. Citons par exemple Cloud9 ou Codenvy. Mais on sort ici du cadre du petit outil simple et pratique pour se rapprocher du véritable IDE. Par ailleurs l’avantage de Codiad est bien de pouvoir maîtriser l’hébergement de ses propres fichiers, et accessoirement de pouvoir modifier directement les fichiers du serveur voulu sans avoir recours à un logiciel de transfert de fichiers (attention cependant à ce cas d’utilisation qui requiert de prendre des précautions particulières vis à vis de la sécurité).
Conception, documentation et prises de notes
Durant les différentes phases de vie d’un projet, les développeurs sont amenés à manipuler de la documentation, à utiliser différents outils de conception, et à gérer une certaine quantité de notes prises tout au long du projet. Voici quelques outils qui peuvent s’avérer utiles en ce sens.
Foxit Reader
Disponible sous Windows ou Linux (mais plus mis à jour depuis 2009 pour cet OS), Foxit Reader est un lecteur PDF un peu plus léger qu’Adobe Acrobat Reader et qui permet l’annotation des documents PDF. Malheureusement, les dernières évolutions de Foxit Reader n’ont pas joué en faveur de sa légèreté. De plus il faut être attentif lors de l’installation pour éviter la pollution du système par la barre d’outils incluse dans l’installateur.
Alternatives : Sous OS X, il n’est pas nécessaire d’installer d’outil supplémentaire car Aperçu, disponible par défaut et donc parfaitement intégré à l’OS, permet de consulter et annoter les PDF. Il est cependant moins riche en fonctionnalités que Foxit et ces fonctionnalités ne sont pas mises en avant. C’est un peu le même cas de figure sous Linux où le lecteur de PDF fourni par défaut avec Gnome, Evince, permet l’annotation des documents PDF, mais de façon peu accessible dans l’interface. Pour accéder plus simplement aux annotations de PDF, on peut alors installer Xournal, donc le but premier est justement la prise de notes sur les documents PDF. Sous Windows, il existe plus léger que Foxit Reader, avec Sumatra PDF, mais ce dernier se contente du strict nécessaire en ne permettant que la simple consultation des PDF.
Microsoft office Viewers
Pour lire ou imprimer (mais rien de plus) des documents de Microsoft Office sans faire l’acquisition d’une licence, on peut se contenter des « viewers » mis à disposition gratuitement par Microsoft. Il sont téléchargeables séparément pour Word, Excel et Power Point.
Alternatives : On peut également bénéficier de quelques fonctionnalités d’édition avec des outils libres (licence GPL) tels que Gnumeric et AbiWord, plus légers que leurs homologues Excel et Word (Microsoft Office), ou que Writer et Calc (Open Office / LibreOffice), mais aussi beaucoup moins complets… et c’est sans parler des problèmes de compatibilité !
Tomboy
Avec Tomboy, outil multiplateforme (Mono) disponible sous licence LGPL, on organise ses notes comme on le ferait avec un wiki (wikipedia, docuwiki, …). Les différentes notes peuvent donc être liées les unes aux autres de façon très simple. L’avantage par rapport à un bloc-notes classique est de pouvoir ordonner efficacement ses prises de notes et de passer moins de temps à les rechercher par la suite (qu’il est énervant de ne pas retrouver l’unique note qui nous intéresse dans cette pile de papiers…). En terme de mise en page, c’est très sommaire, mais l’essentiel est là. Par ailleurs, les fonctionnalités de Tomboy peuvent s’étendre à l’aide de plugins. On regrette tout de même de ne pas pouvoir ajouter d’image / audio / vidéo à une note.
Alternatives : Dans l’esprit Wiki de Tomboy, on retrouve Zim (multiplateforme, Python), un outil un peu plus complet que Tomboy (gestion des listes de tâches et des images), mais aussi moins facile d’accès. Il existe également Keepnote, aux fonctionnalités complètes mais à l’interface plus imposante et moins directe. Ces deux alternatives sont distribuées sous licence GPL.
Balsamiq Mockup
Pour la réalisation de maquettes, il y a ceux qui utilisent exclusivement le crayon et le papier. Pour les autres il y a Balsamiq Mockup (multiplateforme, AIR). Avec cet outil, la réalisation de maquettes est rapide et simple d’approche. Par contre, pour profiter de toutes les fonctionnalités, il faut s’acquitter d’une licence. Si cet achat est tout à fait envisageable pour des projets volumineux, la question se pose par contre pour un développeur freelance ou un projet de faible envergure.
Alternatives : Il existe une alternative libre (licence GPL), nommée Pencil Project. Il lui manque cependant cette touche particulière qui rend Balsamiq Mockup si simple et agréable à utiliser. Par contre Pencil Projet ne se cantonne pas au maquétage d’applications et propose des formes très variées permettant de réaliser des diagrammes en tout genre. Par ailleurs, Pencil Project peut s’installer en tant que simple extension Firefox.
Débogage et tests
En règle générale, les outils de debug les plus pratiques à utiliser dans le cadre du développement sont ceux de l’IDE retenu. Dans le cas du développement Web cependant, des outils complémentaires peuvent se révéler d’une grande aide. Il est par ailleurs nécessaire de tester l’application web sur les principaux navigateurs du marché, il est donc important d’avoir une panoplie des dernières versions des navigateurs les plus courants, voir des anciennes versions, notamment pour IE qui a longtemps été le plus répandu… et le moins respectueux des standards pour ne pas simplifier les choses.
Firebug
Firebug (licence BSD) est le premier et le plus connu des outils de débogage intégrés au navigateur. Il s’installe sous forme d’une extension de Firefox. Ses principales fonctionnalités sont
- l’affichage du code HTML associé à un élément de la page avec possibilité de le modifier à la volée
- la visualisation et la modification à la volée des règles CSS associées à un élément sélectionné
- le débogage des scripts Javascript de la page
Alternatives : Les navigateurs récents sont maintenant souvent fournis avec des outils de développeurs intégrés reprenant les mêmes fonctionnalités que leur précurseur Firebug, parfois de façon encore plus complète à l’instar des outils du développeur intégrés à Google Chrome qui permettent entre autre un profilage plus poussé, une gestion du javascript plus complète, … Petite particularité pour IE : des outils de développeurs sont intégrés depuis la version 8 du navigateur, mais pour les retrouver sous IE7 il faut installer IE Developper Toolbar.
IETester
IETester est un outil permettant aux développeurs de tester leurs applications avec le moteur de rendu ainsi que le moteur Javascript des anciennes versions d’IE sur des versions de Windows qui ne permettent plus de les installer. Malheureusement, IETester n’offre pas un rendu 100% identique au moteur d’origine exécuté sous XP. Il est donc nécessaire de tester l’application en dernier lieu sur une version originale d’Internet Explorer, sur une machine équipée d’XP ou via une machine virtuelle.
Alternatives : Sous Windows, il y a quelques outils avec les mêmes fonctionnalités et aux limitations équivalentes, parmi lesquels MultipleIE et IECollection. Il n’existe pas de réelle alternatives à IETester sous OS X ni Linux. Le plus simple dans ce cas est d’avoir recours à la virtualisation.
VirtualBox
VirtualBox est un logiciel de virtualisation OpenSource (licence GPL) et multiplateforme qui permet de virtualiser les OS les plus répandus. Son utilisation est simple et ses options de configuration complètes.
Alternatives : Si la machine à émuler est un Windows XP et si la machine hôte est sous Windows 7 pro, Microsoft propose gratuitement un mode de compatibilité qui n’est autre qu’un Windows XP émulé (par Virtual PC). Par ailleurs, il existe différents outils de virtualisation tels que Virtual PC (Microsoft) ou encore VMware avec lesquels il faut bien évidemment posséder une licence valide du système émulé.
Le déploiement et la maintenance
Pour intervenir directement sur un serveur, y déployer un correctif, y copier des fichiers, consulter les logs… voici une petite sélection d’applications très utiles.
Filezilla
L’échange de fichiers avec le serveur distant peut se faire de plusieurs façons, la plus répandue étant certainement grâce au protocole FTP, ou mieux, un équivalent sécurisé. Filezilla permet un échange simple de fichiers avec un serveur FTP, SFTP ou FTPS. Rapide, complet, libre (sous licence GPL) et multiplateforme, que demander de plus ? Peut être une interface un peu moins fouillis, ce qui se ressent surtout sur les petits écrans, situation heureusement de moins en moins fréquente.
Alternatives : Les alternatives sont nombreuses pour ce type d’outils. S’il fallait citer un autre client, ce serait certainement Cyber Duck (Windows, OS X) sous licence GPL, pour son interface épurée qui sort un peu du moule. Notons que les versions récentes des différents OS proposent des clients intégrés qui permettent de gérer les connexions FTP (ou autres connexions réseaux) comme s’il s’agissait de répertoires locaux.
Putty
Lorsque l’on travail sous OS X ou Linux, l’accès en SSH à un serveur Linux ne pose pas de problème particulier, un client SSH en ligne de commandes étant disponible par défaut. Sous Windows, il faut en passer par l’installation d’un client. Un des plus répandus, grâce à sa gratuité (licence MIT) et à ses options de configuration, est Putty.
Alternatives : Sous Linux, si on cherche plus complet que la console par défaut, Remmina (licence GPL) propose de centraliser au sein d’une même interface tous les clients d’accès à distance dont vous avez besoin, dont SSH (mais aussi VNC, Terminal Services, …)
GNU Screen
GNU Screen est ce que l’on appelle un multiplexeur de terminal. Ce programme sous licence GPL s’installe sur un serveur Linux et permet de lancer plusieurs terminaux “virtuels” au sein d’un unique terminal (et donc le cas échéant d’une unique connexion SSH lors d’un accès distant). Il permet de nommer les différents terminaux virtuels, d’afficher différents terminaux en même temps (avec séparation horizontale), mais surtout, le processus de GNU Screen peut être détaché du terminal dans lequel il a été ouvert d’une simple combinaison de touches, les scripts en cours continuant leur exécution normalement. Le processus peut ensuite être ré-attaché à un autre terminal à tout moment. Ceci simplifie donc le lancement de scripts sur des serveurs distants, en éliminant tout risque d’interruption due à la connexion SSH.
Alternatives : Le concurrent principal de GNU Screen est Tmux qui offre les mêmes fonctionnalités mais est quant à lui distribué sous licence BSD et représente d’une certaine façon l’avenir. En effet, GNU Screen n’est plus maintenu, et de nouvelles fonctionnalités ont très peu de chances de voir le jour.
UltraVNC
Lorsque la ligne de commande n’est pas suffisante, on peut utiliser le protocole VNC pour obtenir le bureau graphique d’une machine à distance. UltraVNC est un client ainsi qu’un serveur VNC pour Windows. Il embarque par ailleurs des fonctionnalités complémentaires comme le transfert de fichiers entre le client et le serveur.
Alternatives : Il existe sous Windows de nombreuses implémentations de VNC répondant peu ou prou aux mêmes besoins qu’UltraVNC. Parmi les plus répandues, on retrouve TightVNC ou RealVNC. OS X et de nombreuses distributions Linux intègrent par défaut un client et un serveur VNC. Par ailleurs, pour se connecter à un serveur Windows à distance, on peut utiliser un client compatible avec le protocole d’accès distant de Microsoft : Terminal services. Le client est intégré par défaut sous Windows, Microsoft en propose un officiel pour Mac, et Remmina remplit très bien ce rôle sous Linux. Enfin, il existe des outils en ligne, comme TeamViewer ou LogMeIn. L’avantage de ces deux outils est la mise en place simplifiée : le client et le serveur communiquent via un tiers distant (un serveur de LogMeIn ou de TeamViewer) et se comportent donc tous deux comme simple client du même service. Ceci permet de s’affranchir de la configuration des pare-feux et des services NAT sur le réseau. Il faut bien sûr dans ce cas accepter que les échanges passent par un tiers sur lequel on n’a pas la main, aussi sécurisé soit-il.
Divers
Dans cette section sont rassemblés pêle-mêle quelques logiciels aux fonctionnalités très hétéroclites.
PrtScr
Un petit croquis étant bien souvent plus efficace qu’un long discours, de la documentation ou des emails sont souvent avantageusement accompagnés de captures d’écran explicatives. PrtScr permet de compléter efficacement la capture d’écran disponible par défaut sous Windows. Une fois la touche Impr Ecran enfoncée, l’image peut directement être annotée et recadrée. Le résultat peut alors être copié dans le presse papier, enregistré, envoyé par mail ou encore ouvert directement dans un éditeur d’images. On regrette cependant de ne pas pouvoir choisir la couleur des annotations ou simplement ajouter du texte saisi au clavier.
Alternatives : Sous Windows, il existe d’autres outils gratuits plus complets, comme Greenshot (licence GPL) ou FastStone Capture (gratuit jusqu’en version 5.3, payant ensuite). Pour des annotations poussées il sont plus complets que PrtScr, mais il sont moins directs (il faut ouvrir la capture dans l’éditeur intégré pour l’annoter). Sous OS X, il existe Skitch disponible gratuitement. Il est moins léger et direct, mais il est très complet. Sous Linux, citons par exemple Shutter qui s’intègre très bien à Gnome.
Tortoise SVN
Tortoise SVN est un client SVN sous licence GPL qui s’intègre à l’explorateur de fichiers de Windows et permet de gérer les dépôts depuis le menu contextuel. Des icônes spécifiques permettent de visualiser en un clin d’oeil l’état du répertoire par rapport au dépôt.
Alternative : C’est à notre connaissance l’outil le plus avancé dans son genre, il n’existe pas de véritable alternative pour Windows, OS X ou Linux s’intégrant aussi pleinement au navigateur de fichiers.
HeidiSQL
HeidiSQL est une alternative légère à MySQL Workbench pour Windows distribuée sous licence GPL. Il permet également de remplacer avantageusement phpMyAdmin car il n’est pas soumis aux contraintes des applications Web. Cerise sur le gateau, HeidiSQL est compatible avec SQL Server de Microsoft, il est donc aussi une alternative légère à SQL Server Management Studio. Il ne dispose par contre d’aucune fonctionnalité de conception, comme peuvent les présenter Mysql Wordbench et SQL Server Management Studio.
Alternatives : Dans le même esprit de légèreté, il existe Sequel Pro pour OS X (licence MIT), ou encore Toad for MySQL pour windows. Une alternative pour Linux : DBeaver (multiplateforme, Java).
WinMerge
Souvent utilisé de paire avec un outil de gestion de versions, l’outil de comparaison / fusion qu’est WinMerge (licence GPL) peut également être utilisé seul pour comparer des fichiers, voir même des répertoires, et les fusionner.
Alternatives : Meld (licence GPL également) sous OS X, Linux ou Windows permet de réaliser les mêmes tâches.
Reflector
En .Net ou Java Lorsque les sources d’une librairie ne sont pas disponibles, on peut utiliser des outils dits de décompilation pour accéder à ses entrailles. Pour .Net, la référence dans le domaine est très certainement Reflector, mais qui, malheureusement pour les petites bourses, est devenu payant avec les dernières versions.
Alternatives : Avec les mêmes fonctionnalités, mais gratuit, il existe DotPeek proposé par le prolifique Jetbrains (Éditeur connu pour son IDE Java, IntelliJ). Mocha est un équivalent pour le monde Java.
Quelques applications WEB
Il existe également une quantité grandissante d’outils disponibles en ligne, pour répondre à des besoins très variés. Sans pour autant les détailler ici voici une petite liste qui pourrait être utile aux développeurs :
http://jsfiddle.net/, http://cssdesk.com/, http://codepen.io/, http://tinkerbin.com/, http://liveweave.com/ … pour le prototypage rapide et le partage de bouts de code html / CSS / javascript
http://www.generatedata.com pour la génération de données (pour remplir des bases de données de tests par exemple)
http://mergely.com/, outil de fusion en ligne
http://spritepad.wearekiss.com/, outil de création de sprite CSS
https://cacoo.com, https://moqups.com/, outils de création de diagramme et mockup
http://www.colorblender.com/, http://colorschemedesigner.com/, outil d’aide à la génération du code couleur d’un site web
Conclusion
Nous pourrions continuer la liste de ces outils indéfiniment, ceci étant, vous en avez à présent une sélection assez large qui devrait permettre à tout développeur de pouvoir enrichir son environnement de développement. Les applications mobiles (pour tablettes notamment) n’ont pas été présentées ici, car le marché est encore majoritairement destiné aux loisirs (jeux, multimedia). Mais de plus en plus souvent, les tablettes sont utilisées dans le milieu professionnel. On devrait donc y retrouver ce type d’outil en plus grand nombre, et surtout de façon plus adaptée à l’usage tactile. Les applications web et les offres de cloud ont également leur carte à jouer pour conquérir ce type de support.
Il est possible de retrouver l’intégralité de cet article dans le numéro 164 du mois de juin 2013 du magazine « Programmez ».