コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

明日使える月曜判定

ついに遊びでつくっていた月曜判定プログラムも実用化をおびてきた

イェーーーーーーーーーーーーーーーーーーーーーイ、僕だああああああああああああああああああ。みんな元気かーーーーーーーーーーーーーーーーーい。僕はもうだめぼおおおおおおおおおおおおおおおおおぉぉぉぉぉぉ!!


―― ここまで文字数稼ぎ ――

そんなわけで月曜ですね。こんなテンションですが、僕はいつものようにダメです。てなわけで、いつものように月曜ネタをやっていきます。今回の月曜ネタは今日が祝日がどうかを取得するプログラムです。これが作れれば、「月曜だ、もうだめぽ」と毎日のようにつぶやく僕でも稀に「祝日だワッショーイ」とかなりえます。僕がとりあえずでつくったIF文月曜クソ判定器より汎用性広がりんぐですね。よくわかんないですけど。

まあ、そういったわけですので何はともあれ祝日のデータを取得していきましょう。
国民の祝日について - 内閣府

祝日のデータはここからとってきます。ちなみに、中身はこんな感じになっているようです。スタンダードなCSVファイルです。

国民の祝日月日,国民の祝日名称
2017-01-01,元日
2017-01-09,成人の日
2017-02-11,建国記念の日
2017-03-20,春分の日
2017-04-29,昭和の日
~ 略 ~

で、言語は何にしようかと思ったのですが、PowerShellでいじることにしました。理由は特にありません。あるとしたら今後「タスクスケジューラで回すのに使えるのでは?」って思惑のもとですね。


PowerShellでつくったよ

実行結果

こどもの日で祝日やで

確認スクリプト.ps1

$filter = {
  $nowdate = Get-Date "2018/05/05" -Format "yyyy-MM-dd"
  $holiady = Get-Date $_."国民の祝日月日" -Format "yyyy-MM-dd"
  return $nowdate -eq $holiady
}

$csv = (Import-Csv .\sykujitsu.csv -Delimiter "," -Encoding Default | Where-Object $filter)

if($csv){
  Write-Output ($csv[0]."国民の祝日名称" + "で祝日やで")
}else{
  Write-Output ("休やないで")
}

こんな感じです。実行結果が似非関西弁なのは気にしてはいけない。とりあえず、動作するっぽいです。



そんなわけで、$nowdateの余計な文字を消して現在時刻に対応したやつがこちらになります。そういえば、これ作ってから Pester 使うとテストできるよという情報をキャッチしたので以降PowerShell使うことあったら試したみたいところ……。
通常利用用サンプル.ps1

$filter = {
  $nowdate = Get-Date -Format "yyyy-MM-dd"
  $holiady = Get-Date $_."国民の祝日月日" -Format "yyyy-MM-dd"
  return $nowdate -eq $holiady
}

$csv = (Import-Csv .\sykujitsu.csv -Delimiter "," -Encoding Default | Where-Object $filter)

if($csv){
  Write-Output ($csv[0]."国民の祝日名称" + "で祝日やで")
}else{
  Write-Output ("休やないで")
}

こちらで先ほど実行してみたところ、今日祝日じゃないそうです。そうなんだ……。祝日じゃないんだ……。