はじめに
何かしらの、「日にちごとに管理するシステムの月次集計」について、単純な月初・月末管理ではなく、締め日を設定して管理する(例えば、締め日を10日として7/11~8/10を7月とするような)ことがあると思います。
今回は、そのようなシステムの開発で思ったことをまとめておきます。
締め日管理か、開始日管理か。
「現状、締め日が10日だから集計単位をそのようにして。締め日の変更があるかもしれないからそれにも対応させて」
ということで、言葉通り締め日基準で開発しました。後から気づいたのですが、これだと困ることがでてきます。
それは、単純な月初め月終わり で管理したいときです。
締め日管理の場合、開始日は締め日+1日になりますが、月末がいつかというのは変化します(30とか31とか)。ここにどのように対応させるかの工夫が必要になります。
締め日管理と開始日管理でおこる思いついた特徴を簡単にまとめておきます。
締め日管理
・単純な月初・月末管理の場合に何かしらの工夫が必要になる
・30日締めにしたい(31日だけ翌月集計)のような要望に対応できる
開始日管理
・単純な月初・月末管理への対応が楽。工夫がいらない
・30日締めにしたい、という要望には工夫が必要
これらを見比べたときに、「30日締めにしたい(31日だけ翌日集計)」ということはあまりなさそうなので、開始日管理にするのが無難な気がします。
ただ、私は結局締め日管理にしました。理由は以下です。
・ある程度実装してから気づいた
・もともと「締め日」を意識した運用だったので設定もそれに合わせた
単純な月初・月末管理の場合には締め日を0で設定し、別の処理になるようにしました。
おわりに
ちょっと考えたら気づきそうなんですが、油断していました。月に関わらず、端が動くようなものは同様の注意を払うようにしようと思います。