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

FastladderのバックエンドをFeedlyにするフォークを作った

f:id:laiso:20141012114404p:plain

こういうの。

見た目でよく区別つかないから間違えないように試しにFeedlyのロゴもつけてみたら、思いの他ダサかったので気に入ってそのまま採用した。

作り途中だけどとりあえずセルフな環境で動かすだけならフォーク版を使うとできる。

[Fork] Feedly backend by laiso · Pull Request #1 · laiso/fastladder · GitHub

$ git clone https://github.com/laiso/fastladder.git -b feedly_backend
$ cd fastladder
$ cp config/database.yml.sqlite3 config/database.yml
$ bundle install
$ bundle exec rake db:create db:migrate
$ FEEDLY_TOKEN="asdfghjklzxcvbnmqwertyuiop...:feedlydev"  bundle exec rails s

Feedly側の既読制御もしておりRead Onlyならそこそこ動くが、いろんな問題が起きる可能性があって。ハックする人じゃないとおそらく実用はできないと思われる。

アクセストークン

Feedly APIのアクセストークンを環境変数FEEDLY_TOKENにセットしておく必要がある。

今は開発者が個人用途で使えるトークンを取得する方法があって https://feedly.com/v3/auth/dev から認証すると、Feedlyからメールが届くのでそこにあるURLを踏むとトークン取得できる。

Herokuデプロイ

試しにデプロイして使ってみている。DBはHeroku Postgresにした。

ウェブ上からアクセスできるとそのままだと問題があるので。デプロイしてサインアップした後にこういうパッチをあてた

Heroku Deploy by laiso · Pull Request #2 · laiso/fastladder

  • ウェブ上から誰でも新規にサインアップして俺のFeedlyデータを閲覧できてしまう(!)のでサインアップを停止
  • Heroku Postgresの設定でデプロイする時に出たエラー
$ git dif heroku
$ git merge heroku

実装

内部的にはFastladderJavaScript向けのWeb APIの中身をFeedly APIから取得したデータに力技で置き換えている。なので一瞬ディレイ読み込みしてる。

この過程でFeedly APIのデータをFastladder互換のJSONへ変換するモジュールを作ったので公開した。

ruby力が低いので結構苦労した。

まとめ

  • エンドユーザー(俺)はDBとクローラーの運用したくなかった、ユーザーインターフェイスだけ欲しかったのだと気付いた
  • バックエンドのコストが低くなったのでログイン画面をFeedlyアカウントに接続するようにすれば置き換えればFastladderホスティングもできそう
  • バックエンド丸ごと置き換えることもできそうなんだけどそれをするぐらいならフロントエンドから作り直す方が良かったので、現実解としてこのアプローチは楽だった
  • Chrome App とかにすればそもそもサーバーすら不要にできる気もするけどChrome環境でしか動かないウェブアプリをどれぐらいの人が使いたいかは知らない

今後

  • 第三者がもっと使えるようにするかもしれない
  • ほしたらホスティングもできるので良い(公開するにはFeedly側の審査みたいなのが入るのかも)