Windows Camp: как это было

Вступление


В минувшую пятницу в Москве, в центре Digital October на Берсеневской набережной (неподалёку от Храма Христа Спасителя), прошла конференция для разработчиков приложений для Windows 8 и Windows Phone. Устроителем мероприятия, как несложно догадаться, являлась корпорация Microsoft.


О том, как важны разработчики приложений под Windows для корпорации Microsoft, в своё время нагляднее всего продемонстрировал её генеральный директор Стив Балмер...


Попасть на конференцию было не так просто - участие в ней бесплатное, однако заявок было значительно больше, чем количество отведённых мест. Мне посчастливилось получить вожделенное приглашение, но вряд ли кто остался внакладе - трансляция всех докладов доступна на официальной страничке мероприятия.

В данном материале я постараюсь передать атмосферу конференции, а также кратко познакомить вас с содержанием докладов, на которых удалось присутствовать.



Бесплатная сахарная вата: что может быть лучше глюкозы в чистом виде для мозга программиста?


Windows 8, Windows Phone - новая эра Windows


Открытие конференции проводили сразу три сотрудника Microsoft - Михаил Черномордиков, Александр Ложечкин и Станислав Павлов.



Михаил Черномордиков, руководитель отдела экспертов по стратегическим технологиям корпорации Microsoft

Отчасти сюда можно причислить Смешариков, которые в забавном формате рассказали о преимуществах выбора новой программной платформы и пакета разработки Visual Studio.


Первым взял слово Михаил, в основном для того, чтобы поприветствовать участников, кратко представить программу мероприятия и передать микрофон своему коллеге - Александру Ложечкину. Тот представил платформы Windows 8, Windows Phone и Windows Azure, после чего перешёл к рассказу о личном опыте использования новой операционной системы Windows 8.


Отметив удобство использования, интерфейс с "живыми плитками", ориентированность Internet Explorer 10 на запуск web-приложений и т.п., - Александр Ложечкин заискивающе намекнул, что в Windows 8 появилась новая версия штатной игры "Сапёр", и только ради этого стоит установить новую операционную систему.

Также было продемонстрировано уверенное распознавание рукописного ввода в приложении OneNote под управлением Windows 8 на планшетном ПК. Вообще, отдельно была отмечена гармоничная поддержка всего многообразия способов ввода: пальцами на сенсорном экране, связкой клавиатура + мышь, а также стилусом. В это одна из главных идеологических особенностей Windows 8 - поддержка различных форм-факторов, начиная от смартфонов и заканчивая настольными персональными компьютерами.

Не был обойдён вниманием в докладе и магазин приложений, встроенный в операционную систему. Действительно, Windows Store должен будет повторить успех аналогичных торговых площадок, ставших неотъемлемым атрибутом таких платформ, как iOS и Android. Все предпосылки для этого имеются, хотя бы потому, что общее число пользователей операционных систем Windows превышает совокупное количество пользователей устройств под управлением iOS, MacOS и Android. Представители Microsoft отдельно отметили гибкость ценовой политики: разработчик приложения вправе сам устанавливать его стоимость в широких пределах, начиная с полутора долларов США. По размеру комиссионных Windows Store также неплох на фоне конкурентов: при достижении объёмов продаж в размере $25000 комиссия будет составлять 20%.

Желая убедить слушателей в том, что новая платформа уже активно используется в качестве целевой многими разработчиками, представители Microsoft продемонстрировали множество симпатично выглядящих приложений - клиент для социальной сети ВКонтакте, программный модуль метеорологической службы GisMeteo; а на платформе Windows Phone - приложения Яндекс.Метро, клиент Mail.ru и т.п.

Унификацию программной платформы Windows для различных устройств, похоже, придётся принимать как данность. "Посмотрите, везде одни и те же плитки в интерфейсе!", - радостно заявляли сотрудники софтверного гиганта, добавляя, что Windows 8 и Windows Phone построены на едином ядре.

Что касается процесса разработки приложений, то нам с гордостью сообщили, что официальный релиз пакета Visual Studio 2012 намечен на 12 сентября, 256-ой день года, являющийся в России государственным праздником - Днём программиста. Он, собственно, прошёл вчера - с чем всех, причастных к этому событию, мы с некоторым опозданием поздравляем. Неудивительно, что в качестве основного инструмента для разработки под новые платформы предлагается именно пакет Visual Studio, который позиционируется как "полноценная экосистема" (в первую очередь, благодаря решению Team Foundation Server).

