![見出し画像](https://assets.st-note.com/production/uploads/images/116681911/rectangle_large_type_2_99b5fda431f021709417a18322783847.png?width=1200)
ルーチンワーク
ちょっと前、ラグビーのワールドカップ大会でルーチンワークが大きな話題になったことがあります。
パソコンが市民に普及したとき、立ち上げるという言葉が使われました。パソコンは一日の利用を終えるとシャットダウンして翌日の朝に立ち上げて使っていました。スマホの時代になるとシャットダウンと立ち上げは日付ごとではなくなりました。
その日のはじめにする決まり事
ルーチンワークとは上記のような意味があります。パソコンでその日の始まりにしたいことを挙げてみます。
①立ち上がる直前にスピーカーの音量を最小に
これはシャットダウンする前に大きな音量にセットしておいてそのままシャットダウンして翌朝の静寂をかく乱することを避けるためです。
②本日の日付、曜日を表示する
③天気予報を表示
④スケジュール表を表示する
その他にも考えられますが4つを挙げました。
元日からの通算日を取得
元日からの通算日は残念ながら記載されていません。定期的に5日ごとに決まりきった作業をする場合、のどかな時代には五十日(ごとおび)といって大まかな取り扱いで十分でした。5の付く日、0の付く日では2月には大きく狂います。そこで元日からの通算日が必要になってきます。
この場合、元日は0にすべきです。1から始まるよりは何かと好都合です。
JavaScriptを用いて『元日からの通算日を取得』する関数を作りましたのでご利用ください。求め方のよりどころを図にしましたので確認できます。
![](https://assets.st-note.com/img/1695183827463-SHed74Zdt9.png?width=1200)
元日からの通算日を取得する関数
<div style="width:180px; height:60px; background:aliceblue; line-height:3.8em; text-align:center;">元日からの通算日 <span id="keika" style="font-size:0.9em; color:crimson;"></span></div>
<script type="text/javascript"> //元日の通算日は0、平年の大みそかは364、うるう年の大みそかは365である
document.getElementById("keika").innerHTML=calcCumulativeDay();
function calcCumulativeDay(){ //本日の年月日を基に元日からの通算日を算出
var today=new Date(); //1970-01-01から今日までのミリ秒(のオブジェクト)指定日ならば"2023/9/20"のように指定
var Year = today.getFullYear(); //本日の年月日から今年の西暦年を取得
var startDay=new Date(Year+"/1/1"); //調査開始日(今年の元日)から今日までのミリ秒(のオブジェクト)
var dist=Math.floor((today-startDay)/1000/60/60/24); //開始日からの差分を日単位で求める
console.log("TODAY="+today);
console.log("YEAR="+Year);
console.log("STARTDAY="+startDay);
console.log("差分="+dist);
return dist;
}
</script>
通算日の利用方法
関数calcCumulativeDayによりその年の元日からの通算日を求めることができます。月の大小やうるう年を正確に勘案します。7日ごとにする処置は曜日を考慮すれば事足りますが8日ごと正確に処置するにはここで求めた通算日を利用することができます。
たとえば、元日から8日ごとに行う処理は通算日を8で割った余りを求めその値が0になった日に対応するように計らいます。
1月4日から8日ごとに行うには余りが3になった日を選びます。余りは0~7以外にはなりませんので正確に8日間隔で処理をすることが可能です。
C言語やJavaScriptはモジュロ演算子(%)を使うことができます。
モジュロ演算子とは
モジュロ演算子(%)はa % b の演算において、aをbで除したときの剰余を求めます。aが通算日でbを7にすると、通算日から曜日を引き当てることができます。
var a = 14;
var b = a % 8; //6
var c = 23 % 8; //7
var d = b * 10 % 8; //60 % 8 ---> 4
var e = a % 10; //4
最後に
モジュロ演算子や元日からの通算日をもっと活用しましょう。五十日(ごとおび)はアバウトな時代の遺産です。2,7,12,17などのように2日遅れで繰り返す十分な表現方法がありません。このような場合は元日からの通算日を5で割った余りが2になった日を該当日に決定すればよいのです。新聞の曜日欄や時計の文字盤に通算日を加えていただけるとありがたいです。