イラスト合作本作品提出用システム
2020年5~8月に、趣味の範疇で、イラスト等の作品を集めて1冊の本として頒布するプロジェクトの主催を行っていました。 その中で参加者様の作品提出フォーマットを統一させ、提出しやすくかつデータチェックもその場でできるようなシステムを用意すれば、関係者みんなが幸せになるのではないかと考え、2020年7月に個人開発したシステムです。 サイト自体は関係者のみが使用する想定ですので、公開URLはありませんが、Twitterアカウントを利用することで参加者を認証し、ユーザ登録の手間やセキュリティ上の懸念を削いだ形をとっています。(Twitterアカウントと紐付くPWはその人以外に知り得ないという前提です) 規模は70人、かつ提出は7月末と決まっていましたので、なるべく早く実装でき、かつオーバスペックなシステムにならないようにしようということで要件定義を行い、開発を行いました。 インフラはAWSのLightSailを使ってサーバを構築し、人数に合わせてスペックを選定しました。その結果、仮想マシン内にDBサーバを包括してもよいことがわかったため、低コストでの運用が可能となりました。 また言語とFWは、それぞれPHP 7.3とLaravel 8を利用しました。これは、早期開発が求められる中で、唯一ある程度の知見があり技術検証がなされている言語とFWだったことが理由です。 単調なHTMLでは見にくいことも想定し、Bootstrap4を使って、比較的見やすいフロントとしました。これはスマートフォンから閲覧しても、しっかりスマートフォン用の画面に切り替わるようになっています。 提出時も、作品タイトルや感想文、作品のサイズとファイル形式をバリデーションし、不備があればアップロードされないようにしています。提出されたら、チームSlackを通じ、わたしのアカウントにBotが通知するような仕組みとしました。 さらに、提出された作品ファイルそのものはAWS S3上に保管しているため、クラウドからバックアップできるような作りとなっています。サーバ自体も1日1回のスナップショットを撮っており、復元も容易です。 十分なテストを行うことまではできませんでしたが、フロントエンドおよびバックエンド、インフラの3本柱で開発を行い、スキルアップにつながったものと感じています。