На сцене появился Станислав Павлов, который за пару минут набросал приложение для Windows 8 (со своей "плиткой", естественно), представляющее собой простенький агрегатор, и тут же в шутку предложил разместить его в Windows Store, чтобы начать зарабатывать деньги.


Не стоит забывать, что важной составляющей волны новых платформ является Windows Azure - "облачные" технологии Microsoft, снимающие целый ряд вопросов по организации сетевой инфраструктуры предприятия. Отдельного упоминания заслуживают Windows Azure Mobile Services - "облачные" серверные службы, предназначенные для интеграции с приложениями для мобильных платформ.



Windows Azure Mobile Services представляет Джош Твист, один из руководителей проекта

После открытия конференции посетители разбрелись по двум залам. Автор этих строк решил остаться в главном зале и продолжить расширение своего кругозора докладом "Проектирование дизайна приложений для Windows 8 и Windows Phone".

Проектирование дизайна приложений для Windows 8 и Windows Phone


В качестве докладчика выступал эксперт по стратегическим технологиям Константин Кичинский, демонстрировавший важные аспекты, которые необходимо учитывать при разработке приложений для вышеупомянутых платформ.


Нам были предложены три основных постулата:

Люди на первом месте. Разработчик должен думать в первую очередь о тех, кто будет использовать его приложение.
В случае портирования готовых программных продуктов (например, версий для Android) следует помнить, что перенос дизайна, данных, программного кода - задача не тривиальная.
В интерфейсе приложения важен каждый пиксель. Не стоит отчаянно цепляться за избитую модель с проведением параллелей между реальным миром и интерфейсом приложения (например, для работы с электронными книгами делать реалистичные полки с книгами). Эта концепция может выглядеть красиво, но быть очень неудобной в использовании. Большим плюсом является интеграция с различными "облачными" сервисами.
Если речь идёт о сенсорном вводе, важно следить за отзывчивостью приложения - оно не должно "тормозить", быстро откликаясь на управляющие нажатия. На первых этапах вас может сильно выручить использование различных шаблонов Visual Studio, специально предназначенных для различных сценариев работы.

Сценарии определяют приложение. Дизайнер должен чётко понимать время, место и контекст использования приложения (например, социальный, геолокационный и т.д.).
Необходимо рассмотреть возможности реализации нескольких точек входа в приложение. Не обязательно привязываться исключительно к нажатию на "плитку" в интерфейсе, можно предусмотреть иконку на десктопе, интерактивные окошки с оповещениями, интеграцию управляющих элементов в другие приложения.
Сюда же относится проработка различных методов ввода - клавиатура и мышь, и/или пальцами через сенсорный экран (с поддержкой жестов), или же с помощью стилуса. Если подразумевается использование пальцевого ввода, следует отводить под управляющие элементы на экране области с шириной не менее 7 мм.

Содержимое важнее "обёртки". Красиво исполненное, но "пустое" по своей сути приложение не вызовет большого интереса у пользователя. Необходимо создавать информационную карту приложения: общий взгляд на навигацию (плоская, иерархическая и т.п.), точки входа в приложение, доступ к данным и т.д. Также требуется проработка схемы "погружения" пользователя в контент.

Константин Кичинский коснулся различных технических тонкостей проектирования интерфейса - "сетки" экрана с ячейками 20х20 пикселей (unit) и 5х5 пикселей (subunit); вопросов типографики (художественное оформление текста, унификация и т.д.) и масштабирования (требуется читывать разное графическое разрешение ввиду многообразия целевых устройств).

В качестве подспорья назывались инструменты Expression Blend (интерактивный редактор для дизайна интерфейсов), шаблоны Storyboard и т.д.

Nokia Lumia на базе Windows 8


Сергей Руденко, менеджер Nokia по работе с разработчиками, представил нам грядущие смартфоны Nokia Lumia 920 и Nokia Lumia 820. Которые, как нетрудно догадаться, работают под управлением операционной системы Windows Phone 8.


Ну что тут можно сказать - у iPhone 5 появился реальный конкурент в борьбе за страждущего потребителя, выбирающего подарок к Новому Году себе или своим близким. По имеющимся сведениям, смартфоны официально поступят в продажу уже в конце ноября.


Сергей Руденко быстро прошёлся по наиболее примечательным характеристикам Nokia Lumia 920:

