Еще со школы я питал страсть к изучению математики и геометрии в частности. Изучая её, меня не переставали удивлять разнообразия форм геометрических объектов, а также их неразрывная связь со строгими аналитическими выкладками и формулами. Намного позже я сумел объединить свою увлечённость математикой с умением программировать для создания тех двух продуктов, речь о которых, собственно и пойдет в этой истории.
Свой путь независимого iOS разработчика я начал еще в 2009 году. Развивающаяся на тот момент платформа iOS привлекала мое внимание своей элегантностью, простотой API, и ошеломляющими темпами завоевания рынка в сравнении с С++, на котором я программировал многие годы до того.
История iCrosss
Наряду с несколькими первыми незаурядными творениями выпущенными мною в AppStore, возникла идея написания библиотеки трёхмерных многогранников с возможностью интерактивного взаимодействия с ними, а также построения их сечений. Проведя поиск по немалому количеству существующих приложения, к моему удивлению оказалось, что ничего подобного в AppStore еще не было на момент разработки. Мы с другом придумали основной концепт, который заключался в визуализации многогранников в виде двухмерной изометрической проекции, так как это выглядит при их изучении на уроках в школе и университете. Данный подход был рассчитан на помощь в понимании пространственных фигур людям, которые начинают осваивать стереометрию или просто развивают пространственное мышление. Благо, в платформе iOS было все необходимое для реализации нашей идеи.
Начав работу над iCrosss, я очень увлёкся реализацией математической модели приложения. Вся разработка велась нами самостоятельно, без использования сторонних библиотек и математических движков, что заставило, спустя годы после окончания школы, вспомнить многие, уже на тот момент забытые, нюансы стереометрии и аналитической геометрии. Когда первые прототипы приложения были реализованы, мы начали внедрять нашу идею дизайна, основой для которой послужила обычная школьная доска и мел. Благодаря этому дизайну приложение выглядело достаточно уникальным и, хочется верить, остается таковым по сей день.
Добавив десятки, как классических, так и мало кому известных многогранников, совместно с их описанием и справочными данными основных параметров в виде формул, приложение наконец вышло в свет и обрело своих первых почитателей среди учеников, студентов, преподавателей. Первая версия приложения была выпущена на английском языке, хотя позже появилась русская и испанская локализация при поддержке наших друзей. iCrosss также участвует в дисконтной программе от Apple рассчитанной на учебные заведения предоставляя им скидку на покупку.
Судя по многочисленным скачиваниям, очень хорошим рейтингам и благодарным отзывам пользователей, мне кажется, что поставленная образовательная цель была однозначно достигнута, несмотря на то, что в силу узкой специализации, iCrosss возможно никогда не попадет в топы AppStore.
История GeoCon
По завершении проекта iCrosss, я переключился на написание коммерческих программ и перестал создавать и издавать свои собственные приложения в AppStore, поддерживая и периодически выпуская обновления к уже существующим. Понадобилось время, и вот, пол года назад, я снова ощутил в себе силы и стремление сотворить что-то новое, интересное и увлекательное. Опыт с разработкой iCrosss подсказывал мне, что это должно быть что-то связанное с геометрией. В поисках зацепки для нового проекта, я наткнулся на идею решения задач на геометрические построения. Этот раздел геометрии изучает построение геометрических фигур по заданным условиям при помощи простейших инструментов циркуля и линейки.
Ценность идеи заключалась в том, что геометрические построения можно выполнять различными способами. Существует огромное количество решений одной и той же задачи и каждое решение может быть оценено по критерию количества действий, затраченных на выполнение построения. Данная особенность позволяла создать приложение которое бы имело игровой и образовательный характер одновременно. Вооружившись сборником задач, циркулем, линейкой и карандашом, я начал самостоятельно решать и отбирать задачи, которые могли бы послужить уровнями для новой игры. Отобрав более 40 задач (в конечном итоге их количество сократилось до 38) я разбил их на группы. В первую группу попали достаточно простые, базовые задачи, решение которых предоставляет новые, более удобные, инструменты игры, в дополнение к основным: циркулю и линейке.
Далее последовал процесс разработки, часть математического аппарата была позаимствована из iCrosss, хотя многие вещи пришлось изменять и реализовать по другому перейдя от пространства на плоскость. В процессе разработки у меня созрела дизайнерская концепция того, как все это должно выглядеть в конечном счёте. Эта концепция со временем дополнилась идеями дизайнера, которого я нанял для создания графического интерфейса. Незатейливые небрежные нотки дизайна GeoCon, удачно контрастируют со строгостью и четкостью математического аппарата самой игры.
Основной сложностью в разработке была, непосредственно, изоляция от конкретной последовательности решения задачи, а также обеспечение невозможности случайного её решения без выполнения необходимых построений. Применив несколько хитрых приёмов проблема была решена окончательно для всех уровней игры.
Отдельной темой хочется выделить процесс подготовки описаний заданий – уровней игры. Поскольку, основным языком интерфейса должен был быть английский, возникла необходимость корректного перевода и формулировки условий задач. При разработке iCrosss такой задачи не стояло, так как все данные по многогранникам находятся в свободном доступе на многочисленных веб-ресурсах посвященных этой теме. Соответсвенно, выполнив базовый перевод условий задач самостоятельно, я стал искать человека, который мог бы мне в этом помочь. Среди моих контактов, которые я обрёл благодаря iCrosss, я отыскал человека из США, имеющего необходимое математическое образование. Я был очень рад, так как, он сразу же отозвался на мою просьбу и заявил о готовности помочь мне с проверкой и правкой условий задач, а также различных текстов присутствующих в GeoCon. К нашему взаимному удивлению, в ходе ревью выяснилось, что многие математические термины и формулировки относящиеся к геометрическим построениям (включая и те которые выдают современные электронные переводчики и словари), не используются англоговорящими математиками зарубежом или же являются устаревшими. Хочу привести вырезку из блога, в котором мой американский знакомый позже описал свой опыт нашего сотрудничества: “I soon found out that Russian math and English math sometimes use quite different English words to describe exactly the same geometrical concept” (полный текст его истории можно почитать по ссылке)
Вопрос тестирования приложения был решен с применением недавно появившейся технологии TestFlight от Apple, позволяющей распространять beta версию приложения ограниченному кругу пользователей через сервис Apple. Это позволило мне, без лишних затруднений и необходимости вносить в программу конкретные id устройств для тестирования, разослать тестовые версии GeoCon друзьям и бывшим коллегам тестировщикам, многие из которых, по жизненным обстоятельствам, сейчас находятся в других странах или других регионах страны.
Еще одной занятной темой для дискуссии стало заложенное в программе минимальное количество ходов (построений), необходимое для решения каждой конкретной задачи. Это количество ходов позволяет программе оценить оптимальность решения задачи пользователем и предоставить оценку данного решения. Также на основе такого оптимального решения строится методика подсказок, встроенных в приложение, которая демонстрирует учащемуся метод решения задачи в случае возникновения трудностей с её решением. Так вот, предоставив решение всех задач игры, по моему мнению, самым оптимальным образом, я запустил приложение в AppStore, оставив приметку на информационной странице, на случай, если пользователи смогут найти более лаконичное решение, с просьбой связаться со мной. Через неделю продаж, мне написал студент математик из Китая, которого на несколько дней увлекла моя новая игра, причём увлекла до такой степени, что он со своим сокурсником, не просто прошёл всю игру, а предложил и выслал мне более оптимальные решения аж для шести задач. Я был ошеломлён данным обстоятельством и одновременно польщён, таким вниманием к моему приложению со стороны представителя самой что ни на есть целевой аудитории.
Игра получилась достаточно, как говорят американцы, “challenging”, и, учитывая тот факт, что она была выпущена очень недавно, она получает только восторженные отзывы пользователей.
Всем кто дочитал до конца
Мне было приятно поделится с вами своей историей. Буду очень рад, если мой опыт будет вам полезен. В дополнении ко всему, я прекрасно понимаю, что на сегодняшний день, с коммерческой точки зрения, более выгодно заниматься разработкой приложений с более широкой целевой аудиторией, чем приложений математического характера как iCrosss и GeoCon. Несмотря на это, только создание и поддержка образовательных iOS приложений в области геометрии приносит мне больше всего удовольствия. Надеюсь вы разделите со мной мою страсть к геометрии и разработке образовательных приложений в целом.
Автор истории — Юдин Олег