11月に iPhone用RSSリーダー「Walls」をリリースしたのですが、最重要であるsqliteの処理があまりにも遅すぎてTitaniumでの開発を断念しかけていました。が、twitter でJSONDBなるモジュールがあるとの情報を得たので、試しにと思い使ってみました。
» JSONDB – NoSQL DB for your mobile apps! « Appcelerator Developer Center
モジュールは下記から。円高なので $14.99 = ¥1,182 でした。安いw
» JSONDB by IRL Gaming Pty Ltd | Appcelerator
■どうやって使うの?
リファレンスはもちろん英語です。忘れそうなのでおおまかな書き方をまとめました。
より詳細な記述方法などは、下記などから。
https://github.com/irlgaming/jsondb-public
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 // DB open 的なことをしたり
var JSONDB = require('com.irlgaming.jsondb');
JSONDB.debug(true); // true でコンソールにログが出ます。デフォルトは false。
var collection = JSONDB.factory('nameSample', 'secretSample');
// データを格納したり
collection.save({
'data1':'さんぷる',
'data2':'さんぷる2',
'data3':'さんぷる3',
'data4':10,
'data5':20,
'data6':30,
'data7':1000
});
// データを削除したり
collection.remove({{$クエリ}:{$条件}});
// 更新したり
collection.update({{$クエリ}:{$条件}},{$更新するデータ}})
// データの追加/更新/削除をしたら必ずコミットしたり
collection.commit();
// データを検索したり
collection.find({{$クエリ}:{$条件}})
// 格納されているデータ数をカウントしたり
collection.getAll().length;
// 条件を指定してデータ数をカウントしたり
collection.count({{$クエリ}:{$条件}});
// sqliteと同じ感覚で書けます。
■sqliteから移行するのが面倒じゃね?
と思っていたのですが、ほぼsqliteと同じような書き方なため意外と早く出来ました。
個人的にはソースの変更は容易だと思われます。
実際、リファレンスを読みながらでも1時間かからずに変更できました。
■実際使ってみてどうなのか
sqliteに比べると速度がめちゃくちゃ早いです。まぁ当たり前ですが・・・体感だと100倍位(あばうと)でしょうかw
一番差が出たのは、検索(sqliteだとSELECT文の時)で条件を2,3個指定した時の速度でした。
あとでこれちゃんと測ろう。。。
もうsqliteには戻れません。有料ですが、jsonでデータを扱うのであれば必ず買うべきモジュールだと思いました。
また、トランザクション処理ではないため、ループで大量のデータを追加しながら、同時にfindでデータを取得することができるのが、個人的に一番助かりました。
■実機で動かすときにエラー
今回はじめてモジュールを追加したのですが、実機でうまく動かずハマりました。
プロジェクトをクリーンしなきゃだめだったんですね。。。
twitterで、できねー!って騒いでたら、 @k0sukey さんが大変親切に助言してくださり、早急に解決できました。(ありがとうございました!)
■JSONDBに書きなおして速度が劇的に早くなった。で、アップデートは・・・
Waiting for Review 4日目 (´;ω;`)ウッ…
-
http://twitter.com/hiroki_y hiroki
-
http://twitter.com/motoy3d motoy3d

