SlideShare a Scribd company logo
1 of 38
Download to read offline
Мобильные интерфейсы
будущего
Все примеры и картинки вымышлены.
Любые совпадения с реальностью случайны.
Идея
• UI сфера СТОИТ на месте:
• Концепт >> приложение
Идея
Зачем?
• color << Message.getSimilarColor(.red)
• color << Message.effect.notVeryContrast
• UI сфера СТОИТ на месте:
• Концепт >> приложение
• Качественные приложения
для разных сфер
Идея
Зачем?
• UI сфера СТОИТ на месте:
• Концепт >> приложение
• Качественные приложения
для разных сфер
• UIKit НЕ станет Open source и у
него не будет evolution process
Идея
Зачем?
• Потенциал для пользователей:
• Как пользователь будет видеть нужную информацию
• Потенциал для разработчиков:
• Как будут разработчики будут собираться такие
интерфейсы
• Развитие
Это будет исключительно мое ИМХО
Идея
О чем я хочу поговорить
Влияющие факторы
• Реактивное программирование — парадигма
программирования, ориентированная на потоки данных и
распространение изменений.
• a = b + c
• В императивном программировании `a` будет изменена по
месту вызова
• В реактивном при изменении `b` или `c`
Влияющие факторы
Реактивное программирование
Влияющие факторы
Реактивное программирование
Влияющие факторы
Реактивное программирование
• Чат-боты — это компьютерная программа, которая создана для имитации
речевого поведения человека при общении с одним или несколькими
собеседниками. По отношению к виртуальным собеседникам
употребляется также название программа-собеседник.
• Интересная особенность:
• Чат-боты имеют строгие гайдлайны ввода/получения информации
Влияющие факторы
Чат-боты
Влияющие факторы
Чат-боты
www.youtube.com/watch?v=ypk-72mhYBk
Влияющие факторы
Backend-driven UIs
Влияющие факторы
Watch Kit
20 pt
40%
Cell
Влияющие факторы
Watch Kit
Cell
40pt
Влияющие факторы
Watch Kit
Cell content
isveryverybig
Идеи интерфейсов
будущего
• Мутабельные UI
• Простая и понятная верстка
• Понятный и красивый переход от одного типа контента
к другому
• Ретроактивные визуальные компоненты
• Open source
• Готовые обучаемые модели
Идеи интерфейсов будущего
Примеры
Image
Text
Buttons
(.viewWidth(1),
.content)
(.viewWidth(0.9),
.content)
h = .center
Composition
Image
Text
Buttons
(.viewWidth(1),
.content)
(.viewWidth(0.9),
.content)
h = .center
Composition
Text
(.viewWidth(0.8),
.content(16))
h = .center
v = .center
View
(.viewWidth(0.9),
.content)
h = .center
Touchable
• Мутабельные UI
• Простая и понятная верстка
• Понятный и красивый переход от одного типа контента
к другому
• “Ретроактивные” визуальные компоненты
• Open source
• Готовые обучаемые модели
Идеи интерфейсов будущего
Идеи интерфейсов будущего
Мутабельные UI
struct QuestLevelModel {
var image: Image
var text: Text
var actions: List<CustomActions>
}
Идеи интерфейсов будущего
Мутабельные UI
struct QuestLevelBind {
var imageView: ImageView
var textView: TextView
var buttonComponent: Table<ButtonComponent>
}
Идеи интерфейсов будущего
Мутабельные UI
struct QuestLevelModel {
var image: Image
var text: Text
var actions: List<CustomActions>
}
struct QuestLevelBind: ModelBindable {
var imageView: ImageView
var textView: TextView
var buttonComponent: Table<MyButtonComponent>
func bind(levelModel: QuestLevelModel) {
imageView << levelModel.image
textView << levelModel.text
buttonComponent.component.text << levelModel.actions.value.text
buttonComponent.component.touch ->> levelModel.actions.value.execute
}
}
Идеи интерфейсов будущего
Мутабельные UI
struct QuestLevelBind: ModelBindable, InterfaceDrawable {
var imageView: ImageView
var textView: TextView
var buttonComponent: Table<MyButtonComponent>
func draw() -> [InterfaceComponent] {
return [imageView, textView, buttonComponent]
}
}
Идеи интерфейсов будущего
Простая и понятная верстка
struct QuestLevelBind: ModelBindable, InterfaceDrawable {
var imageView: ImageView
var textView: TextView
var buttonComponent: Table<MyButtonComponent>
func draw() -> [InterfaceComponent] {
let separator = Separator()
return [imageView, separator, textView, buttonComponent]
}
}
Идеи интерфейсов будущего
Простая и понятная верстка
enum WidthAligment {
case fixed(value: CGFloat)
case content(adjustment: CGFloat)
case viewWidth(percent: CGFloat, adjustment: CGFloat)
}
let text = TextView(width: .viewWidth(percent: 0.8),
height: .content)
Идеи интерфейсов будущего
Понятный и красивый переход от одного типа контента к другому
let text = TextView()
text.exchangeAnimation = .custom(configuration: AnimationConfiguration())
Идеи интерфейсов будущего
“Ретроактивные” визуальные компоненты
// Actions
protocol Touchable { }
protocol SliderType { }

