Hatena::ブログ(Diary)

IT-Walker on hatena このページをアンテナに追加 RSSフィード

2012-02-24

jdb.js - Indexed Database APIを使いやすくするフレームワーク

jdb.jsというフレームワークを作りました。まだ開発に2日もかけてない(ドキュメント書くほうが大変だった(^^; )ので、荒っぽいところも、機能が不足しているところもありますが、試しに実装してみたらかなり便利なものができたと思っているので、フライング気味に公開します。Indexed Database APIの使いにくさを知っている人なら、結構興味を持っていただけるんじゃないかと。

GitHubリポジトリこちらです。


以下、README_ja.mdから引用します。


jdb.jsは、W3C Indexed Database APIをより直感的に扱いやすくすることを目指したライブラリです。 名前の由来は、「IDB」(Indexed DB)をより使いやすく、ということで「JDB」(Jはアルファベット順でIの次の文字です)としました。

Indexed Database APIをそのまま利用するのに比べて、jdb.jsが優っている点は以下のとおりです。

以下に載せるのは、jdb.jsを使用したコードスニペットです。Indexed Database APIを直接使うのに比べ、非常にコンパクトなコードでのデータベース処理を実現できます。

// データベースへの参照を作成
var db = new JDBDatabase('database name', 1);

// オブジェクトストアへの参照を作成
var CatStore = new JDBObjectStore({
  name: 'CatStore', // オブジェクトストアの名称
  database: db,     // データベース
  key: { path: 'id', autoIncrement: true }, // キープロパティの定義
  indexes: {
    ageIdx: { path: 'age' } // インデックスの定義
  }
});

// データベース接続をオープン
db.open().success(function() {
  console.log('database opened');
});

// オブジェクトストアにオブジェクトを格納
CatStore.put({
  name: 'Nana',
  age: 7,
  gender: 'female'
});

// オブジェクトストアから値を取得
var catId = 1;
CatStore.get(catId, function(cat, error) {
  // 取得した結果(cat)に対して処理を行う
});

// 全てのネコを順次処理
CatStore.all().iterate(function(cat) {
  ...
});

// 5歳以下のネコをすべて取得
var criteria = JDBCriteria.byIndex('ageIdx').le(5);
CatStore.criteria(criteria).list(function(cats) {
  // 全検索結果に対して処理を行う
});

更に詳しい情報は、チュートリアルを参照してください。

jdb.jsはまだ生まれたばかりのフレームワークです。どんな貢献でも大歓迎です!誰かコミッターになってくれると嬉しいなー。感想あったら、Twitterでもコメントでもご遠慮なく。


しかし、オープンソースプロジェクト作ったの久しぶり。今年からエンジニアに現役復帰を目指している身としては、いい感じの一歩を踏み出せたかな。

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。