これは、Heroku Advent Calender 2014 の投稿として書いています。
先日虎ノ門ヒルズ(弊社から徒歩3分)で行われたSalesforce World Tour Tokyo、皆さん行かれましたか?
Lightning Connectの発表や、DeveloperZoneでのハッカソン、シャトルバスを使ったIoTのデモなど大盛況のうちに終わったかと思いますが、その展示会用にGoogle PlayとApp Storeから配布された公式アプリを今回弊社で開発、リリース、運用させていただきました。
申込者がログインして自分のセッション情報を確認したり、QRコードで会場受付からパス印刷まで可能、申し込んだセッションの開始や変更情報がリアルタイムで通知されるなど、展示会来場者、また管理者にとっても便利なアプリに仕上がったのではと思います。
(ちなみに展示会の登録システムも弊社システムを使用していただきました)
展示会で本格的なスマホアプリ運用というのはまだまだ一般的ではないですが、今後もっと日本の、そして世界の展示会運用を便利にしていけたらなと思っています。
以下、今回の技術的なポイントのまとめです。
Herokuを使ったシステム構成
今回は、弊社マーケティングプラットフォーム(以下MP)とHerokuをAPI連携し、スマートフォンアプリはHerokuと通信するという設計をとりました。
Herokuを採用した訳:
- 当日のセッション開始時などにアクセスが集中する可能性があるため、弊社のコアAPIへの負荷をHerokuに分散させたかった
- 弊社のコアAPIがモバイルフロントエンド用に設計されていない
「Force.comはコアのビジネスロジックを担当し、複雑なトランザクションを処理するが、大量アクセスなどのパフォーマンスには制限がある、それを補う形で大量のアクセスを効率よくスケールアウトするフロントエンドとなるのがHerokuだ」
といったことをHerokuのバイスプレジデントの方がおっしゃってましたが、ちょうどその発想です。
今回、アプリ自体は協力会社さんのほうで開発していただきましたが、時間もないこともあってUIの一部はモバイル向けWEBインターフェスとして作成してHerokuでホスティング、それをアプリ側のWebView(埋め込みブラウザ)で表示するという手法をとりました。
Herokuアプリとしては以下の2つを作成。
- 中間サーバーアプリ:アプリからのリクエストを受け付け、 MPの認証APIを呼んで、アプリから送られてきた端末IDとMP上の申込者情報を紐付け、保存。MPのAPIから申込者の詳細情報(セッションなど)を取得、キャッシュし、アプリに返す。MPの申込者あてに、管理画面から任意のテキスト(開始通知、会場変更、見どころなど)をPUSH通知する。
- コンテンツアプリ:公開されている会場マップや動画、USTREAMなどの静的ページをホスティングして、アプリ側で表示。通常この手のホスティングはAWSのS3などが使われますが、課金管理などの環境を全てHerokuで閉じたかったので、Herokuアプリとしました。画像などの表示のレイテンシーを考えて、CDN用のアドオンFastlyを入れました。
使ったアドオン
Clear DB MySQL Database:特に理由はないですが、今回の開発者がMySQLを使っていたのでPostgreSQLではなくMySQLアドオンを使いました。スロークエリーとかが分析できるのは便利です。
Librato:トラフィックやパフォーマンスの分析用に。Herokuエバンジェリストに教えていただいたアドオンです。無料でも結構リクエスト解析できるのでオススメ。
Logentries:ログ解析用に。splunkぽい検索UIで無料でも結構使えるので僕は好きです。
Fastly:静的コンテンツ側だけに入れました。手軽にCDN環境構築できるのが便利で、表示速度も速いです。git pushでオリジナルのHerokuアプリに反映した瞬間にCDN側にも反映されるのがいいと思います。ただ、ちょっと問題点もありましたが。(後述)
結果
ダウンロード数は来場者の4人に1人ぐらいに登り、まずまずの結果だったかと思います。会場のサイネージに大きくアプリの表示が出ていたのを見たときは嬉しかったです。
来場者の方からも、「ぜひうちの展示会でもつかってみたい」というお声を聞きました。
困ったこと
- iPhoneの申請が大変:よく言われていることですが、仕組みから手続きから大変なので、ちゃんと準備できてないとなかなか申請できない、通らないということがあります。今回は、サポートメニューの一環である、特急申請(サポート問い合わせから、理由を英語でつらつら述べて、審査を早くしてもらうパス)を使ったりしました。
- FastlyのURLが一部au回線で不安定だった:どうやらドメイン解決のルーティングの問題かと思われますが、au端末からあるページが見えない現象が発生し、結果一部S3で代用して直った部分があります。Fastlyのドメインを調べるとサンフランシスコのサーバーのようで、CDNとしてはサーバーリージョンを選べるとか細かい指定できればもっとよいかと思います。(設定なしでも簡単に使えるの裏返しかもしれませんが)
今回やってみて、やはりHerokuは展示会やテレビ取材や番組タイアップなどのスポット的な運用とは相性いいなというのが感想です。
ログとか解析系のアドオンが無料で簡単に使えるのも、Paasならではの魅力ですね。
今後はiBeacon的なリアル行動トラッキングなどもっとIoT的な使い方ができれば、楽しいかもしれません。