protocol PickerType { }
Идеи интерфейсов будущего
Готовые обучаемые модели
// Actions
protocol Touchable { }
protocol SliderType { }

protocol PickerType { }
// Recommendation System
protocol RecomentationalTouchType: Touchable { }
Идеи интерфейсов будущего
Готовые обучаемые модели
// Recommendation System
protocol RecomentationalTouchType: Touchable {
func recomended(minimalSize: CGSize)
func recomended(executionType: ExecutionType)
}
Идеи интерфейсов будущего
Готовые обучаемые модели
// Recommendation System
protocol RecomentationalTouchType: Touchable {
func recomended(minimalSize: CGSize)
func recomended(executionType: ExecutionType)
}
protocol RecomentationalTextType {
var textPurpose: TextPurpose { get }
func recomended(minimalFontSize size: CGFloat)
func recomended(fontWeight: ExecutionType)
}
Идеи интерфейсов будущего
Готовые обучаемые модели
// Recommendation System
protocol RecomentationalTouchType: Touchable {
func recomended(minimalSize: CGSize)
func recomended(executionType: ExecutionType)
}
protocol RecomentationalTextType {
var textPurpose: TextPurpose { get }
func recomended(minimalFontSize size: CGFloat)
func recomended(fontWeight: ExecutionType)
}
~
Open Source
struct MyButton: ViewType, InterfaceDrawable, InterfaceComponent, Touchable {
var rightImage: ImageView
var leftImage: ImageView
var text: TextView
var touch: TouchAction
let width: WidthAligment
let height: HeightAligment
mutating func setup() {
leftImage = ImageView(width: .fixed(value: 20), height: .fixed(value: 20))
leftImage = ImageView(width: .fixed(value: 20), height: .fixed(value: 20))
text = TextView(width: .content(adjustment: 0), height: .content(adjustment: 0))
width = .viewWidth(percent: 0.8, adjustment: 0).lessOrEqual()
}
func draw() -> [InterfaceComponent] {
return [leftImage, text, rightImage]
}
// ...
}
Спасибо за
внимание!
Зимин Александр
@ziminalex

azimin@me.com

More Related Content

Similar to Александр Зимин — Мобильные интерфейсы будущего

Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработкиIT-Доминанта
 
Презентация на тему программирование Карпляк Виктор Владимирович .pptx
Презентация на тему программирование Карпляк Виктор Владимирович .pptxПрезентация на тему программирование Карпляк Виктор Владимирович .pptx
Презентация на тему программирование Карпляк Виктор Владимирович .pptx5bfnz5j9hl5bfnz5j9hl
 
Визуальное проектирования интернет-проектов - Михаил Кашафутдинов
Визуальное проектирования интернет-проектов - Михаил КашафутдиновВизуальное проектирования интернет-проектов - Михаил Кашафутдинов
Визуальное проектирования интернет-проектов - Михаил Кашафутдиновit-park
 
