正しいことと成功すること


オープンソースソースコードとか眺めていてたまに思うのですが、そのプロジェクトが成功することとソースコードが正しいこと(美しいこと)はあまり関係ないな、と。
また、ソースコードが正しいからと言って、Webサービスが成功するとは限らない。
うん、そのとおり。コードが美しいこととそのプロジェクトが成功することには相関はない。mixiなんか大成功を収めてるといってもいいしね。けどやっぱり趣味で書くコードくらい、美しさを追求したいものです。なんてったって、そのほうが楽しいし。自分で使うものだからこそ、自分で把握できるものは全力で美しく書きたい。

制約

NOT NULL制約のかけ忘れがあったので、sqlite3 Evangeline.dbから修正。tagテーブルのtag_idカラムにNOT NULLを振ってなかった。データは入ってないから、DROP TABEL tagしてからCREATE TABLE tagで再作成。なくても動くけど、完全を追求したいのです。で、今はこんな感じ。

-- Evangeline::Model::DBIC::Schema::Image
CREATE TABLE image (
    image_id      TEXT PRIMARY KEY NOT NULL,
    extension     TEXT NOT NULL,
    width         INTEGER NOT NULL,
    height        INTEGER NOT NULL,
    filesize      INTEGER NOT NULL,
    original_name TEXT NOT NULL,
    comments      TEXT,
    post          INTEGER NOT NULL
);
-- Evangeline::Model::DBIC::Schema::ImageTag
-- for n:m mapping
CREATE TABLE image_tag (
    id       INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
    image_id TEXT NOT NULL,
    tag_id   INTEGER NOT NULL
);
-- Evangeline::Model::DBIC::Schema::Tag
CREATE TABLE tag (
    tag_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
    tag    TEXT NOT NULL
);

SQLite用なので、他のRDBMSだとシンタックスエラーで撥ねられるかも。