はてなスターカウンターの公開から既に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
- MacでImageMagickとRMagickをインストールする
- RubyのRMagickで画像をリサイズする
- RubyのRMagickで縦横比固定でリサイズしたり切り抜いたり
- WindowsでImageMagickとRMagickをインストールする
- HerokuでRMagickを使おうとしてrequireでハマった
- RMagickで使用可能なフォント名の一覧を出力する
- HerokuでSinatraを使ってRMagickの使用可能フォント名を出力する
- RMagickでフォント名を指定して文字列を描画する
- RMagickを使って生成した画像をHerokuで表示する2つの方法
ActiveRecord 3
- SinatraからActiveRecord 3を使う(1) マイグレーション
- SinatraからActiveRecord 3を使う(2) CRUD操作
- SinatraからActiveRecord 3を使う(3) バリデーション
- SinatraからActiveRecord 3を使う(4) 比較演算が簡単になるMetaWhere
Facebookいいね!のカウンター表示がリセットされてしまう
今回ソースコードを公開するために整理整頓してて気がついたんだけど、はてなスターカウンターのサイト内に設置しているソーシャルボタン類の中で、Facebookのいいね!ボタンに以下のようなおかしな現象が起きていた。
Facebookのいいねボタンを押すとグレーアウトしてカウントが「1」になるけど、ページをリロードするとまた押してない状態に戻ってしまう。Facebook内の自分のページを見るとちゃんといいねを押したと流れてきているので、いいねボタンが押されていることは間違いない。なぜだろう?
NekostagramやInustagramでほとんど同じコードを使っているにも関わらず、はてなスターカウンターだけこの現象はおきているっぽい。はてなスターカウンターとネコスタでのコードの違いは、OGPタグをはてなスターカウンターの方では埋め込んでみているんだけど、これが原因かと考えてすべて消して試してみたけど結果は同じだった。
はてなスターカウンターとNekostagram、どちらもjQuery.socialbuttonプラグインを使わせてもらっているけど、これを使わずにFacebook公式のコードジェネレータを使って生成したiframeコードを埋めこんでみても、この現象は解消されなかった。普段Facebookを使ってないのもあって原因がよくわからず…。
ruedap/hatenastar-counter - GitHub はてなスターの総数を表示できる「はてなスターカウンター」を作ってみた NekostagramとInustagramのソースコードをGitHubに公開してみた