わからないものは作れない

あたりまえのことですが、わからないものは作れません。というわけで、K-enq.td、今日は一行もコードを書かず、現行のシステムをちょいと見せてもらって、これをどう実現したらいいだろうかと考える一日となりました。

単純にいえばデータベースに過ぎないので、SQLiteにテーブル作って、必要なカラム準備して、それだけでいいはずなのですが、後々カラムを増やしたいであるとか、あるいは逆に減らしたい、そうした要望が出た時に対応できるようにしたいとか思い始めると、なかなかに難しくなってきます。カラム増やすならALTER TABLEを使うとしても、減らすのはちょいと厄介だから、カラムを残したまま使わないという判断でいこうか。で、表示順を変えたいなんて要求に応えるには、別にテーブルの定義データを持って、などなど。もう、いやになってくる。

なので、最低限、どんなデータベース作るにしても必要になるだろうデータだけ準備して、あとはリストでも配列でもpickle化してぶち込めるごたまぜカラムを用意しようということに決めました。検索性は落ちるし、集計なんかもやりにくくなるけれど、まあそれは仕方がないとしよう。汎用的に使い回せるよう、特化されることによって得られる利便性には我慢しよう。割り切ることにしたのでした。

けど、テーブル定義も必要です。それは一体どういう仕組みにしよう。ソート順と項目名や説明などの文字列、あとはデータのラベルとなる文字(辞書のキー)があればいいか。キーは変更可能にすると面倒だから、セッションよろしく作成日時とhashlibかなんか使って生成しようか。そしてそれを主キーにしようか。ただそれでは人間にはわかりにくくなるから、人間にわかるようなIDでも付けようか、どうしようか。このあたりも考えていかんといけません。

以前Perlで作ったアンケートCGI(自由に項目の追加、変更が可能)は、そうした項目定義をJSONで保存するようにしてました。そいつを参考にできるかなあ。過去をちょっと振り返る必要が出てきたようです。