Если вы искали приложение для скриншотов кода на iPhone, вы, скорее всего, ждали подборку. Десять приложений, таблица сравнения, победитель.
Писать нечего. Пойдёте искать — найдёте веб-инструменты, которые открываются в Safari, и редакторы кода, которые подсвечивают синтаксис, но не делают картинок для публикации. Категория, которой на настольном компьютере в избытке, как нативное ПО для iPhone почти не существует.
Это странный пробел для дела, которым занято столько разработчиков, и в нём стоит разобраться, прежде чем соглашаться на первую открывшуюся вкладку.
Оговорка, прежде чем вы продолжите: мы делаем Codeshot — один из немногих нативных вариантов, и он не бесплатный. В последнем разделе написано, кому его покупать не стоит. Вот как он выглядит на iPhone, чтобы было понятно, за что здесь агитируют:
Что вы находите на самом деле
Веб-инструменты. Carbon.now.sh, ray.so и длинный хвост похожих сайтов. Именно они здесь настоящие старожилы. На телефоне они работают в том смысле, что страница загружается.
Редакторы кода. Textastic и Koder — по-настоящему хорошие нативные приложения для iOS, которые подсвечивают код. Ни одно из них не пытается сделать оформленную картинку для поста: редактор просто не для этого.
Между ними — почти ничего. Этот пробел и есть тема страницы.
Справедливости ради об App Store: он огромен, и вполне может существовать что-то, чего не покажем ни мы, ни поиск. Но сам факт, что искать приходится, — это уже вывод. На настольных системах эта категория переполнена до карикатурности.
Почему пробел существует
Не потому, что этого никто не хочет. Из-за того, во что обходится сделать такую вещь.
Инструмент для скриншотов кода — это три части, которые должны друг с другом согласоваться. Подсветка синтаксиса, покрывающая достаточно языков, чтобы быть полезной: это значит поставлять и поддерживать набор грамматик, а не написать одно регулярное выражение. Рендерер, который раскладывает текст нужным шрифтом, с нужными отступами и оформлением окна и каждый раз выдаёт одни и те же пиксели. Конвейер экспорта, который чисто масштабирует и передаёт картинку туда, куда она идёт.
В вебе все три достаются почти даром. У браузера уже есть движок вёрстки, highlight.js — это тег script, а экспорт — это canvas. Поэтому Carbon вообще появился, и поэтому дюжина последовавших инструментов — тоже веб-страницы: предельные издержки следующего очень малы.
В нативной разработке всё наоборот. Свою подсветку, свою раскладку текста и свой рендеринг вы приносите сами. И, в отличие от веб-инструмента, исправление нельзя выкатить пушем в ветку.
Так что стимул всегда указывал в сторону браузера. Те приложения, что всё же пошли нативным путём, пошли туда, где это окупается, — в редакторы, где настоящая работа с текстом нужна в любом случае.
Что ломается, когда веб-инструмент встречает телефон
Ничего драматичного. Трение, троекратное, каждый раз.
Ввести код. Редактор — это веб-поле ввода. Маркеры выделения, каретка и автозамена ведут себя как в любом другом веб-поле на iOS, то есть не так, как ведёт себя редактор кода.
Что-нибудь настроить. Идея Carbon в том, что настраивается всё: тема, шрифт, отступы, фон, масштаб. На настольном экране это ряд меню, который вы окидываете взглядом. На телефоне это мелкие цели, которые надо выискивать, и каждая закрывает предпросмотр, который вы настраиваете. ray.so переживает это лучше именно потому, что предлагает меньше.
Вынуть картинку. Экспорт — это загрузка через браузер. На iOS это значит, что файл куда-то падает и вы идёте его искать, вместо того чтобы сразу перейти в приложение, из которого публиковали.
Раз в месяц всё это неважно. Еженедельно — это те же три схватки каждый раз.
Что нативность действительно даёт
Три вещи, и все они про концы, а не про середину.
Буфер обмена — одно нажатие. Универсальный буфер означает, что скопированный на Mac сниппет уже лежит на телефоне. Нативное приложение может взять его напрямую.
Экспорт идёт в меню «Поделиться». Не загрузка — сразу в «Сообщения», Slack, черновик поста, «Файлы» или медиатеку.
Настройки сохраняются. Тема, фон и пропорция остаются теми, что вы выбрали в прошлый раз, — по большей части именно поэтому десятая картинка занимает секунды, а не минуты.
Есть и четвёртое, важное для одних и совершенно безразличное для других: ваш код никогда не попадает на веб-страницу. Если вы вставляете клиентскую работу или невыпущенную функцию, эта разница может иметь значение для кого-то выше вас, даже если не имеет для вас.
Так чем же пользоваться
Изредка — ray.so в Safari. Бесплатно, настроек достаточно мало, чтобы маленький экран не стал проблемой, результат приличный. Бесплатный инструмент, которым вы пользуетесь дважды в месяц, менять не нужно.
В основном за столом — Carbon.now.sh на Mac, и перестаньте пытаться на телефоне. Он бесплатен, открыт и превосходен там, где его задумывали использовать.
Регулярно, с телефона — вот ради этого случая нативность и существует. Codeshot — нативное приложение для Mac и iPhone: вставка из буфера обмена одним нажатием, 30 тем подсветки, 60 языков, определяемых по самому коду, пропорции от 1:1 до 9:16 и экспорт прямо в меню «Поделиться».
Никогда — встроенный скриншот. Он фиксирует ширину телефона, а не вашего кода, и строки перенесены ещё до того, как вы что-то нажали.
Кому не стоит покупать наше
Оно стоит 5,99 $ и работает только на устройствах Apple. Все веб-инструменты на этой странице бесплатны и работают везде.
Если вы делаете одну картинку с кодом в месяц, правильный ответ — ray.so, и нам приятнее, чтобы вы взяли его. Если у вас нет ни iPhone, ни Mac, такого выбора перед вами и не стоит. А если картинки всегда делаются за столом, Carbon на компьютере бесплатен и очень хорош.
Довод в пользу нативного приложения узок и конкретен: вы делаете это часто, делаете с телефона, и трение стало обходиться дороже, чем само приложение.
Если это про вас, Как снять код на iPhone проводит через весь процесс, а Carbon.now.sh на iPhone подробнее разбирает, что ломается в браузере.