読者です 読者をやめる 読者になる 読者になる

クフでダローバルな日記

タフでもグローバルもない

自分と同じようなエントリをはてブしている人を探すwebサービスを作りました

お詫び(2015.6.29 12:38追記)

はてなアカウントでのログインの際にwrite権限を要求していましたが、ご指摘の通りこの仕組では全く必要ないものなので削除しました。申し訳ありませんでした。
また、自分が表示されてしまう不具合があるようなのですが、原因が分かり次第修正いたします。

動機

はてブでブクマしたりコメントしてると、「この人自分がブクマする時よく見るな……」っていう人いますよね?
それはダジャレの人とかカッコいいメガネの人のように目立つ人だけじゃなく、有名ブックマカーではなくても似たような嗜好の人はいるわけです。
ところで、はてブにはよく使われているとはあまり言えない「お気に入り」機能があるわけで、逆にそういった人達をお気に入りに登録していけば「人気エントリ」や「新着エントリ」よりも更に自分向けの情報が流れてくるのではないか?という思いから、このwebアプリを作ってみました。
名づけて"Hateneighbor"です。
Hateneighbor
はてな村のご近所さん」と言う意味で名づけました。

ある程度作り終わるまではてブ公式に「おすすめユーザー」機能があることを知らなかったのは秘密……
一応差別化のために何が共通か表示するようにしたので許していただきたい……

何をするか

はてブアカウントでログインすると、自分のブックマーク最新20件を取得し、それらをブックマークしている人、及びそれらの関連エントリをブックマークしている人を探します。
フォローボタンも付いているので、簡単にフォローも出来ます。
また、共通ブックマークも一覧して見ることが出来ます。

技術的なもろもろ

いつも通り、ruby+sinatraをherokuで動かしています。
デザインとかもいつも通りbootstrap頼りですが、今までよりはそれなりに綺麗に出来たのではないかと思っています。(まだ思い通りに動いていないところは多いですが……特にmobile……)

途中、heroku上だと処理に時間がかかりすぎて勝手にtimeoutされる事に気づいて発狂したのですが、gem parallelを使うことで解決することが出来ました。これまでrubyで並列処理したことはなかったのですが、簡単な上に超便利なので一人感動してました。

はてなapiとかについては、今回もはてブAPIでwebサービスを作りたい全ての人に向けて書きましたを参考にさせていただきました。
今回もJSONとかRSSを取得してrubyでハッシュとして処理することが多かったので、@HatenastarRankを作った時の記事と似たようなことをしています。swimath2.hatenablog.com

個人的な開発記録

実は先日はてなインターンに応募させていただいたのですが、今まではてなapiを使って作ったものが@しかなかったので、せっかくだしwebサービスでも使ってみようと思ったことも動機の一つです。

作っている途中にお気に入り機能があることに気付き絶望したので一週間ほど間が開いたのですが、実際に組んでいたのは2,3日程度だと思います。

  1. 1日目にログイン→類似ユーザーのリストアップ、簡単なwebアプリ化
  2. 2日目にデザインをまともにして情報を増やす
  3. 3日目に細かい修正

って感じで進めました。

ノートにおおまかなデザインを描いてそれに従って作っていく、というごく一般的な手法を初めてとったのですが、当然のように開発がめっちゃ楽になりました。
正直汚すぎて載せたくないですが、参考のために載せときます。
f:id:SWIMATH2:20150628150654j:plain
こんだけ適当でも捗るよ、って感じで見てください。

先日作ったtop - 偶然俳句ツイートwebもherokuで動かしているためか謎バグが発生するので、そろそろvpsawsに手を出さないといけないなと感じています。

本題とはあまり関係ないですが、最近bashzshに変えてaliasとかバンバン使うようにしたらかなり快適にgitとか使えるようになった気がします。
こういった小さな面倒を楽にする方法を追求することもエンジニアになるなら必要なのではないかと感じました。

大学の課題の合間を縫ってどうにか完成させたのですが、まだまだ満足のいかないところは多いので、今後も機能を追加していこうと思います。
ご不満、ご要望がある場合は、このブログのコメントでもはてブのコメントでも、喜んで拝見するので書いていただけると幸いです。

アイコン

f:id:SWIMATH2:20150628152954p:plain
HとNで家っぽくするつもりでしたが、時間無かったので適当になりました。デザインのお勉強もそのうちしてみたい気もします。

主に参考にさせていただいたサイト

syncer.jp
Consumer key を取得して OAuth 開発をはじめよう - Hatena Developer Center
morizyun.github.io