内閣府の「国民の祝日CSV」をプログラミングの練習に使ってみる ―PowerShellで祝日の日付と名称を相互に検索する―

内閣府の「国民の祝日CSV」が批判されている。私もほとんど素人なのでデータ形式について大した見識を持っている訳ではないけれど、この内閣府の形式だと、ほとんどExcelで開いて目視で確認する用途にしかまともに使えず、データの使い勝手が非常に悪いということだと思う。

ただ、初心者がちょっとしたプログラミングの練習をするにはこの国民の祝日CSVは面白い題材だった。以下PowerShellで祝日の日付と名称を相互に検索するスクリプトを書いてみる。

CSVを整形する

国民の祝日について - 内閣府

内閣府のサイトから国民の祝日CSVをダウンロードし、テキストエディタで開いて適切な形式に整形する。

Date,Name
2016/01/01,元日
2016/01/11,成人の日
2016/02/11,建国記念の日
2016/03/20,春分の日
2016/04/29,昭和の日
2016/05/03,憲法記念日
2016/05/04,みどりの日
2016/05/05,こどもの日
2016/07/18,海の日
2016/08/11,山の日
2016/09/19,敬老の日
2016/09/22,秋分の日
2016/10/10,体育の日
2016/11/03,文化の日
2016/11/23,勤労感謝の日
2016/12/23,天皇誕生日
2017/01/01,元日
2017/01/09,成人の日
2017/02/11,建国記念の日
2017/03/20,春分の日
2017/04/29,昭和の日
2017/05/03,憲法記念日
2017/05/04,みどりの日
2017/05/05,こどもの日
2017/07/17,海の日
2017/08/11,山の日
2017/09/18,敬老の日
2017/09/23,秋分の日
2017/10/09,体育の日
2017/11/03,文化の日
2017/11/23,勤労感謝の日
2017/12/23,天皇誕生日
2018/01/01,元日
2018/01/08,成人の日
2018/02/11,建国記念の日
2018/03/21,春分の日
2018/04/29,昭和の日
2018/05/03,憲法記念日
2018/05/04,みどりの日
2018/05/05,こどもの日
2018/07/16,海の日
2018/08/11,山の日
2018/09/17,敬老の日
2018/09/23,秋分の日
2018/10/08,体育の日
2018/11/03,文化の日
2018/11/23,勤労感謝の日
2018/12/23,天皇誕生日

このデータをHolidays.csvの名前で保存する。

PowerShellで祝日の日付と名称を相互に検索する

CSVの形式がまともであれば、PowerShellImport-Csvコマンドレットを使用して各項目の値を配列として活用できる。

以下、祝日の名称を指定して日付の一覧を取得するスクリプトと、日付を指定して祝日名を取得するスクリプトをそれぞれ書いてみる。ps1ファイルと上のcsvファイルを同じディレクトリに置けば実行できる。

f:id:fuyu77:20170224211027p:plain

f:id:fuyu77:20170224211042p:plain

適切なデータ形式を用いることで、このようにデータの応用が容易になるということだと思う。

PowerShellで残業申請メールを送信する

タイトル:2017/02/05 残業1.5時間(累計 7.0H/週 15.5H/月)

(宛先)

残業内容を報告いたします。

◆時間

 18:30~20:00(1.5)

◆内容

 ・作業a 0.5H
 ・作業b 1.0H

以上です。よろしくお願いいたします。

私の会社では上のような残業申請メールを退社前に送信して残業を申請している。何気に入力項目が多くて、タイトルに週残業と月残業の累計を書かないといけないため、テンプレートを作っても書くのにそれなりに時間がかかる。下手をすると残業申請メールを書いているだけで残業5分延長などという事態にもなりかねない。IT企業なのにこのような非効率的な方法を採用していて良いのかという感じだけれど、給与計算を担当しているのが社長のお母さんで、この方法を気に入っているので変えることができない。

そこで、残業申請メールを自動で送信するスクリプトPowerShellで書いてみた。以下のps1ファイルとjsonファイル2つを同じディレクトリに保存して、ps1ファイルのメール送信に関する情報を実行環境のものに書き換えれば動く。

