Sikuli: визуальное программирование для непрофессионалов

20 февраль, 2010 - 15:26Вячеслав Колдовский

Лет двадцать-тридцать назад будущее человека за компьютером виделось в образе профессионала, способного при помощи программирования решать различные прикладные задачи из области своих интересов. Сейчас об этом мало кто вспоминает, программирование считается уделом избранных, но очень даже зря – написать простенький макрос, заменяющий какую-нибудь постоянно выполняемую операцию, и экономящий в итоге вагон времени, под силу практически каждому, кто смог освоиться с ПК вообще. Но что-то все-таки людей останавливает: с одной стороны – отсутствие знаний и особого желания их получить, ну а с другой – не в меру высокий барьер для входа в когорту избранных носителей программистских знаний и навыков, существующий, не в последнюю очередь, и за счет того, что особого прогресса по направлению упрощения и приближения к среднестатистическому пользователю средств и методов программирования не происходит.

По этой причине считаю непозволительно обойти вниманием настоящий «луч света в темном царстве»: проект Sikuli, инициированный в MTI, предлагающий открытую кросс-платформенную среду разработки, которая ориентирована на программирование графического интерфейса при помощи… скриншотов.

Разумеется, скриншоты ничего не программируют, но их фрагменты используются как части программных конструкций и выступают в качестве идентификаторов областей экрана, в которые нужно кликнуть мышкой.

На самом деле идея не нова, скриптовые платформы, ориентированные на программирование GUI (создание макросов, тестирование интерфейса) поддерживают такую возможность, но до Sikuli лично я не встречал ни одного проекта, где она поставлена во главу угла (“Sikuli” переводится с древнего индианского как «глаз бога», что недвусмысленно намекает на возможность видеть все на экране). А очень даже зря – если кто-то пытался автоматизировать какие-нибудь операции на своем компьютере при помощи того же Autohotkey, то он не понаслышке знаком с проблемой, когда простые с виду операции вроде «ткнуть мышкой туда-то, ввести в поле то-то» на самом деле запрограммировать вовсе непросто. И даже если их удалось запрограммировать без лишнего труда (например, при помощи AutoScriptWriter для Autohotkey), то это вовсе не означает, что работать они всегда будут так как задумывалось, поскольку привязка к координатам мыши – зло, а сопровождение малопонятного кода – еще большее зло.

Несмотря на то, что в текущий момент IDE Sikuli выглядит неуклюже, равно как и сам Windows-дистрибутив, который почему-то напрочь отказался устанавливаться на моей системе (Windows 7 x64) – помогло наличие ZIP-архива (сейчас это модно называть Portable-версией), все же в самой идее лично мне видится большой потенциал. Отмечу, что, несмотря на всю неуклюжесть, работают созданные скрипты очень даже неплохо, но что самое главное – выглядят понятно даже для домохозяек, которым не чуждо найти и обсудить свежий рецепт в Сети. К тому же в качестве скриптового языка в Sikuli используется Jython – вполне себе полноценный язык программирования, а сами скрипты можно выполнять «в один клик», передав в качестве параметра специальному батничку.

Дальше идет картинка с Sikuli IDE, в которой введен скрипт меняющий прокси-сервер в FireFox, а под ней – то же самое, но записанное с помощью AutoScriptWriter для Autohotkey. Что называется – почувствуйте разницу.

Так выглядит смена прокси в FF в IDE Sikuli

Рисунок – Так выглядит смена прокси в FF в IDE Sikuli

Та же самая задача решается в Autohotkey

Рисунок – А так – та же самая задача решается в Autohotkey.