匿名ダイアリーの新着エントリーを延々読みたいだけのサービスを作った

みなさんさようなら.

新しいサービスを作ったよ.

https://masuda-stream.net/

また世の中で俺しか使わないようなサービスを作ってしまった.

できること

はてなブックマークの新着エントリーが見られます.それも はてな匿名ダイアリーの新着エントリだけ

それと一緒にブックマークコメントも見られます. ログインしたらブックマークの追加も出来るよ.

いや,ほんとそれだけ.

なんで作ったの?

はてぶはかなり好きなんだけど,たまに匿名ダイアリーだけを読みたい時があるんだよ. で,もちろん,

http://b.hatena.ne.jp/entrylist/life/%E3%81%AF%E3%81%A6%E3%81%AA%E5%8C%BF%E5%90%8D%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AA%E3%83%BC

ここを見に行けばいいだけのことなんだけど,ページネーションでページ遷移されるのも嫌だし,本文を読むためにいちいちページ遷移するのもめんどくさい.

だからできるだけページ遷移を少なく,ひたすら匿名ダイアリーだけを読めるページが欲しかった.

もちろん,

はてな匿名ダイアリー

ここを見に行けばもっとシンプルなんだけど,それでもやっぱりページ遷移はあるし,これだとブックマークコメントを読むのがおっくうになる.

web版twitterはなかなかよいUIだと思っていて,あの操作感で匿名ダイアリーとブックマークコメントが読みたいんだよね.

それと,スマホから見やすくしたいというのもあって,ページネーションとかページ遷移を目の敵にするのはそのあたりの理由も大きい.

中身

これ.

github.com

珍しくpython使った.普通のDjangoアプリケーションですね.

フロントは大部分をVue.jsにしている.このへんは,ページ遷移なくしたいのでSPAが作りたくて.

とりあえず作っただけなので,テストを全然書いてない.

はてなAPIをめちゃくちゃ活用させてもらっている.

一番きつかったのははてなログイン周りで,まずはてなログインを使うアプリケーションを作るのが初だったのと,djangoのAuthentication Backendがよくわからん(実は未だによくわからん,雰囲気で実装している). ただ,わからないなりに必要なものは作っていて,django-allauthを使って実装した.

もちろんdjango-allauthのprovidersにhatenaなんてものは存在しないので(世界的にはまぁマイナーだろうし),この部分を自作している.

h3poteto.hatenablog.com

APIに関してははてな公式ドキュメントがそれなりに用意されているが,REST APIがそんなに多くない……. 提供されているだけありがたい話なのだが. 一部RESTだけでは足らなくてAtom APIも使わせてもらっている.

ちなみに,メインの新着エントリー取得部分は(twitterのUserstreamみたいなものはもちろんないので),RSS feedを取得してそいつを解析している.このジョブを*/15くらいで流して新着エントリーを取得・更新している.

あと,RSSで取得できるのはsummaryだけで,anond.hatelabo.jpに投稿された増田記事本文を全て取得できるわけではない. そのため,新着エントリーが流れてきたら,今度はanond.hatelabo.jpの該当記事をスクレイピングして記事本文を取得している.anond.hatelabo.jp側はAPI等が一切見当たらなかった(もしあるのであれば教えて欲しい)ので,仕方なくhtmlを解析している.

本当はstreamっぽくしたいので,もっとリアルタイム更新させたいのだが,それは今後余裕があれば…….

思うところ

faviconとか全然用意してないし,そもそも俺にはデザインの才能があまりないのでロゴすらろくに作れない.悲しい.

あと,.net ドメインを買ってから気づいたんだけど,.stream ドメインがあるんだからこれを買えばよかった..stream 高いけど.

これからやること

  • 自分がつけたブックマークコメントの編集,削除
  • テスト書こう
  • スマホから見やすくしたい

ブコメ編集は,UIを考えるのがめんどくさいだけで,API的には用意されているので行けそう.

なんかバグがあったら教えてください.

参考

だいぶ参考になったまとめと,

syncer.jp

やはり公式ドキュメントは良い.

TOP - Hatena Developer Center