TotalOvertimeHourCutOffDates.jsonに週残業と月残業の累計、CutOffDatesに週締日と月締日の情報が保存してある。スクリプトを実行した日が締日を過ぎていたら新しい締日の情報に更新されて週残業と月残業の値がリセットされる仕組みだ(最初にjsonファイルに初期値を書き込んでおく必要がある)。

PS C:\>.\SendOvertimeReport.ps1 作業a,作業b 0.5,1 30

というように、第1引数に業務内容をカンマ区切りで、第2引数に各業務の残業時間をカンマ区切りで、第3引数に定時後残業開始前休憩時間を分単位で入力する(省略すると休憩なし扱い)。

f:id:fuyu77:20170205220009p:plain

スクリプトを実行すると、上のようにメールの内容が出力されて、送信確認のメッセージボックスが出現する。メール内容を確認して"OK"を押すとメールが送信されてjsonファイルの内容が書き換えられるようになっている。

参考記事

私はIT企業に勤めているけれど、私の部署は業務でプログラミングをしないので、JSONやメールの自動送信の知識は今回初めて学んだ。

もはや json を利用するのが PowerShell では最も楽な方法と思っています、今日この頃です。 以前は csv でも楽だなーとか気の迷いがありましたが、 再利用するデータなら 絶対に json です。

PowerShellJSONを扱う方法については上記のguitarrapc_techさんの記事で学んだ。私は「JSONとか何だか難そうだなあ」と字面だけ見て勝手に思い込んでいたけれど、学んでみたら簡単で便利な形式(例えば今回だと、プレーンテキストでは上の値が週、下の値が月みたいにするしかないのだけれど、JSONを使えば"Week"と"Month"をプロパティ名として設定できる)だったので、今後も活用したい。

メール送信にはPowerShellSend-MailMessageコマンドレットを使う。

Send-MailMessageに指定する-Credential(認証情報)の作り方はMSDNの記事に書いてあった。

PowerShell/PowerShellでメッセージボックスを表示する方法 - Windowsと暮らす

メッセージボックスを表示させる方法はこの記事で学んだ。

文系卒未経験で中小IT企業に入り、仕事でプログラミングを使えるのは全従業員の2割程度の開発部署の人間だけという現実に愕然としているけれど、PowerShellはそんな私にもちょっとしたプログラム開発の楽しさを教えてくれる素晴らしい言語だと思う。

私には物をめちゃくちゃ噛む癖がある ―様々な物体の噛み応えレビュー―

Twitterで鉛筆を噛むということが話題になっていたけれど、私の場合は子供の頃には物を噛む癖はなかったのに、今では様々な物をめちゃくちゃ噛んでしまう。

私の場合は、物を噛むことでリラックス効果と集中力増強が得られると感じているけれど、もちろん明らかに異常な行動を完全に自分の意志で選んでいる訳ではなく、嗜癖や依存症のようなものだと感じている。

中退した医学部で非常につらい経験をした頃から噛む癖が抜けなくなった。噛めそうなものは大概噛んで来たので、様々な物体の噛み応えをレビューしたい。

爪は今ではもう無意識のうちに噛んでいる境地に達していて、常にヤスリで綺麗に手入れしたような状態になっている。美容に対する意識の高い女性から「環さんの爪すごい綺麗ですね」と言われたときは何とも言えない気持ちになった。

爪は美味しいし、無限に伸びてくるし、ストレス解放力、集中力増強力ともに非常に高いので噛む対象としては定番と言って良いと思う。

ガム

素人は「ガムなら異常者扱いされず噛めるじゃないか」と思うかも知れないけれど、ガムは駄目だ。ガムの駄目なところを列挙する。

  • 砂糖が入っているものは論外。健康状態が悪化する。
  • 値段が高価。大量に物を噛む人間には使えない。
  • 柔らかく、噛み応えが無い。

ガムは使いものにならない。

鉛筆

冒頭の鉛筆はなかなか良いのだけれど、芯にまで到達すると鉛の味がしてとても噛めたものではない。

割り箸

