Пардон, это заметка типа «поток сознания». Макс, не читай.
В 12-м Ай-ОСе появилось приложение Шорткаты. На самом деле это Эплы купили давно существовавшее приложение Воркфлоу и переименовали его, но не суть. Типа ура, пришла автоматизация в Ай-ОС, можно научить телефон чему-то умному!
На компьютере у меня есть пара десятков скриптов, которые автоматизируют разные штуки: наводят порядок в тегах мп3-файла, изменяют размер окна точно до нужного, расставляют подписи в уголках кучки фотографий перед публикацией. Поэтому мне, конечно, было интересно понять, что можно автоматизировать на телефоне.
Но хрен придумаешь. Кажется, человечество уже лет тридцать пытается придумать «программирование для непрограммистов» в форме какого-то составления алгоритмов из кубиков. Но программирование — это придумывание самого алгоритма, а не написание кода. Писать код — самое простое; упрощать это нет никакого смысла. Но так это ещё и не упрощают, а усложняют! Код — это просто текст. Его можно читать, копировать, редактировать привычными инструментами. А когда ты видишь перед собой «воркфлоу» в виде «экшенов», составленных паровозиком, то понять, что там происходит, невозможно.
Я прочитал штук пять статей разных авторов про то, как они классно используют Шорткаты, и на каждый их пример мне оставалось только пожать плечами. Они все какие-то вымышленные, таких задач не бывает в моей жизни. Например, один автор, уезжая с работы, запускает шорткат, который смотрит, сколько ему ехать до дома с учётом пробок, и отправляет жене эсемеску «милая, я буду через %t». Надеюсь, его жена настроила автоответ «жду, любимый!», и вся эта коммуникация не доставляет никаких хлопот обоим.
В списке действий в «Шорткатах» нет многих таких, которые просто руками сделать проще простого, и есть такие, которые иначе не сделать вовсе. В приложении «Фото» можно поставить любую фотку в качестве фона домашнего экрана, но в шорткатах такого экшена нет. В приложении «Музыка» никак нельзя скопировать в буфер обмена название играющей песни, зато в шорткатах такой экшен есть. Какая в этом всём логика — я не понимаю.
Пример с музыкой оказался мне полезен — я люблю, бывало, скинуть кому-нибудь название трека, который слушаю. Но это не имеет никакого отношения к автоматизации, это просто костыль для добавления фичи, которая и так должна была быть в приложении. И я смог сделать этот шорткат только потому, что Эплы предусмотрели для этого экшен. То есть Эплы прям подумали: «наверное людям может быть полезно скопировать название песни в буфер», но вместо того, чтобы добавить всплывашку сюда:
Они добавили экшен в «Шорткаты»! Как, почему? В итоге этой фичей смогут воспользоваться в лучшем случае один процент из тех, кому она понадобится. Точнее, даже из того одного гипотетического процента, кто это найдёт, большинство не смогут составить сам шорткат. Дело в том, что экшен Get Current Song нужно ещё пропустить через экшен с феноменально бессмысленным названием Text, и только потом копировать в буфер. В результате у меня есть вот такой шорткат:
То есть как программист ты можешь догадаться, что, видимо, Get Current Song возвращает объект, у которого несколько полей, и который не умеет автоматически преобразовываться в тип string, а Copy To Clipboard ожидает на входе именно этот тип, и поэтому нужно строку составить вручную из полей объекта. Но как до этого должен догадаться обычный человек я не понимаю. Зато я отлично понимаю, как эта фигня озадачит даже программиста.
Вот как то же самое выглядело бы в коде (язык вымышленный):
Let s = Music: GetCurrentSong
CopyToClipboard s.Artist ": " s.Title
Как этот текст может быть менее понятен, чем та хрень, которая у меня на скриншоте? Экшен Text даже не глаголом называется! Что такое Local Only я не представляю. В программировании есть хотя бы документация по функциям, а тут нет нихрена. Это похоже на паззл.
В общем, однажды мне пришло в голову, как использовать шорткаты. Так устроена моя банковская жизнь, что часть месяца мне выгоднее рассчитываться одной карточкой, а вторую часть — другой. А чтобы переключить дефолтную карточку в Эпл-пее, нужно идти в какие-то адские дебри настройки. И я подумал: «О! Сделаю себе шорткат, который будет по команде включать нужную карточку. Пусть сам идёт в нужные дебри настройки и жмёт нужные кнопки!» Это-то должно быть возможно?
Хрен. Оказалось, что нельзя сделать шорткат, который меняет что-то в настройке.
И вот тогда я подумал, что надо будет написать этот пост и объявить «Шорткаты» полностью бесполезным говном.
Но как раз в это время я засобирался к родителям на дачу; — и тут в истории наступает неожиданный поворот (оцените также невероятную пунктуацию в этом предложении).
Зимой дачу постоянно топить дорого, а учитывая, что там не каждые выходные кто-то появляется, это просто глупо. Поэтому в отсутствие посетителей там лишь поддерживается плюсовая температура, чтобы трубы не полопались. Чтобы не приезжать в ледяной дом и не ждать полдня, пока станет тепло, несколько лет назад мы установили штуку, которая позволяет удалённо включать и выключать батареи. И это не хипстерская какая-нибудь хрень с красивым приложением для айфона, а приборчик с сим-картой, которому надо отсылать эсемески с командами.
В общем, процедура поездки на дачу зимой такая, что за несколько часов до выезда нужно отправить серию эсемесок, чтобы включить несколько батарей. Также при отъезде нужно не забыть отправить серию эсемесок, возвращающих всё в исходное положение. И вот делать это — бесит, даже несмотря на то, что мне, может, раз пять за зиму это надо. Так что я сделал шорткат:
И аналогичный для отъезда. Даже в Сири добавил. Теперь говорю: «Сири, нагрей дачу!» и она греет. Это круто. Что такое Show When Run я, разумеется, не знаю.
Зацените ещё, как совершенно бесчеловечные смс-команды завёрнуты в красивые прямоугольнички с тенями! Вот оно, программирование будущего по версии Эпла.
Конечно, из-за того, что вместо нормального кода я должен составлять это из тупых блоков, эта штука совершенно неповоротлива. Скажем, я рассказал про эту штуку папе — он порадовался, попросил меня скинуть экшен ему. Ну я разобрался, как это сделать (конечно, просто скопировать код и вставить в чат в телеграме я не могу). И что толку? У папы он не заработал, потому что у него в Контактах дачная симка называется не так, как у меня, а отредактировать он ничего не может. Почему эти экшены добавились как нередактируемые, я понятия не имею.
А вот как это могло бы выглядеть, если бы это был код:
Messages: Send "Temp.R1=+20 XXXXX" To "Dacha Uvildy Ksytal"
Messages: Send "Temp.R2=+20 XXXXX" To "Dacha Uvildy Ksytal"
Messages: Send "Temp.R3=+20 XXXXX" To "Dacha Uvildy Ksytal"
Но нет, ведь для того, чтобы сделать программирование «доступным простым людям» нужно усложнить его настолько, что даже программист не разберётся.