乃木どこ開始5分前にYoするサービスを作った

f:id:Yasaichi:20140802154852p:plain

はじめに

若干旬が過ぎた感もありますが、Yoを使った「乃木どこが始まるよ」というサービスを先日リリースしました。
本エントリでは最初にサービスの簡単な紹介をしたあと、備忘録も兼ねて苦労した点について述べていきます。

サービス概要

乃木坂46冠番組である、乃木坂って、どこ?(通称:乃木どこ)が始まる5分前になるとYoしてくれるサービスです。

なぜ作ったのか

乃木どこは毎週日曜日の深夜0時から始まるのですが、たまに0:05とか0:20から始まることがあって、テレビをつけたらまだ前番組がやってて萎える*1ということが何回かあったため。
あと単純に紫色つながりでなんか作れないかな〜と思ったのもあります。*2

仕組み

以下を行うプログラムを作成し、定期実行しているだけ。簡単。

  1. 某テレビ番組表サイトから次回の放送開始時刻を取得する
  2. 開始5分前に実行されるジョブを作成
  3. 指定時刻になると2のジョブが実行され、APIを使ってユーザーにYoを送る

苦労した点

Resqueとresque-schedulerに対する理解

非同期処理&定期実行のためにこれらのgemを使ったのですが、最初どうゆう仕組みになっているのか全くわからず、resque-schedulerだけ立ち上げて「ログには出力されてるけど実際には実行されてない!なんでだ!?」とか思ってました。アホだ。
resque-schedulerは設定時間になったらジョブを投げるだけで、これを実際に実行するのはResque本体なので、2つ(のrakeタスク)を同時に立ち上げておく必要があります。

テレビ番組表の独特な表記

番組表の「日曜の24:05」のような表記、誤解が少ないので僕は好きなんですが、DBに保存するときは「月曜の0:05」に変換して保存しないといけません。最初自分で対応しようとしたんですが途中で面倒になったので、Chronicというgemを使いました。

レスポンシブデザイン

完成間際になって「トップページをレスポンシブデザインにしよう!」と思いついたんですが、今までやったことなかったのでちょっと苦戦しました。
動作確認の正しいやり方がわからなくてとりあえずiOSシミュレータで見え方を確認したのだけれど、現場の方はどうやってるんだろう・・・

おわりに

そういえば、YoAPIキーを取得するのに5日くらいかかりました。

西野七瀬の『推しどこ?』 [DVD]

西野七瀬の『推しどこ?』 [DVD]

*1:SUPER GT+はいい番組です

*2:Yoのアイコンと乃木坂46のロゴの色は紫