割り箸も木材なので最初のうちは良さみがあるのだけれど、すぐにボロボロになる。安物ほどすぐにボロボロになる傾向があって、コンビニの割り箸などは一瞬で駄目になる。ただしセブンイレブンの割り箸は若干しっかりとした作りになっている。

ティッシュ

ティッシュはかなり良い。比較的長時間噛めて安価に大量に用意できる。ただ、ティッシュにも品質の差があって、やはり安物はすぐにボロボロになる。「大王製紙ティッシュはゴミクオリティ。日本製紙クレシアクリネックスなどは相当に良い作りをしている」というのは自分の歯で噛んでみた人間にこそ分かる違いというものだろう。

ネピア 鼻セレブ ティシュ 400枚(200組)×3個パック

ネピア 鼻セレブ ティシュ 400枚(200組)×3個パック

  • 発売日: 2008/11/07
  • メディア: ヘルスケア&ケア用品

鼻セレブは噛むとお菓子のように甘い味がして中毒患者になりそうだったので買わないようにしている。

ペットボトルの蓋

色々試した私の一番のオススメはこれ。硬くて噛み応えがあってなかなか崩れないので長時間楽しめる。無機質な味も良い。

ちなみにペットボトルはラベルもはがして嚙めるので無駄がない。

『ファイアーエムブレムヒーローズ』攻略ポイントまとめ

2月2日に任天堂から配信されたSRPGのソシャゲ『ファイアーエムブレムヒーローズ』(以下『FEヒーローズ』)のメインストーリーをルナティックまで全クリしたので攻略ポイントを書いてみたい。

最初にやっておくべきこと

自動操作の解除

デフォルトでは自キャラをスワイプして敵に合わせると自動で攻撃できるようになっているのだけれど、判定の誤作動がかなり多い。攻撃したつもりが敵の目の前で何もせずに停止するなんてことが頻繁に起きる。貴重なスタミナを消費して敗北するというのは何ともやり切れないものがあるけれど、この自動攻撃は設定で解除できる。

f:id:fuyu77:20170204231729p:plain

画面下の「その他」から「環境設定」を選択し、「行動確定操作」と「待機確定操作」をそれぞれ「自動」から「タップ」に変更する。これで誤操作はなくなるし、ゲームのサクサク感も特に損なわれないので快適にプレイングできるようになる。

城をパワーアップして経験値効率を向上

f:id:fuyu77:20170204233119p:plain

ホーム画面の右上のお城のボタンを押すとオーブを消費し城をパワーアップさせて経験値効率を最大で2倍まで永久に上げることができる。まずここから城を最大まで強化しておくと良いだろう。

パーティ編成

3色揃える

このゲームは赤>緑>青>赤の三すくみの補正がかなりきついので、最低限1色1キャラは揃えないとハード以降の戦いはかなり厳しくなる。

3色以外の相性の確認

f:id:fuyu77:20170205013143p:plain

3色以外の弓が飛行兵に強いなどの相性は武器の「特効」によって決まっている。

f:id:fuyu77:20170205012816p:plain

戦術画面で自キャラをタップしたときに「!」が表示される敵はタップしたキャラに特効の武器を装備しているので注意が必要だ。

遠隔兵、飛行兵、騎兵で強力なキャラがいれば優先的に組み込む

ある程度SRPGに慣れている人間にとっては、移動力の高い騎兵や遠隔攻撃ができる兵科が強いのは常識だろう。『FEヒーローズ』ではマップが狭く、1マスの移動力の差の影響が非常に大きい。狭いマップに多様性を出すために障害物などが潤沢に配置されているマップが多いので、移動力2以下の近接歩兵でパーティを組んでいるとユニットが味方のユニットに阻まれて無駄に後方待機という事態が発生してしまう。移動力が歩兵より1高い騎兵、射程の長い魔法兵、弓兵、森林や丘陵を踏破できる飛行兵で強いキャラがいれば優先的にパーティに組み込みたい。

f:id:fuyu77:20170205000907p:plain