Tool View Interface of Integrated Development Environment / Исследование инте...
Tool View Interface of Integrated Development Environment / Исследование инте...Tool View Interface of Integrated Development Environment / Исследование инте...
Tool View Interface of Integrated Development Environment / Исследование инте...Ivan Ruchkin
 
Aris express как инструмент моделирования
Aris express как инструмент моделированияAris express как инструмент моделирования
Aris express как инструмент моделированияVladimir Trukhin
 
Remote (dev)tools своими руками
Remote (dev)tools своими рукамиRemote (dev)tools своими руками
Remote (dev)tools своими рукамиRoman Dvornov
 
Мировые информационные ресурсы. Лекция 2
Мировые информационные ресурсы. Лекция 2Мировые информационные ресурсы. Лекция 2
Мировые информационные ресурсы. Лекция 2Dmitriy Krukov
 
Лекция 4
Лекция 4Лекция 4
Лекция 4itc73
 
терминология vol.2
терминология vol.2терминология vol.2
терминология vol.2SBTech
 
разработка Metro style приложений
разработка Metro style приложенийразработка Metro style приложений
разработка Metro style приложенийОлег Винников
 
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETОпыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETGoSharp
 
Проект "Нихол"
Проект "Нихол"Проект "Нихол"
Проект "Нихол"E-Journal ICT4D
 
Модуль 15. Лекция 59-60.
Модуль 15. Лекция 59-60. Модуль 15. Лекция 59-60.
Модуль 15. Лекция 59-60. Yana Brodetski
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET CoreAndrew Gubskiy
 
Информационная архитектура в интернете
Информационная архитектура в интернетеИнформационная архитектура в интернете
Информационная архитектура в интернетеMikhail Galushko
 
InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015InterSystems
 
Graduate Project: designing a web site and 3D application for Elby Adbertising
Graduate Project: designing a web site and 3D application for Elby AdbertisingGraduate Project: designing a web site and 3D application for Elby Adbertising
Graduate Project: designing a web site and 3D application for Elby AdbertisingAnna Kholina
 
METRO. Дизайн для Windows Phone
METRO. Дизайн для Windows PhoneMETRO. Дизайн для Windows Phone
METRO. Дизайн для Windows PhoneNikita Lukianets
 
Иван Васильев
Иван ВасильевИван Васильев
Иван ВасильевCodeFest
 

Similar to Александр Зимин — Мобильные интерфейсы будущего (20)

Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработки
 
Презентация на тему программирование Карпляк Виктор Владимирович .pptx
Презентация на тему программирование Карпляк Виктор Владимирович .pptxПрезентация на тему программирование Карпляк Виктор Владимирович .pptx
Презентация на тему программирование Карпляк Виктор Владимирович .pptx
 
Визуальное проектирования интернет-проектов - Михаил Кашафутдинов
Визуальное проектирования интернет-проектов - Михаил КашафутдиновВизуальное проектирования интернет-проектов - Михаил Кашафутдинов
Визуальное проектирования интернет-проектов - Михаил Кашафутдинов
 
Tool View Interface of Integrated Development Environment / Исследование инте...
Tool View Interface of Integrated Development Environment / Исследование инте...Tool View Interface of Integrated Development Environment / Исследование инте...
Tool View Interface of Integrated Development Environment / Исследование инте...
 
Aris express как инструмент моделирования
Aris express как инструмент моделированияAris express как инструмент моделирования
Aris express как инструмент моделирования
 
Remote (dev)tools своими руками
Remote (dev)tools своими рукамиRemote (dev)tools своими руками
Remote (dev)tools своими руками
 
Мировые информационные ресурсы. Лекция 2
Мировые информационные ресурсы. Лекция 2Мировые информационные ресурсы. Лекция 2
Мировые информационные ресурсы. Лекция 2
 
Лекция 4
Лекция 4Лекция 4
Лекция 4
 
терминология vol.2
терминология vol.2терминология vol.2
терминология vol.2
 
разработка Metro style приложений
разработка Metro style приложенийразработка Metro style приложений
разработка Metro style приложений
 
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETОпыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
 
