Wenサイト: https://plan.towelman.server-on.net/sign_in
動機
自分で予定管理をしようと思ったときに一つのプロジェクトごとに、複数人で管理できるような物が欲しくなり探してもこれといってピンとくるものがなかったため自分で作ってみようと思った。
大雑把な機能
基本予定をプロジェクト単位で分ける。そしてプロジェクトは2種類ある。一つ目は複数人で管理・参画でき、「やること」の担当をそれぞれに割り振ることができて、期間を指定する「パブリックプロジェクト」である。基本的になにかの目的をなすための計画を管理するのに使うプロジェクトで使い方次第で1人でも複数人でも使えるようになっている。また、複数人で使い、自分以外にも計画に変更を加えさせたい人がいる場合はその人を管理者にすることによって実現可能である。そして二つ目は自分専用の期間を指定できない「プライベートプロジェクト」である。これはなにかの目的をなすための計画ではなく、日常で自分がやらないといけない「やること」を管理するプロジェクトだ。このプロジェクトで「入浴する」、「掃除する」などの「やること」を管理すると良いだろう。それと簡易的な通知機能(Web画面上のみ)を持ち、期間が迫ってる「やること」などを知らせてくれる。
サーバ構成
図
説明
- VPSサーバ: さくらのVPS(CentOS7)
- ファイアウォール: 上の図でVPSサーバ外からアクセスされるポート以外は全てブロック
- SSL証明書: Let’s Encrypt
- ドメイン: MyDNS
- GitHubとVPSサーバとの関係
- 開発者がGitHubにコードをpushするとGitHubのwebhook機能によりpush通知がVPSサーバに配信され、それを受信したアプリがいい感じにそのコードを適宜反映する(簡単な自動デプロイ)。なお、APiサーバのアプリはビルドに失敗したりテストに失敗した場合は反映しない。
- 「Docker ComposeのUpdater」について
- 言語: Go
- GitHubのwebhook機能によるpush通知を受信する簡単なアプリ。
- 「その他の予定管理アプリのクライアント側」について
- もしかするとWin版などを開発する可能性あり
APIサーバ
JavaでSpring Boot + MyBatisで作った
コード
github: https://github.com/TowelMan-public/plan-server
API一覧
API表
補足
- 上の表のURLの部分に出てくる{}はパラメタである。そのパラメタについては次の「APIに渡す情報一覧」を参照してください。
APIに渡す情報の説明
APIに渡す情報一覧
補足
- 「userName」などの文字列は全角・半角問わず100文字以内
- 「contentExplanation」のみ全角・半角問わず2000文字以内
- 「startDate」、「finishDate」には「年-月-日 時:分」の形式の日付
- 年は西暦、月と日は0埋めなし
- 時と分は0埋めする
Webサーバ
PHPのLaravelで作った。
コード
github: https://github.com/TowelMan-public/plan-web
全体的な感想
phpは初めてで最初はなれなかったが慣れてくると結構楽しかった。また今回は簡単な自動デプロイ的なことをやってみたが、結構楽に実現できるんだなと思った。ただ、どうせならreleaseブランチなる物を使ってそれにpush されたときのみ各サーバを更新するようにすればよかったなと思った。また、各サーバをDocker Composeで扱ったがどうせなら各サーバを更新するのも、SSL証明書を管理するのもコンテナを作って行えばもっと楽だったように思える。その方がよりDockerの強みが出たのではないだろうか。