私の全クリ時のパーティはミネルバルキナルフレ×2の構成(同キャラを編成できるのは最初盲点だった)。手持ちの限られた☆5ユニットから選んだものだけれど、闘技場でも今のところ上級無敗でかなり強い。ルキナルフレが隣接支援スキルで互いを強化しつつ密集して敵を迎え撃ち、ドラゴン騎兵のミネルバが敵の隙を突いて遊撃するイメージ。

戦術

FEヒーローズ』は命中率やクリティカルなどの確率の要素が皆無で、敵の移動・攻撃範囲や攻撃時のHP変動も事前に精確に表示されるので、じっくりと考えて詰め将棋のように戦える。

先に攻撃するよりも、相手に攻撃させて反撃した方が良い場面も多い

例えばお互いにHP半分以上一撃未満のダメージを与えられる状況(2回の攻撃で死ぬ)だった場合に、先に攻撃すると攻撃>敵の反撃>(ターン変更)>敵の攻撃で負ける。やみくもに敵陣に突っ込むのではなく、敵の射程内ギリギリの位置に相性の良いユニットを配置して反撃や次ターンの攻撃で始末する感覚を覚えると戦術的に安定する。

キャラ左の数字はスキル発動までの行動回数

f:id:fuyu77:20170205005218p:plain

キャラの左に表示されている紫の数字、最初は何なのだろうと思っていたけれど、この数字は「敵を攻撃する」か「敵に攻撃される」ごとに1ずつ減り、0になってマークが表示されると次の攻撃でスキルが発動する(つまり、同じ能力のスキルであれば、数字の小さいスキルの方が発動までが早い分だけ強力ということ)。

f:id:fuyu77:20170205005906p:plain

大ダメージの攻撃スキルは一発逆転の切り札になるので、適宜温存するなどして上手に活用したい。

育成

戦闘でのデスペナルティ

FEヒーローズ』ではキャラが倒されても死ぬ(ロストする)訳ではないので一見すると何人倒されても勝てば問題ないようだけれど、倒されたキャラがその戦闘で得た経験値は失われて上がったレベルも元に戻ってしまう。勝利が確定しても適当に特攻して無駄に倒されるようなことがないようにしたい。

最大レベルは40

キャラの最大レベルは40で、それ以後のレベル上げは同ランク同キャラによる「限界突破」が必須になる。ガチにやり込むつもりなら、☆5同キャラをストックする必要があるようだ。限界突破は最大10回行えるらしい。

同キャラのパラメータの能力値合計は同程度に収束する

2chのスレなどを見るに、レベル40での同キャラのパラメータ合計値はほとんど差が無い程度に収束する仕様のようだ。つまりレベルアップ時の成長率に毎回差があるのはその場のランダムではなく事前に決まっていることなので、一喜一憂する必要はない。

闘技場

闘技場のポイントは累積ではなくハイスコアで評価される。7連勝したらポイントはリセットされる。また、得られるポイントは初級、中級、上級の順に高くなってゆき、同じ級では倒された味方が少ないほどポイントが高くなるので、味方を一人も倒されずに上級で7連勝すれば得点が最大になる。ただし、その他にも得点の最大値を左右する要素があるようで、この条件を満たせば1位になれるという訳ではない。

料理を楽にするために

一汁一菜でよいという提案

一汁一菜でよいという提案

彼女が最近土井善晴さんの『一汁一菜でよいという提案』を買って来て嬉しそうに読んでいた。私たちはお互いの休みが完全にずれていて(私が土日休みで、彼女が平日の不定休)料理はその時の状況に応じて作れる方が作る。私が定時で上がると彼女よりも早いので、彼女と一緒に暮らし始めてから料理をする機会が多い。

ハッとさせられる指摘のある本だ。

素材を生かすには、シンプルに料理することがいちばんです。ところがこの頃は、先述のように手を掛けなくてはいけない、手を掛けたものこそが料理だと思っている人が多い。SNSの投稿などを見ていると、一汁二菜をお膳に正しく並べた画像に「今日は手抜きしちゃった」と言葉を添えてつぶやいています。和食は簡単、普段はもう少し手を掛けていると、少し自慢もしているのでしょうか。そんなつもりはなくても、手の掛からない、単純なものを下に見る風潮がお料理する人自身のハードルを上げ、苦しめることになっているのです。

