FastReader を公開して 1か月半がたちました。
現在 9000件のダウンロード、34%のアクティブユーザ数です。
まさかこれほどのダウンロード数があるとは思いもよりませんでした。
さらに思いもよらぬことに、バグや機能改善要望などを(主に英語で)たくさん頂くことができました。
この場を借りてお礼申し上げます。
今、もっとも悩ましい問題は「同期が遅く CPU 使用率が高い状態が続く」ことです。
開発者としての意地もあるの調査を続けてましたが、どうにも解決策が見いだせず、悶々として過ごしていました。
いつまでも解決しないまま放置するのも申し訳ないので、ソースコードを公開して一緒に開発してくださる方を募集してみることにしました。
http://code.google.com/p/fast-reader/
もし参加しても良い、または少しでもお気づきの点がございましたら android-support@trycatch.jp までお寄せいただければ幸いです。
ちょっと恥ずかしいですが、広告を入れたり、有料バージョンを作ったりしようと目論んでいた時期もありました。
このプロジェクトに関しては一切を放棄します。
もじゃの日記
株式会社トライキャッチ作ってみました。そろそろ何かしようかと。
2010年5月17日月曜日
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まではもっていきたいですね。
というわけで、機能改善や追加を行っていきます。
今後ともよろしくお願いいたします。
最初は 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 アプリはまだ無いですが、事前準備ができてやる気が沸いてきました。
銀行は東京三菱 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 するようにしました。
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 が遅いことが分かりました。
item テーブルのスキーマはこんな感じです。id にアンダーバーがついてるのは android の慣例ですね。
item テーブルの subscription_id と unread にはそれぞれインディクスを貼ってあるのにどーしてこんなに遅いんだろうと。
色々と回り道しつつ、次のように複合インディクスを追加することで解決しました。
使ってくださってる方がいらっしゃったら是非アップグレードをお勧めします^^
・記事一覧画面を追加
・パフォーマンス改善
・バグ修正
(ソース差分)
記事一覧画面について
今までの画面遷移は
フィード一覧 → 記事詳細
だったのですが
フィード一覧 → 記事一覧 → 記事詳細
としました。
記事一覧を作ってみたら今まで無理して記事詳細に詰め込んでいた機能が、以外とすんなりおさまるようになりました。
使用感もこちらの方が自然になったと思います。
パフォーマンス改善
使っていてデータがたまってくると、記事詳細からフィード一覧へ戻るときどうしても遅いことに気づき調査したところ。。
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);
使ってくださってる方がいらっしゃったら是非アップグレードをお勧めします^^
2009年11月25日水曜日
はじめての Wikipedia に携帯 IPアドレス一覧
携帯向けのサイトを作っていると、アクセス元の IPアドレスで携帯かそうでないかを判断する仕組みを導入することがあります。
いろいろ試行錯誤してこんなページを Wikipedia に作っちゃいました。
http://ja.wikipedia.org/wiki/Mobile:GatewayIP
(以下 Wikipedia にページを作った経緯など)
IPアドレスリストは各キャリアがそれぞれのサイトで公開しています。
docomo(NTTドコモ)
http://www.nttdocomo.co.jp/service/imode/make/content/ip/
SoftBank(ソフトバンク)
http://creation.mb.softbank.jp/web/web_ip.html
au(エーユー)
http://www.au.kddi.com/ezfactory/tec/spec/ezsava_ip.html
「※本情報はEZサーバ以外のホストによる上記表のIPアドレスでのアクセスがないことを保証するものではありません。」とか書いてあるのであまり使っちゃいけないかもしれないですね。。
かなり前もって情報は公開されるようなので普段気にしていればいいのですが、つい忘れてしまいがちです。(au は妙にコピペしずらいし)
そういう情報をまとめているサイトが無いか、プログラムから利用しやすいウェブサービスは無いかと探しますが、なかなか見つかりません。
プログラマなんで、各キャリアのサイトをスクレイピングして CIDR 形式のリストを抽出することが思いつきます。
自分で書く前に情報を探すと Net::CIDR::MobileJP という CPAN モジュールを使った素晴らしい情報に出会います。
http://dsas.blog.klab.org/archives/51117561.html
早速試してみましたが、最近 SoftBank の URL や構造が変わったようで情報が取れません。
そこで Net::CIDR::MobileJP とそのプラグインのソースを見てみると数行の洗練されたコードが見つかります。
これなら参考にして作れると思いますが、待てよと。
この行為はいろんな人が同じことやってるんだろうなーとか、またキャリアのサイトの構造が変わったらやだなーとか。
やっぱり公共性の高いスクレイピングできるまとめページがほしい。
というわけで Wikipedia に恐る恐るページを作っちゃいました。
決してスクレイピングしやすくは無いですが、ひとまず。。
いろいろ試行錯誤してこんなページを Wikipedia に作っちゃいました。
http://ja.wikipedia.org/wiki/Mobile:GatewayIP
(以下 Wikipedia にページを作った経緯など)
IPアドレスリストは各キャリアがそれぞれのサイトで公開しています。
docomo(NTTドコモ)
http://www.nttdocomo.co.jp/service/imode/make/content/ip/
SoftBank(ソフトバンク)
http://creation.mb.softbank.jp/web/web_ip.html
au(エーユー)
http://www.au.kddi.com/ezfactory/tec/spec/ezsava_ip.html
「※本情報はEZサーバ以外のホストによる上記表のIPアドレスでのアクセスがないことを保証するものではありません。」とか書いてあるのであまり使っちゃいけないかもしれないですね。。
かなり前もって情報は公開されるようなので普段気にしていればいいのですが、つい忘れてしまいがちです。(au は妙にコピペしずらいし)
そういう情報をまとめているサイトが無いか、プログラムから利用しやすいウェブサービスは無いかと探しますが、なかなか見つかりません。
プログラマなんで、各キャリアのサイトをスクレイピングして CIDR 形式のリストを抽出することが思いつきます。
自分で書く前に情報を探すと Net::CIDR::MobileJP という CPAN モジュールを使った素晴らしい情報に出会います。
http://dsas.blog.klab.org/archives/51117561.html
早速試してみましたが、最近 SoftBank の URL や構造が変わったようで情報が取れません。
そこで Net::CIDR::MobileJP とそのプラグインのソースを見てみると数行の洗練されたコードが見つかります。
これなら参考にして作れると思いますが、待てよと。
この行為はいろんな人が同じことやってるんだろうなーとか、またキャリアのサイトの構造が変わったらやだなーとか。
やっぱり公共性の高いスクレイピングできるまとめページがほしい。
というわけで Wikipedia に恐る恐るページを作っちゃいました。
決してスクレイピングしやすくは無いですが、ひとまず。。
2009年11月19日木曜日
LDReader 記事詳細の WebView をちょっと修正したり
LDReader 0.0.9 をリリースしました。
・記事詳細の WebView でリンクをクリックしたときにダイアログ表示
・ProgressDialog の表示後の処理を修正
記事詳細の WebView でリンクをクリックしたときにダイアログ表示
記事詳細では間違ってリンクをクリックしてしまってブラウザが起動してしまい、非常にストレスを感じていましたが確認用のダイアログを表示することで少し軽減されるようにしました。ソースはこちら。
WebViewClient#shouldOverrideUrlLoading は true を返すことで、WebView の標準を動きをオーバーライドすることができます。
ProgressDialog の表示後の処理を修正
ProgressDialog を表示後に Handler#post を使っていた箇所をすべて Thead を使うようにしました。
実はここ、最初は Thread だったんですが Handler は post の他に postDelayed という遅延実行のメソッドも持っており、Thread のような動きをするので、「あ。こっちでいいのか」とつい思い込みをしてました。
意図しているのは
だったんですが、Handler#post を使うと
になっちゃいます。
ここに詳しい解説がのってました!
http://www.adamrocker.com/blog/261/what-is-the-handler-in-android.html
・記事詳細の WebView でリンクをクリックしたときにダイアログ表示
・ProgressDialog の表示後の処理を修正
記事詳細の WebView でリンクをクリックしたときにダイアログ表示
記事詳細では間違ってリンクをクリックしてしまってブラウザが起動してしまい、非常にストレスを感じていましたが確認用のダイアログを表示することで少し軽減されるようにしました。ソースはこちら。
// NOTE: WebView#setWebViewClient を使用
bodyView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, final String url) {
// NOTE: 設定でリンクを無効にした場合はそのまま終了
if (ReaderPreferences.isDisableItemLinks(getApplicationContext())) {
return true;
}
// NOTE: ダイアログ表示
new AlertDialog.Builder(ItemActivity.this)
.setTitle(R.string.msg_confirm_browse)
.setMessage(url)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// NOTE: OK がおされたら Intent を発行
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
}).show();
return true;
}
});
WebViewClient#shouldOverrideUrlLoading は true を返すことで、WebView の標準を動きをオーバーライドすることができます。
ProgressDialog の表示後の処理を修正
ProgressDialog を表示後に Handler#post を使っていた箇所をすべて Thead を使うようにしました。
実はここ、最初は Thread だったんですが Handler は post の他に postDelayed という遅延実行のメソッドも持っており、Thread のような動きをするので、「あ。こっちでいいのか」とつい思い込みをしてました。
意図しているのは
プログレスバー表示
↓
重い処理
↓
終了
だったんですが、Handler#post を使うと
重い処理
↓
プログレスバー表示(一瞬)
↓
終了
になっちゃいます。
ここに詳しい解説がのってました!
http://www.adamrocker.com/blog/261/what-is-the-handler-in-android.html
// NOTE: 修正前
final Handler handler = new Handler();
final ProgressDialog dialog = new ProgressDialog(this);
dialog.show();
handler.post(new Runnable() {
public void run() {
// NOTE: ここで遅い処理
// (some code)
// NOTE: 終わったら ProgressDialog を閉じる
handler.post(new Runnable() {
public void run() {
dialog.dismiss();
}
});
}
});
// NOTE: 修正後
final Handler handler = new Handler();
final ProgressDialog dialog = new ProgressDialog(this);
dialog.show();
new Thread() {
public void run() {
// NOTE: ここで遅い処理
// (some code)
// NOTE: 終わったら ProgressDialog を閉じる
handler.post(new Runnable() {
public void run() {
dialog.dismiss();
}
});
}
}.start();
登録:
投稿 (Atom)
自己紹介
Links
ラベル
- プログラム (24)
- Java (13)
- Android (9)
- LDReader (6)
- 起業 (5)
- 会社 (4)
- Perl (3)
- このサービスよさそう (3)
- FastReader (2)
- JavaScript (2)
- memcached (2)
- 携帯 (2)
- DbUtils (1)
- OpenIdea.jp (1)
- autolink (1)
- サービス (1)
- スターレイティング (1)
- タグクラウド (1)