2013年4月11日木曜日

okareader を公開

1ヶ月近く空いてしまいましが、
Webブラウザ上で動くRSSリーダー「okareader」を公開しました。



公式サイト:http://yokano.github.io/okareader/
Webアプリ本体:http://okareader.appspot.com/

Google Reader のサービス終了をきっかけに自作のフィードリーダーを開発しました。
パソコンはもちろん、iPhone や Android などのスマートフォンでも動作します。
ユーザ認証に Google アカウントを使用しているためアカウント必須です。



ライセンスは MIT ライセンスです。
ソースコードは GitHub 上ですべて公開しています。
https://github.com/yokano/okareader

サーバは Google App Engine を使用し、言語は Go で書きました。
https://developers.google.com/appengine/

インタフェースとして jQuery Mobile を使用しています。
http://jquerymobile.com

フィードの更新や既読化はもちろん、Google Reader のようにフォルダを作成してフィードをグループ分けすることができます。フォルダをまとめて更新したり既読化することも可能です。
OPMLファイルのインポートにも対応しており、Google Takeout で Google Reader からフィードを移動することができます。
https://www.google.com/takeout/

開発期間は約3週間です。
今後の改善点は、Latin-1のフィードを読めないことと、数十個のフィードをまとめて更新にかけると時間がかかってしまうことです。
Latin-1については、Go の xml 解析パッケージに Latin-1 の変換機能がついておらず、バイト配列を自分で変換する必要があり、時間がかかりそうだったので保留しています。
フィードの更新は各フィードの配信ファイルを Google App Engine URL Fetch API を使って順次取得する部分がネックになっています。URL Fetch を goroutine によってマルチスレッド化すれば早くなると思うのですが、 現状の GAE では goroutine で同時に実行できるスレッドが 1つに限定されているためあまり変わりません。今後 GAE がマルチスレッドに対応すれば改善したいと思います。

The Go runtime environment for App Engine provides full support for goroutines, but not for parallel execution: goroutines are scheduled onto a single operating system thread. This single-thread restriction may be lifted in future versions. Multiple requests may be handled concurrently by a given instance.


しばらく間があきましたが今後はぼちぼち更新して行きたいと思います。
直近では Nintendo 3DS の Web ブラウザ上で動くゲームを開発する予定です。

0 件のコメント:

コメントを投稿