私にも一汁二菜くらいはないと手抜きなのではないか、という思い込みがあった。

そのプレッシャーをまともに受け取った忙しい人たちは、加工食品を使って、別の食材と混ぜ合わせるとか、できあがったものにトッピングしたりして、複雑にすることでなんとかできると思うようになり、それがまた「手を掛けること=お料理すること」という誤解を助長させています。けれども、私にはそちらのほうが手抜き料理に見えます。

私も惣菜を買って来て無理矢理二菜にしてお茶を濁すということを良くやっていた。

おいしい・おいしくないも、そのとき次第でよいのです。そう思って下さい。必要以上に味を気にして、喜んだり、悲しんだりしなくてもいい。どうでもよいというのではありませんが、どちらもありますから自分自身でその変化を感じていればよいのです。

料理は美味しくなきゃだめでしょというのも当然のように感じていた。

土井さんの言う一汁一菜というのは、ご飯と味噌汁(一汁)と漬物(一菜)を基本としたスタイルのことで、更には具沢山の味噌汁で「菜」を兼ねればご飯と味噌汁だけで十分だと言う。

私は流石にご飯と味噌汁だけでは寂しすぎるのでは、と感じてしまったけれど、本の内容よりも重要なのは、彼女が随分と感銘を受けた様子でこの本を読んでいるという事実だった。

そもそも自分一人で食べるのであれば「手抜き」だろうがなんだろうが腹が膨れればそれで良いのだ。「手抜き」を避けたいというのは、作った料理を食べさせる相手に手抜きだと思われてがっかりされることを避けたいということではないか。別にどちらかが「一汁二菜はないと物足りない」などと言った訳でもないのにお互いにハードルを高めていた、ということがあったのではと感じた。

シンプルな和食の良さ

和食の背景には「自然」があり、西洋の食の背景には「人間の哲学」があります。

和食というのはシンプルなものだと私も感じている。

f:id:fuyu77:20170130012342j:plain

水カップ1/2、酒カップ1/2、醤油大さじ1、みりん大さじ3で煮れば標準的な煮物になり、

f:id:fuyu77:20170130013038j:plain

水1L、醤油大さじ3、みりん大さじ4で鍋料理になる。季節の素材を買って来て、基本的に醤油とみりんだけの味付けでそのまま中火で煮ればそれで美味しい。

外食も積極的に活用してゆきたい

仮に土井さんのご飯と具沢山味噌汁だけのメソッドを採用したとしても、やはりそれなりに手間はかかる。私は外食も積極的に活用すべきだと思っている。

この一年共働きの生活を営んで来て、日本の労働環境に典型的なオーバーワークは人の心を蝕むものだと身に沁みて感じている。鬱などになったりする前に、少しでもキツい状況であれば早めに「楽をする」選択を採ることは大事だ。料理は本来楽しいもので、それが負担だと感じられたり、ストレスに思えるようであれば、それは身体が休めと言っているサインなのだと思う。

Windowsの壁紙で遊ぶ ― DailyPicでフルHD画質の写真をダウンロードし、PowerShellでランダムに壁紙にする―

DailyPicでフルHD画質の写真をダウンロードする

最近Windows 10のDailyPicというアプリをダウンロードしてみた。

Microsoft検索エンジンのBingのトップページに日替わりで表示されている美しい写真をフルHD画質でダウンロードできる。

f:id:fuyu77:20170122062350p:plain

フルHD画質なので大きなディスプレイで壁紙にしても細部まできめやかだ(下の画像はドイツのアイフェル国立公園)。

f:id:fuyu77:20170122063023p:plain

PowerShellでランダムに壁紙に設定する

せっかくたくさんの美麗な画像が集まったので、上記のMicrosoft TechNetの記事を参考にして、PowerShellでランダムに壁紙に設定してみる。

