2010年5月17日月曜日

FastReader (android GoogleReader クライアント) のソースコードを公開しました

FastReader を公開して 1か月半がたちました。

現在 9000件のダウンロード、34%のアクティブユーザ数です。
まさかこれほどのダウンロード数があるとは思いもよりませんでした。

さらに思いもよらぬことに、バグや機能改善要望などを(主に英語で)たくさん頂くことができました。
この場を借りてお礼申し上げます。

今、もっとも悩ましい問題は「同期が遅く CPU 使用率が高い状態が続く」ことです。
開発者としての意地もあるの調査を続けてましたが、どうにも解決策が見いだせず、悶々として過ごしていました。

いつまでも解決しないまま放置するのも申し訳ないので、ソースコードを公開して一緒に開発してくださる方を募集してみることにしました。
http://code.google.com/p/fast-reader/

もし参加しても良い、または少しでもお気づきの点がございましたら android-support@trycatch.jp までお寄せいただければ幸いです。

ちょっと恥ずかしいですが、広告を入れたり、有料バージョンを作ったりしようと目論んでいた時期もありました。
このプロジェクトに関しては一切を放棄します。

2010年4月13日火曜日

FastReader を公開してみました

4月2日に FastReader という Android用 Google Reader クライアントを公開してみました。

最初は LDReader を改良して Google Reader にも対応するマルチなリーダを作ろうと試行錯誤をしていたのですが、カテゴリとタグ、既読管理の方法が大きく違うので断念しました。

似たようなアプリに NewsRob、NetaShare という素晴らしいものがあるのですが、せっかく Google Reader と通信するクラスを作ったので LDReader の UI 部分を流用して公開に踏み切りました。

今のところの特徴としては、
- タブでフィード一覧、タグ一覧を分けて表示
- オフラインでつけたスターも後で同期する
- 「記事一覧を省略」の設定をすることで、短いステップでフィード消化が可能
などです。

↓のキャプチャは Android のデベロッパーコンソールのものです。(4月13日午前)

公開してみてびっくりしたのが、意外にダウンロードして使ってくれてる人がいらっしゃることです。
2日で 1000 ダウンロードを超えました。英語でのバグ報告や機能改善要望も数件いただきました。

また恥ずかしながら version 0.0.1 からバグがたくさんあり、一時期は☆が 2.5 まで下がったりもしましたがなんとか 3.5 付近まで回復しました。なんとか 4まではもっていきたいですね。

というわけで、機能改善や追加を行っていきます。
今後ともよろしくお願いいたします。

2010年3月24日水曜日

Google Checkout 販売者登録

Google Checkout の販売者としての法人口座登録がようやく成功しました。

銀行は東京三菱 UFJ 銀行です。英語名は「Bank of Tokyo-Mitsubishi UFJ」。
3か月かかりました。

何故 3か月もかかったのか、簡単に説明しますと、

・失敗の理由が良く分からない。Google に問い合わせても分からない。
・銀行側に問い合わせても分からない。何のことか理解してもらえず対応していないの一点張り。
・Google Checkout に法人格の括弧「カ)」が登録できなかった。(今はできるようになりました)
・会社名は「トライキャッチ」なのですが、口座名義は「トライキヤツチ」と小さいカタカナでないので気づくのに時間がかかった。

てな感じです。

Google のサポートさんとは 20通ぐらいのやり取りをさせていただきました。
最後までご対応いただいてありがとうございます。

有料の Android アプリはまだ無いですが、事前準備ができてやる気が沸いてきました。

2010年2月5日金曜日

LDReader 1.0.5 をリリースしました。

(LDReader のリリース記事ばっかりですが。。)

LDReader 1.0.5 をリリースしました。主な変更点は以下です。
1. 記事の削除機能を追加
2. バックエンドで記事取り込み中のもっさり感を解消
ソース差分 r12

1. 記事の削除機能を追加
・全記事
・未読記事のみ
・特定フィードの全記事
・特定フィードの未読記事のみ
の削除機能を追加しました。

2. バックエンドで記事取り込み中のもっさり感を解消
一覧系の画面では、ResourceCursorAdapter の autoRequery オプションを true に設定していたのですが、記事が 1件挿入されるたびに SELECT文を発行しており、このせいで画面が固まったようになる問題がありました。autoRequery を false にして独自の更新通知を受け取った場合のみに requery するようにしました。

2010年1月31日日曜日

LDReader 1.0.2 パフォーマンス改善と記事一覧画面追加

android の LDReader 1.0.2 をリリースしました。主な変更点はこちら。

・記事一覧画面を追加
・パフォーマンス改善
・バグ修正
ソース差分

記事一覧画面について

今までの画面遷移は
フィード一覧 → 記事詳細
だったのですが
フィード一覧 → 記事一覧 → 記事詳細
としました。

記事一覧を作ってみたら今まで無理して記事詳細に詰め込んでいた機能が、以外とすんなりおさまるようになりました。
使用感もこちらの方が自然になったと思います。

パフォーマンス改善

使っていてデータがたまってくると、記事詳細からフィード一覧へ戻るときどうしても遅いことに気づき調査したところ。。

sqlite に対する次の SQL が遅いことが分かりました。
select count(*) from item subscription_id = ? and unread = 1


item テーブルのスキーマはこんな感じです。id にアンダーバーがついてるのは android の慣例ですね。
CREATE TABLE item (
_id integer primary key,
subscription_id integer,
uri text,
title text,
body text,
author text,
unread integer,
created_time integer,
modified_time integer
);
CREATE INDEX idx_item_created_time on item(created_time);
CREATE INDEX idx_item_modified_time on item(modified_time);
CREATE INDEX idx_item_subscription_id on item(subscription_id);
CREATE INDEX idx_item_title on item(title);
CREATE INDEX idx_item_unread on item(unread);


item テーブルの subscription_id と unread にはそれぞれインディクスを貼ってあるのにどーしてこんなに遅いんだろうと。

色々と回り道しつつ、次のように複合インディクスを追加することで解決しました。
CREATE INDEX idx_item_unread_by_sub_id on item(subscription, unread);


使ってくださってる方がいらっしゃったら是非アップグレードをお勧めします^^