もがき系プログラマの日常

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

crondocを使ってみた。

はじめに

こんにちは。

ドキュメントの管理めんどくさいなと思いますよね。

僕は思います。

今お仕事もらってる会社も、DB定義書やCronのドキュメントなどいろいろととっています。

更新した際に毎回修正がとにかくめんどくさい。

そこで、所属しているslackチームの人に相談したところ神の啓示がきました。

f:id:kojirooooocks:20190628174512p:plain

紹介された crondoc を使ってみました。

本題(crondoc)

今回使ったテストでcron設定は以下

PHP_PATH=/usr/bin/php
MAIL_TO=''

# KPIレポート作成バッチ
# 日別、月別のKPIレポートを作成します。
00 20 * * * $PHP_PATH artisan kpi:report

# メールマガジン送信バッチ
# 対象の時間に送信予定として登録されているメールマガジンを送信します。
10 00,03,06,09,12 * * * $PHP_PATH artisan mailMagazine:send

実行するとこんな感じでした。

$ cron_tab -l | crondoc -s
# effective crontab


| min|hour|day|month|day week|command |
|:---|:---|:---|:---|:---|:---|
| PHP_PATH=/usr/bin/php| MAIL_TO=''

***

 - KPIレポート作成バッチ
 - KPIレポートを作成します。

| min|hour|day|month|day week|command |
|:---|:---|:---|:---|:---|:---|
| 00| 20| *| *| *| `$PHP_PATH artisan kpi:report` |


***

# commentout crontab



generated by crondoc

うーん。ちょっとだけ表示が崩れています。

cronの書き方に問題があるのかもしれません。

本題(cron-doc-gen)

表示が少し崩れましたが、このアプローチは個人的に好きなので、PHPで似たようものを作ってみました。

ざっくり作ったので、例外対応とかはしてません。

今度はパスを指定するようにしたので、実行してみます。

$ ./cron-doc-gen /etc/crontab
# Cron Document

## 変数

| Key | Value |
|------|------|
|PHP_PATH|/usr/bin/php|
|MAIL_TO|''|

## バッチ一覧

### KPIレポート作成バッチ
#### 日別、月別のKPIレポートを作成します。
| 分 | 時 | 日 | 月 | 曜日| コマンド |
|:------:|:------:|:------:|:------:|:------:|----|
|00|20|*|*|*|`$PHP_PATH artisan kpi:report`|

### メールマガジン送信バッチ
#### 対象の時間に送信予定として登録されているメールマガジンを送信します。
| 分 | 時 | 日 | 月 | 曜日| コマンド |
|:------:|:------:|:------:|:------:|:------:|----|
|10|00,03,06,09,12|*|*|*|`$PHP_PATH artisan mailMagazine:send`|

いい感じでまとまりました。

終わりに

もうちょいコードを整理しつつ、mergeされたタイミングで esa とかにpushするのを作れば、cronのドキュメントは毎回更新されるので、最新に保つことが出来ます。

簡単ですが公開しときます。

kojirock5260/cron-doc-gen

Databaseのドキュメント生成ツールも教えてもらったので、次はそちらも試してみます。

現場からは以上です。