『消毒液とウェットティッシュを買います』その1386
ポイント制度っつうのはあまり好きではないのだが、食品を買うスーパーってのは決まっていて、そこでしか買わないので最初に100円かかるが、あとは毎回3%引くというので作ってもらった。ためてから後で引く方式なら作らなかったが、毎回3%引くので、ありかなと思った次第。3,333円買えば元が取れるし。ここのポイントカードは名前も住所も登録させなかった。何丁目までかのみ聞かれた。優れている。つまり個人情報を収集していないのだ。中小小売店がそんなものを集めたら管理が大変だ。毎回割り引くタイプだから、このカードには今何ポイント溜まっているかの管理もしなくてすむ。
『管理しない』という方法論は非常にシンプルである。
製造業の方なら分かるはずだが、シンプルにすると不良率が下がる。車でも部品点数が10点なら(ありえないが)、故障率はゼロに近い。テレビの回路も全て基板におさめてしまえば故障率はゼロに近い。我々コンピュータ業界もそういうことをやっていて、プログラミングはなるべく短いコードの方がバグが少ない。
明細を出しつつ小計中計総合計処理などデータベース側でやってしまったほうが楽なのだが、そういう手法を知らないプログラマに任せるとアプリケーション側でキーブレイク処理を入れながらループさせてみたりと10年前の手法をやる人もいてうんざりする。日々勉強しないとこうなる。
"Group By Rollup"で検索してみるべし。アプリ側は SQL 投げて帰ってきた結果を単純に見せればよいことになっている。これだと記述するコードは10行程度で済む。バグの入り込む余地はゼロに近い。