Edited at

LINE Beaconを持ったアイドルを探し回るイベント

More than 1 year has passed since last update.


概要

地図と「通知」だけを頼りに、アイドルを探す。見事、発見したら一緒に写メが撮れる――そんな宝探しみたいなイベントが元旦の歌舞伎町で行われました。

実施したのは、原宿を拠点に活動するアイドルグループの・・・・・・・・・。

LINE Beaconを持った彼女たちを、オタクがスマホ片手に探し回ります。LINEに「そばにいるよ」と通知がくれば、アイドルが近くにいる証拠。画面と現実世界を交互ににらめっこする姿は、ポケモンGOさながらです。

LINE Beacon。LINEが開発した、10m圏内に信号を発信する装置です。

この信号を捉えることで「Beaconの10m圏内に近づくと、LINEに通知が届く」機能が実現しました。

あとは、Beaconをアイドルに持たせるだけ。

「アイドルがそばにいる」と教えてくれるLINEアカウント、0ズレの完成です。


・・・・・・・・・とは


「個性を剥ぎ取ろうと思っている」

・・・・・・・・・とは、アイドグループです。「どっつ」や「てんきゅー」などと呼ばれますが、正式な呼称はありません。各々が好きな読み方をすればいいというコンセプトです。

メンバーは・と称されます。・に個人名はありません。公式Twitterにおけるメンバーのツイートにも個々人の署名はなく、「文章からにじみ出る個性で見分けろ」というスタンス。衣装はサングラスのようなもので顔が隠れたもの。

その意図について、運営はこう説明しています。


個性を剥ぎ取ろうと思っているんですよ



常に纏えるアイドル

HeartSyncというアプリを使うと・の今の心拍数がわかります。また、androidから公式サイトにアクセスし・をクリックすると、リアルタイムの心拍に合わせてスマホが振動します。

運営のインタビューからの引用


このスマホは見るものではなく触るためのガジェットです。触覚的に、直で推しの実体が、編集の入らない生そのものがやってくる。

僕たちはモニター抜きでアイドルと遠隔でつながることができるんじゃないかと考えていて。メディア環境の変化に応じてアイドルも変化してきた歴史があって、僕たちも動画サイトとSNS以降の対応すべき情報環境、つまりIoT時代や「ポケモンGO!」=都市の風景を拡張するAR時代の先に行きたいと思っています。言い方が難しいんですけど「今会えるアイドル」じゃなくて「常に纏える(まとえる)アイドル」を作りたいんです。


・・・・・・・・・のコンセプトが気になった方は引用元のインタビュー過去のオーディションHPを読んでみてください。


イベントのレポート

1/1 13:00

閑散とした歌舞伎町。お正月の昼ということもあり、あまり怖い雰囲気はありませんでした。

13:20

イベント開始。参加人数は・が5名、オタクが7名。・は2名と3名の2グループに別れる。前者はBeaconを1個、後者は2個所有。

この地図のエリア外には出ないというルールがあるため、見つけるのはそれほど難しくはないはず。

13:30

ずっと「通知こないかなー」とiPhoneとにらめっこしながら、ウロウロ歩き回る。

なかなか届かない通知。

そんなとき、もっとも恐れていた事態が!

通知がくるまえに見つけちゃった……(´・ω・`)

「そういうことじゃないんだよ!」と嘆くオタクのAさん。

この後も、2人グループのBeacon信号は「僕のiPhoneには」届きませんでした(まとめの項にて詳述)。

13:41

企画倒れになるのではと戦々恐々していた、そのとき!

キタ━━━━━m9( ゚∀゚)━━━━━ッ!!!!!

ぞくぞくと・を発見するオタたち

14:30

終了


実装

コールバックRubyプログラムを叩いて、あらかじめデータベースに登録しておいたBeacon機種ID(hwid)別の返信メッセージを返します。


callback.rb

require 'sinatra'

require 'line/bot'
require 'pg'

def client
@client ||= Line::Bot::Client.new { |config|
config.channel_secret = ENV["LINE_CHANNEL_SECRET"]
config.channel_token = ENV["LINE_CHANNEL_TOKEN"]
}
end

post '/callback' do
connection = PG::connect(:host => ENV["POSTGRESQL_HOST"], :user => ENV["POSTGRESQL_USER"], :password => ENV["POSTGRESQL_PASSWORD"], :dbname => ENV["POSTGRESQL_DBNAME"], :port => "5432")

begin
body = request.body.read
timestamp = Time.at(JSON.parse(body)["events"][0]["timestamp"]/1000.0)
user_id = JSON.parse(body)["events"][0]["source"]["userId"]
event_type = JSON.parse(body)["events"][0]["type"]

signature = request.env['HTTP_X_LINE_SIGNATURE']
unless client.validate_signature(body, signature)
error 400 do 'Bad Request' end
end

events = client.parse_events_from(body)
events.each { |event|
case event
when Line::Bot::Event::Beacon
hwid = JSON.parse(body)["events"][0]["beacon"]["hwid"]
result = connection.exec("select idol_name,idolgroup_name,reply_message from beacon where hwid=$1",[hwid])
idolgroup_name = result[0]["idolgroup_name"]
message = {type:'text',text:"0ズレ!#{idolgroup_name}が30m以内にいるよ!「#{result[0]["reply_message"]}」"}

result_insert = connection.exec("insert into event (user_id,timestamp,event_type,idolgroup_name,hwid,reply_message) values ($1,$2,$3,$4,$5,$6)",[user_id,timestamp,event_type,idolgroup_name,hwid,message[:text]])
client.reply_message(event['replyToken'], message)
end
}
ensure
connection.finish
end
"OK"
end



まとめ


課題

今回Beaconを3つ使ったのですが、僕のiPhoneはそのうちの1つ(3名グループのBeacon)からしか、信号を受け取りませんでした。

いっぽう、すべてのBeaconから信号を受信した方もいました。

事前のテストでは僕もすべてのBeaconから受信できていたので、何が原因で阻害されてしまったのかを、特定していきたいです。


今後

プライバシーや信号の受信、ユーザーが使うまでの設定が多いなど課題の多いLINE Beaconですが、今回のように1.短時間で 2.場所を限定し 3.参加者に利用する動機づけがされた イベントでは有用だと思います。

今後もBeaconのワクワクする使いみち探っていきます。