Проект "Нихол"
Проект "Нихол"Проект "Нихол"
Проект "Нихол"
 
Модуль 15. Лекция 59-60.
Модуль 15. Лекция 59-60. Модуль 15. Лекция 59-60.
Модуль 15. Лекция 59-60.
 
YaC 2013 Notes
YaC 2013 NotesYaC 2013 Notes
YaC 2013 Notes
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET Core
 
Информационная архитектура в интернете
Информационная архитектура в интернетеИнформационная архитектура в интернете
Информационная архитектура в интернете
 
InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015
 
Graduate Project: designing a web site and 3D application for Elby Adbertising
Graduate Project: designing a web site and 3D application for Elby AdbertisingGraduate Project: designing a web site and 3D application for Elby Adbertising
Graduate Project: designing a web site and 3D application for Elby Adbertising
 
METRO. Дизайн для Windows Phone
METRO. Дизайн для Windows PhoneMETRO. Дизайн для Windows Phone
METRO. Дизайн для Windows Phone
 
Иван Васильев
Иван ВасильевИван Васильев
Иван Васильев
 

More from CocoaHeads

Дмитрий Котенко – Реактивный VIPER
Дмитрий Котенко – Реактивный VIPERДмитрий Котенко – Реактивный VIPER
Дмитрий Котенко – Реактивный VIPERCocoaHeads
 
Александр Зимин – Анимация как средство самовыражения
Александр Зимин – Анимация как средство самовыраженияАлександр Зимин – Анимация как средство самовыражения
Александр Зимин – Анимация как средство самовыраженияCocoaHeads
 
Николай Ашанин – Team Lead. Структурирование мыслей
Николай Ашанин – Team Lead. Структурирование мыслейНиколай Ашанин – Team Lead. Структурирование мыслей
Николай Ашанин – Team Lead. Структурирование мыслейCocoaHeads
 
Кирилл Аверьянов — Кастомная кнопка: взгляд изнутри
Кирилл Аверьянов —  Кастомная кнопка: взгляд изнутриКирилл Аверьянов —  Кастомная кнопка: взгляд изнутри
Кирилл Аверьянов — Кастомная кнопка: взгляд изнутриCocoaHeads
 
Виктор Брыкcин — Как всё починить и ничего не сломать: работа со сложным кодо...
Виктор Брыкcин — Как всё починить и ничего не сломать: работа со сложным кодо...Виктор Брыкcин — Как всё починить и ничего не сломать: работа со сложным кодо...
Виктор Брыкcин — Как всё починить и ничего не сломать: работа со сложным кодо...CocoaHeads
 
Самвел Меджлумян — S3: API на Swift за пять минут
Самвел Меджлумян —  S3: API на Swift за пять минутСамвел Меджлумян —  S3: API на Swift за пять минут
Самвел Меджлумян — S3: API на Swift за пять минутCocoaHeads
 
Александр Зимин (Alexander Zimin) — Магия Swift
Александр Зимин (Alexander Zimin) — Магия SwiftАлександр Зимин (Alexander Zimin) — Магия Swift
Александр Зимин (Alexander Zimin) — Магия SwiftCocoaHeads
 
Катерина Трофименко — Разработка фич: от флагов до a/b-тестов
Катерина Трофименко — Разработка фич: от флагов до a/b-тестовКатерина Трофименко — Разработка фич: от флагов до a/b-тестов
Катерина Трофименко — Разработка фич: от флагов до a/b-тестовCocoaHeads
 
Вадим Дробинин (Vadim Drobinin) — Заботимся правильно: CareKit, HealthKit и ...
Вадим Дробинин (Vadim Drobinin) —  Заботимся правильно: CareKit, HealthKit и ...Вадим Дробинин (Vadim Drobinin) —  Заботимся правильно: CareKit, HealthKit и ...
Вадим Дробинин (Vadim Drobinin) — Заботимся правильно: CareKit, HealthKit и ...CocoaHeads
 
Михаил Рахманов — Promises, или почему обещания надо выполнять
Михаил Рахманов — Promises, или почему обещания надо выполнятьМихаил Рахманов — Promises, или почему обещания надо выполнять
Михаил Рахманов — Promises, или почему обещания надо выполнятьCocoaHeads
 
