TL;DR
/hat - iOS-приложение для игры в шляпу в компании. Попробуйте. линк
Если захотите, пишите фидбэк в чатик или мне в личку.
Если вы не слышали про шляпу, правила - тут.
Идея - шляпа
Привет, клуб! Я Слава, работаю в Perplexity AI, делаю инференс LLM-ок и менее распиаренных моделек.
Пару летних выходных, пока AI-лабы работали над recurrent self-improvement и приближали сингулярность, я потратил на решение по-настоящему насущной проблемы человечества - отсутсвия играбельной шляпы под iOS. А заодно, сам того не зная, стал участником нашествия Шляп на Вастрик.
Что в шляпе?
Я фанат персональной шляпы: каждый игрок получает очки за угаданное или объяснённое слово, а пары "объясняющий - угадывающий" меняются каждый круг.
Ещё есть приятные мелочи, которых обычно нигде нет: таймер на финальную попытку и возможность редактировать результат раунда.
И самое важное - словарь с хорошим распределением слов по сложности.
Из чего шляпа?
Разработка состояла из двух частей: сварить словарь и написать приложеньку для игры.
В разработке под iOS я понимаю не очень много, поэтому процесс выглядел примерно так: "Перплексити, расскажи мне азы разработки под iOS". В ответ я получил полотно про про системные библиотеки, уже загруженные в память, и поэтому дешёвый запуск приложений. Это было интересно, но не очень применимо на практике.
Потом случилась практическая часть: "Клод, я пишу приложеньку для шляпы. Вот механика и экраны. Напиши подробный план в папочку wiki”. В целом Клод справился. Я одним глазом следил за абстракциями и запрещал писать совсем уж лапшу. Из милых странностей: Клод решил идти в ногу со временем и выбрал SwiftUI. Теперь, чтобы отрендерить пару кнопок и текстовых полей, нужна свежая версия iOS. Но пока даже неплохо: похоже, всё нужное и правда есть из коробки.
А вот словарь делать было веселее. Спойлер: закончится всё тоже Клодом.
Сейчас в приложении русский и английский словари, подготовленные одинаковым способом.
Первый шаг - найти приличный словарь. Для английского я взял en.wiktionary.org, для русского - НКРЯ, Национальный корпус русского языка.
Потом открываем Jupyter Notebook и превращаем словарь во что-то пригодное для игры. Для начала оставляем только существительные в словарной форме.
Следующий шажок - убрать диакритику: палочки, точечки, ударения. Кроме буквы "ё", которую я нежно люблю. Ведь ёж - он ёж, а не еж. Пока возился с юникодом, вспомнил студенческую молодость с бесконечными проблемами кодировки в Python и головной болью с юникодом на курсах NLP.
Для оставшихся слов добываем частоту употребления. Для этого я скачал по отдельному частотному словарю для каждого языка.
В конце натравливаем Клода: просим разметить сложность и 18+ слова. Промпт получился волшебный: "Разметь сложность слов для игры в шляпу. Вот слова с частотами и пачка примеров. А ещё разметь 18+: вот список тем и вкусные 18+ примеры”. Сначала я хотел добавить в игру возможность включить 18+ часть словаря, но в итоге побоялся ревью в App Store.
Весь пайплайн до разметки Клодом воспроизводим. Но меня до сих пор мучает вопрос: стоили ли того страдания с частотой и диакритикой? Может быть, можно было сразу отдать сырой словарь Клоду.
Я разделил слова на четыре уровня сложности: просто, средне, сложно и кошмар. "Просто" отлично играется с детьми или на английском. "Нормально” заходит в компании взрослых образованных людей. В "сложно" я играю, если хочется почувствовать свою никчёмность. А "кошмар" - для вечеринок, где филфак пьёт с истфаком: там я знаю каждое десятое слово, если повезёт.
App Store и первые пользователи
Ещё один забавный квест - выложить приложение в App Store. После первого ревью приложение развернули со списком вопросов на пол-экрана: для кого оно, какую проблему решает и как им пользоваться. А ещё попросили прислать скринкаст использования. Я посмеялся над вопросом "какую проблему решает?" - это мой любимый вопрос на работе. Я методично ответил на всё полотно, и приложение появилось в App Store.
За следующие пару недель я показал приложение друзьям и собрал урожай фидбэка и хотелок. Например, добавил режим, где нельзя пропускать слова - только банить после ошибки.
Сеанс психоанализа, или зачем
Когда первая версия /hat таки оказалась в App Store и друзья сыграли пару раз, появился вопрос: зачем это всё? Кроме дежурного ответа "ну, было весело", вспомнились ещё две истории.
В школе я играл в спортивное программирование и писал много кода, который делал что-то относительно сложное. Но всё взаимодействие с внешним миром выглядело так: прочитать тест из входного файла, записать ответ в выходной. Тогда казалось, что это классно, но где-то существует "настоящее" программирование, в котором программы решают "настоящие" проблемы.
Ещё помню университетское ощущение: однокурсник рассказывает, что сделал приложение для подготовки к экзаменам в Первом меде, выложил его, о господи, в App Store и даже что-то на этом заработал.
Похоже, кроме желания сделать играбельную шляпу, во мне сидело студенческое желание сделать с нуля что-то "настоящее”. И это даже удалось: внутри есть тёплое, булькающее ощущение чего-то завершённого.
Планы, деньги, помощь клуба
Амбиций заработать на приложении у меня нет.
Основные траты примерно такие: подписка Apple Developer - $100 в год, разметка одного словаря - около $50. Или можно на месяц купить топовую подписку на Codex или Claude Code - это около $200
В планах - доползти до пары сотен скачиваний, выйти за пределы своего пузыря, а потом успокоиться.
Если появятся активные пользователи с хотелками, можно будет что-нибудь дописать: парный и командный режимы, раунды с одним словом и шарадами, ещё несколько языков.
Через клуб хочу найти ещё людей, которые любят персональную шляпу и готовы попробовать приложеньку.
А в целом всё как всегда: пробуйте, ставьте лайки, делитесь с друзьями.

