5
3

More than 1 year has passed since last update.

初心者がPythonのDjangoでポートフォリオを作成してみた(AWSデプロイ)

Posted at

紹介

どうも、独学でウエブアプリを作っているクリスと申します!
最初はただの問題解決のため自分でアプリを作ろうとしましたが、まさかポートフォリオになるとは思いませんでした。(笑)

今回作ってみたものを紹介したいと思いますが、まずはその背景から語ります。

背景

自分は会社の寮に住んでいます。
寮は11部屋の一軒家ですが、なぜか電気代を計算してるメーターが6個しかない。
5部屋は各自のメーターで、残りの部屋はシェアという感じです。
なので毎月光熱費を計算するのを苦労してました。
そのうえ、他の部屋に住んでいる者は変わったりしますので、みんなが何日間、どのくらい使っているかを計算するのもかなり難しいです。(サービス業の従業員の出入りは激しいです)

そのため、自動的に計算してくれるアプリを作りたいと決めました。

アプリ概要

MVCアプリ、基本的なCRUD処理と自分で作ったアルゴリズムで一人一人の光熱費を計算して、ユーザーに表示する。

メイン機能

  • 光熱費照会
  • 日別で部屋のデータ照会(誰が何の部屋にいつ住んでいるか)
  • 光熱費入力
  • 部屋データ入力
  • 光熱費削除

アプリのイメージ

  • 表示されているすべてのデータはサンプルです

  • ホームページ
    home page.jpg

  • ログインは 管理員 と ゲスト 2種類あります。

    • 管理員画面
      admin bot menu.jpg

    • ゲスト画面(入力項目なし)
      guest menu.jpg

  • 光熱費入力画面
    electric input.jpg
    new input 2.jpg

  • 部屋データ入力画面
    room input 1.jpg

  • 部屋データ入力完了の確認画面

    • 部屋番号が間違ったり、出入りの日付が逆にしたりすると、データが保存失敗になります
      room input 2.jpg
  • 照会 (光熱費&部屋データ)(bootstrap modal)
    bill history.jpg
    room history.jpg

今までの入力はすべてCRUDでした
照会画面のボタンをクリックすると、DBにアクセスして、光熱費の金額を部屋データで毎日の平均で割ったりして、計算した結果を照会画面に出るようになります。

  • 照会画面
    • 光熱費(水道代)
      water history.jpg

    • 部屋データ
      room history 2.jpg

使用技術

フロントエンド

  • bootstrap
  • html/css/js (django template)

バックエンド

  • Python 3.10.4
  • Django 4.1.1
  • uwsgi 2.0.20
  • NGINX

インフラストラクチャー

  • AWS (VPC, EC2, ALB, Route53)
  • MySql (RDS)

DB Diagram

Database diagram.jpg

インフラ構成図

Environment.jpg

感想

完璧ではないが、アプリを使うことで、毎月この辺でかかる時間が縮めてて大変助かってます。それに携帯でも見れるので、どこにいても、上司や寮に住んでいる同僚たちにいろいろ聞かれたらすぐデータを見れるのでそれも大きいなメリットになりますね。

技術面に関して、
Djangoを独学して、ゼロから今までは大体4か月くらいかかりました。
そのうちAWSは2か月くらいの学習でした。
エラー > Google > 編集 > エラー > Google という流れがほとんどです
”新しいエラーが出ることは、前のエラーから進んでいること”というのを心かけて学習を続いています。

はまりポイント

  • uwsgiをインスタンス再起動と同時にスタートすることを設定するには時間かかりました。それはLinuxに対しての勉強不足ですね。
  • 環境変数はssh切断すると消えることを知らなかった。

AWS

ほかの方の記事など見ると、AWSで苦労したりするのが多いですが、自分はAWSのコースを受けてるおかげで、今回のデプロイはAWSのほうは結構順調でした。

今後の計画

  • コンテナーでデプロイ
  • terraform使用
  • CI/CD使用(circleCI)
  • 少しだけ Auto Scale を試す (お金取られるのが怖いので笑)

まとめ

初めての投稿ですが、見てくださった方ぜひぜひ気軽にコメントなどをしてください!

参考サイト

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3