4
Help us understand the problem. What are the problem?

posted at

updated at

予定管理アプリを作ってみた

Wenサイト: https://plan.towelman.server-on.net/sign_in

動機

 自分で予定管理をしようと思ったときに一つのプロジェクトごとに、複数人で管理できるような物が欲しくなり探してもこれといってピンとくるものがなかったため自分で作ってみようと思った。

大雑把な機能

 基本予定をプロジェクト単位で分ける。そしてプロジェクトは2種類ある。一つ目は複数人で管理・参画でき、「やること」の担当をそれぞれに割り振ることができて、期間を指定する「パブリックプロジェクト」である。基本的になにかの目的をなすための計画を管理するのに使うプロジェクトで使い方次第で1人でも複数人でも使えるようになっている。また、複数人で使い、自分以外にも計画に変更を加えさせたい人がいる場合はその人を管理者にすることによって実現可能である。そして二つ目は自分専用の期間を指定できない「プライベートプロジェクト」である。これはなにかの目的をなすための計画ではなく、日常で自分がやらないといけない「やること」を管理するプロジェクトだ。このプロジェクトで「入浴する」、「掃除する」などの「やること」を管理すると良いだろう。それと簡易的な通知機能(Web画面上のみ)を持ち、期間が迫ってる「やること」などを知らせてくれる。

サーバ構成

plan-systemネットワーク構成図.drawio.png

説明

  • 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表

API表.png

補足

  • 上の表のURLの部分に出てくる{}はパラメタである。そのパラメタについては次の「APIに渡す情報一覧」を参照してください。

APIに渡す情報の説明

APIに渡す情報一覧

APIに渡す情報表.png

補足

  • 「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の強みが出たのではないだろうか。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
4
Help us understand the problem. What are the problem?