Двухъядерный процессор Qualcomm Snapdragon S4 с тактовой частотой 1,5 ГГц, графической подсистемой Adreno 225 и 1 Гб ОЗУ. Процессор изготовлен по 28-нм технологии и отличается малым энергопотреблением и высокой производительностью.

PureView-камера. Пожалуй, ключевая возможность этой камеры - наличие продвинутой системы оптической стабилизации, что очень важно для съёмок таким устройством, как смартфон (особенно если оператор находится в нетрезвом виде). Также отмечалась неплохая работа при недостаточном освещении.
Оптика: Carl Zeiss Optics
Оптический стабилизатор: Barrel shift type
Диафрагма: f/2.0
Диапазон фокусировки: 8 см - ∞
Сенсор: BSI (Backside illuminated)
Матрица: 8,7 Мп
Запись видео: Full HD 1080p, 30 кадров в секунду

Шикарный сенсорный 4,5-дюймовый экран PureMotion HD+ с разрешением 1280×768, уверенно отображающий содержимое даже при ярком солнечном свете. Также отмечалась чувствительность экрана (с ним можно уверенно работать даже в перчатках) и его стойкость (стекло Gorilla Glass второго поколения).

Встроенные бесплатные геолокационные средства. Оффлайн-поддержка "Карт Nokia". Карты с дополненной реальностью - с обозначениями заведений для их удобного поиска и идентификации.

NFC-модуль с интеграцией в Wallet - приложение в Windows Phone 8, позволяющее совершать покупки с помощью смартфона.

Встроенные модули Wi-Fi (802.11a/b/g/n) и Bluetooth 3.0.

Модуль A-GPS, системы позиционирования Глонасс

Возможность беспроводной зарядки по стандарту Qi (телефон можно класть на специальный коврик, и он будет заряжаться - без всяких шнуров).

В общем, очевидно, что ребята из Nokia при серьёзнейшей поддержке Microsoft выпускают на рынок настоящую "бомбу", и мы с нетерпением ожидаем появления устройства в нашей стране.


Со своей стороны, компания Nokia пообещала очень серьёзную поддержку разработчиков приложений для новых моделей Lumia - как посредством предоставления данных к API (например, Карт Nokia, управление фотокамерой и др.), так и обеспечения смартфонами для отладки программного кода. Кроме того, была обещана и маркетинговая поддержка наиболее удачных разработок.

OpenCL от Intel


Очень интересная презентация, предъявляющая определённые требования к технической подготовке слушателя. Инженер корпорации Intel рассказывал о том, как максимально использовать вычислительные мощности представленных на рынке устройств, которые зачастую могут похвастаться наличием мощного GPU.


Основные шаги при организации одновременной работы CPU и GPU в рамках единой вычислительной задачи:

Перебор устройств и их возможностей.
Создание общего контекста.
Эффективное разделение памяти между устройствами.
Балансирование задач в соответствии с загрузкой устройств.

Нам разъяснили понятия естественной и мелкой гранулярности при работе нескольких устройств над одной задачей: в первом случае в качестве примера можно привести обработку каждого кадра на отдельном устройстве, во втором - разделение кадра на части с обработкой каждой части на отдельном устройстве. Вне зависимости от выбранной схемы, требуется балансирование нагрузки - схема распределения обязательно должна уметь гибко адаптироваться к изменениям.

Во время презентации был продемонстрирован интересный кадр, на котором видна производительность системы при обработке данных только на CPU, только на GPU (интегрированная графика) и затем - при совместном использовании вычислительных мощностей обоих этих компонентов.


Важные моменты при оптимизации (общие для CPU и интегрированного GPU):

Минимизация копирования памяти.
Использование Floating Point для вычислений.
Использование "быстрой математики" (Relaxed math - аппроксимация с целью повышения производительности).
Эффективное взаимодействие с другими API через расширения OpenCL.

Разработчик сам определяет для себя цели, которые он хочет достичь: максимальной производительности, или же, например, максимальной производительности на один Ватт потребляемой энергии (что немаловажно в случае мобильных платформ при работе от батареи).

В конце вступления нам напомнили о наличии Intel SDK for OpenCL Applications и богатого инструментария Intel для разработки, отладки, компиляции кода.


Резюмируя, представитель Intel призвал нас по максимуму использовать все доступные вычислительные мощности системы, не забывая при этом об эффективном энергопотреблении.

Облачные сервисы для приложений под Windows 8 и Windows Phone


