bh.mgzl.jpの今後の更新予定
上に書いたものほど優先度が高いです。
フィルタリング機能(作業中、次回公開予定)
スコア・ブックマーク数・スコアブクマ比でフィルタリングする機能を実装中
- フィルタリングは「なし」「オススメ(仮称)」「ユーザー(仮称)」の3種類
- 「ユーザー」は任意にスコア未満の記事は表示しないようにしたりできる機能
- 「オススメ」はわりと真面目に計算して、いい感じ(当社比)に低質な記事を非表示にする機能
記事スコアの炎上対策(上記が終わったら実装予定)
ブックマークが遅いユーザーほど記事スコアに対する影響を少なくしたい。 恐らく案1で上手く行かなかったら案2にすると思う。
- 案1)現在既に実装済みだが、パラメーター等の調整で済ませる
- 案2)3ブクマ目からの時間差によって調整する
任意のカルマ表示機能(そのうち)
カルマを見たいという要望があったのと、自分だけが把握できるのは少しずるいという気がするのでやりたい。
- 入力したはてなIDのカルマを表示
- 現在の補足済みユーザー数、統計等を表示
著しく質の悪いサイトの排除(やりたくないので多分やらない)
これを実装するということは記事スコアによる評価の敗北に他ならないので、これを実装するぐらいならサイトを閉じるかも。気が変わる可能性はある。
bh.mgzl.jpについて(v4.1.2)
はてなブックマークのホットエントリーにブックマークしたユーザーから独自に計算した記事のスコアを表示しています。 新着エントリーも見れますし、ブコメもその場で表示できます。 ブコメもスターの多い順にソートしたいのですが、ブコメのパーマリンクごとにはてなスターのAPIを叩かないといけないのでやめました。 (はてブのAPIのレスポンスに含めて欲しい)
対応OSはGoogleChromeとiOS 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つ)