---
tags: ulla
disqus: hackmd
---
# ULLA: Техническая часть :hammer_and_wrench:
Подготовив контент учебника, вы легко можете превратить его в приложение для Android, iOS, Web. Для этого вам придется установить некоторые программы и ознакомиться с инструкциями. Но для начала мы хотим объяснить вам суть этих задач. И вам придётся узнать и осмыслить некоторые важные, но не сложные моменты из мира создания программ.
## Сборка приложения
Когда вы работаете над приложением: готовите контент, настраиваете стили (цвета, шрифты, размеры текстов) -- все файлы находятся в человеко :man::woman: читаемом виде в папках с понятными названиями, где вам легко ориентироваться и править их.
Когда же работа завершена -- всё что вы долго и упорно делали надо запаковать в максимально сжатый, удобный для устройств :computer::iphone: виде. Именно такие файлы и принимают магазины: Google Play, AppStore и размещают на веб-сайте.
### Объём и характер работы
Для программистов это элементарные задачи, требующие 10-30 минут чтобы вникнуть и проделать. У непрограммистов это может занять... несколько часов. Если вы планируете создавать свои учебники и выпускать их в виде приложения, конечно вам стоит уделить этому время и силы.
Суть работы заключается в вызове комманд из терминала (коммандная строка -- специальное окно, где программы запускаются посредством ввода текста). Например, вот такой командой создаётся версия приложения для Android:
```
expo build:android -t apk
```
### Терминал (командная строка)
Терминал (командная строка) -- это специальная программа, чаще в виде черного окна, для ввода команд для операционной системы. Вызываетя сочетанием клавиш:
- Виндовс: Win+x, cmd
- Убунту: Ctrl+Alt+t
Обычные пользователи (непрограммисты), для взаимодействия с компьютером используют графический интерфейс, глаза :eyes:, руки :hand: и мышку/тачскрин. Они:
- переходят по папкам тыкая в них мышкой,
- переносят файлы напряженной рукой, чтобы она не дрогнула и файлы не рассыпались на пол пути,
- переименовывают файлы глазами находя их в папке и тыкая в них,
и т.д.
В терминале всё это заменяется текстовыми командами. Например, создать папку MyProject и войти в неё будет выглядеть так:
```bash
mkdir MyProject
cd MyProject
```
То есть благодаря командной строке вы выводите своё общение с компьютером на новый уровень: с языка жестов на письменность.
Это удобно и необходимо по многим причинам. Для вас сейчас важно, что однотипные действия (создать приложение для iOS, Android, Web) проще копировать/вставлять в виде текста в терминал, нежели блуждать по папкам и тыкать файлы мышкой.
Самое главное здесь конечно -- знать, какую именно команду набирать. Это не тайные знания из колледжа для избранных, а обычные инструкции к вещам, вроде как стирать свитер или включить пар на утюге. Программисты находят их в описаниях программ, которыми пользуются.
## Настройка программного окружения
Ulla сделано на базе популярной технологии создания мобильных приложений **react-native**, изобретенной Фейсбуком. А точнее, с использованием [expo/create-react-native-app](https://github.com/expo/create-react-native-app). Этот инструмент:
- показывает вам приложение на этапе разработки,
- собирает итоговую версию для iOS, Android и Web
Чтобы запустить его, вам придётся установить:
- [node](https://nodejs.org/)
- [git](https://git-scm.com/downloads)
- [expo-cli](https://docs.expo.io/workflow/expo-cli/)
Процесс установки может немного отличаться в зависимости от вашей ОС (Windows, Ubuntu, MacOS). Надеемся, вы справитесь, перейдя по ссылкам выше. В случае затруднения -- посмотрите на ютубе: *how to install node.js/git/expo-cli on Windows/Ubuntu/MacOS*.
Проверить установку можно запустив в терминале:
```
node --version
git --version
expo-cli --version
```
В случае успеха вы увидите лаконичные номера версий.
В случае неуспеха - длинные сообщения об ошибках.
## Установка Ulla
Ulla является программой с открытым исходном кодом, и находится по адресу: https://github.com/aparus/ulla. [^1]
Зайдите через терминал в папку с вашими проектами и клонируйте туда Ulla:
```bash
cd /your-projects-folder
git clone https://github.com/Aparus/ulla.git
```
На Гитхабе программы хранятся в сокращённом виде, лишь с перечнем названий всех программ, необходимых для их запуска и работы. Это называется "зависимости". Они перечислены в файле `package.json`. Когда вы клонировали проект с Гитхаба, вам надо установить все эти зависимости локально (на свой компьютер), чтобы программа запустилась у вас.
Заходите в папку ulla и устанавливаете все её зависимости:
```bash
cd ulla
npm install
```
## Кодирование контента
Когда вы добавили свой контент (текст, переводы, картинки, аудио), чтобы приложение могло их использовать, нужно их предварительно подготовить (например, чтобы у каждого слова в тексте был выставлен порядковый номер, или заранее знать перечень всех картинок и аудио). Для этого запустите в командной строке команду:
```bash
npm run generate-assets
```
Для интереса можете посмотреть в папку `/assets` - это то, как ваш контент закодировался в удобном для приложения виде.
## Запуск в режиме отладки
И последний шаг перед получением наглядного результата:
```bash
expo start
```
[^1]: Гитхаб является самым крупным и популярным хранилищем открытого кода в мире. Большинство открытых программ опубликованы там, с **инструкциями** по: установке, развёртыванию, использованию; с обсуждениями: сообщениях об ошибках, вопросов, голосованием за новые фичи и т.д. Страницу отдельного проекта также называют: *репозиторий*.