2012-03-04(日) [長年日記]
■ Kindle向けニュース配信システムをHeroku上に移動した
約1年ほど前から稼動していた各種ニュース(といっても現時点では日経新聞とInternet Watchだけ)をKindleに配信するシステムを、自前サーバ上のcronからHeroku上のClockworkに移植して、今日から実用開始した。
Kindle向けにニュースを配信する仕組みとしてはレシピが豊富なCalibreを使うのがメジャーなんだけど、クライアントPCを24H稼動しておくというのが節電が叫ばれるいまどきのソリューションとしてはイマイチと感じていて、長らく自分のサーバで回していたんだけど、もうちょっとPaaS(というかHeroku)を使い慣れておきたいと思っていたので練習台に。
Herokuでcron相当のサービスというとClockworkを使うということらしいので、1時間ごとに起きるように組んで、実際に配信するかどうかの判断は別途させるようにした。clockプロセスひとつでDynoを1個使ってしまうので、UIはなし。セコい(笑)。じゃあ設定はどこから与えるかというと、環境変数で指定したURLから毎回読み込むようにしたのだった。Dropboxにでも入れておけばどこからでも設定変更ができるという塩梅。
Heroku上でmobiファイルを生成させるためにkindlegenをgem化したり、メール送信にActiveMailerを使おうと思ったがRailsじゃなければその下で使っているMailを素で使ったほうが楽だとわかったり。もっとも、一番苦労したのはUTCで動いているHerokuに適切なTZを与えることだったりして(Time#localtimeに引数があるなんて初めて知ったよ)。まぁいろいろ勉強になります。
最初はちゃんとWeb UIをつけて誰でも登録して使えるようにしたら便利じゃね? と思っていたんだけど、人のサイトを勝手にスクレイピングして他人に配信するのはどう考えても違法なのであった。あとSendGridのfreeプランはメール送信数に制限があるし(ので各自で動かさないといけない)。とはいえコードは公開してあるもののドキュメントないから誰も動かせないだろうな(笑)。
こんなふうに自前で生成した「電子書籍」をメールで簡単にリーダーに送れて、それをクラウド上で管理できるというのがKindle最大のメリットで*1、このPersonal Documentサービスが完全におれをKindleにロックインしてしまっているのだよなぁ。他社でもこれ相当のことができないと、何かあったときの移転先に困るんだが。KoboやSONYには類似のサービスないのかな。
*1 少なくとも自分で電子書籍を作成できるギークにとっては、だけど。
2012-03-01(木) [長年日記]
■ タイムライン化してもFacebookページの(実質的な)役割に変化はないんじゃないの?
![[スクリーンショット]新デザインになったグスタフのFacebookページ [スクリーンショット]新デザインになったグスタフのFacebookページ](https://userimages.tdiary.net/sho/20120301_0.jpg)
Facebookページがタイムライン化するというので、さっそく手持ちのページを新しいデザインに変えてみた。カバーをつけてみただけだけど。アルバムから選ぶとなんだかノイズがのってしまって、いまいちきれいな画像にならないような? これに限らず、Facebookの画像の扱いはぞんざいで、圧縮をかけすぎるきらいがあるからなぁ。カバーに合わせてちゃんと編集した画像を新しく作らないとダメかもね。あと、アイコンが正方形に固定されてしまったので、せっかく縦長の画像を作ってもらったばかりのアクセシビリティキャンプ東京もなんとかしなくては……。
で、うちのかわいい猫たちのカバーを設定しおえて「ふーっ」と満足げなため息をついて気がついた。そう、満足するのは(なんとなくきれいなデザインにして何か作った気になった)ページのオーナーだけじゃん、これって。やれWelcomeページがなくなってFacebookを使ったマーケティングの終焉だ! みたいな騒がれ方がされているけど(その側面があるのは否定しないが)、本質的にはなーんも変わらんよ。
というのも、最近話題になったようにFacebookページに舞い戻ってくるファンはごくわずかだからだ。つまり、ほとんどのユーザにとってFacebookページのきれいなカバーを目にするのは初回のみ。仮に「いいね!」を押してくれても、その後ほとんどの人が自分のニュースフィードしか見ないのだとすれば、タイムライン化しようがしまいが、Facebookページの存在は事実上「ランディングページ」にすぎない。
もちろん、Welcomeページを使った巧妙な(だが中身のない)「いいね数稼ぎ」は使えなくなるし、カバーに使える画像にも縛りが多い。が、いわゆるキャンペーンはトップに固定にできるエントリで代用すればいいし、そもそもFacebookの外でやったっていいわけだ。つまり、タイムライン化したところでできることにたいした違いはない。そんなに騒ぐほどのことじゃないよね。
◆ hsbt [clockwork でも良いんですけど cron の置き換えは https://addons.heroku.com/..]
◆ ただただし [また新事実だよ……]
◆ hb [HerokuのTZ設定は以下のコマンドを利用するという方法もありますね. $ heroku config:add T..]
◆ ただただし [例えば海外旅行中は配信時間を変更したいという場合、タイムゾーンは運用中に(Herokuコマンドなしで)設定できないと..]
◆ ただただし [Heroku Schedulerを見てみたけど、機能的にはまさにcron相当でプロセスをキックしてくれるだけなんだね..]
◆ ただただし [READMEつけた。 https://github.com/tdtds/kindlizer-backend#read..]