はてなスターカウンターのソースコードをGitHubに公開してみた

はてなスターカウンターの公開から既に1ヶ月以上が経過しているので今更感はあるけれど、はてなスターカウンターのソースコードをGitHubに公開してみた。

今回もHeroku+Sinatra+Slim+Sass

はてなスターカウンターのソースコードを公開しているリポジトリはこちら。

ruedap/hatenastar-counter - GitHub

今回も過去のものと同じで、Heroku, Sinatra, Slim, Sassの組み合わせで作っている。

自分の中ではこの組み合わせはほぼ鉄板となりつつあって、よほどの理由が無い限りはまずこのセットでどう作るかを考え始める。この前のHerokuの大規模障害によって、Heroku以外の代替プラットフォームを探したりしてみたけど、今のところHerokuより便利そうなのは見つけられていない。

また、WebフレームワークのSinatraも小さいアプリを作るには最適で、これからちょっとずつ大きなものに移行していくなら、RailsやPadrinoを勉強したいと思っているけど、必要にならないとなかなか重い腰が上がらない…。ちなみに近日リリース予定の新作Webアプリも、上述の組み合わせで作った。

RMagickとActiveRecord 3

はてなスターカウンターで新しく挑戦したことは、画像処理のRMagickと、O/RマッパーのActiveRecord 3を使ったこと。そこらへんの試行錯誤については、以下の記事にまとめてあるけど、感想をざっくり一言でいうとRMagick(ImageMagick)は使うまでのセッティングの方が難しいActiveRecord 3は以前触ったDataMapperに似てるという印象だった。

RMagick

ActiveRecord 3

Facebookいいね!のカウンター表示がリセットされてしまう

今回ソースコードを公開するために整理整頓してて気がついたんだけど、はてなスターカウンターのサイト内に設置しているソーシャルボタン類の中で、Facebookのいいね!ボタンに以下のようなおかしな現象が起きていた。

Facebookのいいねボタンを押すとグレーアウトしてカウントが「1」になるけど、ページをリロードするとまた押してない状態に戻ってしまう。Facebook内の自分のページを見るとちゃんといいねを押したと流れてきているので、いいねボタンが押されていることは間違いない。なぜだろう?

NekostagramInustagramでほとんど同じコードを使っているにも関わらず、はてなスターカウンターだけこの現象はおきているっぽい。はてなスターカウンターとネコスタでのコードの違いは、OGPタグをはてなスターカウンターの方では埋め込んでみているんだけど、これが原因かと考えてすべて消して試してみたけど結果は同じだった。

はてなスターカウンターとNekostagram、どちらもjQuery.socialbuttonプラグインを使わせてもらっているけど、これを使わずにFacebook公式のコードジェネレータを使って生成したiframeコードを埋めこんでみても、この現象は解消されなかった。普段Facebookを使ってないのもあって原因がよくわからず…。


ruedap/hatenastar-counter - GitHub はてなスターの総数を表示できる「はてなスターカウンター」を作ってみた NekostagramとInustagramのソースコードをGitHubに公開してみた