はじめに
なんかGoogle Readerが6末に終わるらしいんであー代替ねー。めんどいなー。自分で作るかー。という感じです。完全に俺得です。せっかくなんでNode.jsとか使うかーと。でDB周りはMongoDBでええかーとか適当に。勉強がてら。粛々と。のんびりと。
紹介
Google Readerの代替という事でどういう名前にしようかと思ったんですけどまぁ"やぎ"だし
Goat Readerでいいやという事にしました。とりあえず触れる環境があるんで、メンドイ方は以下を見て下さい。モバイルにはまだ対応してません。Twitterでログインして使ったりも出来ます。ログインしていない状態でアクセスするとAnonymouseモードとなります。
できること
繰り返しになりますが適当に作った上自分用なので完全に俺得機能しか乗せる気がありません。更に別に完成してないんでまぁアレです。今のところできることは大体以下です。
- Twitter認証でのユーザ登録
- RSSフィードの登録
- RSSフィードの削除
- Google Readerのsubscriptions.xmlのインポート
- 登録したRSSフィードのクロールして未読アイテムを追加
- 表示モード2つ
今後追加するかなーという機能としては以下です。
- ふぁぼ、あとで読む機能
- 未読、既読、すべて表示切り替え
- 新しい順、古い順の表示
- TwitterのTLのURL付きツイートをフィード化
- TwitterのTLからhotを抽出
- フィードへのカテゴリ設定
- アイテムへのタグ追加
- アイテムへのコメント追加
- モバイル対応
- Typescript化する
- gruntを導入する
ソース
ソースはGithubで公開しています。pullreq歓迎です。色々まだ足りてません。
sys1yagi/Goat-Reader
使う
単純に使うだけなら簡単です。Twitterでログインして、Settingsにフィード登録してしばーらく待つとアイテムが増えているはずです。Google Readerのsubscriptions.xmlのインポートも概ね出来ます。
導入の手順
README.mdを参照して下さい->https://github.com/sys1yagi/Goat-Reader。
内部的な奴
チョイスは結構適当なんですが、まぁとりあえずnpmやbowerで持ってこれるヤツを中心に利用しています。とりあえず列挙してみます。
フロントエンド
モジュール | 説明 |
---|---|
bootstrap.css | Twitter社が提供してる良い感じのCSSですね。便利。 |
jquery | 言わずと知れたjQuery。言うまでもないっすね。モバイル向けにはZeptoを使うと思います。 |
flight | Twitter社製のコンポーネントベースのフレームワークです。各DOMの処理はこのFlightのコンポーネントを使って動作させています。 |
requirejs | Flightを使う為に必要なので入れてます。CommonsJSの何かの実装だった気がします。AMDかな?この辺はFirefox OSなどHTML5製アプリを作る上で必須なパラダイムだよねーと。 |
es5-shim | これもFlightを使う為のライブラリです。ECMAScript5の機能の一部を実装しているんだとか。 |
hogan | Twitter社が提供しているライブラリで、scriptタグの中にHTMLテンプレートを記述して、jsからDOM生成に使えるというヤツです。JSPとかPHPに似てるかも。 |
datejs | 日付の文字列フォーマットを良い感じにするライブラリです。DateFormatくらいは標準で欲しいんだけどなぁ・・・ |
バックエンド
モジュール | 説明 |
---|---|
Node.js | nodeかわいいよnode |
MongoDB | mongoかわいいよmongo |
mongoose | Node.jsからMongoDBに良い感じにアクセスする為のモジュールです。JSON形式でテーブルスキーマを定義してモデル作ったり出来ます |
express | Node.jsのアプリケーションフレームワーク。割と色々やってくれる。助かる。 |
jade | HTMLテンプレエンジン。文法が独特でちょっとつらい。HTML2Jadeとかで変換して使ったりした |
fibers | 非同期処理系をブロッキングする為のモジュール。Node.jsは非同期コールバックネスト地獄に陥りやすいのよね。 |
cron | Node.js内でクロール処理をさせるのに使った。まんまcron |
jquery | サーバサイドでも活躍!でもテスト動作させる為にしか使ってないかも? |
mocha | テスティングフレームワーク。あんまりテスト書いてないけど。ブロッキングの要るテストが書きやすいのでjasmineやめてこちらにした。 |
passport | TwitterのOAuthに使った。これは便利。Facebookとかもあるらしい |
passport-twitter | これな。 |
xml2json | XMLをjsonに変換してくれる。助かる。 |
forever | Node.jsのプロセス管理ツール。daemon化したりあれこれ |
注意点
・スケールとか全く考えてないよ。ユーザ増えると爆死する気がするので自分で鯖立てて個人利用を推奨します。
終わりに
基本的に"Node.jsでアプリ作りたい"というのがメインの動機です。で、Node.js使った感想は"剥き出しだなぁ"と。Pythonのmod_pythonだとかと同じでリクエストハンドラと云々がアレ程度にしか用意されてないんで上に色々作る必要があるなぁと。Express使ってもJadeと連携とかSession StoreがどうとかFile uploadが便利とかはあるけど、リクエストハンドラ周りとか自分で色々アレしたんでまだまだかなーと。でも多分既にその辺カバーするフレームワーク出てるだろうなーと。いずれその辺に対応していくかもしれないなーと。
npmやbowerで色々持ってくる仕組みはとてもおもろいと感じた。これってMavenとかGradleにかなり近いはずなんであーMaven使っておけばなぁとか思った。これからはGradleの時代なのでGradleでJava系プロジェクトは扱うようにしていきたいなぁーとか。今回はnpmとbowerを個別で色々触っていたけど次回何かやるならYeomanを使おうかなと思う。
で、
0 件のコメント:
コメントを投稿