Доклад делала Наталия Ефимцева, эксперт по технологиям Microsoft. Она представляла возможности Live SDK для Windows и Windows Phone - набора API и средств управления, позволяющих реализовать в разрабатываемом приложении интеграцию схемы единой авторизации пользователя в сервисах Microsoft с предоставлением доступа к SkyDrive, Hotmail, Windows Live Messenger.


"Облачные" сервисы наступают. Платформа Windows Azure уже сейчас охватывает многие сферы, и развитие технологических инноваций в данной сфере не будет останавливаться.


Уверен, многие вновь образовываемые компании всё активнее будут обращать своё внимание на возможности переноса сетевой инфраструктуры в "облако". Конечно, если в коммерческом плане это будет выгодно, и если будет обеспечиваться высокий уровень безопасности и конфиденциальности данных.

Наталия Ефимцева продемонстрировала пример приложения, осуществляющего доступ к удалённому сервису Microsoft SkyDrive и отображающего размещённые там фотографии.

Интересной возможностью является роуминг данных - небольшой набор информации (порядка 100 Кбайт, но с возможностью расширения) с пользовательскими настройками, хранимый в "облаке". Например, при использовании единой авторизации на домашнем компьютере и планшете, с роумингом данных в мультимедийном проигрывателе, вы сможете продолжить воспроизведение видеоклипа на планшете с того момента, где поставили его на паузу на домашнем компьютере.

Были представлены службы Windows Azure Mobile Services, предназначенные для устройств под управлением Windows Phone. С ними вы сможете сконцентрироваться на создании мобильного кода, без необходимости писать серверную часть.


В настоящее время Windows Azure Mobile Services доступны в режиме бесплатной пробной версии, с созданием не более 10 служб в shared-режиме, базой данных SQL объёмом не более 1 Гигабайта, с неограниченным входящим трафиком к "облачной" инфраструктуре, но с ограничением исходящего - не более 165 Мбайт в сутки.

Погружение в фоновые сервисы для приложений Windows 8


Владимир Колесников провёл интересную сессию, насыщенную технической информацией о фоновых сервисах.


Фоновые сервисы весьма актуальны на мобильных платформах. Там присутствует требование эффективной приостановки работы приложений с целью оптимизации энергопотребления. И в Windows 8 фактически сама система управляет "жизнью" приложений, оперативно отправляя не активные программы в режим "спячки". Понятно, что в случае необходимости, например, непрерывного воспроизведения звукового сигнала, очень не хотелось бы, чтобы система обрывала его при сворачивании приложения.

Фоновые сервисы не обязательны, если вам нужны "живые плитки", всплывающие уведомления, значки (badges - небольшие уведомления на стартовом экране вроде наличия какого-то количества непрочитанных сообщений в Twitter и т.п.). Чаще всего в таком случае придётся воспользоваться услугами Windows Notification Service.


Если же фоновые сервисы требуются (например, коммуникационное приложение, поддерживающее канал, или вышеупомянутое воспроизведение аудио в фоновом режиме), то вам при разработке, скорее всего, понадобится пространство имён Windows.ApplicationModel.Background.

Владимир Колесников также поведал о различных типах звуковых потоков в фоновых сервисах - Media (обычные данные - локальные звуковые файлы, потоковое аудио и т.д.), Communications (голосовые коммуникации), Narrations (аудиокниги и другие типы воспроизведения текста в аудио). Все три типа потока могут воспроизводиться одновременно, но при этом невозможно одновременное воспроизведение двух потоков одного типа.

Докладчик продемонстрировал пример приложения, воспроизводящего звук из аудиоклипа в фоновом режиме, рассказал о классе Background.Transfer, осуществляющем сетевую передачу данных (имеется в виду процесс upload/download) в фоновом режиме. Также нам продемонстрировали список триггеров и условий их выполнения:


В общем, если вы создаёте приложения для новых версий Windows, разбираться с фоновыми сервисами вам по любому придётся, рано или поздно...

Эпилог


В заключение я произнесу банальную фразу о том, что главная ценность подобных мероприятий - живое общение с коллегами и специалистами. Подобные конференции также способны расширять ваш кругозор, предоставляя сведения о новых технологиях, изучение которых является строго обязательным в том случае, если вы являетесь сотрудником динамично развивающейся студии разработки. Впрочем, и самостоятельным программистам такие мероприятия пропускать никак нельзя. Тем более, в Microsoft на них серьёзно рассчитывают - кто же, по-вашему, будет наполнять Windows Store своими приложениями?