CEDEC非公式スマホサイトをつくってみた
CEDECという、主にゲーム系の国内最大手カンファレンスがあるのですが、これの非公式スマホサイトを作ってみました。
動機
CEDECの公式サイトは一応スマホで表示してもレイアウトが崩れないようになっていて、じゃああえて非公式スマホサイト作らなくてもいいんじゃね?と思われる方もいると思うのですが、以下の2つの問題を解決したくて作りました。
公式サイトには必要な情報が載っていない
公式サイトには、当日セッションを確認するのに必要な「セッションがどこの部屋で行われるのか」という情報がありませんでした。 セッションの部屋割り情報は、当日会場で配られるパンフレット(と、公式サイトでダウンロードできるパンフレットのPDFファイル)には載っているのですが、公式サイト自体には載っていません。 当日会場で使うことを考えると、スマホでPDFを見るのは面倒なので、スマホに最適化されたUIで情報が見たかったです。
ネット上で議論したい
よその勉強会(ないしカンファレンス、セミナー、…)だと、だいたい勉強会ごとのハッシュタグが決められていて、Twitter上でtsudaり的なことをしたり感想をtweetする人がそれなりにいるんですが、CEDECだとそれが無いのが個人的にすごい残念に思っています。 これがあると、参加できなかった裏番組セッションの内容を垣間見れたり、他の参加者の意見を知ることができて有益だと思っています。
最初はセッションごとに何らかのユニークなハッシュタグを設定して、そのハッシュタグでtweetができれば大丈夫かと考えました。ただその方法だと今回作るスマホサイトの利用者のtweetしか拾えず、利用者がそこまで増えないことが想定できていたので不十分でした。 そこで、公式サイトのセッション詳細ページのURLをリンクとして仕込むことで後で拾えるようにしました。これは公式サイトのtweetボタンと同じ内容になるので、公式サイト経由でtweetされたものも後で拾えます。(ただ、公式サイトのtweetボタンはなぜか同じURLが2つ入力されてしまうという不具合があるようでした)
実装
セッションのデータを収集する部分と、収集したデータをHTML化する部分からできています。
セッションのデータを収集する部分は、公式サイトからHTMLをダウンロードしてきて、HTMLの中身を解析して保存する、ということを行っています。 こういうプログラムは一般的にクローラーとかウェブスクレイピングと呼ばれるそうです。 今回は、PythonとBeautifulSoup(HTMLの階層構造をたぐるライブラリ)を使って解析しました。
なお、公式サイトにネットワーク負荷をかけないよう、以下のように対策を行いました。
- 同じURLのページを複数回取得しないように、ローカルにキャッシュとして保存しておく
- 1度に取得するファイルは1個までで、リクエストごとに1秒スリープを入れる
解析したデータは、ローカルにJSON形式で保存しておきました。 CEDEC公式サイトのデータは、1つのセッションに複数の発表者が含まれる、という階層構造を持ったデータ構造になっています。 JSON形式だと、今回のような階層構造をもつデータを保存する際にそのままの形式で保存できるので簡単でした。
収集したデータをHTML化する部分では、これまたPythonとJinja2(テンプレートエンジン)を使ってHTMLを生成しました。 HTML側では、jQuery Mobileを使ってページ遷移を行うような作りとしました。 今回jQuery Mobileを初めて使ってみたんですが、それっぽいHTMLを出力するだけで簡単にスマホ向きUIが作れて便利でした。 また今回は全ページを1つのHTMLファイルにして、基本的にはページ遷移の際にHTTPリクエストが飛ばないようにしました(外部サイトに飛ぶリンクは別ですが)。 CEDEC会場の回線(Wi-Fiとモバイル回線)は割と不安定で、よく応答が返ってこなかったり接続が切れたりしたんですが、この方法だと最初に1つのHTMLページを読み込んでしまえばあとはオフラインでも表示できるので、いい感じに使えました。
結果
Google Analyticsによると、150ほどのユニークアクセスがあったようです。 また、Twitterで「便利ですね!」と言っていただけて、ありがたかったです。
今回は、結局この非公式スマホサイトからのtweetはほとんど無かったようです。 この理由を考えてみたのですが、ざっくりいうと「時代が追い付いていない」ということだと思います。 もうちょっと分解すると、以下の3つがあるのではないかと思います。
メモをとるのに忙しい
CEDECは個人で来ている人があまりいなく、だいたいの方は会社から業務として来ていると思うのですが、そういう人は後で社内レポートを書く必要があるのでセッションの内容のメモをとるのに忙しく、tweetしている暇がないのではないかと思います。少なくとも、自分がそうでした。
tweetしていいセッションなのかどうかわかりづらい
セッションによっては、開始前に「このセッションはSNS等での内容の公開を厳禁とします」と言われることがあるのですが、どのセッションが公開OKでどのセッションが公開NGなのかがわかりづらく、公開していいのかどうかがわからないことがありました。 こういう場合、リスクの少ない方に倒す人がほとんどだと思うので、tweetしないのだと思います。
tweetする人がいないので、tweetしない
セッションの内容や感想をtweetする人が少ないので、「他の人がやっていないことはやらない」という負のスパイラルにいるのではないかと思います。 イノベーター理論でいうところの「イノベーター」「アーリーアダプター」がろくにいない状態なので、まあそんなもんではないかと。
最近はCEDiLやSlideShareで一部セッションの資料が公開されたり、ニコ生で放送された中継動画がタイムシフト試聴できたりと、あとから資料を見ることが徐々に可能にはなってきているのですが、まだまだ十分ではないと思っています。 例えば、事前に「このセッションのスライドはCEDiLにアップロードされます、ニコ生は中継されません、tweetはしていただいてOKです」のような情報がパンフレットに載っていれば、多少対応がしやすいと思うのですが。
感想
最初に、スマホサイトを作るのは楽しかったです。 jQuery Mobileを使うと簡単にいい感じのデザインに仕上がるので、デザインセンス0の自分でもいい感じの見た目のものが作れてよかったです。
次に、@o_obさん作のCoFunが、会期中にがんがん機能追加のアップデートをされていてすごかったです。 CoFunは主に「どのセッションを受講しようか迷っている人に、参考となる情報を示す」という方針で作られていて(勝手な想像ですが)、そのための「時間帯に対してtweetして、どのセッションが面白そうかわかる」「待ち列の可視化」などの機能が実装されていました。 こちらの非公式スマホサイトでは、セッションに対しての感想等をtweetする目的で作っていたので、違いがわかって面白かったです。 時間的余裕があればこっちもバージョンアップしたかったのですが、ちょっと無理でした。
また、これと同じ方法でGoogle Docs Spreadsheet版も作ってみたのですが、自分以外にもCEDECのセッションデータをExcelにしたいという話をTwitter上でちらほら見かけました。 できれば、公式サイト側でそういう要望に対応できるような何かがあるといいと思います。 例えば、CSVやJSON形式でセッションのデータを公開するとか。
来年似たようなことをやるかもしれませんが、その場合はとりあえず「サイトに名前をつける」「わかりやすいドメインでアクセスできるようにする」ということをしたいです。 「非公式スマホサイト」という名前だと微妙なのと、他にもスマホサイトを作られる方がいた時にどっちがどっちかわからなくなってしまうので。