Александр Зимин — Оптимизация разработки
Александр Зимин — Оптимизация разработкиАлександр Зимин — Оптимизация разработки
Александр Зимин — Оптимизация разработкиCocoaHeads
 
Алина Михайлова — Как обойтись без менеджера в своем проекте
Алина Михайлова — Как обойтись без менеджера в своем проектеАлина Михайлова — Как обойтись без менеджера в своем проекте
Алина Михайлова — Как обойтись без менеджера в своем проектеCocoaHeads
 

More from CocoaHeads (12)

Дмитрий Котенко – Реактивный VIPER
Дмитрий Котенко – Реактивный VIPERДмитрий Котенко – Реактивный VIPER
Дмитрий Котенко – Реактивный VIPER
 
Александр Зимин – Анимация как средство самовыражения
Александр Зимин – Анимация как средство самовыраженияАлександр Зимин – Анимация как средство самовыражения
Александр Зимин – Анимация как средство самовыражения
 
Николай Ашанин – Team Lead. Структурирование мыслей
Николай Ашанин – Team Lead. Структурирование мыслейНиколай Ашанин – Team Lead. Структурирование мыслей
Николай Ашанин – Team Lead. Структурирование мыслей
 
Кирилл Аверьянов — Кастомная кнопка: взгляд изнутри
Кирилл Аверьянов —  Кастомная кнопка: взгляд изнутриКирилл Аверьянов —  Кастомная кнопка: взгляд изнутри
Кирилл Аверьянов — Кастомная кнопка: взгляд изнутри
 
Виктор Брыкcин — Как всё починить и ничего не сломать: работа со сложным кодо...
Виктор Брыкcин — Как всё починить и ничего не сломать: работа со сложным кодо...Виктор Брыкcин — Как всё починить и ничего не сломать: работа со сложным кодо...
Виктор Брыкcин — Как всё починить и ничего не сломать: работа со сложным кодо...
 
Самвел Меджлумян — S3: API на Swift за пять минут
Самвел Меджлумян —  S3: API на Swift за пять минутСамвел Меджлумян —  S3: API на Swift за пять минут
Самвел Меджлумян — S3: API на Swift за пять минут
 
Александр Зимин (Alexander Zimin) — Магия Swift
Александр Зимин (Alexander Zimin) — Магия SwiftАлександр Зимин (Alexander Zimin) — Магия Swift
Александр Зимин (Alexander Zimin) — Магия Swift
 
Катерина Трофименко — Разработка фич: от флагов до a/b-тестов
Катерина Трофименко — Разработка фич: от флагов до a/b-тестовКатерина Трофименко — Разработка фич: от флагов до a/b-тестов
Катерина Трофименко — Разработка фич: от флагов до a/b-тестов
 
Вадим Дробинин (Vadim Drobinin) — Заботимся правильно: CareKit, HealthKit и ...
Вадим Дробинин (Vadim Drobinin) —  Заботимся правильно: CareKit, HealthKit и ...Вадим Дробинин (Vadim Drobinin) —  Заботимся правильно: CareKit, HealthKit и ...
Вадим Дробинин (Vadim Drobinin) — Заботимся правильно: CareKit, HealthKit и ...
 
Михаил Рахманов — Promises, или почему обещания надо выполнять
Михаил Рахманов — Promises, или почему обещания надо выполнятьМихаил Рахманов — Promises, или почему обещания надо выполнять
Михаил Рахманов — Promises, или почему обещания надо выполнять
 
Александр Зимин — Оптимизация разработки
Александр Зимин — Оптимизация разработкиАлександр Зимин — Оптимизация разработки
Александр Зимин — Оптимизация разработки
 
Алина Михайлова — Как обойтись без менеджера в своем проекте
Алина Михайлова — Как обойтись без менеджера в своем проектеАлина Михайлова — Как обойтись без менеджера в своем проекте
Алина Михайлова — Как обойтись без менеджера в своем проекте
 

Александр Зимин — Мобильные интерфейсы будущего