У меня есть довольно амбициозная идея – сделать мобильный измеритель общественного мнения в городах России. Но пазл пока не складывается. Через несколько месяцев размышлений я понял, что мне нужно обратиться за помощью светлых голов Хабра. Ниже в статье я расскажу, в чем проблема, но сначала о самой идее. Технологии плавно подходят к замечательному моменту, когда мы с помощью интернета сможем измерять мнение людей по любому вопросу. Сейчас общественное мнение по-прежнему изучают через социальные опросы, в основном телефонные. По старинке. Но это долго и дорого. А значит, доступно узкому кругу заказчиков по узкому кругу вопросов. Социологические опросы могут проводиться через интернет (это придумали еще лет 20 назад, но воз и ныне там). Проникновение интернета в России уже очень высокое – достаточное для проведения опросов во всех социальных группах. От мала до велика, от самых бедных до самых богатых – все пользуются интернетом. Остается открытым вопрос – как сделать так, чтобы в опросах участвовали реальные люди, а не фейковые аккаунты.  Понятно, что государственные органы уже проводят электронное голосование на выборах, поэтому этот вопрос госорганами уже решен – регистрация через Госуслуги. Моя же идея в том, чтобы сделать полностью независимую систему изучения общественного мнения, независимую в том числе и от государственных органов. Людям нужен способ, с помощью которого они могут выразить и донести свое мнение по любому общественно значимому вопросу. (Никогда не бывает единого мнения по какому-то вопросу, всегда есть спектр мнений. Вот этот спектр и подлежит оценке.)  Представим, что вы можете открыть мобильное приложение и измерить мнение жителей вашего города/района абсолютно по любому вопросу. О, сколько чудных открытий нас с вами ждет! Раньше мы могли только предполагать, как именно думают люди по тому или иному вопросу. А теперь задал вопрос, а к вечеру уже будет достоверная оценка общественного мнения (ну или близкая к достоверной). Важно, что опросы смогут создавать все зарегистрированные пользователи, а не только владелец приложения. Ведь иначе общественным мнением невольно будет манипулировать владелец приложения: все зависит от того, кто и как формулирует вопрос. Вопрос на одну тему можно сформулировать множеством способов и получить совершенно разные мнения. А в мобильном приложении каждый сам себе социолог. Создал грамотный, интересный опрос – получил множество ответов заинтересованных людей, опрос выводится в топ. Создал неактуальный или плохой опрос – получил кучу дизлайков, рейтинг опроса снижается, опрос удаляется или реже показывается.  При этом один опрос имеет смысл проводить только среди жителей одного города. На опрос, созданный жителем Омска, смогут отвечать только жители Омска. В приложении могут участвовать люди из всех городов, но отвечать на каждый опрос могут только жители одного города. Почему так? Во-первых, это делает опросы более точными с социологической точки зрения (проще определить мнение жителей одного города, нежели проводить общероссийские опросы, где смешано население крупных и мелких городов, городов и деревень, севера и юга, востока и запада, национальных республик и многонациональных областей).  Во-вторых, города – это места компактного проживания людей, в каждом городе своя экономика, свой транспорт, медицина, образование, экология и прочие жизненно важные вещи. Нет смысла опрашивать о состоянии здравоохранения или экологии одновременно жителей разных городов – получим среднюю температуру по больнице.  В-третьих, жители одного города с помощью таких мобильных опросов смогут решать множество общественных вопросов, проводить голосования по важным для города темам. Так приложение становится уже не просто измерителем общественного мнения, но и инструментом коллективного принятия решений. Конечно, пока вообще не идет речь о т.н. «электронной демократии», до этого очень далеко. Сейчас важно хотя бы научиться узнавать мнение людей по различным вопросам городского уровня. Говоря о городских опросах, на ум приходит приложение «Активный гражданин», созданное московскими властями. С помощью этого приложения москвичи голосуют по вопросам, поставленным властями города. Приложение задумывалось как передовая форма электронной демократии. Но на деле превратилось в фикцию. В «Активном гражданине», например, проводятся такие вопросы: «В какие цвета покрасить кресла на стадионе «Лужники»?» или «Как назвать медвежонка в московском зоопарке?». Однако серьезные вопросы, действительно волнующие москвичей, власти просто не рискуют задавать. По этой причине ничего серьезного с точки зрения управления городом из приложения не получилось. Кто платит, тот и заказывает музыку.   Я вижу, что наибольшая польза от подобного опросного приложения будет именно для обсуждения городских вопросов. Только теперь пусть сами жители задают вопросы, а не власти, и сами определяют, что для них (жителей) важно.  Теперь немного о социологии. Чтобы узнать мнение жителей города по вопросу, нет необходимости опрашивать всех жителей – достаточно опросить малую часть, которая может быть в десятки или даже тысячи раз меньше населения. Например, в общероссийских опросах, о которых мы часто слышим в СМИ, опрашивают всего лишь 1600 респондентов из различных городов и сел различных субъектов Федерации. Такого же числа респондентов хватит и для опроса в мегаполисе или любом городе поменьше (см. калькулятор выборки). Предположим, мы уверены, что в электронном опросе участвуют реальные люди (1 человек – 1 голос). Но это не дает нам право утверждать, что результаты опроса отражают реальное мнение жителей города (если опрос проводится среди жителей города).  Чтобы можно было утверждать о достоверности социального опроса, необходимо убедиться, что опрашиваемые пользователи представляют собой репрезентативную выборку из генеральной совокупности (из всех жителей города). Репрезентативная выборка – это такая выборка, в которой все основные признаки генеральной совокупности, из которой извлечена данная выборка, представлены приблизительно в той же пропорции или с той же частотой, с которой данный признак выступает в этой генеральной совокупности.  Как можно сделать репрезентативную выборку? Каждый зарегистрированный пользователь мобильного приложения заполняет анкету – социальный профиль респондента: возраст, пол, образование, род занятий и пр. Зная, кого мы опрашиваем, мы можем сформировать выборку по этим признакам в соответствии с тем, как они представлены в генеральной совокупности (в городе). Однако есть нюансы, которые нужно учитывать, чтобы не обмануть самого себя результатами опросов. Важно, чтобы все пользователи приложения не были набраны из какой-то другой выборки (например, все пользователи приложения пришли из Facebook или все – сотрудники бюджетных организаций), что уже свидетельствует о смещении выборки.  Тут есть вещи, которые можно и нужно обсуждать (да-да, мы все знаем, что есть ложь, большая ложь и статистика).  А теперь самое интересное. Как сделать верификацию пользователей приложения, т.е. отделять реальные аккаунты от фейковых. Самый простой и доступный способ – воспользоваться банковской системой онлайн-переводов (не делая переводов). Алгоритм следующий. Пользователь должен быть клиентом Сбербанка (поскольку таких около 80 млн. человек в стране). Пользователь регистрируется в приложении, указывает свои ФИО, через смс подтверждает свой мобильный телефон.  Далее берем номер телефона зарегистрированного участника и проверяем его через систему онлайн-переводов Сбербанка (это может сделать любой клиент Сбербанка через сайт или мобильное приложение – как при переводе средств). Если телефон найден, получаем имя, отчество и первую букву фамилии владельца счета. Например, мы узнаем, что телефон (и счет в Сбере) принадлежит человеку по имени Александр Иванович М.  Сравниваем с тем, что пользователь указал в приложении – совпало / не совпало. Таким образом с помощью подтвержденного пользователем номера телефона и системы онлайн-переводов Сбера можем легко и просто определить, что зарегистрировался реальный человек.  Казалось бы, самый сложный вопрос решен. Но есть одно «но» – в Сбербанке предусмотрено, что клиент может поменять номер телефона. Смена телефона занимает несколько дней. Таким образом недобросовестный участник, меняя номер телефона в своем аккаунте Сбербанка, через какое-то время сможет наплодить фейковых аккаунтов в опросном приложении (под разными телефонами, но под одним именем «Александр Иванович М»). Есть как минимум два способа это предотвратить.  Первый способ. Можно регистрировать в приложении только людей с уникальными именем, отчеством и первой буквой фамилии. Есть примерно 100 женских имен, 100 мужских имен (100 отчеств) и 30 букв русского алфавита. Посчитаем, сколько уникальных пользователей сможем зарегистрировать: (100 + 100)*100*30 = 600 000. Итого 600 тысяч гарантированных нефейковых аккаунтов. Но, к сожалению, два разных Александра Ивановича М зарегистрироваться в приложении не смогут, и набор новых участников будет тормозиться, а потом и вовсе остановится (а мы хотим, чтобы количество людей в опросах быстро росло). Это и есть недостаток этого способа. Второй способ выявления фейковых аккаунтов – повторные периодические проверки ранее зарегистрированных пользователей.  Предположим, Александр Иванович М зарегистрировался, а через некоторое время поменял в Сбере номер телефона и зарегистрировался в опросном приложении по новому номеру. Если повторно проводить проверки через систему Сбера всех ранее зарегистрированных пользователей, то мы определим, что первый Александр Иванович М уже не значится в Сбере по старому номеру телефона, и он будет удален из приложения. Таким образом, количество фейковых аккаунтов не будет расти – они будут оперативно выявляться и удаляться. У этого способа главный недостаток – большой объем повторных проверок. Важно еще отметить, что в сберовской системе переводов есть ограничение по количеству запросов данных по номеру телефона в сутки одним аккаунтом – около 20 запросов. Этого явно недостаточно, чтобы зарегистрировать тысячи пользователей. Поэтому всю работу по верификации аккаунтов не смогут делать модераторы. Способ обойти это ограничение – взаимная верификация, когда одни пользователи приложения верифицируют других пользователей. Алгоритм следующий. Пользователь А получает телефон случайного пользователя Б, при этом не знает под каким именем зарегистрировался пользователь Б. Пользователь А проверяет в банковской системе телефон и узнает имя отчество и первую букву фамилии пользователя Б, сохраняет полученные данные в приложении – и если данные совпали, то пользователь Б успешно верифицирован. Есть и третий способ выявления фейковых аккаунтов, но он пока доступен не всем: есть сберовская система SberID, по которой можно авторизовать пользователей на сторонних сайтах через аккаунт пользователя в Сбере (как авторизация через аккаунты в Гугле и соцсетях). Сбер дает свой API, и при регистрации какого-то пользователя на стороннем сайте возвращает сайту уникальный ID клиента. По этому ID можно определять уникальных клиентов Сбера: можно определить, что два Александра Ивановича М, зарегистрировавшихся в опросном приложении по разным телефонам, это, на самом деле, один и тот же клиент Сбера. Фейковый аккаунт не будет создан! Недостаток этого способа – зависимость приложения от Сбера. Хотят – дадут доступ к SberID, не захотят – не дадут. Как видим, у перечисленных способов удаленной верификации пользователей есть свои недостатки. Проблема не решена, но уже достаточно близка к решению. Есть, о чем поразмыслить. Возможно, стоит применять комбинации способов верификации. Вспомним способ, по которому удаленно регистрируют клиентов каршеринга – достаточно прислать фото своего лица вместе с паспортом. Но многие ли захотят делиться паспортом ради доступа к опросам?  Уверен, что над темой удаленной верификации пользователей задумываются многие. Тем более что верификация может использоваться во многих других проектах, не только в опросах. Прошу помощи зала. Если вы видите, как можно сделать реально работающую систему удаленной верификации пользователей, поделитесь мыслями в комментариях. Есть главное требование к верификации – она не должна быть сложной. Чтобы ей мог воспользоваться не только айтишник, но и пенсионер.  P.S. Понятно, что вопрос удаленной верификации пользователей хоть и главный, но не единственный, чтобы появилось опросное приложение. Другие важные вопросы: контроль подсчета голосов и аудит системы, соблюдение анонимности голосов, защита от внешних воздействий (продажа голосов, организованные голосования и т.п.). Но эти вопросы слишком велики, чтобы поместились в одну статью. Если тема опросного приложения будет интересна читателям Хабра, можно продолжить дискуссию в серии статей.