ExpressでPostgreSQLアプリ(1)

はじめに(あるいは言い訳)

今月は検討や年度末のあれこれで、それなりに忙しいけれど、そんなときこそ息抜き的なプロジェクトをやるべし。

昨年末に素のnode + node-postgresでWebアプリ、なんてやろうとしたけど、この方法はあんまりだという気もしたので、今回はnodeで動作するWebアプリケーション作成フレームワーク(だよね?)のExpressとテンプレートエンジンjadeを使って、PostgreSQLに接続する簡単なWebアプリケーションを作ってみようかと思う。
(ついでに、今の仕事でちょっと調べたイケてるグラフ描画なんかとも連携もやってみるか・・・)

つくるもの

作るものはきちんと決めてないけど、とりあえず稼働統計ビューあたりを検索して、その情報を表示するくらいの簡単なものにしよう。
なんか簡単なフォームからデータベース名を指定して、そのデータベース内にあるテーブル/インデックスサイズを表示する(あるいはグラフにプロットする)みたいなものでいいかな。

環境

  • Linux版のnode(v0.6.8)
    • 多少古いかもしれないけど気にしない。
  • PostgreSQL 9.1.2
    • 9.1.3を入れなおすのが面倒なので。気が向いたら入れるかも。

Expressのインストールと環境構築

インストール

と言っても、npmは既に放り込んであるから

npm install -g express
でインストールは完了。最初は失敗したけど、npm configで
https-proxy = "https://foo.bar:ポート番号/"
npm-registry = "http://registry.npmjs.org/"
proxy = "http://foo.bar:ポート番号/"
registry = "http://registry.npmjs.org/"
みたいに設定したらうまくいった。これで良いのかどうかはきちんと調べてないが。

環境構築

Expressのプロジェクトフォルダをexpressコマンドで構築する。

$ express exp-ap

create : exp-ap
create : exp-ap/package.json
create : exp-ap/app.js
create : exp-ap/public
create : exp-ap/public/javascripts
create : exp-ap/public/images
create : exp-ap/public/stylesheets
create : exp-ap/public/stylesheets/style.css
create : exp-ap/routes
create : exp-ap/routes/index.js
create : exp-ap/views
create : exp-ap/views/layout.jade
create : exp-ap/views/index.jade

dont forget to install dependencies:
$ cd exp-ap && npm install

依存ソフトウェアのインストール

Expressのインストールメッセージの最後のほうに出ているコマンドを素直に実行しておく。

$ cd exp-ap && npm install
npm http GET http://registry.npmjs.org/express/2.5.8
npm http GET http://registry.npmjs.org/jade
npm http 200 http://registry.npmjs.org/express/2.5.8
npm http GET http://registry.npmjs.org/express/-/express-2.5.8.tgz
npm http 200 http://registry.npmjs.org/jade
npm http GET http://registry.npmjs.org/jade/-/jade-0.20.3.tgz
npm http 200 http://registry.npmjs.org/express/-/express-2.5.8.tgz
npm http 200 http://registry.npmjs.org/jade/-/jade-0.20.3.tgz
npm http GET http://registry.npmjs.org/mkdirp
npm http GET http://registry.npmjs.org/mime/1.2.4
npm http GET http://registry.npmjs.org/qs
npm http GET http://registry.npmjs.org/mkdirp/0.3.0
npm http GET http://registry.npmjs.org/connect
npm http GET http://registry.npmjs.org/commander
npm http 200 http://registry.npmjs.org/mime/1.2.4
npm http GET http://registry.npmjs.org/mime/-/mime-1.2.4.tgz
npm http 200 http://registry.npmjs.org/mkdirp/0.3.0
npm http GET http://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz
npm http 200 http://registry.npmjs.org/mkdirp
npm http 200 http://registry.npmjs.org/qs
npm http 200 http://registry.npmjs.org/mime/-/mime-1.2.4.tgz
npm http 200 http://registry.npmjs.org/commander
npm http 200 http://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz
npm http 200 http://registry.npmjs.org/connect
npm http GET http://registry.npmjs.org/formidable
npm http 200 http://registry.npmjs.org/formidable
jade@0.20.3 ./node_modules/jade
├── commander@0.5.2
└── mkdirp@0.3.0
express@2.5.8 ./node_modules/express
├── qs@0.4.2
├── mime@1.2.4
├── mkdirp@0.3.0
└── connect@1.8.5

起動確認

で、この状態で実はWebアプリケーションを起動することが出来るっぽい。

$ node app.js
Express server listening on port 3000 in development mode
この状態で3000番ポートに接続できるようになった。
この状態で任意のブラウザ(今回は疎通確認なので htmlview を使った)で接続すると
htmlview http://localhost:3000
Welcome to Express
という文字がブラウザ上に表示された。とりあえず、Expressがきちんと動作するところまでは確認できた。
今日はここまで。