Содержание статьи

В конце октября 2014 года Apple представила новую версию своей операционной системы — OS X Yosemite. В нее внедрены три основные новинки: поддержка iCloud Drive, углубленная интеграция компьютера с планшетом или телефоном и Java Script for Automation (JXA). Главным для нас сегодня стало как раз последнее новшество.

До сих пор основным средством автоматизации в OS X был Automator и язык AppleScript, о котором мы уже неоднократно подробно рассказывали. Теперь же пользователям доступен более популярный и понятный язык — и в этом главная новость. Но конечно, возможность заниматься автоматизацией на JS — не ноу-хау Apple. На других платформах нечто подобное давно реализовано:

• Под Windows писать автоматизации (сначала только для администрирования) на JS, а точнее на его диалекте JScript можно было еще в 1996 году. Чуть позже он трансформировался в популярный JScript .NET. • Под Linux разного добра для всевозможных JS-автоматизаций тоже хоть отбавляй. Правда, в основном это узкоспециализированные инструменты, сделанные в соответствии с принципом «программа должна делать что-то одно, но делать хорошо». Вот очень интересный пример: настраиваем запуск стандартных Linux-команд по расписанию с помощью Node.js и Grunt.js. • Писать на JS скрипты для ускорения решениях офисных задач типа заполнения календаря и рассылки писем можно в облаке. Google еще в 2009 году выпуcтили Google Apps Script. Подробнее о нем мы писали в номере 187 (август 2014-го) в статье «Дело техники».

 

JS и OS X

На самом деле писать JS-автоматизации для Мака можно уже лет пятнадцать как. Но об этом мало кто знает. Open Scripting Architecture (OSA) — это набор объектов и методов, который позволяет взаимодействовать с OS X c помощью скриптовых языков (например, AppleScript или Python). JavaScript OSA появился еще в 2001 году, но Apple практически не продвигала его. Этот язык (а точнее диалект) как раз и стал основой для JXA.

Но JS OSA все годы его существования был в заброшенном состоянии, и пользовались им лишь редкие гики. JXA сильно усовершенствован, отлично документирован, и Apple активно продвигает его в широкие массы макоюзеров. Так что же есть хорошего в Java Script Automation?

• Apple очень хорошо подготовились к выходу этой новинки — выпустили наиподробнейшую документацию и создали блог.

• Для тех, кто любит и умеет работать с консолью, предусмотрена возможность запускать JS-скрипты через терминал. • Для людей, которые занимаются разработкой под iOS или OS X, есть Objective-C Bridge. Эта фича появилась еще в OS X Mavericks для AppleScript. Теперь она доступна и для JXA. Из скриптов можно запускать фрагменты кода на Objective-C.

 

AppleScript vs JavaScript

В Script Editor теперь можно выбирать между двумя языками
В Script Editor теперь можно выбирать между двумя языками

Я лично не знаю ни одного человека, которого можно было бы назвать гуру AppleScript. А знатоков JS в мире сотни миллионов, и их количество растет с каждым днем. И это, пожалуй, самый весомый аргумент в пользу JXA.

Для меня лично на JavaScript написать что-либо гораздо проще, чем на AppleScript. Но я предполагаю, что это относится не ко всему населению нашей планеты. Поясню на примере. Вот простейший скрипт на JS для отправки письма:

Mail = Application(‘Mail’); content = «!!!!!!!!!!!!!!!!» msg = Mail.OutgoingMessage({ subject: «С новым годом!», content: content, visible: true }); Mail.outgoingMessages.push(msg); Mail.activate();

А вот то же самое на AppleScript:

tell application «Mail» set theMessage to make new outgoing message with properties {visible:true, subject:»С новым годом!», content:»!!!!!!!!»} end tell

Англоговорящая второклассница, скорее всего, бы предпочла второй вариант. Код более компактен, минималистичен и более понятен человеку, далекому от разработки. Ведь именно для таких людей и создавался AppleScript.

Но вкладывать время и силы в изучение Apple Script абсолютно нерационально, если ты, конечно, не готов дать пожизненный зарок в том, что это будет единственный язык программирования, с которым ты будешь работать до конца своих дней. Он пригодится только для «домашнего пользования». В отличие от знания JS, знание AppleScript не прокормит тебя, не поможет найти друзей и ни на йоту не поднимет твой уровень программистских скиллов. Написание яблокоскриптов не имеет никакого отношения к традиционному кодингу.

Еще летом, когда Yosemite была доступна лишь в Beta-варианте, на StackOverflow стали появляться вопросы на тему того, как переписать программы на AppleScript на JS. Логика AS настолько не состыкуется с традиционным программистским мышлением, что трансляция скриптов с одного языка на другой на практике оказывается довольно трудоемким делом.

 

Automator

Ни в одной другой OS нет такой классной предустановленной программы для автоматизации всяческой рутины, как Automator в OS X. Automator позволяет автоматизировать любые drag and drop действия. В том числе работу в Office 365 или Photoshop. Автоматизацию можно создать, просто записав свои действия, модифицировав готовый шаблон в интерфейсе или редакторе кода. В макросы, записанные Automator, можно выставлять фрагменты кода на JavaScript или AppleScript.

Еще одна интересная новинка — Automator в Yosemite управляется голосом! И это просто фантастически удобно! Например, можно на слова «Твою мать опять!» запускать в Sublime поиск строки, не заканчивающейся знаком ;. Или на слова «покажи крупнее» увеличивать в InDesign масштаб и врубать High Display Perfomance.

Оставить мнение

Check Also

Признаки «Оперы». Йон фон Течнер об идеологии браузера Vivaldi

«Хакер» побеседовал с сооснователем фирмы Opera и основателем Vivaldi Йоном фон Течнером, …