私はこのスクリプトPowerShellの$profileに設定してPowerShellを起動するたびに壁紙が変わるようにしている。一日中PCに貼りついているITの仕事はつらいけれど、色々な壁紙を楽しめるとちょっとした癒しになったりする。

疑問点

レジストリの変更をシステムに反映させるrundll32.exe user32.dll,UpdatePerUserSystemParameters 1, Trueは一行書いただけでは何故か成功しない。複数行書いても安定せず、10行ほど書くと概ね上手く反映されるようになる(それでも失敗するときもあるけれど)。どうしてこういう挙動になっているのか色々と調べてみたけれどもよく分からない。知っている方がいらっしゃったらぜひ教えてください。

共働き世帯の現実と旧来の性規範との距離感 ―kinaco68さんの記事への返信―

id:kinaco68さんに、先日ツイキャスで話した「妻がキレるのが怖い」問題についての感想記事を書いていただいた。

この記事を読んで、私は自分の現在の生活と照らし合せて、主に日本社会の性規範の強さに関わる人生の「予定調和感」に何とも言えないやるせなさを感じてしまった。

記事を読む限り、「夫に対等な存在として扱われたいがために、無理をし」ていた状態のkinacoさんがあまり幸せな状態でなかったのは明らかで、専業主婦となってからは旦那さんとの関係性も改善し、良い状態になっているように見える。残業フル装備のSEの1.5倍の給料を比較的短時間の労働で稼ぐ旦那さんの労働条件はかなり良いことが窺えるので、キッチリ夫婦で役割分担してそれで万事解決という見方もできるけれど、何か引っかかる部分もある。

私と彼女の場合

私も4月から彼女と共働きの同棲生活をしているけれど、家事分担量は彼女が多めで、生活費負担量は私が多めとなっている。kinacoさんの記事では、「比較的早い時間に帰宅できる環さんが家事全般を請け負った」と書いていただいたけれど、これは私の伝え方が不十分だった部分で、実際の私の家事分担は彼女が休みの日以外の週5日の料理とゴミ出しとクリーニングの出し入れくらいで、その他の洗濯、掃除などは彼女に全部やって貰っている。私の場合は家事分担への意欲はあるものの、父は家事を一切せず、母は子供に家事を教えない環境で育ってしまったこと、学生時代の一人暮らしでは家事らしい家事を一切して来なかったことのハンディキャップが大きく、彼女がやった方が圧倒的に効率的に行えるということがある。

また、彼女が近いうちに転職するということも決まっている。彼女の職場は典型的なブラック企業で、労働条件は劣悪(サビ残、有休取れない、特別な休みは正月の1日だけ、昇給も実質的に皆無)だ。

私が休日休み、彼女が平日休みということで、婚約したのに二人で結婚式の準備をする時間がまったくない、更にはちょっとしたデートをする時間も一切ないということもあり、最近彼女が転職活動を始めることを決意した。

kinacoさん夫妻との共通点

このように、私たちとkinacoさん夫妻には、

  1. 女性側の家事分担量が多い
  2. 男性側の労働条件の方が良い

という共通点がある。

この記事で筒井淳也さんが書いているように、日本社会は1970年代から80年代に成立した「男性稼ぎ手+専業主婦」モデルから未だ脱し切れていない状態で、男性が稼げなくなった現代においても、男性のケア能力(家事能力+精神的ケア能力)が低い、或はそもそも男性は本質的にケア能力を持てないと思い込んでいるというような状況がある。また、日本の労働市場に存在している厳然たる性差別の問題も深刻だ。

規範との距離感を見極める必要がある

このように、共働きで固定的な性役割から解放された関係性を築くということには現状様々な困難があり、旧来の性規範に従った方が生活が楽になるという局面も多いのではないかと思う。しかし、性別によってライフスタイルが決まっていてそこに関して自由度が無いというのは何とも窮屈なことで、次世代に向けて改めてゆかなければならないことでもある。

kinacoさんも、専業主婦は社会的に孤立しやすいという問題に直面し、再就職すべく現在は職業訓練中のようだ。

様々な制約がある中で、規範との距離を何処におくのが自らにとって幸せな状態か、各自が見極める必要があるのだと思う。