bh.mgzl.jpについて(v4.1.2)

はてなブックマークのホットエントリーにブックマークしたユーザーから独自に計算した記事のスコアを表示しています。 新着エントリーも見れますし、ブコメもその場で表示できます。 ブコメもスターの多い順にソートしたいのですが、ブコメパーマリンクごとにはてなスターAPIを叩かないといけないのでやめました。 (はてブAPIのレスポンスに含めて欲しい)

対応OSはGoogleChromeiOS Safariです。他は面倒なので確認してませんが、まともなモダンブラウザならきっと動きます。

あと実験的なサービスなので、私の気分次第で仕様が変わります。

技術的なこと

さくらのレンタルサーバーでフロントエンドはReact+jQuery、バックエンドはPHP+MySQLで動いています。 Gulp、Browserify、Bable、LessCssあたりを使ってES6(JSX)で書いてます。 バックエンドでは特にフレームワークは使っていません。 RSSや各ユーザーの情報はcronで定期的に収集しています。

記事のスコアの計算方法

スコアは主にブックマークしているユーザーに基いて計算しています。 バックエンドで各ユーザーの独自に計算したユーザースコア(カルマ)を保持していています。

ユーザーのカルマの計算方法

はてブお気に入られ数とスター数などから計算しています。

記事の並び順

選択した並び順は、localstrage内に保存されます。

はてな

はてなRSSそのままの順番です。人気エントリーや新着エントリーとほぼ同じ並び順です。 "ほぼ"なのは、はてなのサイト上には表示されずRSSには表示されるものがあったり無かったりするという噂を聞いたことがあるからです。(曖昧)

スコア+日時

記事のスコアと日時をから計算した並び順です。Redditで利用されているアルゴリズムに、スコア・ブクマ比を足して算出した数値を元に並べています。 新しいものは上の方に表示され、スコアが高いものは上に留まりやすい、と考えて下さい。 詳しくはHow Reddit ranking algorithms workを見てください。 また後にブックマークしたユーザーほどスコアに対する影響力が減っていくような補正がはいっています。 オススメの並び順です。

スコア

計算したスコア順です。 当初スコア順だけ実装するつもりだったのですが、微妙に使いづらいのであまりオススメできません。

日時

はてなRSSは記事の時間ではなく、観測された時間(ホットエントリーに入った or 3ブクマついた)時点の時間が記述されているようなのですが、 何故かRSSの個々のアイテム自体は別の順番で並んでいます。(はてブ7不思議の1つ)