dshimizu/blog

アルファ版

Rails 4でとりあえず動作するフィード・リーダーのアプリを作ってみた

はじめに

Ruby on Rails勉強し始めたころにOfficial Blog: A second spring of cleaningGoogle Readerが終了するとの告知を受けて、とりあえずRuby on Railsを使ってフィードリーダーアプリを作ってみようと思い、やってみました。
まだ不完全ですが・・・。

やってみたこととか

基盤系

アプリの設置先にはさくらのVPS SSD メモリ2Gを使いました。AWSとかも使ってみたいですがどこまでやれるかわからなかったのでコストを考えて一旦断念しました。OSにはCentOS6を使い、WEBサーバソフトウェアはNginx、Unicornを、データベースにはPostgreSQL 9.3を使いました。PostgreSQLは最初9.2でやってましたが途中で9.3が出たのでアップデートしました。でも別に9.3特有の機能とかは使ってません。

Rails4 アプリ作成

アプリに関しては、すでに同じようなことをやられている方も当然いらっしゃったので、そういった方のブログ記事やgithubにソースを公開されている方のソースを参考にさせていただきました。
Railsに関してはお作法からわからなかったので苦労しました。というか未だにどういう書き方が良いのかなどちゃんと理解できてないです。何かとあるとコントローラで処理させようとしてしまうのでモデルやビューをうまく使い分けるとかActiveRecordの扱い方とか。
とりあえず、前述のようないろいろな方のソースコードを拝見してそれをローカルに取得して少し変更してはそのときの動作を確認してというのを繰り返したり、Railsプロジェクトを何度か立ち上げて写経したり適当に簡単なプログラムを作ったりして感じを覚えていきました。
プログラマブルな思考についても引き続き勉強していきます。

使ってみたGem
Unicorn: Rack HTTP server for Unix and fast clients

最近主流のRack(RubyRubyアプリケーション/フレームワーク間のインターフェース)対応httpサーバ。

devise

Railsの認証ライブラリの定番。ログイン機能を簡単に実装できます。

pauldix/feedzirra - GitHub

フィードの情報を取得するライブラリ。似たようなライブラリは他にもありましたが、開発が今でも行われているようなのでこれを使わせていただきました。フィードの新規登録時や定期更新時にこのライブラリ経由で情報を取得しています。
ただ、Nokogiriで解析して取得したフィードのURLをfeedzirraに渡しているので、Nokogiriの解析結果から実際のフィードURLが取得できない場合はエラーになってしまいます。他のアプリケーションだとどうやって処理しているのかもう少し調べてみようと思ってます。

Nokogiri

FeedzirraはFeedのURLしか解析できないっぽかったのですが毎回FeedのURLを調べるのが手間だったので、対象サイトのURLからFeedのURLを取得するためにNokogiriを使ってみました。

seyhunak/twitter-bootstrap-rails - GitHub

ツイッターが開発・提供しているフロントエンドツールのRailsライブラリ。レスポンシブにも対応してデザインの調整が結構楽になります。

javan/whenever - GitHub

Crontab管理ライブラリ。これを使ってフィードデータ取得用のrakeタスクをcrontabに登録して管理してます。

rails/strong_parameters · GitHub

mass_assignment脆弱性を解決するためのライブラリ。従来はモデル側でフィルタリングの制御をしていたけど、Rails4からはこれを使ってコントローラ側で制御するのが標準になる模様。

newrelic/rpm · GitHub

NewRelicでRailsアプリケーションのパフォーマンスをモニタリングするためのGem。

おわりに

自分用のアプリケーションをとりあえずRails4で作ってみました。とりあえず既読管理とか実装したい。

もっと勉強して次は人に使ってもらえるアプリケーションを作ってみたいなぁ。

参考