ジョイジョイジョイ

ジョイジョイジョイジョイジョイ

まんがタイムきらら系列誌の発売日をSlackに通知する

皆さん、忙しい日々の生活に追われ、まんがタイムきらら系列誌を買い忘れてしまうことはありませんか?

まんがタイムきらら系列誌を買い忘れると QOL が大きく低下してしまうので、これだけはなんとしても避けたいものです。

そこで、買い忘れないように発売日に Slack に通知してくれるスクリプトを書きました。

レポジトリ

github.com

レポジトリです。

先行研究

github.com

先行研究としては @tyage さんの dokidokivisual-bot が挙げられれます。

まんがタイムきらら系列誌は月刊誌なので、基本的にはこのように発売日を固定としても問題無いのですが、発売日が日曜日や祝日と被ると実際の発売日が前倒しになります。

例えば、まんがタイムきららキャラットは毎月 28 日に発売が予定されていますが、 2018/01/28 は日曜日なので、 2018 年 3 月号は 2018/01/27 に発売されます。

また、 2017 年は 1 月 9 日が成人の日、 1 月 8 日が日曜日なので、まんがタイムきらら 2017 年 2 月号は 2017/01/07 に発売されました。このように、発売日が 2 日ずれることもあります。

まんがタイムきらら系列誌の購入が 1 日以上遅れると精神状態に悪影響を及ぼすため、このずれを正しく処理することは重要です。

提案手法

そこで、発売日の判定として、以下のようなアルゴリズムを考えます。

f:id:joisino:20180109164551p:plain

これにより、よほどの例外的な事態に陥らない限り、発売日を完全に予測することが可能になりました。

このアルゴリズムを実装する上で困難なのが、国民の祝日を扱う部分です。

国民の祝日を予測するのは上記アルゴリズムよりも格段に難しいです(e.g. 春分の日

内閣府が公開している syukujitsu.csv を取ってくるという方法もありますが、 フォーマットがひどい かと思えば 突然仕様が変わる こともあるのであまり使いたくありません。(ディレクトリ名が shukujitsu ファイル名が syukujitsu.csv であることから、 URL が突然変更となることも考えられます。)

国民の祝日を計算・検証し、各種プログラミング言語のライブラリや .yaml ファイルを提供する holiday-jp · GitHub という素晴らしいプロジェクトがあるので、今回はこちらを使わせていただきました。

出来上がったプログラムがこちらです。(再掲)

github.com

実験

f:id:joisino:20180109160114p:plain

▲正しく動作しています。

f:id:joisino:20180109160135p:plain

▲アイコンやメッセージ内容を変更することでオシャレ度アップ☆

今後の課題

今回はまんがタイムきらら系列誌に限定しましたが、提案手法のアルゴリズムは一般の月刊誌に適用できるはずです。

まんがタイムきらら系列誌以外の月刊誌は専門外なので、有識者の皆さんによる追加の研究が待たれます。

おわりに

それではみなさん、より快適なまんがタイムきららライフをお送りください。

最後まで読んでいただきありがとうございました。

参考文献

[1] Komata, M et al. (2016). まんがタイムきらら 2017 年 1 月号. Tokyo, Japan: Houbunsha.

[2] Miyuki, N et al. (2017). まんがタイムきららキャラット 2018 年 2 月号. Tokyo, Japan: Houbunsha.

[3] まんがタイムきららWeb

[4] GitHub - tyage/dokidokivisual-bot

[5] holiday-jp · GitHub

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

[7] 国民の祝日 - Wikipedia