node.jsでsqlite3を使う

普段仕事ではpythonを使っているが、golangに領分を食われている感を感じており、もっとコミュニケーションツールとして使いやすそうな言語に進出したい…ということで情報の多いJavaScriptの味見をしてみることに。

前々からWindows用デスクトップアプリとして使えるqを作ってみたかったので、 それを題材としてみる。 harelba.github.io

開発はnode.js(electron) + node-sqlite3で行う。 ベーシックなJavaScriptで開発し、今回はaltjsには手を出さない。

まずは最初の一歩としてnpmレポジトリのnode-sqlite3のサンプルを一部修正して写経する。(PowerShell上で適当に書いたのでインデントがひどいのはお察し)

www.npmjs.com

var sqlite = require('sqlite3').verbose();
var db = new sqlite.Database('sample.db');

db.serialize(function() {
        db.run('create table if not exists sample (info text);');
        var stmt = db.prepare('insert into sample values(?)');
        for (var i = 0; i < 10; i++){
                stmt.run('i=' + i);
        }
        stmt.finalize();
        db.each(
                'select rowid as id, info from sample',
                function(err, row) {
                        console.log(row.id + ': ' + row.info);
                }
                );
});
db.close();

DBベースの開発をする場合、もっと高級なORMを使った方が効率が良いことが多いが、今回作ろうとしているアプリはDB、テーブルを使い捨てる感じになるのでローレベルAPIを使えるこのライブラリがちょうどよさそう。 たぶんORMがほしかったらこちらのライブラリ。

Sequelize | The Node.js / io.js ORM for PostgreSQL, MySQL, SQLite and MSSQL

ひとまず動くところまで確認できたので、次の記事では開発環境を整える。