Разработка мобильного приложения
Введение
пользовательский интерфейс приложение музейный
Дополненная реальность (Augmented Reality, AR) - одно из самых перспективных направлений исследований на сегодняшний день. Эта технология уже зарекомендовала себя во многих сферах человеческой деятельности - например, в образовании, медицине, строительстве и др. Главным достоинством дополненной реальности является наглядность, которая способствует лучшему усвоению информации, ассоциированной с объектом. Благодаря этому, эта технология получила широкое распространение в образовательной и, в частности, в музейной сфере.
На протяжение последних двадцати лет музеи по всему миру успешно применяют информационные технологии для привлечения посетителей и помощи им в восприятии своих экспонатов. Использование мобильных приложений с элементами дополненной реальности является одним из наиболее ярких примеров таких инноваций. Их значительное распространение в мире отчасти обусловлено быстрым ростом количества пользователей смартфонов [1], которые имеют возможность получать данные об экспонатах без предоставления дополнительного оборудования. Широкий ряд мировых музеев уже имеет успешный опыт в этой сфере, в то время, как в России существует всего несколько таких приложений.
Актуальность темы объясняется тем, что в современных музеях все больше внимания уделяется непосредственному взаимодействию посетителя с экспонатом. В нескольких исследованиях, посвященных внедрению технологии дополненной реальности в музейную среду, подчеркивается [2; 3], что использование таких приложений оказывает положительное воздействие на уровень восприятия экспонатов посетителями.
Приложение, разработка которого описывается в работе, предназначено для использования на фотографических выставках С.В. Челнокова (1861-1924), московского фотографа-любителя, достигшего заметного успеха в съемке стереофотографий [4]. Стереофотографии, или стереопары, - пары изображений для левого и правого глаз, которые дают эффект глубины (объема) при просмотре через стереоскоп (бинокулярный аппарат для просмотра «объемных» изображений).
Целью настоящей работы является создание инструмента для комплексного восприятия экспонатов фотографических выставок путем разработки мобильного приложения с функционалом дополненной реальности. В качестве платформы для разработки была выбрана операционная система iOS и язык программирования Swift. Для достижения поставленной цели были сформулированы следующие задачи:
·Провести обзор и анализ существующих решений.
·Выбрать методы разработки программного обеспечения (ПО) приложения.
·Выбрать инструментальные и программные средства.
·Разработать структуру ПО приложения.
·Разработать ПО приложения.
·Провести тестирование приложения.
Объектом исследования являются музейные мобильные приложения, реализующие функционал дополненной реальности. Предмет исследования состоит в анализе структуры объекта исследования, а также методов и средств его реализации.
Существующие музейные приложения с элементами дополненной реальности различаются, прежде всего, подходом к идентификации интересующего посетителя экспоната. Из трех существующих способов (определение положения посетителя в зале с помощью Bluetooth-маяков, распознавание QR-кодов, ассоциированных с экспонатами, распознавание экспонатов) распознавание самих экспонатов с помощью камеры устройства является наиболее естественным для пользователя способом взаимодействия. Однако на данный момент этот подход реализован всего в нескольких приложениях во всем мире, что делает его перспективным направлением исследований.
Существующие приложения, основанные на распознавании экспонатов, дополняют их лишь некоторыми визуальными составляющими, что не позволяет пользователю получить полное представление о них. Новизна настоящего исследования заключается в разработке приложения, предоставляющего комплексную (текстовую и графическую) информацию об экспонатах. Помимо этого, в ходе анализа предметной области было выявлено отсутствие на рынке подобных приложений для фотографических выставок, которые, в свою очередь, обладают собственной спецификой.
Предполагается, что результатом данной работы станет мобильное приложение, способное предоставлять пользователю информацию о фотографии по наведении камеры устройства на нее. Помимо этого, в нем должны быть реализованы функции просмотра полной библиотеки фотографий и списка событий, связанных с выставками.
Практическая значимость исследования состоит в применении разработанного приложения на фотографических выставках С.В. Челнокова.
Основная часть работы представлена четырьмя разделами:
·В первом рассматриваются технологии дополненной реальности, производится обзор способов распознавания экспоната и существующих музейных приложений с элементами дополненной реальности; формируются требования к разрабатываемому приложению.
·Во втором приводится сравнительный анализ инструментариев для распознавания изображений-маркеров и парсинга (синтаксического анализа) HTML-кода; обосновывается выбор методов для реализации приложения.
·В третьем формируется структура приложения; рассматриваются особенности разработки визуального интерфейса приложения в операционной системе iOS.
·Четвертый содержит описание реализации программного обеспечения приложения и его тестирования.
1. Обзор и анализ предметной области
.1 Обзор технологий дополненной реальности
Впервые термин «дополненная реальность» был использован в 1990 году инженером компании Boeing Томом Коделом (Tom Caudell) [5]. Однако у этого термина до сих пор нет точного и однозначного определения, чем отчасти объясняется тот факт, что приложения с элементами дополненной реальности могут иметь принципиальные различия в интерфейсе и реализации. Одно из наиболее часто используемых определений было предложено в 1997 году исследователем Р. Азума (R. Azuma) [6]. Согласно ему, дополненная реальность является системой, которая имеет три отличительные черты:
.Ассоциирует реальные и виртуальные объекты.
.Доступна для взаимодействия в реальном времени.
.Работает в 3D.
Тем не менее, современные исследователи отходят от третьего принципа этого определения. В частности, существуют примеры мобильных приложений, которые представляют текстовую и графическую информацию об объектах на экране устройства вместо показа ее в 3D. Главной причиной распространенности такого подхода является более низкая сложность разработки, которая, в свою очередь, приводит к более низкой стоимости программного продукта.
Возможность использования технологий дополненной реальности в мобильных приложениях обсуждалась на протяжение последнего десятилетия. Ф. Чжоу (F. Zhou) в исследовании 2008 года [7] подчеркивал, что статьи о мобильной дополненной реальности набирали популярность, составляя 6.1% от общего количества статей об AR. Исследователь отмечал, что эта тема цитируется наиболее часто после базовых вопросов реализации дополненной реальности. Высокому уровню популярности мобильной дополненной реальности также способствует широкое распространение мобильных устройств: согласно прогнозу [1], количество пользователей смартфонов в 2017 году достигнет 2.32 млрд человек.
Упомянутый выше вариант реализации дополненной реальности получил широкое распространение в сферах, где отсутствие 3D-визуализации не приводит к значительным сложностям в восприятии информации. В частности, сегодня у многих музеев по всему миру есть собственные приложения с элементами дополненной реальности, основанные на показе информации об экспонатах на экране мобильного устройства.
.2 Обзор подходов к разработке музейных приложений с элементами дополненной реальности
А. Дамала (A. Damala) и др. в своем исследовании [8] указывают, что музеи начали внедрять инновационные разработки не лишь в последнее время, а с момента изобретения интернета, что привело к значительному развитию выставочных мультимедийных технологий. Сегодня многие культурные учреждения по всему миру используют различные сервисы для повышения уровня восприятия экспонатов и взаимодействия с посетителями. Один из наиболее ярких примеров применения мультимедийных технологий в музеях - мобильные приложения, которые предоставляют посетителям всю необходимую информацию об экспонатах. Значительная часть таких приложений поддерживает функционал дополненной реальности. Подобные приложения с элементами дополненной реальности используются во многих мировых музеях, однако на российском рынке они еще не так распространены.
Музейные мобильные приложения с элементами дополненной реальности отличаются, прежде всего, методом идентификации объекта. Они могут быть основаны на распознавании:
)Положения посетителя в зале.
2)QR-кодов.
)Самих экспонатов.
Приложения первого типа получают сигналы от нескольких Bluetooth-маяков (например, iBeacon), расположенных в разных частях выставочного зала. Анализируя полученные сигналы, приложение способно определить позицию посетителя в зале и предложить ему контент, ассоциированный с ближайшим к нему экспонатом. Таким образом, главным преимуществом такого подхода является возможность автоматического получения информации без выполнения дополнительных операций. Помимо этого, некоторые исследователи, например, Ч. Хе (Z. He) и др. предлагают использовать маяки iBeacon для создания туров по музею и персональных рекомендаций. Главная проблема такого подхода заключается в небольшой для ряда выставочных залов средней дальности действия маяка (10 метров [9]). Это может привести к необходимости использования большого количества таких устройств, причем эта проблема становится существеннее с увеличением количества пользователей. Таким образом, этот метод идентификации ближайшего к посетителю экспоната является самым дорогим. Еще один существенный недостаток этого подхода - зависимость от инфраструктуры выставочного зала, заключающаяся в необходимости корректировки системы, например, при изменении расстановки экспонатов.
Другие два типа приложений, по сути, отличаются лишь распознаваемыми графическими маркерами. Тем не менее, QR-коды распознаются и анализируются проще благодаря их стандартизированной структуре. Это ведет к существенному упрощению процесса разработки и, как следствие, способствует тому, что приложения такого типа являются наиболее распространенными.
При использовании QR-кодов рядом с каждым экспонатом располагается табличка с уникальным кодом, распознав который, посетитель может получить информацию об интересующем его объекте. Этот подход сочетает низкую сложность разработки со сравнительно невысокими дополнительными затратами (на таблички с кодами). Исследователи также положительно отзываются о возможностях применения такого метода. Например, В. Евремович и С. Петровски в [10] предлагают использовать QR-коды и дополненную реальность для представления культурных объектов, недоступных для публики. Однако, согласно некоторым исследованиям, использование QR-кодов в качестве «посредников» между посетителем и экспонатом приводит к уменьшению внимания к самим экспонатам и посредственному взаимодействию с ними [11].
В то же время, К. Чанг и др. утверждают [11], что распознавание самих экспонатов способствует повышению внимания к ним. Этот подход является наиболее естественным для восприятия выставленных объектов, что ведет к более продвинутому взаимодействию между посетителями, экспонатами и музейным мобильным приложением. Помимо этого, идентификация экспонатов не требует дополнительных затрат на оборудование и объекты инфраструктуры, что делает этот вариант наименее дорогим. С другой стороны, многие исследователи соглашаются, что из всех возможных вариантов распознавание экспонатов является наиболее сложной задачей с точки зрения разработки [2; 10; 11]. Также в случае использования этого метода могут возникнуть сложности с распознаванием объемных и несимметричных экспонатов.
.3 Обзор существующих музейных приложений с элементами дополненной реальности
Обзор существующих решений. В настоящее время у ряда мировых музеев имеются собственные приложения с элементами дополненной реальности, которые отличаются не только подходом к идентификации экспонатов, но и полнотой стороннего функционала.
Далее представлено описание нескольких наиболее известных и популярных приложений (как зарубежных, так и российских).
Приложение Музея Рубенса - один из представителей класса приложений, использующих Bluetooth-маяки (в частности, iBeacon) для идентификации экспонатов. Приложение имеет широкий функционал: благодаря использованию iBeacon, пользователь может узнавать историю произведений в ходе интерактивной викторины и получать персональные рекомендации.
Основные возможности приложения:
·Интерактивное взаимодействие с картинами.
·Просмотр карты музея, где обозначена расстановка всех экспонатов.
·Демонстрация утраченного оформления здания по наведении камеры.
В итоге, можно выделить следующие достоинства и недостатки приложения:
Достоинства:
·Полнота и доступная подача информации.
·Продвинутая интерактивность.
·Возможность навигации по музею.
·Возможность наглядного представления утраченного наследия.
Недостатки:
·Зависимость от инфраструктуры выставочного зала.
·Отсутствие возможности использовать приложение без интернета.
Приложение «Узнай Москву».
Приложение является универсальным гидом по всем историческим объектам Москвы. Возле всех московских достопримечательностей представлены QR-коды, которые можно распознать с помощью него и получить полную и достоверную информацию о них. Одним из главных достоинств приложения является возможность просмотра описания объекта без подключения к интернету. Все объекты (памятники, здания и т.д.) разделены на категории, что делает удобной навигацию по ним. Кроме того, все достопримечательности можно увидеть на интерактивной карте. В приложении есть полезный раздел с пешими маршрутами, руководствуясь которыми, можно пройти местам повествования и ощутить себя участником этих событий.
Таким образом, приложение обладает следующим функционалом:
·Распознавание кодов и представление информации о достопримечательностях.
·Навигация по всем достопримечательностям с помощью интерактивной карты.
·Навигация по туристическим маршрутам.
·Интеграция с социальными сервисами.
Достоинства:
·Полнота представляемой информации (текст, изображения, аудио).
·Возможность просмотра текстовой информации без подключения к интернету.
·Структурированное представление достопримечательностей.
·Необходимость подключения к интернету для показа изображений и воспроизведения аудиоинформации.
·Представление маршрутов только в текстовом виде.
·Представление полной текстовой информации о достопримечательности отдельно от ее изображения, что мешает наглядности.
Приложение «Artefact».
Приложение было разработано Министерством Культуры РФ в сотрудничестве с интернет-порталом «Культура.рф» для предоставления всем российским музеям возможности использовать дополненную реальность. В нем реализовано распознавание и QR-кодов, и самих экспонатов, причем также имеется возможность вручную ввести код представленного объекта. После распознавания объекта посетитель может увидеть на экране изображение экспоната, дополненное интерактивными метками, по нажатии на которые выводится информация о деталях объекта. Также есть возможность сравнить, как выглядел экспонат до и после реставрации.
Основные возможности приложения:
·Распознавание объектов искусства и представление детальной информации.
·Использование интерактивных меток для взаимодействия с пользователем.
·Показ ближайших к пользователю музеев и выставок.
Достоинства:
·Гибкие возможности по распознаванию экспоната: распознавание объекта, QR-коды, код экспоната.
·Визуальное представление объекта во время реставрации.
·Возможность использования приложения для распознавания выставленных объектов вне музея.
Недостатки:
·Ограниченное распознавание объекта без интернета (только для нескольких выставок).
·Ограниченная возможность получения информации об экспонате без интернета.
·Отсутствие подробной текстовой информации об объектах.
Проект «CHESS» [12] (аббр. от «Cultural Heritage Experiences through Socio-personal interactions and Storytelling», рус. «Преподавание культурного наследия посредством социо-персональных взаимодействий и повествования») - крупный проект, который призван объединить в себе информацию об экспонатах целого ряда европейских музеев. Он стартовал в 2011 году, и его разработка еще ведется. Приложение уже было успешно протестировано в нескольких музеях.
Основной функционал приложения - реализация элементов дополненной реальности для экспонатов. В промо-ролике на веб-сайте проекта показано, как экспонаты дополняются утраченными деталями оформления и краткой контекстной информацией. Помимо этого, в приложении предусмотрен широкий спектр дополнительных функций.
Основные возможности приложения:
·Интерактивная дополненная реальность.
·Формирование персональных рекомендаций на основе интересов пользователя.
·Получение знаний в ходе выполнения заданий интерактивных игр внутри приложения.
·Возможность пересмотреть маршрут своего визита в музей позднее в интернете.
·Возможность музейных работников создавать интерактивные и адаптивные сценарии похода в музей.
Достоинства:
·Развитая интерактивность.
·Персонализация.
·Автоматическая генерация маршрутов по музею.
Недостатки:
·Отсутствие приложения на рынке.
·Высокая стоимость разработки.
·Краткость предоставляемой информации.
·Отсутствие возможности использовать приложение вне музея.
Таблица 1. Сравнительный анализ аналогов
Музей Рубенса«Узнай Москву»«Artefact»«CHESS»Разрабатываемое приложениеПолнота представляемой информации++--+Наглядность представления информации+±+++Независимость от инфраструктуры-++++Оффлайн-распознавание экспонатов-+±±+Представление информации оффлайн-±±±+Отсутствие дополнительных загрузок основных данных+---+Наличие анонсов и другой обновляемой информации от музея----+Интеграция с социальными сервисами++-++Доступность приложения для пользователей+++-+
.4 Формирование требований к разрабатываемому приложению
В данной главе был проведен обзор и анализ существующих приложений с элементами дополненной реальности для музеев и принципиальных подходов к их разработке. Был выявлен ряд недостатков этих решений, таких, как ограниченная возможность работы с приложениями без интернета, отсутствие организационной информации от музеев, высокая стоимость разработки.
В связи с этим, был сформирован следующий список основных требований к приложению:
)Приложение должно предоставлять информацию об объекте при наведении камеры мобильного устройства на него.
)Распознавание объекта должно выполняться без необходимости доступа к интернету.
)Должен быть реализован наглядный интерфейс для просмотра данных об экспонате.
)Данные об экспонате должны быть доступны на устройстве оффлайн.
)Должен быть реализован интерфейс библиотеки экспонатов.
)Должен присутствовать интерфейс покупки дополнительных элементов.
)Должна быть реализована новостная лента с сообщениями о грядущих и прошедших событиях в музее.
)В приложении должна быть реализована интеграция с социальными сервисами.
2. Выбор методов разработки приложения
Все функции приложения можно реализовать с нуля или использовать уже существующие средства (сторонние SDK - software development kit, комплект средств разработки). Для эффективной разработки приложения было решено использовать существующие инструментарии, дополняя их функциональность и сочетая их со стандартными возможностями целевой платформы.
Для разработки мобильного приложения была выбрана платформа iOS как одна из лидирующих на мировом рынке операционных систем для смартфонов и планшетов (33.39% рынка по результатам на март 2017 года [13]).
По данным официальной статистики компании Apple за 20 февраля 2017 года [14], 79% устройств в мире работают под управлением iOS 10, 16% - iOS 9, и лишь 5% отводится на более ранние версии. iOS 10 не поддерживается устройствами, выпущенными в 2012 году и ранее, и последняя версия системы, доступная для них, - 9.3.5. Таким образом, было принято решение разработать приложение для iOS 9 и новее.
Разработка приложений для системы iOS осуществляется в среде Xcode. Для написания кода могут использоваться два языка программирования - Objective-C и Swift. Swift является молодым языком программирования, но, будучи представленным лишь в 2014 году, он уже стремительно набирает популярность. В рамках одного проекта возможно использовать файлы кода, написанные на разных языках, что делает возможным использование в проекте сторонних Objective-C-библиотек.
Основными преимуществами Swift перед Objective-C являются [15]:
·Эффективное и безопасное управление памятью, благодаря которому программисту не нужно думать о памяти для каждого создаваемого объекта.
·Повышенная безопасность выполнения кода, которая исключает случаи использования неверных данных (например, неинициализированных переменных).
·Код, написанный на Swift, обладает высокой скоростью выполнения, находясь на одной позиции с C++.
·Наконец, Swift намного лаконичнее и удобнее в чтении, чем Objective-C.
Таким образом, было принято решение использовать язык программирования Swift 3.0 (наиболее актуальной версии).
.1 Обзор SDK для распознавания изображений
Главной функцией, которая должна быть реализована в приложении, является распознавание экспонатов с последующим представлением информации о них. Рассмотрим несколько инструментариев с функцией нахождения маркеров на изображении с камеры, которые доступны для iOS:
1)OpenCV;
)Vuforia SDK;
)Catchoom On-Device Image Recognition SDK;
)ARToolkit.
OpenCV [16] - библиотека с открытым исходным кодом, содержащая инструменты для нужд компьютерного зрения и обработки изображений. Библиотека является кроссплатформенной (существуют реализации для Windows, Mac OS, Linux, Android и iOS), реализована на четырех языках программирования: (C++, C, Python и Java) и распространяется под лицензией BSD.
В OpenCV реализовано много эффективных алгоритмов для работы с изображениями. Среди них стоит выделить алгоритм определения максимально стабильных областей экстремума (англ. maximally stable extremal regions, MSER). MSER определяет наборы смежных пикселей, у которых интенсивность пикселей внешней границы выше (по заданному порогу), чем интенсивность пикселей внутренней границы [17]. Алгоритм устойчив к размытию и масштабу изображения, а также имеет довольно низкую сложность относительно других алгоритмов обнаружения характерных пятен - , где n - число пикселей на изображении.
Необходимо заметить, что OpenCV не имеет специальной реализации для iOS, и единственная реализация библиотеки, доступная для использования - это версия для C++. В то же время, Swift-проекты не имеют базовой поддержки кода C++. Это означает, что для использования библиотеки в проекте необходимо создать «оборачивающий» класс Objective-C с интерфейсом, вызывающим методы из библиотеки, и добавить его в Swift-проект. Таким образом, из Swift-кода вызывается метод вспомогательного класса Objective-C, который, в свою очередь, запускает реализацию метода из библиотеки. Такая длинная цепочка вызова не является эффективным решением, так как замедляет быстродействие приложения.
Vuforia SDK [18] - набор инструментов для разработки приложений с элементами дополненной реальности. Vuforia также является кроссплатформенной, имея интерфейсы на языках C++, Objective-C, Java, а также. Net (через интеграцию с игровым движком Unity). Библиотека является полностью бесплатной для разработчиков и требует единоразового приобретения в случае использования проекта в коммерческих целях.
SDK поддерживает распознавание различных видов маркеров - плоских изображений, простых 3D-фигур, текста. В библиотеке реализован функционал как локального, так и облачного распознавания маркеров. Дополнительный функционал заключается в возможности пользователя создавать собственные маркеры в уже запущенном приложении.
Для того, чтобы настроить распознавание изображений в приложении с помощью Vuforia, необходимо создать аккаунт разработчика на сайте Vuforia, создать базу изображений и загрузить файл с закодированной базой в проект.
Catchoom On-Device Image Recognition SDK [19].
Компания Catchoom является разработчиком нескольких простых в использовании, гибких и надежных инструментов для распознавания изображений и дополненной реальности. Отличительной чертой Catchoom SDK является то, что он не распространяется как единый пакет, а разделен на части по выполняемым функциям. Таким образом, можно рассмотреть не весь набор SDK, а лишь необходимую часть - инструментарий локального распознавания изображений.
Библиотека является полностью бесплатной для разработчиков, но на ее использование в коммерческих целях накладывается ежемесячная плата и единоразовый платеж. При этом в случае ежемесячного платежа также накладывается ограничение на максимально возможное количество использующихся изображений.
Как сообщают разработчики [19], система локального распознавания изображений отличается скоростью, 98% точностью и устойчивостью. Коллекция изображений для распознавания создается в профиле разработчика на сайте. Предполагается, что такая коллекция добавляется в приложение, SDK инициализируется с помощью нее, и затем распознавание происходит полностью на устройстве.
ARToolkit [20] - кроссплатформенный инструментарий, имеющий интерфейсы для Windows, Mac OS, Linux, Android и iOS. Одно из главных преимуществ этой библиотеки заключается в том, что она является программным обеспечением с открытым кодом, что означает отсутствие любой платы за ее использование.
В ARToolkit SDK есть инструмент Natural Feature Tracking (NFT, рус. отслеживание главных деталей), которым можно воспользоваться для распознавания маркеров-изображений. Однако в документации подчеркивается [21], что для распознавания изображения (текстурированной поверхности в терминах NFT) необходимо, чтобы поверхность была известна системе заранее. Это означает, что система должна быть заранее обучена распознаванию данного изображения, т.е. для него должен быть сформирован набор данных, который может быть использован для распознавания и трекинга во время выполнения. Обучение состоит из нескольких шагов:
)Выбор разрешений набора изображений.
)Генерация набора данных NFT из изображения.
)Тестирование набора данных.
Дополнительная сложность процесса заключается в том, что формирование набора данных должно быть выполнено для каждого изображения вручную из командной строки в системах Windows, Mac OS или Linux. Таким образом, для получения данных, готовых для использования в ARToolkit SDK, необходимо выполнить ряд дополнительных действий.
Таблица 2. Выбор инструментария для распознавания изображений
OpenCVVuforiaCatchoomARToolkitКроссплатформенность++++Простота импорта в проект-+++Простота подготовки изображений для распознавания++±-Простота использования-++±Наличие подробной документации+±±+Возможность использования одного инструмента без установки всего SDK--+-Плата за использование-Для разработчиков - бесплатно, Для коммерческого использования - единоразовая плата $499Для разработчиков - бесплатно, Для коммерческого использования - 99 €/мес (100 изобр.) или 249 €/мес (1000 изобр.)-
Таким образом, для реализации функционала распознавания изображения был выбран инструментарий Vuforia SDK. Эта библиотека отличается самым удобным способом подготовки маркеров для распознавания, простотой включения в проект, а также более низкой стоимостью, чем у конкурента с похожими характеристиками - Catchoom.
.2 Обзор SDK для парсинга HTML
Одним из требований к разрабатываемому приложению является загрузка новостей о событиях музея. Ввиду отсутствия возможности получать данные напрямую с сервера, возникает необходимость выгрузки этих данных с веб-сайта музея. Для этого нужно проводить парсинг (синтаксический анализ) HTML-кода страницы и находить в нем элементы, содержащие искомую информацию.
Поскольку базовые инструменты языков разработки для iOS не позволяют осуществлять парсинг HTML-кода, возникает необходимость использования сторонних SDK. Для сравнительного анализа были выбраны следующие инструментарии:
1)Hpple;
2)Kanna;
3)Objective-C-HTML-Parser.
Hpple [22] является надстройкой над библиотекой XPathQuery, которая осуществляет синтаксический анализ кода HTML. Инструментарий работает с элементами, находя их по абсолютному пути XPath (от внешних тегов к вложенным). SDK отличается возможностью удобного получения доступа к тегам по XPath, а также лаконичным интерфейсом. Тем не менее, функционал SDK не содержит методов для поиска тегов по другим критериям (например, имя класса).
Kanna [23] также основана на поиске тегов по XPath, но, помимо этого, имеет функционал для поиска по тегам CSS. Инструментарий имеет поддержку современного стандарта CSS3. SDK реализован на языке программирования Swift и имеет интерфейсы для нескольких платформ: macOS, iOS, tvOS, watchOS и Linux. Помимо этого, SDK имеет функционал для парсинга XML. Главным недостатком этого инструментария является сложность импорта в проект, что обусловлено необходимостью включения большого количества файлов и связывания их со стандартными модулями и библиотеками.
Objective-C-HTML-Parser [24] - парсер HTML, обладающий широким функционалом и удобным интерфейсом для поиска тегов в коде и работы с ними. Наиболее заметным преимуществом этого SDK является возможность поиска тегов не по XPath, а по их атрибутам (например, можно с помощью вызова одного метода найти все теги определенного класса). Кроме того, этот инструментарий состоит лишь из нескольких файлов кода, для исполнения которых необходима лишь одна стандартная библиотека.
Таблица 3 Выбор инструментария для парсинга HTML
HppleKannaObjetive-C-HTML-ParserЯзык интерфейсаObjective-CSwiftObjective-CПростота импорта в проект+-+Широкий функционал-±+Полный размер библиотеки (с дополнительными зависимостями)227.9 кб343.2 кб160.9 кбЛицензияMITMITСтандартная лицензия GitHubДокументация и примерыМногоСреднеСредне
Таким образом, для синтаксического анализа HTML-кода страниц с новостями музея был выбран инструментарий Objective-C-HTML-Parser в силу наибольшей простоты использования, импорта в проект и малого размера.
3. Моделирование приложения с элементами дополненной реальности для музея
Факт причастности проекта к фотографической тематике добавляет некоторые особенности к его реализации:
)На фотографических и художественных выставках, как правило, отсутствуют объемные экспонаты. Это означает, что для однозначной идентификации экспоната достаточно лишь одного изображения в базе.
)Поскольку на выставках С.В. Челнокова наибольший интерес проявляется именно к просмотру стереопар, в приложении необходимо реализовать соответствующий интерфейс. Роль стереоскопа могут выполнять любые очки виртуальной реальности, в которые можно установить мобильное устройство.
.1 Общая структура приложения
Функционал приложения можно разделить на несколько независимых блоков, на основе чего предполагается создать несколько разделов:
)Распознавание;
)События;
)Библиотека;
)Дополнительно.
В разделе «Распознавание» представляются кадры с камеры устройства, которые получаются и обрабатываются в реальном времени. В случае, если на очередном кадре был обнаружен и идентифицирован экспонат, появляется всплывающее окно с информацией о нем. При этом данные представляются вместе с изображением экспоната, что способствует лучшему восприятию получаемой информации. Помимо этого, в этом окне пользователь может поделиться этими сведениями в социальных сервисах (Twitter, Facebook, ВКонтакте) или в простом сообщении, а также приобрести дополнительный контент.
Для распознавания экспонатов был выбран инструментарий Vuforia SDK. Для инициализации библиотеки необходим уникальный ключ приложения и база данных изображений-маркеров. Эти элементы можно получить в личном кабинете на веб-сайте developer.vuforia.com. При этом важной деталью является то, что впоследствии изображение можно идентифицировать только по имени файла, который был добавлен в библиотеку. Это означает необходимость введения однозначного соответствия между именами изображений-маркеров и информацией о них.
Было принято решение содержать информацию об экспонатах в файле.plist (XML Property List, Список Свойств) [25]. Такой файл представляет собой XML-разметку, в корне которой содержится сериализованный объект (массив или словарь). Благодаря этому, Property List обладает возможностью прямого доступа к элементам, в отличие от простых текстовых файлов (например.txt). Эти файлы широко используются в iOS для хранения данных и пользовательских настроек. Для разрабатываемого приложения был сформирован файл DBdata.plist, в корне которого содержится словарь, ключами которого являются имена изображений-маркеров, а значениями - строки с информацией о них.
Таким образом, после того, как экспонат был идентифицирован, можно получить сведения о нем, обратившись к значению словаря для ключа, совпадающего с именем маркера. В локальной директории приложения также присутствуют сами изображения, имена которых не изменены, благодаря чему при выводе информации показывается исходное изображение-маркер.
Раздел «События» представляет собой новостную ленту музея. Здесь реализована прокручиваемая таблица с одним столбцом, в каждой клетке которой содержится краткая информация об определенном событии: заголовок, начало основного текста и изображение (если есть). По нажатии на ячейку показывается новое окно с полным содержанием новости, в котором пользователь может поделиться ей с помощью социальных сервисов или сообщения.
Сведения о событиях загружаются с веб-сайта музея путем парсинга HTML-кода страниц. В ходе анализа страницы формируется массив событий, каждый элемент которого представлен словарем с ключами:
·«title» - название события;
·«abstract» - аннотация или начало текста о событии;
·«imLink» - ссылка на изображение, связанное с событием (если его нет, значение для этого ключа будет пустой строкой «»);
·«moreLink» - ссылка на страницу с полным текстом о событии.
Значения для всех ключей словаря являются строками.
Когда массив сформирован, он записывается в файл events.plist в локальной директории приложения, и его содержимое выводится в ленту новостей. При этом изображения событий также загружаются в локальную директорию. При следующем открытии раздела, пользователь увидит уже доступные оффлайн данные.
Раздел «Библиотека» содержит в себе прокручиваемую ленту, каждая клетка которой имеет изображение некоторого экспоната и его название. По нажатии на ячейку появляется окно, аналогичное всплывающему окну в разделе «Распознавание».
В разделе «Дополнительно» пользователь может удалить все сохраненные данные (например, о событиях) и получить общую информацию о музее и приложении.
Текстовая информация о музее и приложении содержится в файле generalInfo.plist (Приложение 1), который переносится в локальную директорию приложения при его установке. В корне этого файла содержится словарь со строковыми значениями для ключей:
·«photographerInfo» - HTML-код страницы с информацией о С.В. Челнокове;
·«fundNumber» - номер телефона представителя Фонда;
·«fundEmail» - email-адрес представителя Фонда;
·«devEmail» - email-адрес разработчика.
Таким образом, можно выделить ключевые элементы приложения:
·Раздел «Распознавание».
·База данных маркеров для Vuforia SDK.